Merge branch 'instrument-couch' of github.com:Budibase/budibase into instrument-couch

This commit is contained in:
mike12345567 2023-12-18 18:33:20 +00:00
commit 987e280bc9
23 changed files with 105 additions and 760 deletions

View File

@ -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

View File

@ -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

View File

@ -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",

View File

@ -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">

View File

@ -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 () => {

View File

@ -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 => {

View File

@ -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>

View File

@ -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 () => {

View File

@ -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

View File

@ -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",

View File

@ -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
}) })

View File

@ -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": [

View File

@ -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",

View File

@ -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 = {}

View File

@ -16,6 +16,7 @@ const EXTERNAL_FUNCTION_COLLECTIONS = [
"comparison", "comparison",
"object", "object",
"regex", "regex",
"uuid",
] ]
const ADDED_HELPERS = { const ADDED_HELPERS = {

View File

@ -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"
} }
} }

View File

@ -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

View File

@ -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)
})
})

View File

@ -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)
})
}) })

View File

@ -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"]

View File

@ -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",

786
yarn.lock

File diff suppressed because it is too large Load Diff