Merge branch 'master' into isolated-vm

This commit is contained in:
Adria Navarro 2024-01-31 12:12:14 +01:00 committed by GitHub
commit b2e1d8ee71
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 27 additions and 15 deletions

View File

@ -47,9 +47,10 @@
})
$: filteredHelpers = helpers?.filter(helper => {
return (
!search ||
helper.label.match(searchRgx) ||
helper.description.match(searchRgx)
(!search ||
helper.label.match(searchRgx) ||
helper.description.match(searchRgx)) &&
(mode.name !== "javascript" || helper.allowsJs)
)
})

View File

@ -1,4 +1,4 @@
import { getManifest } from "@budibase/string-templates"
import { getManifest, helpersToRemoveForJs } from "@budibase/string-templates"
export function handlebarsCompletions() {
const manifest = getManifest()
@ -11,6 +11,9 @@ export function handlebarsCompletions() {
label: helperName,
displayText: helperName,
description: helperConfig.description,
allowsJs:
!helperConfig.requiresBlock &&
!helpersToRemoveForJs.includes(helperName),
}))
)
}

View File

@ -1,4 +1,4 @@
const { getHelperList } = require("../helpers")
const { getJsHelperList } = require("../helpers")
function getLayers(fullBlock) {
let layers = []
@ -109,7 +109,7 @@ module.exports.convertHBSBlock = (block, blockNumber) => {
const layers = getLayers(block)
let value = null
const list = getHelperList()
const list = getJsHelperList()
for (let layer of layers) {
const parts = splitBySpace(layer)
if (value || parts.length > 1 || list[parts[0]]) {

View File

@ -7,7 +7,7 @@ const {
HelperFunctionBuiltin,
LITERAL_MARKER,
} = require("./constants")
const { getHelperList } = require("./list")
const { getJsHelperList } = require("./list")
const HTML_SWAPS = {
"<": "&lt;",
@ -97,4 +97,4 @@ module.exports.unregisterAll = handlebars => {
externalHandlebars.unregisterAll(handlebars)
}
module.exports.getHelperList = getHelperList
module.exports.getJsHelperList = getJsHelperList

View File

@ -1,7 +1,7 @@
const { atob } = require("../utilities")
const cloneDeep = require("lodash.clonedeep")
const { LITERAL_MARKER } = require("../helpers/constants")
const { getHelperList } = require("./list")
const { getJsHelperList } = require("./list")
// The method of executing JS scripts depends on the bundle being built.
// This setter is used in the entrypoint (either index.cjs or index.mjs).
@ -49,7 +49,7 @@ module.exports.processJS = (handlebars, context) => {
// app context.
const sandboxContext = {
$: path => getContextValue(path, cloneDeep(context)),
helpers: getHelperList(),
helpers: getJsHelperList(),
}
// Create a sandbox with our context and run the JS

View File

@ -3,9 +3,10 @@ const helperList = require("@budibase/handlebars-helpers")
let helpers = undefined
const helpersToRemove = ["sortBy"]
const helpersToRemoveForJs = ["sortBy"]
module.exports.helpersToRemoveForJs = helpersToRemoveForJs
module.exports.getHelperList = () => {
module.exports.getJsHelperList = () => {
if (helpers) {
return helpers
}
@ -25,7 +26,7 @@ module.exports.getHelperList = () => {
helpers[key] = externalHandlebars.addedHelpers[key]
}
for (const toRemove of helpersToRemove) {
for (const toRemove of helpersToRemoveForJs) {
delete helpers[toRemove]
}
Object.freeze(helpers)

View File

@ -20,6 +20,7 @@ module.exports.findHBSBlocks = templates.findHBSBlocks
module.exports.convertToJS = templates.convertToJS
module.exports.setJSRunner = templates.setJSRunner
module.exports.FIND_ANY_HBS_REGEX = templates.FIND_ANY_HBS_REGEX
module.exports.helpersToRemoveForJs = templates.helpersToRemoveForJs
if (!process.env.NO_JS) {
const { VM } = require("vm2")

View File

@ -10,6 +10,7 @@ const {
} = require("./utilities")
const { convertHBSBlock } = require("./conversion")
const javascript = require("./helpers/javascript")
const { helpersToRemoveForJs } = require("./helpers/list")
const hbsInstance = handlebars.create()
registerAll(hbsInstance)
@ -398,3 +399,7 @@ module.exports.FIND_ANY_HBS_REGEX = FIND_ANY_HBS_REGEX
const errors = require("./errors")
// We cannot use dynamic exports, otherwise the typescript file will not be generating it
module.exports.JsErrorTimeout = errors.JsErrorTimeout
module.exports.helpersToRemoveForJs = helpersToRemoveForJs

View File

@ -21,6 +21,7 @@ export const findHBSBlocks = templates.findHBSBlocks
export const convertToJS = templates.convertToJS
export const setJSRunner = templates.setJSRunner
export const FIND_ANY_HBS_REGEX = templates.FIND_ANY_HBS_REGEX
export const helpersToRemoveForJs = templates.helpersToRemoveForJs
if (process && !process.env.NO_JS) {
/**

View File

@ -24,7 +24,7 @@ const {
} = require("../src/index.cjs")
const tk = require("timekeeper")
const { getHelperList } = require("../src/helpers")
const { getJsHelperList } = require("../src/helpers")
tk.freeze("2021-01-21T12:00:00")
@ -109,7 +109,7 @@ describe("manifest", () => {
})
describe("can be parsed and run as js", () => {
const jsHelpers = getHelperList()
const jsHelpers = getJsHelperList()
const jsExamples = Object.keys(examples).reduce((acc, v) => {
acc[v] = examples[v].filter(([key]) => jsHelpers[key])
return acc