Merge branch 'instrument-couch' of github.com:Budibase/budibase into instrument-couch
This commit is contained in:
commit
987e280bc9
|
@ -204,7 +204,7 @@ jobs:
|
||||||
|
|
||||||
check-pro-submodule:
|
check-pro-submodule:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'Budibase/budibase'
|
if: inputs.run_as_oss != true && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'Budibase/budibase')
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo and submodules
|
- name: Checkout repo and submodules
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
@ -254,7 +254,7 @@ jobs:
|
||||||
|
|
||||||
check-accountportal-submodule:
|
check-accountportal-submodule:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'Budibase/budibase'
|
if: inputs.run_as_oss != true && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'Budibase/budibase')
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo and submodules
|
- name: Checkout repo and submodules
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": "2.13.43",
|
"version": "2.13.46",
|
||||||
"npmClient": "yarn",
|
"npmClient": "yarn",
|
||||||
"packages": [
|
"packages": [
|
||||||
"packages/*",
|
"packages/*",
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit b47ad3f33177345b9a1685f5dbc10953c8c1c7cc
|
Subproject commit 09dae295e3ba6149c4e1d7fe567870c3a38bd277
|
|
@ -32,7 +32,7 @@
|
||||||
"bcryptjs": "2.4.3",
|
"bcryptjs": "2.4.3",
|
||||||
"bull": "4.10.1",
|
"bull": "4.10.1",
|
||||||
"correlation-id": "4.0.0",
|
"correlation-id": "4.0.0",
|
||||||
"dd-trace": "3.13.2",
|
"dd-trace": "4.20.0",
|
||||||
"dotenv": "16.0.1",
|
"dotenv": "16.0.1",
|
||||||
"ioredis": "5.3.2",
|
"ioredis": "5.3.2",
|
||||||
"joi": "17.6.0",
|
"joi": "17.6.0",
|
||||||
|
|
|
@ -79,6 +79,7 @@
|
||||||
bind:this={popover}
|
bind:this={popover}
|
||||||
anchor={popoverAnchor}
|
anchor={popoverAnchor}
|
||||||
maxWidth={300}
|
maxWidth={300}
|
||||||
|
maxHeight={300}
|
||||||
dismissible={false}
|
dismissible={false}
|
||||||
>
|
>
|
||||||
<Layout gap="S">
|
<Layout gap="S">
|
||||||
|
|
|
@ -257,7 +257,7 @@
|
||||||
|
|
||||||
<LockedFeature
|
<LockedFeature
|
||||||
title={"Audit Logs"}
|
title={"Audit Logs"}
|
||||||
planType={"Business plan"}
|
planType={"Enterprise plan"}
|
||||||
description={"View all events that have occurred in your Budibase installation"}
|
description={"View all events that have occurred in your Budibase installation"}
|
||||||
enabled={$licensing.auditLogsEnabled}
|
enabled={$licensing.auditLogsEnabled}
|
||||||
upgradeButtonClick={async () => {
|
upgradeButtonClick={async () => {
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
import { DashCard, Usage } from "components/usage"
|
import { DashCard, Usage } from "components/usage"
|
||||||
import { PlanModel } from "constants"
|
import { PlanModel } from "constants"
|
||||||
import { sdk } from "@budibase/shared-core"
|
import { sdk } from "@budibase/shared-core"
|
||||||
|
import { PlanType } from "@budibase/types"
|
||||||
|
|
||||||
let staticUsage = []
|
let staticUsage = []
|
||||||
let monthlyUsage = []
|
let monthlyUsage = []
|
||||||
|
@ -106,7 +107,14 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
const planTitle = () => {
|
const planTitle = () => {
|
||||||
return `${capitalise(license?.plan.type)} Plan`
|
const planType = license?.plan.type
|
||||||
|
let planName = license?.plan.type
|
||||||
|
if (planType === PlanType.PREMIUM_PLUS) {
|
||||||
|
planName = "Premium"
|
||||||
|
} else if (planType === PlanType.ENTERPRISE_BASIC) {
|
||||||
|
planName = "Enterprise"
|
||||||
|
}
|
||||||
|
return `${capitalise(planName)} Plan`
|
||||||
}
|
}
|
||||||
|
|
||||||
const getDaysRemaining = timestamp => {
|
const getDaysRemaining = timestamp => {
|
||||||
|
|
|
@ -283,7 +283,7 @@
|
||||||
</div>
|
</div>
|
||||||
{#if !$licensing.enforceableSSO}
|
{#if !$licensing.enforceableSSO}
|
||||||
<Tags>
|
<Tags>
|
||||||
<Tag icon="LockClosed">Enterprise</Tag>
|
<Tag icon="LockClosed">Enterprise plan</Tag>
|
||||||
</Tags>
|
</Tags>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -59,7 +59,7 @@
|
||||||
|
|
||||||
<LockedFeature
|
<LockedFeature
|
||||||
title={"Environment Variables"}
|
title={"Environment Variables"}
|
||||||
planType={"Business plan"}
|
planType={"Enterprise plan"}
|
||||||
description={"Add and manage environment variables for development and production"}
|
description={"Add and manage environment variables for development and production"}
|
||||||
enabled={$licensing.environmentVariablesEnabled}
|
enabled={$licensing.environmentVariablesEnabled}
|
||||||
upgradeButtonClick={async () => {
|
upgradeButtonClick={async () => {
|
||||||
|
|
|
@ -68,9 +68,13 @@ COPY packages/server/builder/ builder/
|
||||||
COPY packages/server/client/ client/
|
COPY packages/server/client/ client/
|
||||||
|
|
||||||
ARG BUDIBASE_VERSION
|
ARG BUDIBASE_VERSION
|
||||||
|
ARG GIT_COMMIT_SHA
|
||||||
# Ensuring the version argument is sent
|
# Ensuring the version argument is sent
|
||||||
RUN test -n "$BUDIBASE_VERSION"
|
RUN test -n "$BUDIBASE_VERSION"
|
||||||
ENV BUDIBASE_VERSION=$BUDIBASE_VERSION
|
ENV BUDIBASE_VERSION=$BUDIBASE_VERSION
|
||||||
|
ENV DD_GIT_REPOSITORY_URL=https://github.com/budibase/budibase
|
||||||
|
ENV DD_GIT_COMMIT_SHA=$GIT_COMMIT_SHA
|
||||||
|
ENV DD_VERSION=$BUDIBASE_VERSION
|
||||||
|
|
||||||
EXPOSE 4001
|
EXPOSE 4001
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,7 @@
|
||||||
"cookies": "0.8.0",
|
"cookies": "0.8.0",
|
||||||
"csvtojson": "2.0.10",
|
"csvtojson": "2.0.10",
|
||||||
"curlconverter": "3.21.0",
|
"curlconverter": "3.21.0",
|
||||||
"dd-trace": "3.13.2",
|
"dd-trace": "4.20.0",
|
||||||
"dotenv": "8.2.0",
|
"dotenv": "8.2.0",
|
||||||
"form-data": "4.0.0",
|
"form-data": "4.0.0",
|
||||||
"global-agent": "3.0.0",
|
"global-agent": "3.0.0",
|
||||||
|
|
|
@ -56,7 +56,7 @@ export async function getLinkDocuments(args: {
|
||||||
try {
|
try {
|
||||||
let linkRows = (await db.query(getQueryIndex(ViewName.LINK), params)).rows
|
let linkRows = (await db.query(getQueryIndex(ViewName.LINK), params)).rows
|
||||||
// filter to get unique entries
|
// filter to get unique entries
|
||||||
const foundIds: string[] = []
|
const foundIds = new Set()
|
||||||
linkRows = linkRows.filter(link => {
|
linkRows = linkRows.filter(link => {
|
||||||
// make sure anything unique is the correct key
|
// make sure anything unique is the correct key
|
||||||
if (
|
if (
|
||||||
|
@ -65,9 +65,9 @@ export async function getLinkDocuments(args: {
|
||||||
) {
|
) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
const unique = foundIds.indexOf(link.id) === -1
|
const unique = !foundIds.has(link.id)
|
||||||
if (unique) {
|
if (unique) {
|
||||||
foundIds.push(link.id)
|
foundIds.add(link.id)
|
||||||
}
|
}
|
||||||
return unique
|
return unique
|
||||||
})
|
})
|
||||||
|
|
|
@ -1180,6 +1180,14 @@
|
||||||
"description": "<p>Stringify an object using <code>JSON.stringify</code>.</p>\n"
|
"description": "<p>Stringify an object using <code>JSON.stringify</code>.</p>\n"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"uuid": {
|
||||||
|
"uuid": {
|
||||||
|
"args": [],
|
||||||
|
"numArgs": 0,
|
||||||
|
"example": "{{ uuid }} -> f34ebc66-93bd-4f7c-b79b-92b5569138bc",
|
||||||
|
"description": "<p>Generates a UUID, using the V4 method (identical to the browser crypto.randomUUID function).</p>\n"
|
||||||
|
}
|
||||||
|
},
|
||||||
"date": {
|
"date": {
|
||||||
"date": {
|
"date": {
|
||||||
"args": [
|
"args": [
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
"manifest": "node ./scripts/gen-collection-info.js"
|
"manifest": "node ./scripts/gen-collection-info.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/handlebars-helpers": "^0.11.9",
|
"@budibase/handlebars-helpers": "^0.11.11",
|
||||||
"dayjs": "^1.10.8",
|
"dayjs": "^1.10.8",
|
||||||
"handlebars": "^4.7.6",
|
"handlebars": "^4.7.6",
|
||||||
"lodash": "4.17.21",
|
"lodash": "4.17.21",
|
||||||
|
|
|
@ -20,6 +20,7 @@ const COLLECTIONS = [
|
||||||
"string",
|
"string",
|
||||||
"comparison",
|
"comparison",
|
||||||
"object",
|
"object",
|
||||||
|
"uuid",
|
||||||
]
|
]
|
||||||
const FILENAME = join(__dirname, "..", "manifest.json")
|
const FILENAME = join(__dirname, "..", "manifest.json")
|
||||||
const outputJSON = {}
|
const outputJSON = {}
|
||||||
|
|
|
@ -16,6 +16,7 @@ const EXTERNAL_FUNCTION_COLLECTIONS = [
|
||||||
"comparison",
|
"comparison",
|
||||||
"object",
|
"object",
|
||||||
"regex",
|
"regex",
|
||||||
|
"uuid",
|
||||||
]
|
]
|
||||||
|
|
||||||
const ADDED_HELPERS = {
|
const ADDED_HELPERS = {
|
||||||
|
|
|
@ -56,6 +56,10 @@ module.exports.processJS = (handlebars, context) => {
|
||||||
const res = { data: runJS(js, sandboxContext) }
|
const res = { data: runJS(js, sandboxContext) }
|
||||||
return `{{${LITERAL_MARKER} js_result-${JSON.stringify(res)}}}`
|
return `{{${LITERAL_MARKER} js_result-${JSON.stringify(res)}}}`
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
console.log(`JS error: ${typeof error} ${JSON.stringify(error)}`)
|
||||||
|
if (error.code === "ERR_SCRIPT_EXECUTION_TIMEOUT") {
|
||||||
|
return "Timed out while executing JS"
|
||||||
|
}
|
||||||
return "Error while executing JS"
|
return "Error while executing JS"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
module.exports.UUID_REGEX =
|
||||||
|
/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
|
|
@ -1,6 +1,7 @@
|
||||||
const { processString, processObject, isValid } = require("../src/index.cjs")
|
const { processString, processObject, isValid } = require("../src/index.cjs")
|
||||||
const tableJson = require("./examples/table.json")
|
const tableJson = require("./examples/table.json")
|
||||||
const dayjs = require("dayjs")
|
const dayjs = require("dayjs")
|
||||||
|
const { UUID_REGEX } = require("./constants")
|
||||||
|
|
||||||
describe("test the custom helpers we have applied", () => {
|
describe("test the custom helpers we have applied", () => {
|
||||||
it("should be able to use the object helper", async () => {
|
it("should be able to use the object helper", async () => {
|
||||||
|
@ -477,3 +478,10 @@ describe("Cover a few complex use cases", () => {
|
||||||
expect(output.dataProvider).toBe("%5B%221%22%2C%221%22%5D")
|
expect(output.dataProvider).toBe("%5B%221%22%2C%221%22%5D")
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("uuid", () => {
|
||||||
|
it("should be able to generate a UUID", async () => {
|
||||||
|
const output = await processString("{{ uuid }}", {})
|
||||||
|
expect(output).toMatch(UUID_REGEX)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
const { processStringSync, encodeJSBinding } = require("../src/index.cjs")
|
const { processStringSync, encodeJSBinding } = require("../src/index.cjs")
|
||||||
|
const { UUID_REGEX } = require("./constants")
|
||||||
|
|
||||||
const processJS = (js, context) => {
|
const processJS = (js, context) => {
|
||||||
return processStringSync(encodeJSBinding(js), context)
|
return processStringSync(encodeJSBinding(js), context)
|
||||||
|
@ -114,7 +115,7 @@ describe("Test the JavaScript helper", () => {
|
||||||
|
|
||||||
it("should timeout after one second", () => {
|
it("should timeout after one second", () => {
|
||||||
const output = processJS(`while (true) {}`)
|
const output = processJS(`while (true) {}`)
|
||||||
expect(output).toBe("Error while executing JS")
|
expect(output).toBe("Timed out while executing JS")
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should prevent access to the process global", () => {
|
it("should prevent access to the process global", () => {
|
||||||
|
@ -140,4 +141,9 @@ describe("check JS helpers", () => {
|
||||||
const output = processJS(`return helpers.toInt(4.3)`)
|
const output = processJS(`return helpers.toInt(4.3)`)
|
||||||
expect(output).toBe(4)
|
expect(output).toBe(4)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("should be able to use uuid", () => {
|
||||||
|
const output = processJS(`return helpers.uuid()`)
|
||||||
|
expect(output).toMatch(UUID_REGEX)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -51,8 +51,12 @@ ENV TENANT_FEATURE_FLAGS=*:LICENSING,*:USER_GROUPS,*:ONBOARDING_TOUR
|
||||||
ENV ACCOUNT_PORTAL_URL=https://account.budibase.app
|
ENV ACCOUNT_PORTAL_URL=https://account.budibase.app
|
||||||
|
|
||||||
ARG BUDIBASE_VERSION
|
ARG BUDIBASE_VERSION
|
||||||
|
ARG GIT_COMMIT_SHA
|
||||||
# Ensuring the version argument is sent
|
# Ensuring the version argument is sent
|
||||||
RUN test -n "$BUDIBASE_VERSION"
|
RUN test -n "$BUDIBASE_VERSION"
|
||||||
ENV BUDIBASE_VERSION=$BUDIBASE_VERSION
|
ENV BUDIBASE_VERSION=$BUDIBASE_VERSION
|
||||||
|
ENV DD_GIT_REPOSITORY_URL=https://github.com/budibase/budibase
|
||||||
|
ENV DD_GIT_COMMIT_SHA=$GIT_COMMIT_SHA
|
||||||
|
ENV DD_VERSION=$BUDIBASE_VERSION
|
||||||
|
|
||||||
CMD ["./docker_run.sh"]
|
CMD ["./docker_run.sh"]
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
"bcrypt": "5.1.0",
|
"bcrypt": "5.1.0",
|
||||||
"bcryptjs": "2.4.3",
|
"bcryptjs": "2.4.3",
|
||||||
"bull": "4.10.1",
|
"bull": "4.10.1",
|
||||||
"dd-trace": "3.13.2",
|
"dd-trace": "4.20.0",
|
||||||
"dotenv": "8.6.0",
|
"dotenv": "8.6.0",
|
||||||
"global-agent": "3.0.0",
|
"global-agent": "3.0.0",
|
||||||
"ical-generator": "4.1.0",
|
"ical-generator": "4.1.0",
|
||||||
|
|
Loading…
Reference in New Issue