commit
fdceeaccbc
|
@ -96,6 +96,10 @@ spec:
|
|||
value: worker-service:{{ .Values.services.worker.port }}
|
||||
- name: COOKIE_DOMAIN
|
||||
value: {{ .Values.globals.cookieDomain | quote }}
|
||||
- name: ACCOUNT_PORTAL_URL
|
||||
value: {{ .Values.globals.accountPortalUrl | quote }}
|
||||
- name: ACCOUNT_PORTAL_API_KEY
|
||||
value: {{ .Values.globals.accountPortalApiKey | quote }}
|
||||
image: budibase/apps
|
||||
imagePullPolicy: Always
|
||||
name: bbapps
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"version": "0.9.151",
|
||||
"version": "0.9.152-alpha.0",
|
||||
"npmClient": "yarn",
|
||||
"packages": [
|
||||
"packages/*"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@budibase/auth",
|
||||
"version": "0.9.151",
|
||||
"version": "0.9.152-alpha.0",
|
||||
"description": "Authentication middlewares for budibase builder and apps",
|
||||
"main": "src/index.js",
|
||||
"author": "Budibase",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@budibase/bbui",
|
||||
"description": "A UI solution used in the different Budibase projects.",
|
||||
"version": "0.9.151",
|
||||
"version": "0.9.152-alpha.0",
|
||||
"license": "AGPL-3.0",
|
||||
"svelte": "src/index.js",
|
||||
"module": "dist/bbui.es.js",
|
||||
|
@ -78,7 +78,7 @@
|
|||
"@spectrum-css/underlay": "^2.0.9",
|
||||
"@spectrum-css/vars": "^3.0.1",
|
||||
"dayjs": "^1.10.4",
|
||||
"svelte-flatpickr": "^3.1.0",
|
||||
"svelte-flatpickr": "^3.2.3",
|
||||
"svelte-portal": "^1.0.0"
|
||||
},
|
||||
"gitHead": "d1836a898cab3f8ab80ee6d8f42be1a9eed7dcdc"
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
altFormat: enableTime ? "F j Y, H:i" : "F j, Y",
|
||||
wrap: true,
|
||||
appendTo,
|
||||
disableMobile: "true",
|
||||
}
|
||||
|
||||
const handleChange = event => {
|
||||
|
|
|
@ -2415,10 +2415,10 @@ supports-color@^7.0.0, supports-color@^7.1.0:
|
|||
dependencies:
|
||||
has-flag "^4.0.0"
|
||||
|
||||
svelte-flatpickr@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/svelte-flatpickr/-/svelte-flatpickr-3.1.0.tgz#ad83588430dbd55196a1a258b8ba27e7f9c1ee37"
|
||||
integrity sha512-zKyV+ukeVuJ8CW0Ing3T19VSekc4bPkou/5Riutt1yATrLvSsanNqcgqi7Q5IePvIoOF9GJ5OtHvn1qK9Wx9BQ==
|
||||
svelte-flatpickr@^3.2.3:
|
||||
version "3.2.3"
|
||||
resolved "https://registry.yarnpkg.com/svelte-flatpickr/-/svelte-flatpickr-3.2.3.tgz#db5dd7ad832ef83262b45e09737955ad3d591fc8"
|
||||
integrity sha512-PNkqK4Napx8nTvCwkaUXdnKo8dISThaxEOK+szTUXcY6H0dQM0TSyuoMaVWY2yX7pM+PN5cpCQCcVe8YvTRFSw==
|
||||
dependencies:
|
||||
flatpickr "^4.5.2"
|
||||
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 167 KiB |
|
@ -30,7 +30,7 @@ Cypress.Commands.add("login", () => {
|
|||
Cypress.Commands.add("createApp", name => {
|
||||
cy.visit(`localhost:${Cypress.env("PORT")}/builder`)
|
||||
cy.wait(500)
|
||||
cy.contains(/Create (new )?app/).click()
|
||||
cy.contains(/Start from scratch/).click()
|
||||
cy.get(".spectrum-Modal")
|
||||
.within(() => {
|
||||
cy.get("input").eq(0).type(name).should("have.value", name).blur()
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<meta charset='utf8'>
|
||||
<meta name='viewport' content='width=device-width'>
|
||||
<title>Budibase</title>
|
||||
<link rel='icon' href='/src/favicon.ico'>
|
||||
<link rel='icon' href='/src/favicon.png'>
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@400;600;700&display=swap"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@budibase/builder",
|
||||
"version": "0.9.151",
|
||||
"version": "0.9.152-alpha.0",
|
||||
"license": "AGPL-3.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
@ -65,10 +65,10 @@
|
|||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@budibase/bbui": "^0.9.151",
|
||||
"@budibase/client": "^0.9.151",
|
||||
"@budibase/bbui": "^0.9.152-alpha.0",
|
||||
"@budibase/client": "^0.9.152-alpha.0",
|
||||
"@budibase/colorpicker": "1.1.2",
|
||||
"@budibase/string-templates": "^0.9.151",
|
||||
"@budibase/string-templates": "^0.9.152-alpha.0",
|
||||
"@sentry/browser": "5.19.1",
|
||||
"@spectrum-css/page": "^3.0.1",
|
||||
"@spectrum-css/vars": "^3.0.1",
|
||||
|
|
|
@ -15,7 +15,6 @@ import {
|
|||
database,
|
||||
tables,
|
||||
} from "stores/backend"
|
||||
|
||||
import { fetchComponentLibDefinitions } from "../loadComponentLibraries"
|
||||
import api from "../api"
|
||||
import { FrontendTypes } from "constants"
|
||||
|
@ -25,6 +24,7 @@ import {
|
|||
findComponentParent,
|
||||
findClosestMatchingComponent,
|
||||
findAllMatchingComponents,
|
||||
findComponent,
|
||||
} from "../storeUtils"
|
||||
import { uuid } from "../uuid"
|
||||
import { removeBindings } from "../dataBinding"
|
||||
|
@ -464,6 +464,24 @@ export const getFrontendStore = () => {
|
|||
if (!asset) {
|
||||
return
|
||||
}
|
||||
|
||||
// Fetch full definition
|
||||
component = findComponent(asset.props, component._id)
|
||||
|
||||
// Ensure we aren't deleting the screen slot
|
||||
if (component._component?.endsWith("/screenslot")) {
|
||||
throw "You can't delete the screen slot"
|
||||
}
|
||||
|
||||
// Ensure we aren't deleting something that contains the screen slot
|
||||
const screenslot = findComponentType(
|
||||
component,
|
||||
"@budibase/standard-components/screenslot"
|
||||
)
|
||||
if (screenslot != null) {
|
||||
throw "You can't delete a component that contains the screen slot"
|
||||
}
|
||||
|
||||
const parent = findComponentParent(asset.props, component._id)
|
||||
if (parent) {
|
||||
parent._children = parent._children.filter(
|
||||
|
|
|
@ -6,7 +6,13 @@
|
|||
import { Screen } from "builderStore/store/screenTemplates/utils/Screen"
|
||||
import { FrontendTypes } from "constants"
|
||||
import ConfirmDialog from "components/common/ConfirmDialog.svelte"
|
||||
import { ProgressCircle, Layout, Heading, Body } from "@budibase/bbui"
|
||||
import {
|
||||
ProgressCircle,
|
||||
Layout,
|
||||
Heading,
|
||||
Body,
|
||||
notifications,
|
||||
} from "@budibase/bbui"
|
||||
import ErrorSVG from "assets/error.svg?raw"
|
||||
import { findComponent, findComponentPath } from "builderStore/storeUtils"
|
||||
|
||||
|
@ -166,10 +172,15 @@
|
|||
confirmDeleteDialog.show()
|
||||
}
|
||||
|
||||
const deleteComponent = () => {
|
||||
store.actions.components.delete({ _id: idToDelete })
|
||||
const deleteComponent = async () => {
|
||||
try {
|
||||
await store.actions.components.delete({ _id: idToDelete })
|
||||
} catch (error) {
|
||||
notifications.error(error)
|
||||
}
|
||||
idToDelete = null
|
||||
}
|
||||
|
||||
const cancelDeleteComponent = () => {
|
||||
idToDelete = null
|
||||
}
|
||||
|
|
|
@ -84,7 +84,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="setting">
|
||||
<Label size="L">Primary color</Label>
|
||||
<Label size="L">Accent color</Label>
|
||||
<ColorPicker
|
||||
spectrumTheme={$store.theme}
|
||||
value={$store.customTheme?.primaryColor || defaultTheme.primaryColor}
|
||||
|
@ -92,7 +92,7 @@
|
|||
/>
|
||||
</div>
|
||||
<div class="setting">
|
||||
<Label size="L">Primary color (hover)</Label>
|
||||
<Label size="L">Accent color (hover)</Label>
|
||||
<ColorPicker
|
||||
spectrumTheme={$store.theme}
|
||||
value={$store.customTheme?.primaryColorHover ||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
import { store, currentAsset } from "builderStore"
|
||||
import ConfirmDialog from "components/common/ConfirmDialog.svelte"
|
||||
import { findComponentParent } from "builderStore/storeUtils"
|
||||
import { ActionMenu, MenuItem, Icon } from "@budibase/bbui"
|
||||
import { ActionMenu, MenuItem, Icon, notifications } from "@budibase/bbui"
|
||||
|
||||
export let component
|
||||
|
||||
|
@ -51,7 +51,11 @@
|
|||
}
|
||||
|
||||
const deleteComponent = async () => {
|
||||
try {
|
||||
await store.actions.components.delete(component)
|
||||
} catch (error) {
|
||||
notifications.error(error)
|
||||
}
|
||||
}
|
||||
|
||||
const storeComponentForCopy = (cut = false) => {
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
import { capitalise } from "helpers"
|
||||
import { goto } from "@roxi/routify"
|
||||
import { APP_NAME_REGEX } from "constants"
|
||||
import TemplateList from "./TemplateList.svelte"
|
||||
|
||||
export let template
|
||||
|
||||
|
@ -31,12 +32,16 @@
|
|||
APP_NAME_REGEX,
|
||||
"App name must be letters, numbers and spaces only"
|
||||
),
|
||||
file: template ? mixed().required("Please choose a file to import") : null,
|
||||
file: template?.fromFile
|
||||
? mixed().required("Please choose a file to import")
|
||||
: null,
|
||||
}
|
||||
|
||||
let submitting = false
|
||||
let valid = false
|
||||
|
||||
$: checkValidity($values, validator)
|
||||
$: showTemplateSelection = !template?.fromFile && !template?.key
|
||||
|
||||
onMount(async () => {
|
||||
await hostingStore.actions.fetchDeployedApps()
|
||||
|
@ -73,7 +78,7 @@
|
|||
submitting = true
|
||||
|
||||
// Check a template exists if we are important
|
||||
if (template && !$values.file) {
|
||||
if (template?.fromFile && !$values.file) {
|
||||
$errors.file = "Please choose a file to import"
|
||||
valid = false
|
||||
submitting = false
|
||||
|
@ -133,13 +138,38 @@
|
|||
}
|
||||
</script>
|
||||
|
||||
{#if showTemplateSelection}
|
||||
<ModalContent
|
||||
title={template ? "Import app" : "Create app"}
|
||||
confirmText={template ? "Import app" : "Create app"}
|
||||
title={"Get started quickly"}
|
||||
showConfirmButton={false}
|
||||
size="L"
|
||||
onConfirm={() => {
|
||||
showTemplateSelection = false
|
||||
return false
|
||||
}}
|
||||
showCancelButton={false}
|
||||
showCloseIcon={false}
|
||||
>
|
||||
<Body size="M">Select a template below, or start from scratch.</Body>
|
||||
<TemplateList
|
||||
onSelect={selected => {
|
||||
if (!selected) {
|
||||
showTemplateSelection = false
|
||||
return
|
||||
}
|
||||
|
||||
template = selected
|
||||
}}
|
||||
/>
|
||||
</ModalContent>
|
||||
{:else}
|
||||
<ModalContent
|
||||
title={template?.fromFile ? "Import app" : "Create app"}
|
||||
confirmText={template?.fromFile ? "Import app" : "Create app"}
|
||||
onConfirm={createNewApp}
|
||||
disabled={!valid}
|
||||
>
|
||||
{#if template}
|
||||
{#if template?.fromFile}
|
||||
<Dropzone
|
||||
error={$touched.file && $errors.file}
|
||||
gallery={false}
|
||||
|
@ -163,3 +193,4 @@
|
|||
/>
|
||||
<Checkbox label="Group access" disabled value={true} text="All users" />
|
||||
</ModalContent>
|
||||
{/if}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script>
|
||||
import { Button, Heading, Body } from "@budibase/bbui"
|
||||
import { Heading, Layout, Icon } from "@budibase/bbui"
|
||||
import Spinner from "components/common/Spinner.svelte"
|
||||
import api from "builderStore/api"
|
||||
|
||||
|
@ -13,8 +13,7 @@
|
|||
let templatesPromise = fetchTemplates()
|
||||
</script>
|
||||
|
||||
<div class="root">
|
||||
<Heading size="M">Start With a Template</Heading>
|
||||
<Layout gap="XS" noPadding>
|
||||
{#await templatesPromise}
|
||||
<div class="spinner-container">
|
||||
<Spinner size="30" />
|
||||
|
@ -22,41 +21,69 @@
|
|||
{:then templates}
|
||||
<div class="templates">
|
||||
{#each templates as template}
|
||||
<div class="templates-card">
|
||||
<Heading size="S">{template.name}</Heading>
|
||||
<Body size="M" grey>{template.category}</Body>
|
||||
<Body size="S" black>{template.description}</Body>
|
||||
<div><img alt="template" src={template.image} width="100%" /></div>
|
||||
<div class="card-footer">
|
||||
<Button secondary on:click={() => onSelect(template)}>
|
||||
Create
|
||||
{template.name}
|
||||
</Button>
|
||||
<div class="template" on:click={() => onSelect(template)}>
|
||||
<div
|
||||
class="background-icon"
|
||||
style={`background: ${template.background};`}
|
||||
>
|
||||
<Icon name={template.icon} />
|
||||
</div>
|
||||
<Heading size="XS">{template.name}</Heading>
|
||||
<p class="detail">{template?.category?.toUpperCase()}</p>
|
||||
</div>
|
||||
{/each}
|
||||
<div class="template start-from-scratch" on:click={() => onSelect(null)}>
|
||||
<div class="background-icon" style={`background: var(--background);`}>
|
||||
<Icon name="Add" />
|
||||
</div>
|
||||
<Heading size="XS">Start from scratch</Heading>
|
||||
<p class="detail">BLANK</p>
|
||||
</div>
|
||||
</div>
|
||||
{:catch err}
|
||||
<h1 style="color:red">{err}</h1>
|
||||
{/await}
|
||||
</div>
|
||||
</Layout>
|
||||
|
||||
<style>
|
||||
.templates {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
|
||||
grid-gap: var(--layout-m);
|
||||
width: 100%;
|
||||
grid-gap: var(--spacing-m);
|
||||
grid-template-columns: 1fr;
|
||||
justify-content: start;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.templates-card {
|
||||
background-color: var(--background);
|
||||
padding: var(--spacing-xl);
|
||||
border-radius: var(--border-radius-m);
|
||||
border: var(--border-dark);
|
||||
.background-icon {
|
||||
padding: 10px;
|
||||
border-radius: 4px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 18px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.card-footer {
|
||||
margin-top: var(--spacing-m);
|
||||
.template {
|
||||
height: 60px;
|
||||
display: grid;
|
||||
grid-gap: var(--layout-m);
|
||||
grid-template-columns: 5% 1fr 15%;
|
||||
border: 1px solid #494949;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
background: #1a1a1a;
|
||||
padding: 8px 16px;
|
||||
}
|
||||
|
||||
.detail {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.start-from-scratch {
|
||||
background: var(--spectrum-global-color-gray-50);
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -25,9 +25,9 @@
|
|||
title="Self-host Budibase"
|
||||
confirmText="Self-host Budibase"
|
||||
>
|
||||
<span
|
||||
>Self-host budibase for free to get unlimited apps and more - and it only
|
||||
takes a few minutes!</span
|
||||
>
|
||||
<span>
|
||||
Self-host budibase for free to get unlimited apps and more - and it only
|
||||
takes a few minutes!
|
||||
</span>
|
||||
</ModalContent>
|
||||
</Modal>
|
||||
|
|
|
@ -20,25 +20,29 @@
|
|||
return
|
||||
}
|
||||
|
||||
if (user && user.tenantId) {
|
||||
// e.g. ['tenant', 'budibase', 'app'] vs ['budibase', 'app']
|
||||
let urlTenantId
|
||||
const hostParts = host.split(".")
|
||||
|
||||
// only run validation when we know we are in a tenant url
|
||||
// not when we visit the root budibase.app domain
|
||||
// e.g. ['tenant', 'budibase', 'app'] vs ['budibase', 'app']
|
||||
if (hostParts.length > 2) {
|
||||
urlTenantId = hostParts[0]
|
||||
} else {
|
||||
}
|
||||
|
||||
// no tenant in the url - send to account portal to fix this
|
||||
if (!urlTenantId) {
|
||||
window.location.href = $admin.accountPortalUrl
|
||||
return
|
||||
}
|
||||
|
||||
if (user && user.tenantId) {
|
||||
if (user.tenantId !== urlTenantId) {
|
||||
// user should not be here - play it safe and log them out
|
||||
await auth.logout()
|
||||
await auth.setOrganisation(null)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
// no user - set the org according to the url
|
||||
await auth.setOrganisation(urlTenantId)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -159,8 +159,6 @@
|
|||
cursor: pointer;
|
||||
filter: brightness(110%);
|
||||
}
|
||||
.group {
|
||||
}
|
||||
.app {
|
||||
display: grid;
|
||||
grid-template-columns: auto 1fr auto;
|
||||
|
|
|
@ -8,10 +8,8 @@
|
|||
ButtonGroup,
|
||||
Select,
|
||||
Modal,
|
||||
ModalContent,
|
||||
Page,
|
||||
notifications,
|
||||
Body,
|
||||
Search,
|
||||
} from "@budibase/bbui"
|
||||
import CreateAppModal from "components/start/CreateAppModal.svelte"
|
||||
|
@ -270,22 +268,7 @@
|
|||
{#if !enrichedApps.length && !creatingApp && loaded}
|
||||
<div class="empty-wrapper">
|
||||
<Modal inline>
|
||||
<ModalContent
|
||||
title="Create your first app"
|
||||
confirmText="Create app"
|
||||
showCancelButton={false}
|
||||
showCloseIcon={false}
|
||||
onConfirm={initiateAppCreation}
|
||||
size="M"
|
||||
>
|
||||
<div slot="footer">
|
||||
<Button on:click={initiateAppImport} secondary>Import app</Button>
|
||||
</div>
|
||||
<Body size="S">
|
||||
The purpose of the Budibase builder is to help you build beautiful,
|
||||
powerful applications quickly and easily.
|
||||
</Body>
|
||||
</ModalContent>
|
||||
<CreateAppModal {template} />
|
||||
</Modal>
|
||||
</div>
|
||||
{/if}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@budibase/cli",
|
||||
"version": "0.9.151",
|
||||
"version": "0.9.152-alpha.0",
|
||||
"description": "Budibase CLI, for developers, self hosting and migrations.",
|
||||
"main": "src/index.js",
|
||||
"bin": {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@budibase/client",
|
||||
"version": "0.9.151",
|
||||
"version": "0.9.152-alpha.0",
|
||||
"license": "MPL-2.0",
|
||||
"module": "dist/budibase-client.js",
|
||||
"main": "dist/budibase-client.js",
|
||||
|
@ -19,9 +19,9 @@
|
|||
"dev:builder": "rollup -cw"
|
||||
},
|
||||
"dependencies": {
|
||||
"@budibase/bbui": "^0.9.151",
|
||||
"@budibase/bbui": "^0.9.152-alpha.0",
|
||||
"@budibase/standard-components": "^0.9.139",
|
||||
"@budibase/string-templates": "^0.9.151",
|
||||
"@budibase/string-templates": "^0.9.152-alpha.0",
|
||||
"regexparam": "^1.3.0",
|
||||
"shortid": "^2.2.15",
|
||||
"svelte-spa-router": "^3.0.5"
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@budibase/server",
|
||||
"email": "hi@budibase.com",
|
||||
"version": "0.9.151",
|
||||
"version": "0.9.152-alpha.0",
|
||||
"description": "Budibase Web Server",
|
||||
"main": "src/index.js",
|
||||
"repository": {
|
||||
|
@ -66,9 +66,9 @@
|
|||
"author": "Budibase",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"@budibase/auth": "^0.9.151",
|
||||
"@budibase/client": "^0.9.151",
|
||||
"@budibase/string-templates": "^0.9.151",
|
||||
"@budibase/auth": "^0.9.152-alpha.0",
|
||||
"@budibase/client": "^0.9.152-alpha.0",
|
||||
"@budibase/string-templates": "^0.9.152-alpha.0",
|
||||
"@elastic/elasticsearch": "7.10.0",
|
||||
"@koa/router": "8.0.0",
|
||||
"@sendgrid/mail": "7.1.1",
|
||||
|
|
|
@ -76,8 +76,9 @@ exports.getTemplateStream = async template => {
|
|||
if (template.file) {
|
||||
return fs.createReadStream(template.file.path)
|
||||
} else {
|
||||
const tmpPath = await exports.downloadTemplate(...template.key.split("/"))
|
||||
return fs.createReadStream(join(tmpPath, "db", "dump.txt"))
|
||||
const [type, name] = template.key.split("/")
|
||||
const tmpPath = await exports.downloadTemplate(type, name)
|
||||
return fs.createReadStream(join(tmpPath, name, "db", "dump.txt"))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
"array"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{ avg [1,2,3,4,5] }} -> 3",
|
||||
"example": "{{ avg 1 2 3 4 5 }} -> 3",
|
||||
"description": "<p>Returns the average of all numbers in the given array.</p>\n"
|
||||
},
|
||||
"ceil": {
|
||||
|
@ -154,7 +154,7 @@
|
|||
"value"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{ arrayify \"foo\" }} -> [\"foo\"]",
|
||||
"example": "{{ arrayify 'foo' }} -> ['foo']",
|
||||
"description": "<p>Cast the given <code>value</code> to an array.</p>\n"
|
||||
},
|
||||
"before": {
|
||||
|
@ -290,7 +290,7 @@
|
|||
"prop"
|
||||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{pluck [{ 'name': 'Bob' }] \"name\" }} -> ['Bob']",
|
||||
"example": "{{pluck [{ 'name': 'Bob' }] 'name' }} -> ['Bob']",
|
||||
"description": "<p>Map over the given object or array or objects and create an array of values from the given <code>prop</code>. Dot-notation may be used (as a string) to get nested properties.</p>\n"
|
||||
},
|
||||
"reverse": {
|
||||
|
@ -326,7 +326,7 @@
|
|||
"props"
|
||||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{ sortBy [{a: 'zzz'}, {a: 'aaa'}] \"a\" }} -> [{\"a\":\"aaa\"}, {\"a\":\"zzz\"}]",
|
||||
"example": "{{ sortBy [{a: 'zzz'}, {a: 'aaa'}] 'a' }} -> [{'a':'aaa'}, {'a':'zzz'}]",
|
||||
"description": "<p>Sort an <code>array</code>. If an array of objects is passed, you may optionally pass a <code>key</code> to sort on as the second argument. You may alternatively pass a sorting function as the second argument.</p>\n"
|
||||
},
|
||||
"withAfter": {
|
||||
|
@ -471,7 +471,7 @@
|
|||
"precision"
|
||||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{toPrecision \"1.1234\" 2}}",
|
||||
"example": "{{toPrecision '1.1234' 2}}",
|
||||
"description": "<p>Returns a string representing the <code>Number</code> object to the specified precision.</p>\n"
|
||||
}
|
||||
},
|
||||
|
@ -481,7 +481,7 @@
|
|||
"str"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{ encodeURI \"https://myurl?Hello There\" }} -> https://myurl?Hello%20There",
|
||||
"example": "{{ encodeURI 'https://myurl?Hello There' }} -> https://myurl?Hello%20There",
|
||||
"description": "<p>Encodes a Uniform Resource Identifier (URI) component by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character.</p>\n"
|
||||
},
|
||||
"escape": {
|
||||
|
@ -489,7 +489,7 @@
|
|||
"str"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{ escape \"https://myurl?Hello+There\" }} -> https://myurl?Hello%20There",
|
||||
"example": "{{ escape 'https://myurl?Hello+There' }} -> https://myurl?Hello%20There",
|
||||
"description": "<p>Escape the given string by replacing characters with escape sequences. Useful for allowing the string to be used in a URL, etc.</p>\n"
|
||||
},
|
||||
"decodeURI": {
|
||||
|
@ -497,7 +497,7 @@
|
|||
"str"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{ escape \"https://myurl?Hello%20There\" }} -> https://myurl?Hello+There",
|
||||
"example": "{{ escape 'https://myurl?Hello%20There' }} -> https://myurl?Hello+There",
|
||||
"description": "<p>Decode a Uniform Resource Identifier (URI) component.</p>\n"
|
||||
},
|
||||
"url_encode": {
|
||||
|
@ -516,7 +516,7 @@
|
|||
"href"
|
||||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{ urlResolve \"https://myurl\" \"/api/test\" }} -> https://myurl/api/test",
|
||||
"example": "{{ urlResolve 'https://myurl' '/api/test' }} -> https://myurl/api/test",
|
||||
"description": "<p>Take a base URL, and a href URL, and resolve them as a browser would for an anchor tag.</p>\n"
|
||||
},
|
||||
"urlParse": {
|
||||
|
@ -524,7 +524,7 @@
|
|||
"str"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{ urlParse \"https://myurl/api/test\" }}",
|
||||
"example": "{{ urlParse 'https://myurl/api/test' }}",
|
||||
"description": "<p>Parses a <code>url</code> string into an object.</p>\n"
|
||||
},
|
||||
"stripQuerystring": {
|
||||
|
@ -532,7 +532,7 @@
|
|||
"url"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{ stripQueryString \"https://myurl/api/test?foo=bar\" }} -> \"https://myurl/api/test\"",
|
||||
"example": "{{ stripQueryString 'https://myurl/api/test?foo=bar' }} -> 'https://myurl/api/test'",
|
||||
"description": "<p>Strip the query string from the given <code>url</code>.</p>\n"
|
||||
},
|
||||
"stripProtocol": {
|
||||
|
@ -540,7 +540,7 @@
|
|||
"str"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{ stripProtocol \"https://myurl/api/test\" }} -> \"myurl/api/test\"",
|
||||
"example": "{{ stripProtocol 'https://myurl/api/test' }} -> 'myurl/api/test'",
|
||||
"description": "<p>Strip protocol from a <code>url</code>. Useful for displaying media that may have an 'http' protocol on secure connections.</p>\n"
|
||||
}
|
||||
},
|
||||
|
@ -551,7 +551,7 @@
|
|||
"suffix"
|
||||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{append \"index\" \".html\"}} -> index.html",
|
||||
"example": "{{append 'index' '.html'}} -> index.html",
|
||||
"description": "<p>Append the specified <code>suffix</code> to the given string.</p>\n"
|
||||
},
|
||||
"camelcase": {
|
||||
|
@ -559,7 +559,7 @@
|
|||
"string"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{camelcase \"foo bar baz\"}} -> fooBarBaz",
|
||||
"example": "{{camelcase 'foo bar baz'}} -> fooBarBaz",
|
||||
"description": "<p>camelCase the characters in the given <code>string</code>.</p>\n"
|
||||
},
|
||||
"capitalize": {
|
||||
|
@ -567,7 +567,7 @@
|
|||
"str"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{capitalize \"foo bar baz\"}} -> Foo bar baz",
|
||||
"example": "{{capitalize 'foo bar baz'}} -> Foo bar baz",
|
||||
"description": "<p>Capitalize the first word in a sentence.</p>\n"
|
||||
},
|
||||
"capitalizeAll": {
|
||||
|
@ -575,7 +575,7 @@
|
|||
"str"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{ capitalizeAll \"foo bar baz\"}} -> Foo Bar Baz",
|
||||
"example": "{{ capitalizeAll 'foo bar baz'}} -> Foo Bar Baz",
|
||||
"description": "<p>Capitalize all words in a string.</p>\n"
|
||||
},
|
||||
"center": {
|
||||
|
@ -584,7 +584,7 @@
|
|||
"spaces"
|
||||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{ center \"test\" 1}} -> \" test \"",
|
||||
"example": "{{ center 'test' 1}} -> ' test '",
|
||||
"description": "<p>Center a string using non-breaking spaces</p>\n"
|
||||
},
|
||||
"chop": {
|
||||
|
@ -592,7 +592,7 @@
|
|||
"string"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{ chop \" ABC \"}} -> \"ABC\"",
|
||||
"example": "{{ chop ' ABC '}} -> 'ABC'",
|
||||
"description": "<p>Like trim, but removes both extraneous whitespace <strong>and non-word characters</strong> from the beginning and end of a string.</p>\n"
|
||||
},
|
||||
"dashcase": {
|
||||
|
@ -600,7 +600,7 @@
|
|||
"string"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{dashcase \"a-b-c d_e\"}} -> a-b-c-d-e",
|
||||
"example": "{{dashcase 'a-b-c d_e'}} -> a-b-c-d-e",
|
||||
"description": "<p>dash-case the characters in <code>string</code>. Replaces non-word characters and periods with hyphens.</p>\n"
|
||||
},
|
||||
"dotcase": {
|
||||
|
@ -608,7 +608,7 @@
|
|||
"string"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{dotcase \"a-b-c d_e\"}} -> a.b.c.d.e",
|
||||
"example": "{{dotcase 'a-b-c d_e'}} -> a.b.c.d.e",
|
||||
"description": "<p>dot.case the characters in <code>string</code>.</p>\n"
|
||||
},
|
||||
"downcase": {
|
||||
|
@ -616,7 +616,7 @@
|
|||
"string"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{downcase \"aBcDeF\"}} -> abcdef",
|
||||
"example": "{{downcase 'aBcDeF'}} -> abcdef",
|
||||
"description": "<p>Lowercase all of the characters in the given string. Alias for <a href=\"#lowercase\">lowercase</a>.</p>\n"
|
||||
},
|
||||
"ellipsis": {
|
||||
|
@ -625,7 +625,7 @@
|
|||
"length"
|
||||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{ellipsis \"foo bar baz\", 7}} -> foo bar…",
|
||||
"example": "{{ellipsis 'foo bar baz', 7}} -> foo bar…",
|
||||
"description": "<p>Truncates a string to the specified <code>length</code>, and appends it with an elipsis, <code>…</code>.</p>\n"
|
||||
},
|
||||
"hyphenate": {
|
||||
|
@ -633,7 +633,7 @@
|
|||
"str"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{hyphenate \"foo bar baz qux\"}} -> foo-bar-baz-qux",
|
||||
"example": "{{hyphenate 'foo bar baz qux'}} -> foo-bar-baz-qux",
|
||||
"description": "<p>Replace spaces in a string with hyphens.</p>\n"
|
||||
},
|
||||
"isString": {
|
||||
|
@ -641,7 +641,7 @@
|
|||
"value"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{isString \"foo\"}} -> true",
|
||||
"example": "{{isString 'foo'}} -> true",
|
||||
"description": "<p>Return true if <code>value</code> is a string.</p>\n"
|
||||
},
|
||||
"lowercase": {
|
||||
|
@ -649,7 +649,7 @@
|
|||
"str"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{lowercase \"Foo BAR baZ\"}} -> foo bar baz",
|
||||
"example": "{{lowercase 'Foo BAR baZ'}} -> foo bar baz",
|
||||
"description": "<p>Lowercase all characters in the given string.</p>\n"
|
||||
},
|
||||
"occurrences": {
|
||||
|
@ -658,7 +658,7 @@
|
|||
"substring"
|
||||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{occurrences \"foo bar foo bar baz\" \"foo\"}} -> 2",
|
||||
"example": "{{occurrences 'foo bar foo bar baz' 'foo'}} -> 2",
|
||||
"description": "<p>Return the number of occurrences of <code>substring</code> within the given <code>string</code>.</p>\n"
|
||||
},
|
||||
"pascalcase": {
|
||||
|
@ -666,7 +666,7 @@
|
|||
"string"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{pascalcase \"foo bar baz\"}} -> FooBarBaz",
|
||||
"example": "{{pascalcase 'foo bar baz'}} -> FooBarBaz",
|
||||
"description": "<p>PascalCase the characters in <code>string</code>.</p>\n"
|
||||
},
|
||||
"pathcase": {
|
||||
|
@ -674,7 +674,7 @@
|
|||
"string"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{pathcase \"a-b-c d_e\"}} -> a/b/c/d/e",
|
||||
"example": "{{pathcase 'a-b-c d_e'}} -> a/b/c/d/e",
|
||||
"description": "<p>path/case the characters in <code>string</code>.</p>\n"
|
||||
},
|
||||
"plusify": {
|
||||
|
@ -682,7 +682,7 @@
|
|||
"str"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{plusify \"foo bar baz\"}} -> foo+bar+baz",
|
||||
"example": "{{plusify 'foo bar baz'}} -> foo+bar+baz",
|
||||
"description": "<p>Replace spaces in the given string with pluses.</p>\n"
|
||||
},
|
||||
"prepend": {
|
||||
|
@ -691,7 +691,7 @@
|
|||
"prefix"
|
||||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{prepend \"bar\" \"foo-\"}} -> foo-bar",
|
||||
"example": "{{prepend 'bar' 'foo-'}} -> foo-bar",
|
||||
"description": "<p>Prepends the given <code>string</code> with the specified <code>prefix</code>.</p>\n"
|
||||
},
|
||||
"raw": {
|
||||
|
@ -708,7 +708,7 @@
|
|||
"substring"
|
||||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{remove \"a b a b a b\" \"a \"}} -> b b b",
|
||||
"example": "{{remove 'a b a b a b' 'a '}} -> b b b",
|
||||
"description": "<p>Remove all occurrences of <code>substring</code> from the given <code>str</code>.</p>\n"
|
||||
},
|
||||
"removeFirst": {
|
||||
|
@ -717,7 +717,7 @@
|
|||
"substring"
|
||||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{remove \"a b a b a b\" \"a\"}} -> b a b a b",
|
||||
"example": "{{remove 'a b a b a b' 'a'}} -> b a b a b",
|
||||
"description": "<p>Remove the first occurrence of <code>substring</code> from the given <code>str</code>.</p>\n"
|
||||
},
|
||||
"replace": {
|
||||
|
@ -727,7 +727,7 @@
|
|||
"b"
|
||||
],
|
||||
"numArgs": 3,
|
||||
"example": "{{replace \"a b a b a b\" \"a\" \"z\"}} -> z b z b z b",
|
||||
"example": "{{replace 'a b a b a b' 'a' 'z'}} -> z b z b z b",
|
||||
"description": "<p>Replace all occurrences of substring <code>a</code> with substring <code>b</code>.</p>\n"
|
||||
},
|
||||
"replaceFirst": {
|
||||
|
@ -737,7 +737,7 @@
|
|||
"b"
|
||||
],
|
||||
"numArgs": 3,
|
||||
"example": "{{replace \"a b a b a b\" \"a\" \"z\"}} -> z b a b a b",
|
||||
"example": "{{replace 'a b a b a b' 'a' 'z'}} -> z b a b a b",
|
||||
"description": "<p>Replace the first occurrence of substring <code>a</code> with substring <code>b</code>.</p>\n"
|
||||
},
|
||||
"sentence": {
|
||||
|
@ -745,7 +745,7 @@
|
|||
"str"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{sentence \"hello world. goodbye world.\"}} -> Hello world. Goodbye world.",
|
||||
"example": "{{sentence 'hello world. goodbye world.'}} -> Hello world. Goodbye world.",
|
||||
"description": "<p>Sentence case the given string</p>\n"
|
||||
},
|
||||
"snakecase": {
|
||||
|
@ -753,7 +753,7 @@
|
|||
"string"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{snakecase \"a-b-c d_e\"}} -> a_b_c_d_e",
|
||||
"example": "{{snakecase 'a-b-c d_e'}} -> a_b_c_d_e",
|
||||
"description": "<p>snake_case the characters in the given <code>string</code>.</p>\n"
|
||||
},
|
||||
"split": {
|
||||
|
@ -761,7 +761,7 @@
|
|||
"string"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{split \"a,b,c\"}} -> ['a', 'b', 'c']",
|
||||
"example": "{{split 'a,b,c'}} -> ['a', 'b', 'c']",
|
||||
"description": "<p>Split <code>string</code> by the given <code>character</code>.</p>\n"
|
||||
},
|
||||
"startsWith": {
|
||||
|
@ -771,7 +771,7 @@
|
|||
"options"
|
||||
],
|
||||
"numArgs": 3,
|
||||
"example": "{{#startsWith \"Goodbye\" \"Hello, world!\"}} Yep {{else}} Nope {{/startsWith}} -> Nope",
|
||||
"example": "{{#startsWith 'Goodbye' 'Hello, world!'}} Yep {{else}} Nope {{/startsWith}} -> Nope",
|
||||
"description": "<p>Tests whether a string begins with the given prefix.</p>\n"
|
||||
},
|
||||
"titleize": {
|
||||
|
@ -779,7 +779,7 @@
|
|||
"str"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{#titleize \"this is title case\" }} -> This Is Title Case",
|
||||
"example": "{{#titleize 'this is title case' }} -> This Is Title Case",
|
||||
"description": "<p>Title case the given string.</p>\n"
|
||||
},
|
||||
"trim": {
|
||||
|
@ -787,7 +787,7 @@
|
|||
"string"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{trim \" ABC \" }} -> ABC",
|
||||
"example": "{{trim ' ABC ' }} -> ABC",
|
||||
"description": "<p>Removes extraneous whitespace from the beginning and end of a string.</p>\n"
|
||||
},
|
||||
"trimLeft": {
|
||||
|
@ -795,7 +795,7 @@
|
|||
"string"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{trimLeft \" ABC \" }} -> \"ABC \"",
|
||||
"example": "{{trimLeft ' ABC ' }} -> 'ABC '",
|
||||
"description": "<p>Removes extraneous whitespace from the beginning of a string.</p>\n"
|
||||
},
|
||||
"trimRight": {
|
||||
|
@ -803,7 +803,7 @@
|
|||
"string"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{trimRight \" ABC \" }} -> \" ABC \"",
|
||||
"example": "{{trimRight ' ABC ' }} -> ' ABC '",
|
||||
"description": "<p>Removes extraneous whitespace from the end of a string.</p>\n"
|
||||
},
|
||||
"truncate": {
|
||||
|
@ -813,7 +813,7 @@
|
|||
"suffix"
|
||||
],
|
||||
"numArgs": 3,
|
||||
"example": "{{truncate \"foo bar baz\" 7 }} -> foo bar",
|
||||
"example": "{{truncate 'foo bar baz' 7 }} -> foo bar",
|
||||
"description": "<p>Truncate a string to the specified <code>length</code>. Also see <a href=\"#ellipsis\">ellipsis</a>.</p>\n"
|
||||
},
|
||||
"truncateWords": {
|
||||
|
@ -823,7 +823,7 @@
|
|||
"suffix"
|
||||
],
|
||||
"numArgs": 3,
|
||||
"example": "{{truncateWords \"foo bar baz\" 1 }} -> foo",
|
||||
"example": "{{truncateWords 'foo bar baz' 1 }} -> foo",
|
||||
"description": "<p>Truncate a string to have the specified number of words. Also see <a href=\"#truncate\">truncate</a>.</p>\n"
|
||||
},
|
||||
"upcase": {
|
||||
|
@ -831,7 +831,7 @@
|
|||
"string"
|
||||
],
|
||||
"numArgs": 1,
|
||||
"example": "{{upcase \"aBcDef\"}} -> ABCDEF",
|
||||
"example": "{{upcase 'aBcDef'}} -> ABCDEF",
|
||||
"description": "<p>Uppercase all of the characters in the given string. Alias for <a href=\"#uppercase\">uppercase</a>.</p>\n"
|
||||
},
|
||||
"uppercase": {
|
||||
|
@ -840,7 +840,7 @@
|
|||
"options"
|
||||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{uppercase \"aBcDef\"}} -> ABCDEF",
|
||||
"example": "{{uppercase 'aBcDef'}} -> ABCDEF",
|
||||
"description": "<p>Uppercase all of the characters in the given string. If used as a block helper it will uppercase the entire block. This helper does not support inverse blocks.</p>\n"
|
||||
}
|
||||
},
|
||||
|
@ -863,7 +863,7 @@
|
|||
"options"
|
||||
],
|
||||
"numArgs": 4,
|
||||
"example": "{{compare 10 \"<\" 5 }} -> true",
|
||||
"example": "{{compare 10 '<' 5 }} -> true",
|
||||
"description": "<p>Render a block when a comparison of the first and third arguments returns true. The second argument is the [arithemetic operator][operators] to use. You may also optionally specify an inverse block to render when falsy.</p>\n"
|
||||
},
|
||||
"contains": {
|
||||
|
@ -874,7 +874,7 @@
|
|||
"options"
|
||||
],
|
||||
"numArgs": 4,
|
||||
"example": "{{#contains ['a', 'b', 'c'] \"d\"}} This will not be rendered. {{else}} This will be rendered. {{/contains}}",
|
||||
"example": "{{#contains ['a', 'b', 'c'] 'd'}} This will not be rendered. {{else}} This will be rendered. {{/contains}}",
|
||||
"description": "<p>Block helper that renders the block if <code>collection</code> has the given <code>value</code>, using strict equality (<code>===</code>) for comparison, otherwise the inverse block is rendered (if specified). If a <code>startIndex</code> is specified and is negative, it is used as the offset from the end of the collection.</p>\n"
|
||||
},
|
||||
"default": {
|
||||
|
@ -883,8 +883,8 @@
|
|||
"defaultValue"
|
||||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{default null null \"default\"}} -> default",
|
||||
"description": "<p>Returns the first value that is not undefined, otherwise the "default" value is returned.</p>\n"
|
||||
"example": "{{default null null 'default'}} -> default",
|
||||
"description": "<p>Returns the first value that is not undefined, otherwise the 'default' value is returned.</p>\n"
|
||||
},
|
||||
"eq": {
|
||||
"args": [
|
||||
|
@ -894,7 +894,7 @@
|
|||
],
|
||||
"numArgs": 3,
|
||||
"example": "{{#eq 3 3}} equal{{else}} not equal{{/eq}} -> equal",
|
||||
"description": "<p>Block helper that renders a block if <code>a</code> is <strong>equal to</strong> <code>b</code>. If an inverse block is specified it will be rendered when falsy. You may optionally use the <code>compare=""</code> hash argument for the second value.</p>\n"
|
||||
"description": "<p>Block helper that renders a block if <code>a</code> is <strong>equal to</strong> <code>b</code>. If an inverse block is specified it will be rendered when falsy. You may optionally use the <code>compare=''</code> hash argument for the second value.</p>\n"
|
||||
},
|
||||
"gt": {
|
||||
"args": [
|
||||
|
@ -904,7 +904,7 @@
|
|||
],
|
||||
"numArgs": 3,
|
||||
"example": "{{#gt 4 3}} greater than{{else}} not greater than{{/gt}} -> greater than",
|
||||
"description": "<p>Block helper that renders a block if <code>a</code> is <strong>greater than</strong> <code>b</code>. If an inverse block is specified it will be rendered when falsy. You may optionally use the <code>compare=""</code> hash argument for the second value.</p>\n"
|
||||
"description": "<p>Block helper that renders a block if <code>a</code> is <strong>greater than</strong> <code>b</code>. If an inverse block is specified it will be rendered when falsy. You may optionally use the <code>compare=''</code> hash argument for the second value.</p>\n"
|
||||
},
|
||||
"gte": {
|
||||
"args": [
|
||||
|
@ -914,7 +914,7 @@
|
|||
],
|
||||
"numArgs": 3,
|
||||
"example": "{{#gte 4 3}} greater than or equal{{else}} not greater than{{/gte}} -> greater than or equal",
|
||||
"description": "<p>Block helper that renders a block if <code>a</code> is <strong>greater than or equal to</strong> <code>b</code>. If an inverse block is specified it will be rendered when falsy. You may optionally use the <code>compare=""</code> hash argument for the second value.</p>\n"
|
||||
"description": "<p>Block helper that renders a block if <code>a</code> is <strong>greater than or equal to</strong> <code>b</code>. If an inverse block is specified it will be rendered when falsy. You may optionally use the <code>compare=''</code> hash argument for the second value.</p>\n"
|
||||
},
|
||||
"has": {
|
||||
"args": [
|
||||
|
@ -923,7 +923,7 @@
|
|||
"options"
|
||||
],
|
||||
"numArgs": 3,
|
||||
"example": "{{#has \"foobar\" \"foo\"}} has it{{else}} doesn't{{/has}} -> has it",
|
||||
"example": "{{#has 'foobar' 'foo'}} has it{{else}} doesn't{{/has}} -> has it",
|
||||
"description": "<p>Block helper that renders a block if <code>value</code> has <code>pattern</code>. If an inverse block is specified it will be rendered when falsy.</p>\n"
|
||||
},
|
||||
"isFalsey": {
|
||||
|
@ -932,7 +932,7 @@
|
|||
"options"
|
||||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{isFalsey \"\" }} -> true",
|
||||
"example": "{{isFalsey '' }} -> true",
|
||||
"description": "<p>Returns true if the given <code>value</code> is falsey. Uses the [falsey][] library for comparisons. Please see that library for more information or to report bugs with this helper.</p>\n"
|
||||
},
|
||||
"isTruthy": {
|
||||
|
@ -941,7 +941,7 @@
|
|||
"options"
|
||||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{isTruthy \"12\" }} -> true",
|
||||
"example": "{{isTruthy '12' }} -> true",
|
||||
"description": "<p>Returns true if the given <code>value</code> is truthy. Uses the [falsey][] library for comparisons. Please see that library for more information or to report bugs with this helper.</p>\n"
|
||||
},
|
||||
"ifEven": {
|
||||
|
@ -999,7 +999,7 @@
|
|||
],
|
||||
"numArgs": 2,
|
||||
"example": "{{#lt 2 3}} less than {{else}} more than or equal {{/lt}} -> less than",
|
||||
"description": "<p>Block helper that renders a block if <code>a</code> is <strong>less than</strong> <code>b</code>. If an inverse block is specified it will be rendered when falsy. You may optionally use the <code>compare=""</code> hash argument for the second value.</p>\n"
|
||||
"description": "<p>Block helper that renders a block if <code>a</code> is <strong>less than</strong> <code>b</code>. If an inverse block is specified it will be rendered when falsy. You may optionally use the <code>compare=''</code> hash argument for the second value.</p>\n"
|
||||
},
|
||||
"lte": {
|
||||
"args": [
|
||||
|
@ -1009,7 +1009,7 @@
|
|||
],
|
||||
"numArgs": 3,
|
||||
"example": "{{#lte 2 3}} less than or equal {{else}} more than {{/lte}} -> less than or equal",
|
||||
"description": "<p>Block helper that renders a block if <code>a</code> is <strong>less than or equal to</strong> <code>b</code>. If an inverse block is specified it will be rendered when falsy. You may optionally use the <code>compare=""</code> hash argument for the second value.</p>\n"
|
||||
"description": "<p>Block helper that renders a block if <code>a</code> is <strong>less than or equal to</strong> <code>b</code>. If an inverse block is specified it will be rendered when falsy. You may optionally use the <code>compare=''</code> hash argument for the second value.</p>\n"
|
||||
},
|
||||
"neither": {
|
||||
"args": [
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@budibase/string-templates",
|
||||
"version": "0.9.151",
|
||||
"version": "0.9.152-alpha.0",
|
||||
"description": "Handlebars wrapper for Budibase templating.",
|
||||
"main": "src/index.cjs",
|
||||
"module": "dist/bundle.mjs",
|
||||
|
@ -20,7 +20,7 @@
|
|||
"manifest": "node ./scripts/gen-collection-info.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@budibase/handlebars-helpers": "^0.11.4",
|
||||
"@budibase/handlebars-helpers": "^0.11.6",
|
||||
"dayjs": "^1.10.4",
|
||||
"handlebars": "^4.7.6",
|
||||
"handlebars-utils": "^1.0.6",
|
||||
|
|
|
@ -270,35 +270,31 @@
|
|||
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
||||
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
||||
|
||||
"@budibase/handlebars-helpers@^0.11.4":
|
||||
version "0.11.4"
|
||||
resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.4.tgz#8acfa2ee84134f7be4b2906e710fce6d25c5d000"
|
||||
integrity sha512-AJNJYlJnxZmn9QJ8tBl8nrm4YxbwHP4AR0pbiVGK+EoOylkNBlUnZ/QDL1VyqM5fTkAE/Z2IZVLKrrG3kxuWLA==
|
||||
"@budibase/handlebars-helpers@^0.11.6":
|
||||
version "0.11.6"
|
||||
resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.6.tgz#00e924a0142aac41c07e3d104607759635eec952"
|
||||
integrity sha512-FLtCWkh0cNHC0/X6Pt5Xjmp4/r4tCpv5f5sP1JcZsaSKPyE5gpNu/+fqUxgDTzVS3PVo0KE6hdRPKVWvVqwPEw==
|
||||
dependencies:
|
||||
arr-flatten "^1.1.0"
|
||||
array-sort "^0.1.4"
|
||||
define-property "^1.0.0"
|
||||
array-sort "^1.0.0"
|
||||
define-property "^2.0.2"
|
||||
extend-shallow "^3.0.2"
|
||||
"falsey" "^0.3.2"
|
||||
"falsey" "^1.0.0"
|
||||
for-in "^1.0.2"
|
||||
for-own "^1.0.0"
|
||||
get-object "^0.2.0"
|
||||
get-value "^2.0.6"
|
||||
handlebars "^4.0.11"
|
||||
get-value "^3.0.1"
|
||||
handlebars "^4.7.7"
|
||||
handlebars-utils "^1.0.6"
|
||||
has-value "^1.0.0"
|
||||
has-value "^2.0.2"
|
||||
helper-date "^1.0.1"
|
||||
helper-markdown "^1.0.0"
|
||||
helper-md "^0.2.2"
|
||||
html-tag "^2.0.0"
|
||||
is-even "^1.0.0"
|
||||
is-glob "^4.0.0"
|
||||
is-number "^4.0.0"
|
||||
kind-of "^6.0.0"
|
||||
logging-helpers "^1.0.0"
|
||||
micromatch "^3.1.4"
|
||||
is-glob "^4.0.1"
|
||||
kind-of "^6.0.3"
|
||||
micromatch "^3.1.5"
|
||||
relative "^3.0.2"
|
||||
striptags "^3.1.0"
|
||||
striptags "^3.1.1"
|
||||
to-gfm-code-block "^0.1.1"
|
||||
year "^0.2.1"
|
||||
|
||||
|
@ -693,130 +689,6 @@ ajv@^6.12.3:
|
|||
json-schema-traverse "^0.4.1"
|
||||
uri-js "^4.2.2"
|
||||
|
||||
ansi-bgblack@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz#a68ba5007887701b6aafbe3fa0dadfdfa8ee3ca2"
|
||||
integrity sha1-poulAHiHcBtqr74/oNrf36juPKI=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-bgblue@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-bgblue/-/ansi-bgblue-0.1.1.tgz#67bdc04edc9b9b5278969da196dea3d75c8c3613"
|
||||
integrity sha1-Z73ATtybm1J4lp2hlt6j11yMNhM=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-bgcyan@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-bgcyan/-/ansi-bgcyan-0.1.1.tgz#58489425600bde9f5507068dd969ebfdb50fe768"
|
||||
integrity sha1-WEiUJWAL3p9VBwaN2Wnr/bUP52g=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-bggreen@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-bggreen/-/ansi-bggreen-0.1.1.tgz#4e3191248529943f4321e96bf131d1c13816af49"
|
||||
integrity sha1-TjGRJIUplD9DIelr8THRwTgWr0k=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-bgmagenta@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-bgmagenta/-/ansi-bgmagenta-0.1.1.tgz#9b28432c076eaa999418672a3efbe19391c2c7a1"
|
||||
integrity sha1-myhDLAduqpmUGGcqPvvhk5HCx6E=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-bgred@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-bgred/-/ansi-bgred-0.1.1.tgz#a76f92838382ba43290a6c1778424f984d6f1041"
|
||||
integrity sha1-p2+Sg4OCukMpCmwXeEJPmE1vEEE=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-bgwhite@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-bgwhite/-/ansi-bgwhite-0.1.1.tgz#6504651377a58a6ececd0331994e480258e11ba8"
|
||||
integrity sha1-ZQRlE3elim7OzQMxmU5IAljhG6g=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-bgyellow@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-bgyellow/-/ansi-bgyellow-0.1.1.tgz#c3fe2eb08cd476648029e6874d15a0b38f61d44f"
|
||||
integrity sha1-w/4usIzUdmSAKeaHTRWgs49h1E8=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-black@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-black/-/ansi-black-0.1.1.tgz#f6185e889360b2545a1ec50c0bf063fc43032453"
|
||||
integrity sha1-9hheiJNgslRaHsUMC/Bj/EMDJFM=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-blue@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-blue/-/ansi-blue-0.1.1.tgz#15b804990e92fc9ca8c5476ce8f699777c21edbf"
|
||||
integrity sha1-FbgEmQ6S/JyoxUds6PaZd3wh7b8=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-bold@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-bold/-/ansi-bold-0.1.1.tgz#3e63950af5acc2ae2e670e6f67deb115d1a5f505"
|
||||
integrity sha1-PmOVCvWswq4uZw5vZ96xFdGl9QU=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-colors@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-0.2.0.tgz#72c31de2a0d9a2ccd0cac30cc9823eeb2f6434b5"
|
||||
integrity sha1-csMd4qDZoszQysMMyYI+6y9kNLU=
|
||||
dependencies:
|
||||
ansi-bgblack "^0.1.1"
|
||||
ansi-bgblue "^0.1.1"
|
||||
ansi-bgcyan "^0.1.1"
|
||||
ansi-bggreen "^0.1.1"
|
||||
ansi-bgmagenta "^0.1.1"
|
||||
ansi-bgred "^0.1.1"
|
||||
ansi-bgwhite "^0.1.1"
|
||||
ansi-bgyellow "^0.1.1"
|
||||
ansi-black "^0.1.1"
|
||||
ansi-blue "^0.1.1"
|
||||
ansi-bold "^0.1.1"
|
||||
ansi-cyan "^0.1.1"
|
||||
ansi-dim "^0.1.1"
|
||||
ansi-gray "^0.1.1"
|
||||
ansi-green "^0.1.1"
|
||||
ansi-grey "^0.1.1"
|
||||
ansi-hidden "^0.1.1"
|
||||
ansi-inverse "^0.1.1"
|
||||
ansi-italic "^0.1.1"
|
||||
ansi-magenta "^0.1.1"
|
||||
ansi-red "^0.1.1"
|
||||
ansi-reset "^0.1.1"
|
||||
ansi-strikethrough "^0.1.1"
|
||||
ansi-underline "^0.1.1"
|
||||
ansi-white "^0.1.1"
|
||||
ansi-yellow "^0.1.1"
|
||||
lazy-cache "^2.0.1"
|
||||
|
||||
ansi-cyan@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873"
|
||||
integrity sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-dim@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-dim/-/ansi-dim-0.1.1.tgz#40de4c603aa8086d8e7a86b8ff998d5c36eefd6c"
|
||||
integrity sha1-QN5MYDqoCG2Oeoa4/5mNXDbu/Ww=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-escapes@^4.2.1:
|
||||
version "4.3.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61"
|
||||
|
@ -824,81 +696,11 @@ ansi-escapes@^4.2.1:
|
|||
dependencies:
|
||||
type-fest "^0.11.0"
|
||||
|
||||
ansi-gray@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251"
|
||||
integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-green@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-green/-/ansi-green-0.1.1.tgz#8a5d9a979e458d57c40e33580b37390b8e10d0f7"
|
||||
integrity sha1-il2al55FjVfEDjNYCzc5C44Q0Pc=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-grey@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-grey/-/ansi-grey-0.1.1.tgz#59d98b6ac2ba19f8a51798e9853fba78339a33c1"
|
||||
integrity sha1-WdmLasK6GfilF5jphT+6eDOaM8E=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-hidden@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-hidden/-/ansi-hidden-0.1.1.tgz#ed6a4c498d2bb7cbb289dbf2a8d1dcc8567fae0f"
|
||||
integrity sha1-7WpMSY0rt8uyidvyqNHcyFZ/rg8=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-inverse@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-inverse/-/ansi-inverse-0.1.1.tgz#b6af45826fe826bfb528a6c79885794355ccd269"
|
||||
integrity sha1-tq9Fgm/oJr+1KKbHmIV5Q1XM0mk=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-italic@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-italic/-/ansi-italic-0.1.1.tgz#104743463f625c142a036739cf85eda688986f23"
|
||||
integrity sha1-EEdDRj9iXBQqA2c5z4XtpoiYbyM=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-magenta@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-magenta/-/ansi-magenta-0.1.1.tgz#063b5ba16fb3f23e1cfda2b07c0a89de11e430ae"
|
||||
integrity sha1-BjtboW+z8j4c/aKwfAqJ3hHkMK4=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-red@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c"
|
||||
integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-regex@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
|
||||
integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
|
||||
|
||||
ansi-reset@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-reset/-/ansi-reset-0.1.1.tgz#e7e71292c3c7ddcd4d62ef4a6c7c05980911c3b7"
|
||||
integrity sha1-5+cSksPH3c1NYu9KbHwFmAkRw7c=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-strikethrough@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-strikethrough/-/ansi-strikethrough-0.1.1.tgz#d84877140b2cff07d1c93ebce69904f68885e568"
|
||||
integrity sha1-2Eh3FAss/wfRyT685pkE9oiF5Wg=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-styles@^3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
|
||||
|
@ -913,32 +715,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
|||
dependencies:
|
||||
color-convert "^2.0.1"
|
||||
|
||||
ansi-underline@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-underline/-/ansi-underline-0.1.1.tgz#dfc920f4c97b5977ea162df8ffb988308aaa71a4"
|
||||
integrity sha1-38kg9Ml7WXfqFi34/7mIMIqqcaQ=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-white@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-white/-/ansi-white-0.1.1.tgz#9c77b7c193c5ee992e6011d36ec4c921b4578944"
|
||||
integrity sha1-nHe3wZPF7pkuYBHTbsTJIbRXiUQ=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
ansi-wrap@0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
|
||||
integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=
|
||||
|
||||
ansi-yellow@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-yellow/-/ansi-yellow-0.1.1.tgz#cb9356f2f46c732f0e3199e6102955a77da83c1d"
|
||||
integrity sha1-y5NW8vRscy8OMZnmEClVp32oPB0=
|
||||
dependencies:
|
||||
ansi-wrap "0.1.0"
|
||||
|
||||
anymatch@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
|
||||
|
@ -977,10 +753,10 @@ arr-union@^3.1.0:
|
|||
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
|
||||
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
|
||||
|
||||
array-sort@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-0.1.4.tgz#662855eaeb671b4188df4451b2f24a0753992b23"
|
||||
integrity sha512-BNcM+RXxndPxiZ2rd76k6nyQLRZr2/B/sdi8pQ+Joafr5AH279L40dfokSUTp8O+AaqYjXWhblBWa2st2nc4fQ==
|
||||
array-sort@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a"
|
||||
integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==
|
||||
dependencies:
|
||||
default-compare "^1.0.0"
|
||||
get-value "^2.0.6"
|
||||
|
@ -1786,11 +1562,6 @@ error-ex@^1.3.1:
|
|||
dependencies:
|
||||
is-arrayish "^0.2.1"
|
||||
|
||||
error-symbol@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/error-symbol/-/error-symbol-0.1.0.tgz#0a4dae37d600d15a29ba453d8ef920f1844333f6"
|
||||
integrity sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y=
|
||||
|
||||
escape-string-regexp@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
|
@ -1963,12 +1734,10 @@ extsprintf@^1.2.0:
|
|||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
|
||||
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
|
||||
|
||||
"falsey@^0.3.2":
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/falsey/-/falsey-0.3.2.tgz#b21c90c5c34660fc192bf909575db95b6880d597"
|
||||
integrity sha512-lxEuefF5MBIVDmE6XeqCdM4BWk1+vYmGZtkbKZ/VFcg6uBBw6fXNEbWmxCjDdQlFc9hy450nkiWwM3VAW6G1qg==
|
||||
dependencies:
|
||||
kind-of "^5.0.2"
|
||||
"falsey@^1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/falsey/-/falsey-1.0.0.tgz#71bdd775c24edad9f2f5c015ce8be24400bb5d7d"
|
||||
integrity sha512-zMDNZ/Ipd8MY0+346CPvhzP1AsiVyNfTOayJza4reAIWf72xbkuFUDcJNxSAsQE1b9Bu0wijKb8Ngnh/a7fI5w==
|
||||
|
||||
fast-deep-equal@^3.1.1:
|
||||
version "3.1.3"
|
||||
|
@ -2017,18 +1786,11 @@ find-up@^4.0.0, find-up@^4.1.0:
|
|||
locate-path "^5.0.0"
|
||||
path-exists "^4.0.0"
|
||||
|
||||
for-in@^1.0.1, for-in@^1.0.2:
|
||||
for-in@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
|
||||
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
|
||||
|
||||
for-own@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
|
||||
integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=
|
||||
dependencies:
|
||||
for-in "^1.0.1"
|
||||
|
||||
foreach@~2.0.1:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
|
||||
|
@ -2129,6 +1891,13 @@ get-value@^2.0.3, get-value@^2.0.6:
|
|||
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
|
||||
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
|
||||
|
||||
get-value@^3.0.0, get-value@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/get-value/-/get-value-3.0.1.tgz#5efd2a157f1d6a516d7524e124ac52d0a39ef5a8"
|
||||
integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==
|
||||
dependencies:
|
||||
isobject "^3.0.1"
|
||||
|
||||
getpass@^0.1.1:
|
||||
version "0.1.7"
|
||||
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
|
||||
|
@ -2180,7 +1949,7 @@ handlebars-utils@^1.0.2, handlebars-utils@^1.0.4, handlebars-utils@^1.0.6:
|
|||
kind-of "^6.0.0"
|
||||
typeof-article "^0.1.1"
|
||||
|
||||
handlebars@^4.0.11, handlebars@^4.7.6:
|
||||
handlebars@^4.7.6, handlebars@^4.7.7:
|
||||
version "4.7.7"
|
||||
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
|
||||
integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
|
||||
|
@ -2233,6 +2002,14 @@ has-value@^1.0.0:
|
|||
has-values "^1.0.0"
|
||||
isobject "^3.0.0"
|
||||
|
||||
has-value@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/has-value/-/has-value-2.0.2.tgz#d0f12e8780ba8e90e66ad1a21c707fdb67c25658"
|
||||
integrity sha512-ybKOlcRsK2MqrM3Hmz/lQxXHZ6ejzSPzpNabKB45jb5qDgJvKPa3SdapTsTLwEb9WltgWpOmNax7i+DzNOk4TA==
|
||||
dependencies:
|
||||
get-value "^3.0.0"
|
||||
has-values "^2.0.1"
|
||||
|
||||
has-values@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
|
||||
|
@ -2246,6 +2023,13 @@ has-values@^1.0.0:
|
|||
is-number "^3.0.0"
|
||||
kind-of "^4.0.0"
|
||||
|
||||
has-values@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/has-values/-/has-values-2.0.1.tgz#3876200ff86d8a8546a9264a952c17d5fc17579d"
|
||||
integrity sha512-+QdH3jOmq9P8GfdjFg0eJudqx1FqU62NQJ4P16rOEHeRdl7ckgwn6uqQjzYE0ZoHVV/e5E2esuJ5Gl5+HUW19w==
|
||||
dependencies:
|
||||
kind-of "^6.0.2"
|
||||
|
||||
has@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
|
||||
|
@ -2389,11 +2173,6 @@ inflight@^1.0.4:
|
|||
once "^1.3.0"
|
||||
wrappy "1"
|
||||
|
||||
info-symbol@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/info-symbol/-/info-symbol-0.1.0.tgz#27841d72867ddb4242cd612d79c10633881c6a78"
|
||||
integrity sha1-J4QdcoZ920JCzWEtecEGM4gcang=
|
||||
|
||||
inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
|
@ -2513,10 +2292,10 @@ is-generator-fn@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
|
||||
integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
|
||||
|
||||
is-glob@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
|
||||
integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
|
||||
is-glob@^4.0.1:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
|
||||
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
|
||||
dependencies:
|
||||
is-extglob "^2.1.1"
|
||||
|
||||
|
@ -2539,11 +2318,6 @@ is-number@^3.0.0:
|
|||
dependencies:
|
||||
kind-of "^3.0.2"
|
||||
|
||||
is-number@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
|
||||
integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==
|
||||
|
||||
is-number@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
|
||||
|
@ -3186,7 +2960,7 @@ kind-of@^5.0.0, kind-of@^5.0.2:
|
|||
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
|
||||
integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
|
||||
|
||||
kind-of@^6.0.0, kind-of@^6.0.2:
|
||||
kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
|
||||
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
|
||||
|
@ -3196,13 +2970,6 @@ kleur@^3.0.3:
|
|||
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
|
||||
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
|
||||
|
||||
lazy-cache@^2.0.1:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264"
|
||||
integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=
|
||||
dependencies:
|
||||
set-getter "^0.1.0"
|
||||
|
||||
level-blobs@^0.1.7:
|
||||
version "0.1.7"
|
||||
resolved "https://registry.yarnpkg.com/level-blobs/-/level-blobs-0.1.7.tgz#9ab9b97bb99f1edbf9f78a3433e21ed56386bdaf"
|
||||
|
@ -3343,35 +3110,6 @@ lodash@^4.17.19, lodash@^4.17.20:
|
|||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
|
||||
log-ok@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/log-ok/-/log-ok-0.1.1.tgz#bea3dd36acd0b8a7240d78736b5b97c65444a334"
|
||||
integrity sha1-vqPdNqzQuKckDXhza1uXxlREozQ=
|
||||
dependencies:
|
||||
ansi-green "^0.1.1"
|
||||
success-symbol "^0.1.0"
|
||||
|
||||
log-utils@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/log-utils/-/log-utils-0.2.1.tgz#a4c217a0dd9a50515d9b920206091ab3d4e031cf"
|
||||
integrity sha1-pMIXoN2aUFFdm5ICBgkas9TgMc8=
|
||||
dependencies:
|
||||
ansi-colors "^0.2.0"
|
||||
error-symbol "^0.1.0"
|
||||
info-symbol "^0.1.0"
|
||||
log-ok "^0.1.1"
|
||||
success-symbol "^0.1.0"
|
||||
time-stamp "^1.0.1"
|
||||
warning-symbol "^0.1.0"
|
||||
|
||||
logging-helpers@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/logging-helpers/-/logging-helpers-1.0.0.tgz#b5a37b32ad53eb0137c58c7898a47b175ddb7c36"
|
||||
integrity sha512-qyIh2goLt1sOgQQrrIWuwkRjUx4NUcEqEGAcYqD8VOnOC6ItwkrVE8/tA4smGpjzyp4Svhc6RodDp9IO5ghpyA==
|
||||
dependencies:
|
||||
isobject "^3.0.0"
|
||||
log-utils "^0.2.1"
|
||||
|
||||
lru-cache@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
|
||||
|
@ -3443,7 +3181,7 @@ merge-stream@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
|
||||
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
|
||||
|
||||
micromatch@^3.1.4:
|
||||
micromatch@^3.1.4, micromatch@^3.1.5:
|
||||
version "3.1.10"
|
||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
|
||||
integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
|
||||
|
@ -4272,13 +4010,6 @@ set-blocking@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
||||
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
||||
|
||||
set-getter@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376"
|
||||
integrity sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=
|
||||
dependencies:
|
||||
to-object-path "^0.3.0"
|
||||
|
||||
set-value@^2.0.0, set-value@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
|
||||
|
@ -4551,15 +4282,10 @@ strip-final-newline@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
|
||||
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
|
||||
|
||||
striptags@^3.1.0:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.1.1.tgz#c8c3e7fdd6fb4bb3a32a3b752e5b5e3e38093ebd"
|
||||
integrity sha1-yMPn/db7S7OjKjt1LltePjgJPr0=
|
||||
|
||||
success-symbol@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/success-symbol/-/success-symbol-0.1.0.tgz#24022e486f3bf1cdca094283b769c472d3b72897"
|
||||
integrity sha1-JAIuSG878c3KCUKDt2nEctO3KJc=
|
||||
striptags@^3.1.1:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.2.0.tgz#cc74a137db2de8b0b9a370006334161f7dd67052"
|
||||
integrity sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==
|
||||
|
||||
supports-color@^5.3.0:
|
||||
version "5.5.0"
|
||||
|
@ -4627,11 +4353,6 @@ through2@^2.0.0:
|
|||
readable-stream "~2.3.6"
|
||||
xtend "~4.0.1"
|
||||
|
||||
time-stamp@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
|
||||
integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=
|
||||
|
||||
tmpl@1.0.x:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
|
||||
|
@ -4878,11 +4599,6 @@ walker@^1.0.7, walker@~1.0.5:
|
|||
dependencies:
|
||||
makeerror "1.0.x"
|
||||
|
||||
warning-symbol@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/warning-symbol/-/warning-symbol-0.1.0.tgz#bb31dd11b7a0f9d67ab2ed95f457b65825bbad21"
|
||||
integrity sha1-uzHdEbeg+dZ6su2V9Fe2WCW7rSE=
|
||||
|
||||
webidl-conversions@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@budibase/worker",
|
||||
"email": "hi@budibase.com",
|
||||
"version": "0.9.151",
|
||||
"version": "0.9.152-alpha.0",
|
||||
"description": "Budibase background service",
|
||||
"main": "src/index.js",
|
||||
"repository": {
|
||||
|
@ -27,8 +27,8 @@
|
|||
"author": "Budibase",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"@budibase/auth": "^0.9.151",
|
||||
"@budibase/string-templates": "^0.9.151",
|
||||
"@budibase/auth": "^0.9.152-alpha.0",
|
||||
"@budibase/string-templates": "^0.9.152-alpha.0",
|
||||
"@koa/router": "^8.0.0",
|
||||
"@techpass/passport-openidconnect": "^0.3.0",
|
||||
"aws-sdk": "^2.811.0",
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<tr>
|
||||
<td class="content-cell">
|
||||
<div class="f-fallback">
|
||||
<h1>Hi {{ email }},</h1>
|
||||
<h1>Hi {{#if name}}{{ name }}{{else}}{{ email }}{{/if}},</h1>
|
||||
<p>You recently requested to reset your password for your {{ company }} account in your Budibase platform. Use the button below to reset it. <strong>This password reset is only valid for the next 24 hours.</strong></p>
|
||||
<!-- Action -->
|
||||
<table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<tr>
|
||||
<td class="content-cell">
|
||||
<div class="f-fallback">
|
||||
<h1>Welcome, {{ email }}!</h1>
|
||||
<h1>Welcome, {{#if name}}{{ name }}{{else}}{{ email }}{{/if}}!</h1>
|
||||
<p>Thanks for getting started with {{ company }}'s Budibase platform.</p>
|
||||
<p>For reference, here's how to login:</p>
|
||||
<table class="attributes" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
|
|
|
@ -83,10 +83,15 @@ async function buildEmail(purpose, email, context, { user, contents } = {}) {
|
|||
}
|
||||
base = base.contents
|
||||
body = body.contents
|
||||
let name = user ? user.name : undefined
|
||||
if (user && !name && user.firstName) {
|
||||
name = user.lastName ? `${user.firstName} ${user.lastName}` : user.firstName
|
||||
}
|
||||
context = {
|
||||
...context,
|
||||
contents,
|
||||
email,
|
||||
name,
|
||||
user: user || {},
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue