@streamline-pulse/formkrafter-core 0.5.1 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -14,7 +14,7 @@ export { defaultValidationMessage, registerValidationMessages } from "./validato
14
14
  export { Validation } from "./validators/validation";
15
15
  export { JSONSchemaType } from "./validators/json-schema-type";
16
16
  export { services } from "./services";
17
- export { JsRunnerService, SandboxJsRunnerService, JsRunnerServiceImplementation } from "./services/js_runner_service";
17
+ export { JsRunnerService, JsValidationResult, SandboxJsRunnerService } from "./services/js_runner_service";
18
18
  export { UnsafeEvalJsRunnerService } from "./services/unsafe_js_runner_service";
19
19
  export { runSandboxed } from "./services/sandbox_interpreter";
20
20
  export { DataSourceService, FetchDataSourceService } from "./services/data_source_service";
package/dist/index.js CHANGED
@@ -524,10 +524,10 @@ class SandboxJsRunnerService {
524
524
  validateJs(js2, options = { ecmaVersion: "latest", allowReturnOutsideFunction: true }) {
525
525
  try {
526
526
  parse2(js2, options);
527
- return { valide: true };
527
+ return { valid: true };
528
528
  } catch (error) {
529
529
  return {
530
- valide: false,
530
+ valid: false,
531
531
  error: error instanceof Error ? error : new Error(String(error))
532
532
  };
533
533
  }
@@ -536,7 +536,6 @@ class SandboxJsRunnerService {
536
536
  return runSandboxed(js2, scope2);
537
537
  }
538
538
  }
539
- var JsRunnerServiceImplementation = SandboxJsRunnerService;
540
539
 
541
540
  // lib/services/data_source_service.ts
542
541
  class FetchDataSourceService {
@@ -928,10 +927,10 @@ class UnsafeEvalJsRunnerService {
928
927
  validateJs(js2, options = { ecmaVersion: "latest", allowReturnOutsideFunction: true }) {
929
928
  try {
930
929
  parse3(js2, options);
931
- return { valide: true };
930
+ return { valid: true };
932
931
  } catch (error) {
933
932
  return {
934
- valide: false,
933
+ valid: false,
935
934
  error: error instanceof Error ? error : new Error(String(error))
936
935
  };
937
936
  }
@@ -942,7 +941,7 @@ class UnsafeEvalJsRunnerService {
942
941
  const fn = `(() => {${prelude}
943
942
  ${js}})();`;
944
943
  const validation = this.validateJs(fn, { ecmaVersion: "latest" });
945
- if (!validation.valide)
944
+ if (!validation.valid)
946
945
  throw validation.error;
947
946
  return eval(fn);
948
947
  }
@@ -1715,7 +1714,6 @@ export {
1715
1714
  UnsafeEvalJsRunnerService,
1716
1715
  SpecHistory,
1717
1716
  SandboxJsRunnerService,
1718
- JsRunnerServiceImplementation,
1719
1717
  FetchSpecSourceService,
1720
1718
  FetchOptionSourceService,
1721
1719
  FetchDataSourceService,
@@ -1723,5 +1721,5 @@ export {
1723
1721
  Base64FileUploadService
1724
1722
  };
1725
1723
 
1726
- //# debugId=5B1C4474681AF83564756E2164756E21
1724
+ //# debugId=E7FD7771936F9D4564756E2164756E21
1727
1725
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -7,7 +7,7 @@
7
7
  "import type { JSONSchemaType } from \"../validators/json-schema-type\";\nimport { resolveLocalizedText } from \"./localized-text\";\nimport { defaultValidationMessage } from \"../validators/default-messages\";\nimport type { Validator } from \"../validators/validator\";\nimport type { Validation } from \"../validators/validation\";\nimport type { Rule } from \"../rules/rule\";\nimport type { BrickType } from \"./brick-type\";\nimport type { BrickBaseConfigs } from \"./common-brick-props\";\nimport type { BrickStyles } from \"../utils/brick-styles\";\n\nexport interface BrickSpec {\n type: BrickType;\n dataType?: JSONSchemaType;\n id: string;\n name: string;\n category?: string;\n editable?: boolean;\n unWrapData?: boolean;\n isPrivate?: boolean;\n\n validators?: Validator[];\n validations?: Validation[];\n\n rules?: Rule[];\n\n configsForm?: BrickSpec;\n\n configs?: BrickBaseConfigs & Record<string, unknown>;\n styles?: BrickStyles<string>;\n\n children?: BrickSpec[];\n}\n\nexport function* iterateBricks(\n spec?: BrickSpec,\n path = \"0\"\n): Generator<{ brick: BrickSpec; path: string }> {\n if (!spec) return;\n\n yield { brick: spec, path };\n\n for (const [index, child] of (spec.children ?? []).entries()) {\n yield* iterateBricks(child, `${path}.${index}`);\n }\n}\n\nexport function* iterateSchemaBricks(spec?: BrickSpec): Generator<BrickSpec> {\n if (!spec) return;\n\n yield spec;\n\n if (spec.type === \"collection\") return;\n\n for (const child of spec.children ?? []) {\n yield* iterateSchemaBricks(child);\n }\n}\n\nexport function buildValidationSchema(brickSpecs?: BrickSpec, locale?: string) {\n if (!brickSpecs) return;\n\n const properties: Record<string, unknown> = {};\n const required: string[] = [];\n const requiredErrorMessage: Record<string, string | undefined> = {};\n const messageOf = (raw: unknown): string | undefined => {\n const resolved = resolveLocalizedText(raw, locale);\n return typeof resolved === \"string\" ? resolved : undefined;\n };\n\n for (const brick of iterateSchemaBricks(brickSpecs)) {\n const key = brick.configs?.key;\n const dataType =\n brick.configs?.multiple === true && brick.dataType === \"object\"\n ? \"array\"\n : brick.dataType;\n\n if (!key || !dataType || dataType === \"void\") continue;\n\n const isRequired = brick.validations?.find(\n (validation) => validation.validator === \"required\"\n );\n\n const property: Record<string, unknown> = {\n type: dataType,\n nullable: !isRequired,\n };\n const messages: Record<string, string> = {\n type: defaultValidationMessage(\"type\", locale),\n };\n\n for (const validation of brick.validations ?? []) {\n const { validator, value } = validation;\n const message =\n messageOf(validation.message) ??\n defaultValidationMessage(validator, locale, value);\n\n if (validator === \"minLength\" && value != null) {\n property.minLength = Number(value);\n messages.minLength = message;\n } else if (validator === \"maxLength\" && value != null) {\n property.maxLength = Number(value);\n messages.maxLength = message;\n } else if (validator === \"min\" && value != null) {\n property.minimum = Number(value);\n messages.minimum = message;\n } else if (validator === \"max\" && value != null) {\n property.maximum = Number(value);\n messages.maximum = message;\n } else if (validator === \"pattern\" && typeof value === \"string\" && value) {\n property.pattern = value;\n messages.pattern = message;\n } else if (validator === \"minItems\" && value != null) {\n property.minItems = Number(value);\n messages.minItems = message;\n } else if (validator === \"maxItems\" && value != null) {\n property.maxItems = Number(value);\n messages.maxItems = message;\n } else if (validator === \"email\") {\n property.format = \"email\";\n messages.format = message;\n } else if (validator === \"url\") {\n property.format = \"uri\";\n messages.format = message;\n }\n }\n\n property.errorMessage = messages;\n\n properties[key] = property;\n\n if (isRequired) {\n required.push(key);\n requiredErrorMessage[key] =\n messageOf(isRequired.message) ??\n defaultValidationMessage(\"required\", locale);\n }\n }\n\n return {\n type: \"object\",\n properties,\n required,\n ...(Object.keys(requiredErrorMessage).length\n ? {\n errorMessage: {\n required: requiredErrorMessage,\n },\n }\n : {}),\n additionalProperties: false,\n };\n}\n",
8
8
  "import type { Validator } from \"../validators/validator\";\nimport type { Validation } from \"../validators/validation\";\nimport type { JSONSchemaType } from \"../validators/json-schema-type\";\nimport { type Utils } from \"./utils\";\nimport type { Rule } from \"../rules/rule\";\nimport type { BrickSpec } from \"../utils/brick-spec\";\nimport type { BrickType } from \"../utils/brick-type\";\nimport type { BrickBaseConfigs, CommonBrickProps } from \"../utils/common-brick-props\";\nimport type { BrickMoldDropType } from \"../utils/drop-type\";\n\nexport interface BrickProps<DataType, Configs extends BrickBaseConfigs, Styles>\n extends CommonBrickProps<Configs, Styles> {\n onConfigsChange?: (\n configs: BrickBaseConfigs & Record<string, unknown>,\n uid?: string\n ) => void;\n onStylesChange?: (\n styles: Record<string, unknown>,\n uid?: string\n ) => void;\n data?: DataType;\n dataMap?: Record<string, unknown>;\n rootSpec?: BrickSpec;\n onDataChange?: (value?: DataType) => void;\n onMove?: (from: string, to: string) => void;\n onDuplicate?: (path: string) => void;\n onDelete?: (path: string) => void;\n onAddBrick?: (brickMold: BrickMoldDropType, path: string) => void;\n path: string;\n error?: string;\n disabled?: boolean;\n locale?: string;\n children?: unknown;\n brickSpec?: BrickSpec;\n editable?: boolean;\n validations?: Validation[];\n onValidationsChange?: (validations: Validation[], uid?: string) => void;\n rules?: Rule[];\n onRulesChange?: (rules: Rule[], uid?: string) => void;\n utils: Utils;\n}\n\nexport abstract class Brick<\n DataType,\n Configs extends BrickBaseConfigs,\n Styles extends Record<string, unknown>> {\n readonly type: BrickType;\n readonly dataType: JSONSchemaType;\n readonly id: string;\n readonly name: string;\n readonly configsForm?: BrickSpec;\n readonly category?: string;\n readonly styles?: Styles;\n\n readonly unWrapData: boolean;\n readonly isPrivate: boolean;\n\n readonly validators: Validator[];\n readonly defaultConfigs?: Record<string, unknown>;\n\n constructor(params: {\n type: BrickType;\n dataType: JSONSchemaType;\n id: string;\n name: string;\n configsForm?: BrickSpec;\n category?: string;\n styles?: Styles;\n unWrapData?: boolean;\n isPrivate?: boolean;\n validators?: Validator[];\n defaultConfigs?: Record<string, unknown>;\n }) {\n this.type = params.type;\n this.dataType = params.dataType;\n this.id = params.id;\n this.name = params.name;\n this.configsForm = params.configsForm;\n this.category = params.category;\n this.styles = params.styles;\n this.unWrapData = params.unWrapData ?? false;\n this.isPrivate = params.isPrivate ?? false;\n this.validators = params.validators ?? [];\n this.defaultConfigs = params.defaultConfigs;\n }\n\n abstract render(props: BrickProps<DataType, Configs, Styles>): unknown;\n\n\n abstract renderBuilder(props: BrickProps<DataType, Configs, Styles>): unknown;\n\n abstract getComponent(props: BrickProps<DataType, Configs, Styles>): unknown;\n abstract getComponentWithActions(props: BrickProps<DataType, Configs, Styles>): unknown;\n\n getBrickEmptySpec(): BrickSpec {\n return {\n type: this.type,\n dataType: this.dataType,\n id: this.id,\n name: this.name,\n ...(this.category !== undefined ? { category: this.category } : {}),\n ...(this.configsForm !== undefined ? { configsForm: this.configsForm } : {}),\n ...(this.styles !== undefined ? { styles: this.styles } : {}),\n ...(this.defaultConfigs !== undefined\n ? { configs: { ...this.defaultConfigs } }\n : {}),\n validators: this.validators,\n };\n }\n}",
9
9
  "import jsonLogic from \"json-logic-js\";\nimport { services } from \"../services\";\nimport type { Rule } from \"../rules/rule\";\n\nexport type CommonUtils = object;\n\nexport type InputUtils = CommonUtils;\n\nexport type PanelUtils = CommonUtils;\n\nexport type CollectionUtils = CommonUtils;\n\nexport type ActionUtils = {\n validateForm: () => {\n isValid: boolean;\n };\n} & CommonUtils;\n\nexport type Utils = InputUtils & PanelUtils & CollectionUtils & ActionUtils;\n\nexport const evalBrickCode = (code: string, data?: Record<string, unknown>) => {\n try {\n return services.jsRunnerService.eval(code, { dataMap: data ?? {} });\n } catch (error) {\n return error instanceof Error ? error : new Error(String(error));\n }\n};\n\nconst evalRule = (rule: Rule, dataMap?: Record<string, unknown>): boolean => {\n if (rule.type === \"jsonLogic\") {\n if (rule.logic == null) return false;\n\n return jsonLogic.apply(rule.logic, dataMap) === true;\n }\n\n if (rule.type === \"javaScript\") {\n if (!rule.code) return false;\n\n return evalBrickCode(rule.code, dataMap) === true;\n }\n\n return false;\n};\n\ntype Properties = {\n value?: string;\n required?: boolean;\n hidden?: boolean;\n disabled?: boolean;\n};\n\nconst getActiveRules = (rules?: Rule[], dataMap?: Record<string, unknown>) =>\n rules?.filter((rule) => evalRule(rule, dataMap));\n\nconst getActiveEffect = (rules?: Rule[], dataMap?: Record<string, unknown>) =>\n getActiveRules(rules, dataMap)\n ?.map((rule) => rule.effects)\n .flat()\n .filter((effect) => effect != undefined);\n\nexport const getAffectedProperties = (\n rules?: Rule[],\n dataMap?: Record<string, unknown>\n): Properties => {\n return getActiveEffect(rules, dataMap)\n ?.map((effect) => {\n let value;\n if (effect.property) {\n if (effect.property.type === \"boolean\") value = effect.boolean;\n else if (effect.property.type === \"logic\" && effect.logic != null)\n value = jsonLogic.apply(effect.logic, dataMap);\n else if (effect.property.type === \"code\" && effect.code)\n value = evalBrickCode(effect.code, dataMap);\n else if (effect.property.type === \"string\") value = effect.string;\n\n return {\n [effect.property.target]: value,\n };\n }\n return {};\n })\n .flat()\n .reduce((acc, item) => ({ ...acc, ...item }), {}) ?? { hidden: false };\n};\n",
10
- "import { type Options, parse } from \"acorn\";\nimport { runSandboxed } from \"./sandbox_interpreter\";\n\nexport interface JsRunnerService {\n eval(js: string, scope?: Record<string, unknown>): unknown;\n validateJs(js: string, options?: Options): { valide: boolean; error?: Error };\n}\n\nexport class SandboxJsRunnerService implements JsRunnerService {\n validateJs(\n js: string,\n options: Options = { ecmaVersion: \"latest\", allowReturnOutsideFunction: true }\n ): { valide: boolean; error?: Error } {\n try {\n parse(js, options);\n return { valide: true };\n } catch (error) {\n return {\n valide: false,\n error: error instanceof Error ? error : new Error(String(error)),\n };\n }\n }\n\n eval(js: string, scope: Record<string, unknown> = {}): unknown {\n return runSandboxed(js, scope);\n }\n}\n\nexport const JsRunnerServiceImplementation = SandboxJsRunnerService;\n",
10
+ "import { type Options, parse } from \"acorn\";\nimport { runSandboxed } from \"./sandbox_interpreter\";\n\nexport interface JsValidationResult {\n valid: boolean;\n error?: Error;\n}\n\nexport interface JsRunnerService {\n eval(js: string, scope?: Record<string, unknown>): unknown;\n validateJs(js: string, options?: Options): JsValidationResult;\n}\n\nexport class SandboxJsRunnerService implements JsRunnerService {\n validateJs(\n js: string,\n options: Options = { ecmaVersion: \"latest\", allowReturnOutsideFunction: true }\n ): JsValidationResult {\n try {\n parse(js, options);\n return { valid: true };\n } catch (error) {\n return {\n valid: false,\n error: error instanceof Error ? error : new Error(String(error)),\n };\n }\n }\n\n eval(js: string, scope: Record<string, unknown> = {}): unknown {\n return runSandboxed(js, scope);\n }\n}\n",
11
11
  "import { parse } from \"acorn\";\n\ninterface AstNode {\n type: string;\n [key: string]: unknown;\n}\n\nconst FORBIDDEN_PROPS = new Set([\"__proto__\", \"constructor\", \"prototype\"]);\nconst MAX_STEPS = 100_000;\n\nclass ReturnSignal {\n constructor(readonly value: unknown) {}\n}\n\ntype Scope = Map<string, unknown>;\n\ninterface Ctx {\n steps: number;\n scopes: Scope[];\n}\n\nconst lookup = (ctx: Ctx, name: string): unknown => {\n for (let i = ctx.scopes.length - 1; i >= 0; i--) {\n if (ctx.scopes[i].has(name)) return ctx.scopes[i].get(name);\n }\n\n throw new Error(`Unknown identifier \"${name}\"`);\n};\n\nconst declareVar = (ctx: Ctx, name: string, value: unknown): void => {\n ctx.scopes[ctx.scopes.length - 1].set(name, value);\n};\n\nconst assign = (ctx: Ctx, name: string, value: unknown): void => {\n for (let i = ctx.scopes.length - 1; i >= 0; i--) {\n if (ctx.scopes[i].has(name)) {\n ctx.scopes[i].set(name, value);\n return;\n }\n }\n\n throw new Error(`Cannot assign to unknown identifier \"${name}\"`);\n};\n\nconst guardProp = (prop: unknown): string | number => {\n if (typeof prop === \"number\") return prop;\n\n const name = String(prop);\n if (FORBIDDEN_PROPS.has(name)) {\n throw new Error(`Access to \"${name}\" is not allowed`);\n }\n\n return name;\n};\n\nconst memberTarget = (\n ctx: Ctx,\n node: AstNode\n): { object: unknown; prop: string | number; optional: boolean } => {\n const object = evalNode(ctx, node.object as AstNode);\n const prop = node.computed\n ? guardProp(evalNode(ctx, node.property as AstNode))\n : guardProp((node.property as AstNode).name);\n\n return { object, prop, optional: node.optional === true };\n};\n\nconst readMember = (ctx: Ctx, node: AstNode): unknown => {\n const { object, prop, optional } = memberTarget(ctx, node);\n\n if (object === null || object === undefined) {\n if (optional) return undefined;\n throw new Error(`Cannot read \"${String(prop)}\" of ${String(object)}`);\n }\n\n return (object as Record<string | number, unknown>)[prop];\n};\n\nconst evalNode = (ctx: Ctx, node: AstNode): unknown => {\n if (++ctx.steps > MAX_STEPS) {\n throw new Error(\"Sandbox execution budget exceeded\");\n }\n\n switch (node.type) {\n case \"Program\":\n case \"BlockStatement\": {\n for (const statement of node.body as AstNode[]) {\n const result = evalNode(ctx, statement);\n if (result instanceof ReturnSignal) return result;\n }\n return undefined;\n }\n case \"ReturnStatement\":\n return new ReturnSignal(\n node.argument ? evalNode(ctx, node.argument as AstNode) : undefined\n );\n case \"IfStatement\": {\n if (evalNode(ctx, node.test as AstNode)) {\n return evalNode(ctx, node.consequent as AstNode);\n }\n if (node.alternate) return evalNode(ctx, node.alternate as AstNode);\n return undefined;\n }\n case \"VariableDeclaration\": {\n for (const declaration of node.declarations as AstNode[]) {\n const id = declaration.id as AstNode;\n if (id.type !== \"Identifier\") {\n throw new Error(\"Only simple variable names are supported\");\n }\n declareVar(\n ctx,\n id.name as string,\n declaration.init ? evalNode(ctx, declaration.init as AstNode) : undefined\n );\n }\n return undefined;\n }\n case \"ExpressionStatement\":\n evalNode(ctx, node.expression as AstNode);\n return undefined;\n case \"Literal\":\n return node.value;\n case \"TemplateLiteral\": {\n const quasis = node.quasis as AstNode[];\n const expressions = node.expressions as AstNode[];\n let text = \"\";\n quasis.forEach((quasi, index) => {\n text += (quasi.value as { cooked?: string }).cooked ?? \"\";\n if (index < expressions.length) {\n text += String(evalNode(ctx, expressions[index]));\n }\n });\n return text;\n }\n case \"Identifier\":\n return lookup(ctx, node.name as string);\n case \"ThisExpression\":\n return undefined;\n case \"ChainExpression\":\n return evalNode(ctx, node.expression as AstNode);\n case \"MemberExpression\":\n return readMember(ctx, node);\n case \"CallExpression\": {\n const callee = node.callee as AstNode;\n const args: unknown[] = [];\n for (const argument of node.arguments as AstNode[]) {\n if (argument.type === \"SpreadElement\") {\n const spread = evalNode(ctx, argument.argument as AstNode);\n if (Array.isArray(spread)) args.push(...spread);\n } else {\n args.push(evalNode(ctx, argument));\n }\n }\n\n if (callee.type === \"MemberExpression\") {\n const { object, prop, optional } = memberTarget(ctx, callee);\n if (object === null || object === undefined) {\n if (optional || node.optional === true) return undefined;\n throw new Error(`Cannot call \"${String(prop)}\" of ${String(object)}`);\n }\n\n const fn = (object as Record<string | number, unknown>)[prop];\n if (typeof fn !== \"function\") {\n if (node.optional === true && fn == null) return undefined;\n throw new Error(`\"${String(prop)}\" is not a function`);\n }\n if (fn === Function || fn === eval) {\n throw new Error(\"This function is not allowed\");\n }\n\n return (fn as (...values: unknown[]) => unknown).apply(object, args);\n }\n\n const fn = evalNode(ctx, callee);\n if (typeof fn !== \"function\") {\n if (node.optional === true && fn == null) return undefined;\n throw new Error(\"Value is not a function\");\n }\n if (fn === Function || fn === eval) {\n throw new Error(\"This function is not allowed\");\n }\n\n return (fn as (...values: unknown[]) => unknown)(...args);\n }\n case \"ArrowFunctionExpression\": {\n const params = node.params as AstNode[];\n const body = node.body as AstNode;\n const capturedScopes = [...ctx.scopes];\n\n return (...args: unknown[]): unknown => {\n const callScope: Scope = new Map();\n params.forEach((param, index) => {\n if (param.type !== \"Identifier\") {\n throw new Error(\"Only simple parameters are supported\");\n }\n callScope.set(param.name as string, args[index]);\n });\n\n const callCtx: Ctx = {\n steps: ctx.steps,\n scopes: [...capturedScopes, callScope],\n };\n const result = evalNode(callCtx, body);\n ctx.steps = callCtx.steps;\n\n if (result instanceof ReturnSignal) return result.value;\n return node.expression === true ? result : undefined;\n };\n }\n case \"BinaryExpression\": {\n const left = evalNode(ctx, node.left as AstNode) as never;\n const right = evalNode(ctx, node.right as AstNode) as never;\n switch (node.operator) {\n case \"===\": return left === right;\n case \"!==\": return left !== right;\n case \"==\": return left == right;\n case \"!=\": return left != right;\n case \"<\": return left < right;\n case \"<=\": return left <= right;\n case \">\": return left > right;\n case \">=\": return left >= right;\n case \"+\": return (left as number) + (right as number);\n case \"-\": return (left as number) - (right as number);\n case \"*\": return (left as number) * (right as number);\n case \"/\": return (left as number) / (right as number);\n case \"%\": return (left as number) % (right as number);\n case \"**\": return (left as number) ** (right as number);\n default:\n throw new Error(`Unsupported operator \"${String(node.operator)}\"`);\n }\n }\n case \"LogicalExpression\": {\n const left = evalNode(ctx, node.left as AstNode);\n switch (node.operator) {\n case \"&&\": return left && evalNode(ctx, node.right as AstNode);\n case \"||\": return left || evalNode(ctx, node.right as AstNode);\n case \"??\": return left ?? evalNode(ctx, node.right as AstNode);\n default:\n throw new Error(`Unsupported operator \"${String(node.operator)}\"`);\n }\n }\n case \"UnaryExpression\": {\n const argument = evalNode(ctx, node.argument as AstNode);\n switch (node.operator) {\n case \"!\": return !argument;\n case \"-\": return -(argument as number);\n case \"+\": return +(argument as number);\n case \"typeof\": return typeof argument;\n default:\n throw new Error(`Unsupported operator \"${String(node.operator)}\"`);\n }\n }\n case \"ConditionalExpression\":\n return evalNode(ctx, node.test as AstNode)\n ? evalNode(ctx, node.consequent as AstNode)\n : evalNode(ctx, node.alternate as AstNode);\n case \"AssignmentExpression\": {\n const target = node.left as AstNode;\n if (target.type !== \"Identifier\" || node.operator !== \"=\") {\n throw new Error(\"Only simple assignments are supported\");\n }\n const value = evalNode(ctx, node.right as AstNode);\n assign(ctx, target.name as string, value);\n return value;\n }\n case \"ArrayExpression\": {\n const values: unknown[] = [];\n for (const element of node.elements as Array<AstNode | null>) {\n if (!element) continue;\n if (element.type === \"SpreadElement\") {\n const spread = evalNode(ctx, element.argument as AstNode);\n if (Array.isArray(spread)) values.push(...spread);\n } else {\n values.push(evalNode(ctx, element));\n }\n }\n return values;\n }\n case \"ObjectExpression\": {\n const result: Record<string, unknown> = {};\n for (const property of node.properties as AstNode[]) {\n if (property.type === \"SpreadElement\") {\n const spread = evalNode(ctx, property.argument as AstNode);\n if (spread && typeof spread === \"object\") {\n for (const [key, value] of Object.entries(spread)) {\n result[String(guardProp(key))] = value;\n }\n }\n continue;\n }\n\n const keyNode = property.key as AstNode;\n const key = property.computed\n ? guardProp(evalNode(ctx, keyNode))\n : guardProp(\n keyNode.type === \"Identifier\" ? keyNode.name : keyNode.value\n );\n result[String(key)] = evalNode(ctx, property.value as AstNode);\n }\n return result;\n }\n default:\n throw new Error(`Unsupported syntax: ${node.type}`);\n }\n};\n\nconst SAFE_BUILTINS: Record<string, unknown> = {\n undefined,\n NaN,\n Infinity,\n Math,\n JSON,\n Number,\n String,\n Boolean,\n Array,\n Object,\n Date,\n parseInt,\n parseFloat,\n isNaN,\n isFinite,\n};\n\nexport function runSandboxed(\n code: string,\n globals: Record<string, unknown> = {}\n): unknown {\n const ast = parse(code, {\n ecmaVersion: \"latest\",\n allowReturnOutsideFunction: true,\n }) as unknown as AstNode;\n\n const ctx: Ctx = {\n steps: 0,\n scopes: [\n new Map(Object.entries({ ...SAFE_BUILTINS, ...globals })),\n new Map(),\n ],\n };\n\n const result = evalNode(ctx, ast);\n return result instanceof ReturnSignal ? result.value : undefined;\n}\n",
12
12
  "export interface DataSourceRequestOptions {\n headers?: Record<string, string>;\n}\n\nexport interface DataSourceServiceDefaults {\n credentials?: \"omit\" | \"same-origin\" | \"include\";\n headers?: Record<string, string>;\n}\n\nexport interface DataSourceService {\n fetchOptions(\n url: string,\n options?: DataSourceRequestOptions\n ): Promise<unknown[]>;\n}\n\nexport class FetchDataSourceService implements DataSourceService {\n private cache = new Map<string, Promise<unknown[]>>();\n\n constructor(private readonly defaults: DataSourceServiceDefaults = {}) {}\n\n fetchOptions(\n url: string,\n options?: DataSourceRequestOptions\n ): Promise<unknown[]> {\n const headers = { ...this.defaults.headers, ...options?.headers };\n const init: Record<string, unknown> = {};\n if (Object.keys(headers).length) init.headers = headers;\n if (this.defaults.credentials) init.credentials = this.defaults.credentials;\n\n const key = `${url}|${JSON.stringify(init)}`;\n let pending = this.cache.get(key);\n\n if (!pending) {\n pending = fetch(url, Object.keys(init).length ? (init as never) : undefined)\n .then((response) => {\n if (!response.ok) {\n throw new Error(`Data source request failed (${response.status}): ${url}`);\n }\n return response.json();\n })\n .then((json: unknown) => (Array.isArray(json) ? json : []))\n .catch((error: unknown) => {\n this.cache.delete(key);\n throw error;\n });\n\n this.cache.set(key, pending);\n }\n\n return pending;\n }\n}\n",
13
13
  "export interface FileLike {\n name: string;\n type: string;\n size: number;\n arrayBuffer(): Promise<ArrayBuffer>;\n}\n\nexport interface UploadedFile {\n name: string;\n type: string;\n size: number;\n url: string;\n}\n\nexport interface FileUploadOptions {\n url?: string;\n headers?: Record<string, string>;\n}\n\nexport interface FileUploadService {\n upload(file: FileLike, options?: FileUploadOptions): Promise<UploadedFile>;\n remove?(file: UploadedFile, options?: FileUploadOptions): Promise<void>;\n}\n\nexport class Base64FileUploadService implements FileUploadService {\n async upload(file: FileLike): Promise<UploadedFile> {\n const encode = (globalThis as { btoa?: (raw: string) => string }).btoa;\n if (!encode) throw new Error(\"No base64 encoder available\");\n\n const bytes = new Uint8Array(await file.arrayBuffer());\n let binary = \"\";\n for (const byte of bytes) binary += String.fromCharCode(byte);\n\n return {\n name: file.name,\n type: file.type,\n size: file.size,\n url: `data:${file.type};base64,${encode(binary)}`,\n };\n }\n}\n\nexport interface UrlFileUploadDefaults {\n url?: string;\n headers?: Record<string, string>;\n credentials?: RequestCredentials;\n fieldName?: string;\n fetch?: typeof fetch;\n}\n\nexport class UrlFileUploadService implements FileUploadService {\n constructor(private readonly defaults: UrlFileUploadDefaults = {}) {}\n\n private get fetchImplementation(): typeof fetch {\n return this.defaults.fetch ?? globalThis.fetch.bind(globalThis);\n }\n\n private resolveUrl(options?: FileUploadOptions): string {\n const url = options?.url ?? this.defaults.url;\n if (!url) {\n throw new Error(\n \"No upload URL configured — set it on the brick (uploadUrl) or on UrlFileUploadService\"\n );\n }\n return url;\n }\n\n private mergedHeaders(options?: FileUploadOptions): Record<string, string> {\n return { ...this.defaults.headers, ...options?.headers };\n }\n\n async upload(\n file: FileLike,\n options?: FileUploadOptions\n ): Promise<UploadedFile> {\n const url = this.resolveUrl(options);\n\n const blob =\n typeof Blob !== \"undefined\" && file instanceof Blob\n ? file\n : new Blob([await file.arrayBuffer()], { type: file.type });\n\n const body = new FormData();\n body.append(this.defaults.fieldName ?? \"file\", blob, file.name);\n\n const response = await this.fetchImplementation(url, {\n method: \"POST\",\n body,\n headers: this.mergedHeaders(options),\n credentials: this.defaults.credentials,\n });\n\n if (!response.ok) {\n throw new Error(`Upload failed (${response.status})`);\n }\n\n const payload = (await response.json().catch(() => ({}))) as Record<\n string,\n unknown\n >;\n const uploadedUrl =\n payload.url ?? payload.path ?? payload.location ?? payload.href;\n\n return {\n name: file.name,\n type: file.type,\n size: file.size,\n url: typeof uploadedUrl === \"string\" ? uploadedUrl : \"\",\n };\n }\n\n async remove(file: UploadedFile, options?: FileUploadOptions): Promise<void> {\n if (!file.url) return;\n\n const target = /^https?:\\/\\//.test(file.url)\n ? file.url\n : this.resolveUrl(options);\n\n const response = await this.fetchImplementation(target, {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n ...this.mergedHeaders(options),\n },\n credentials: this.defaults.credentials,\n body: JSON.stringify({ url: file.url, name: file.name }),\n });\n\n if (!response.ok) {\n throw new Error(`Delete failed (${response.status})`);\n }\n }\n}\n",
@@ -15,7 +15,7 @@
15
15
  "export interface OptionSourceService {\n fetchOptions(ref: string): Promise<unknown>;\n}\n\nexport interface FetchOptionSourceDefaults {\n baseUrl?: string;\n headers?: Record<string, string>;\n credentials?: RequestCredentials;\n fetch?: typeof fetch;\n}\n\nexport class FetchOptionSourceService implements OptionSourceService {\n private cache = new Map<string, Promise<unknown>>();\n\n constructor(private readonly defaults: FetchOptionSourceDefaults = {}) {}\n\n private resolveUrl(ref: string): string {\n if (/^https?:\\/\\//.test(ref) || !this.defaults.baseUrl) return ref;\n return `${this.defaults.baseUrl.replace(/\\/$/, \"\")}/${ref.replace(/^\\//, \"\")}`;\n }\n\n fetchOptions(ref: string): Promise<unknown> {\n const url = this.resolveUrl(ref);\n\n let pending = this.cache.get(url);\n if (!pending) {\n const fetchImplementation =\n this.defaults.fetch ?? globalThis.fetch.bind(globalThis);\n\n pending = fetchImplementation(url, {\n headers: this.defaults.headers,\n credentials: this.defaults.credentials,\n }).then(async (response) => {\n if (!response.ok) {\n throw new Error(`Failed to load options \"${ref}\" (${response.status})`);\n }\n return (await response.json()) as unknown;\n });\n\n pending.catch(() => this.cache.delete(url));\n this.cache.set(url, pending);\n }\n\n return pending;\n }\n}\n",
16
16
  "import {\n SandboxJsRunnerService,\n type JsRunnerService,\n} from \"./js_runner_service\";\nimport {\n FetchDataSourceService,\n type DataSourceService,\n} from \"./data_source_service\";\nimport {\n Base64FileUploadService,\n type FileUploadService,\n} from \"./file_upload_service\";\nimport {\n FetchSpecSourceService,\n type SpecSourceService,\n} from \"./spec_source_service\";\nimport {\n FetchOptionSourceService,\n type OptionSourceService,\n} from \"./option_source_service\";\n\nexport interface Services {\n jsRunnerService: JsRunnerService;\n dataSourceService: DataSourceService;\n fileUploadService: FileUploadService;\n specSourceService: SpecSourceService;\n optionSourceService: OptionSourceService;\n}\n\nconst GLOBAL_KEY = Symbol.for(\"formkrafter.core.services\");\nconst globalStore = globalThis as unknown as Record<symbol, Services | undefined>;\n\nconst services: Services = (globalStore[GLOBAL_KEY] ??= {\n jsRunnerService: new SandboxJsRunnerService(),\n dataSourceService: new FetchDataSourceService(),\n fileUploadService: new Base64FileUploadService(),\n specSourceService: new FetchSpecSourceService(),\n optionSourceService: new FetchOptionSourceService(),\n});\n\nservices.specSourceService ??= new FetchSpecSourceService();\nservices.optionSourceService ??= new FetchOptionSourceService();\n\nexport { services };\n",
17
17
  "import { Ajv, type ErrorObject, type ValidateFunction } from \"ajv\";\nimport ajvErrors from \"ajv-errors\";\nimport addFormats from \"ajv-formats\";\nimport type { BrickSpec } from \"../utils/brick-spec\";\nimport { buildValidationSchema, iterateSchemaBricks } from \"../utils/brick-spec\";\nimport { resolveLocalizedText } from \"../utils/localized-text\";\nimport { defaultValidationMessage } from \"./default-messages\";\nimport { evalBrickCode, getAffectedProperties } from \"../brick/utils\";\n\nconst ajv = new Ajv({ allErrors: true });\naddFormats(ajv, [\"email\", \"uri\"]);\najvErrors(ajv);\n\nconst validatorCache = new WeakMap<BrickSpec, Map<string, ValidateFunction>>();\n\nexport type Validator =\n | \"required\"\n | \"minLength\"\n | \"maxLength\"\n | \"min\"\n | \"max\"\n | \"pattern\"\n | \"minItems\"\n | \"maxItems\"\n | \"email\"\n | \"url\"\n | \"custom\";\n\nexport type ValidationResult = {\n valid: boolean;\n errors: Record<string, string>;\n};\n\nconst compiledValidator = (\n brickSpec: BrickSpec,\n locale?: string\n): ValidateFunction | undefined => {\n let byLocale = validatorCache.get(brickSpec);\n if (!byLocale) {\n byLocale = new Map();\n validatorCache.set(brickSpec, byLocale);\n }\n\n const cacheKey = locale ?? \"\";\n let validate = byLocale.get(cacheKey);\n\n if (!validate) {\n const schema = buildValidationSchema(brickSpec, locale);\n if (!schema) return undefined;\n\n try {\n validate = ajv.compile(schema);\n } catch {\n return undefined;\n }\n byLocale.set(cacheKey, validate);\n }\n\n return validate;\n};\n\nconst customErrors = (\n brickSpec: BrickSpec,\n data: unknown,\n locale?: string\n): Record<string, string> => {\n const errors: Record<string, string> = {};\n const dataMap = (data ?? {}) as Record<string, unknown>;\n\n for (const brick of iterateSchemaBricks(brickSpec)) {\n const key = brick.configs?.key;\n if (!key) continue;\n\n for (const validation of brick.validations ?? []) {\n if (validation.validator !== \"custom\" || !validation.customValidator) {\n continue;\n }\n\n const result = evalBrickCode(\n `const value = dataMap?.[${JSON.stringify(key)}];\\n${validation.customValidator}`,\n dataMap\n );\n\n if (result === true || result === undefined || result === null) continue;\n if (key in errors) continue;\n\n if (typeof result === \"string\") errors[key] = result;\n else if (result instanceof Error) errors[key] = result.message;\n else {\n const resolved = resolveLocalizedText(validation.message, locale);\n errors[key] =\n typeof resolved === \"string\"\n ? resolved\n : defaultValidationMessage(\"custom\", locale);\n }\n }\n }\n\n return errors;\n};\n\nconst keyOfError = (error: ErrorObject): string | undefined => {\n if (error.keyword === \"required\") {\n return (error.params as { missingProperty?: string }).missingProperty;\n }\n\n if (error.keyword === \"errorMessage\") {\n const inner = (error.params as { errors?: ErrorObject[] }).errors?.[0];\n return inner ? keyOfError(inner) : undefined;\n }\n\n return error.instancePath.split(\"/\").filter(Boolean)[0];\n};\n\nconst hiddenKeys = (\n brickSpec: BrickSpec,\n dataMap: Record<string, unknown> | undefined\n): Set<string> => {\n const hidden = new Set<string>();\n\n const walk = (brick: BrickSpec, parentHidden: boolean) => {\n const isHidden =\n parentHidden ||\n (brick.rules?.length\n ? getAffectedProperties(brick.rules, dataMap).hidden === true\n : false);\n\n const key = brick.configs?.key;\n if (isHidden && key) hidden.add(key);\n\n if (brick.type === \"collection\") return;\n for (const child of brick.children ?? []) walk(child, isHidden);\n };\n\n walk(brickSpec, false);\n return hidden;\n};\n\nexport const validateBrickSpecDataDetailed = (\n brickSpec: BrickSpec,\n data: unknown,\n locale?: string\n): ValidationResult => {\n const errors: Record<string, string> = {};\n const validate = compiledValidator(brickSpec, locale);\n\n if (validate && !validate(data)) {\n for (const error of validate.errors ?? []) {\n const key = keyOfError(error);\n if (key && !(key in errors) && error.message) {\n errors[key] = error.message;\n }\n }\n }\n\n for (const [key, message] of Object.entries(customErrors(brickSpec, data, locale))) {\n if (!(key in errors)) errors[key] = message;\n }\n\n const dataMap =\n typeof data === \"object\" && data !== null\n ? (data as Record<string, unknown>)\n : undefined;\n for (const key of hiddenKeys(brickSpec, dataMap)) {\n delete errors[key];\n }\n\n return { valid: Object.keys(errors).length === 0, errors };\n};\n\nexport const validateBrickSpecData = (\n brickSpec: BrickSpec,\n data: unknown,\n locale?: string\n): boolean => validateBrickSpecDataDetailed(brickSpec, data, locale).valid;\n\nconst stripEmpty = (data: unknown): Record<string, unknown> => {\n if (typeof data !== \"object\" || data === null) return {};\n\n return Object.fromEntries(\n Object.entries(data as Record<string, unknown>).filter(\n ([, value]) => value !== \"\" && value !== null && value !== undefined\n )\n );\n};\n\nconst rowSpecCache = new WeakMap<BrickSpec, BrickSpec>();\n\nconst rowSpecOf = (collection: BrickSpec): BrickSpec => {\n let rowSpec = rowSpecCache.get(collection);\n\n if (!rowSpec) {\n rowSpec = {\n type: \"panel\",\n id: \"collection-row\",\n name: \"Row\",\n configs: { key: `${collection.configs?.key ?? \"collection\"}_row` },\n children: collection.children ?? [],\n };\n rowSpecCache.set(collection, rowSpec);\n }\n\n return rowSpec;\n};\n\nexport const validateFormData = (\n brickSpec: BrickSpec,\n data: unknown,\n locale?: string\n): ValidationResult => {\n const present = stripEmpty(data);\n const errors = {\n ...validateBrickSpecDataDetailed(brickSpec, present, locale).errors,\n };\n\n for (const brick of iterateSchemaBricks(brickSpec)) {\n if (brick.type !== \"collection\") continue;\n\n const key = brick.configs?.key;\n if (!key) continue;\n\n const rows = present[key];\n if (!Array.isArray(rows)) continue;\n\n const rowSpec = rowSpecOf(brick);\n rows.forEach((row, index) => {\n const rowResult = validateFormData(rowSpec, row, locale);\n for (const [field, message] of Object.entries(rowResult.errors)) {\n const prefixed = `${key}[${index}].${field}`;\n if (!(prefixed in errors)) errors[prefixed] = message;\n }\n });\n }\n\n return { valid: Object.keys(errors).length === 0, errors };\n};\n",
18
- "import { type Options, parse } from \"acorn\";\nimport type { JsRunnerService } from \"./js_runner_service\";\n\nexport class UnsafeEvalJsRunnerService implements JsRunnerService {\n validateJs(\n js: string,\n options: Options = { ecmaVersion: \"latest\", allowReturnOutsideFunction: true }\n ): { valide: boolean; error?: Error } {\n try {\n parse(js, options);\n return { valide: true };\n } catch (error) {\n return {\n valide: false,\n error: error instanceof Error ? error : new Error(String(error)),\n };\n }\n }\n\n eval(js: string, scope: Record<string, unknown> = {}): unknown {\n const prelude = Object.entries(scope)\n .map(([name, value]) => `const ${name} = ${JSON.stringify(value)};`)\n .join(\"\\n\");\n const fn = `(() => {${prelude}\\n${js}})();`;\n\n const validation = this.validateJs(fn, { ecmaVersion: \"latest\" });\n if (!validation.valide) throw validation.error;\n\n return eval(fn);\n }\n}\n",
18
+ "import { type Options, parse } from \"acorn\";\nimport type { JsRunnerService, JsValidationResult } from \"./js_runner_service\";\n\nexport class UnsafeEvalJsRunnerService implements JsRunnerService {\n validateJs(\n js: string,\n options: Options = { ecmaVersion: \"latest\", allowReturnOutsideFunction: true }\n ): JsValidationResult {\n try {\n parse(js, options);\n return { valid: true };\n } catch (error) {\n return {\n valid: false,\n error: error instanceof Error ? error : new Error(String(error)),\n };\n }\n }\n\n eval(js: string, scope: Record<string, unknown> = {}): unknown {\n const prelude = Object.entries(scope)\n .map(([name, value]) => `const ${name} = ${JSON.stringify(value)};`)\n .join(\"\\n\");\n const fn = `(() => {${prelude}\\n${js}})();`;\n\n const validation = this.validateJs(fn, { ecmaVersion: \"latest\" });\n if (!validation.valid) throw validation.error;\n\n return eval(fn);\n }\n}\n",
19
19
  "import type { BrickSpec } from \"../utils/brick-spec\";\n\nexport function pointerFromPath(path: string): string {\n return path\n .split(\".\")\n .slice(1)\n .map((segment) => `/children/${segment}`)\n .join(\"\");\n}\n\nexport function pointerOfUid(spec: BrickSpec, uid: string): string | undefined {\n if (spec.configs?.uid === uid) return \"\";\n\n for (const [index, child] of (spec.children ?? []).entries()) {\n const childPointer = pointerOfUid(child, uid);\n if (childPointer !== undefined) return `/children/${index}${childPointer}`;\n }\n\n return undefined;\n}\n\nexport function getBrickAt(spec: BrickSpec, path: string): BrickSpec | undefined {\n let current: BrickSpec | undefined = spec;\n\n for (const segment of path.split(\".\").slice(1)) {\n current = current?.children?.[Number(segment)];\n }\n\n return current;\n}\n",
20
20
  "import * as fastJsonPatchModule from \"fast-json-patch\";\n\ntype FastJsonPatchApi = {\n applyPatch: typeof fastJsonPatchModule.applyPatch;\n};\n\nconst fastJsonPatch: FastJsonPatchApi =\n (fastJsonPatchModule as unknown as { default?: FastJsonPatchApi }).default ??\n fastJsonPatchModule;\n\nexport const applyPatch = fastJsonPatch.applyPatch;\nexport type { Operation } from \"fast-json-patch\";\n",
21
21
  "import { applyPatch, type Operation } from \"../utils/fast-json-patch\";\nimport type { BrickSpec } from \"../utils/brick-spec\";\nimport type { BrickBaseConfigs } from \"../utils/common-brick-props\";\nimport type { BrickStyles } from \"../utils/brick-styles\";\nimport type { Validation } from \"../validators/validation\";\nimport type { Rule } from \"../rules/rule\";\nimport { getBrickAt, pointerFromPath, pointerOfUid } from \"./pointer\";\n\nexport type SpecUpdate = {\n spec: BrickSpec;\n patches: Operation[];\n inverse: Operation[];\n};\n\nconst apply = (\n spec: BrickSpec,\n patches: Operation[],\n inverse: Operation[]\n): SpecUpdate => ({\n spec: applyPatch(spec, patches, true, false).newDocument,\n patches,\n inverse,\n});\n\nconst requireBrickAt = (spec: BrickSpec, path: string): BrickSpec => {\n const brick = getBrickAt(spec, path);\n if (!brick) throw new Error(`No brick at path \"${path}\"`);\n return brick;\n};\n\nconst requireBrickByUid = (\n spec: BrickSpec,\n uid: string\n): { pointer: string; brick: BrickSpec } => {\n const pointer = pointerOfUid(spec, uid);\n if (pointer === undefined) throw new Error(`No brick with uid \"${uid}\"`);\n\n let brick = spec;\n for (const segment of pointer.split(\"/children/\").slice(1)) {\n brick = brick.children![Number(segment)];\n }\n\n return { pointer, brick };\n};\n\nconst toJsonValue = <T>(value: T): T => JSON.parse(JSON.stringify(value));\n\nexport function addBrick(\n spec: BrickSpec,\n brick: BrickSpec,\n parentPath: string,\n index?: number\n): SpecUpdate {\n const parent = requireBrickAt(spec, parentPath);\n const parentPointer = pointerFromPath(parentPath);\n const value = toJsonValue(brick);\n\n if (!parent.children) {\n const pointer = `${parentPointer}/children`;\n return apply(\n spec,\n [{ op: \"add\", path: pointer, value: [value] }],\n [{ op: \"remove\", path: pointer }]\n );\n }\n\n const position = Math.min(index ?? parent.children.length, parent.children.length);\n const pointer = `${parentPointer}/children/${position}`;\n\n return apply(\n spec,\n [{ op: \"add\", path: pointer, value }],\n [{ op: \"remove\", path: pointer }]\n );\n}\n\nexport function removeBrick(spec: BrickSpec, path: string): SpecUpdate {\n if (path === \"0\") throw new Error(\"Cannot remove the root brick\");\n\n const brick = requireBrickAt(spec, path);\n const pointer = pointerFromPath(path);\n\n return apply(\n spec,\n [{ op: \"remove\", path: pointer }],\n [{ op: \"add\", path: pointer, value: brick }]\n );\n}\n\nexport function moveBrick(spec: BrickSpec, from: string, to: string): SpecUpdate {\n if (from === \"0\" || to === \"0\") throw new Error(\"Cannot move the root brick\");\n\n const brick = requireBrickAt(spec, from);\n\n const fromSegments = from.split(\".\").map(Number);\n const toSegments = to.split(\".\").map(Number);\n const parentLength = fromSegments.length - 1;\n const fromIndex = fromSegments[parentLength];\n\n const sharesFromParent =\n toSegments.length > parentLength &&\n fromSegments.slice(0, parentLength).every((segment, i) => segment === toSegments[i]);\n\n const adjusted = [...toSegments];\n if (sharesFromParent) {\n if (adjusted[parentLength] === fromIndex && adjusted.length > fromSegments.length) {\n throw new Error(`Cannot move a brick into its own subtree (\"${from}\" → \"${to}\")`);\n }\n if (adjusted[parentLength] > fromIndex) adjusted[parentLength] -= 1;\n }\n\n const fromPointer = pointerFromPath(from);\n const toPointer = pointerFromPath(adjusted.join(\".\"));\n\n return apply(\n spec,\n [\n { op: \"remove\", path: fromPointer },\n { op: \"add\", path: toPointer, value: brick },\n ],\n [\n { op: \"remove\", path: toPointer },\n { op: \"add\", path: fromPointer, value: brick },\n ]\n );\n}\n\nconst withFreshUids = (brick: BrickSpec): BrickSpec => ({\n ...brick,\n ...(brick.configs\n ? { configs: { ...brick.configs, uid: crypto.randomUUID() } }\n : {}),\n ...(brick.children ? { children: brick.children.map(withFreshUids) } : {}),\n});\n\nexport function duplicateBrick(spec: BrickSpec, path: string): SpecUpdate {\n if (path === \"0\") throw new Error(\"Cannot duplicate the root brick\");\n\n const brick = requireBrickAt(spec, path);\n const segments = path.split(\".\");\n const nextIndex = Number(segments[segments.length - 1]) + 1;\n const pointer = pointerFromPath(\n [...segments.slice(0, -1), String(nextIndex)].join(\".\")\n );\n\n const copy = withFreshUids(toJsonValue(brick));\n\n return apply(\n spec,\n [{ op: \"add\", path: pointer, value: copy }],\n [{ op: \"remove\", path: pointer }]\n );\n}\n\nconst setBrickSection = (\n spec: BrickSpec,\n brickPointer: string,\n section: \"configs\" | \"styles\" | \"validations\" | \"rules\",\n value: unknown,\n previous: unknown\n): SpecUpdate => {\n const pointer = `${brickPointer}/${section}`;\n\n if (previous === undefined) {\n return apply(\n spec,\n [{ op: \"add\", path: pointer, value }],\n [{ op: \"remove\", path: pointer }]\n );\n }\n\n return apply(\n spec,\n [{ op: \"replace\", path: pointer, value }],\n [{ op: \"replace\", path: pointer, value: previous }]\n );\n};\n\nexport function updateBrickConfigs(\n spec: BrickSpec,\n uid: string,\n configs: BrickBaseConfigs & Record<string, unknown>\n): SpecUpdate {\n const { pointer, brick } = requireBrickByUid(spec, uid);\n const merged = { ...brick.configs, ...configs };\n\n return setBrickSection(spec, pointer, \"configs\", merged, brick.configs);\n}\n\nexport function updateBrickStyles(\n spec: BrickSpec,\n uid: string,\n styles: BrickStyles<string>\n): SpecUpdate {\n const { pointer, brick } = requireBrickByUid(spec, uid);\n const merged = { ...brick.styles, ...styles };\n\n return setBrickSection(spec, pointer, \"styles\", merged, brick.styles);\n}\n\nexport function updateBrickValidations(\n spec: BrickSpec,\n uid: string,\n validations: Validation[]\n): SpecUpdate {\n const { pointer, brick } = requireBrickByUid(spec, uid);\n\n return setBrickSection(spec, pointer, \"validations\", validations, brick.validations);\n}\n\nexport function updateBrickRules(\n spec: BrickSpec,\n uid: string,\n rules: Rule[]\n): SpecUpdate {\n const { pointer, brick } = requireBrickByUid(spec, uid);\n\n return setBrickSection(spec, pointer, \"rules\", rules, brick.rules);\n}\n",
@@ -23,7 +23,7 @@
23
23
  "import type { BrickSpec } from \"../utils/brick-spec\";\nimport type { Validation } from \"../validators/validation\";\nimport type { Rule } from \"../rules/rule\";\n\nexport interface FormioComponent {\n type?: string;\n key?: string;\n label?: string;\n title?: string;\n placeholder?: string;\n description?: string;\n tooltip?: string;\n defaultValue?: unknown;\n disabled?: boolean;\n hidden?: boolean;\n multiple?: boolean;\n prefix?: string;\n suffix?: string;\n inputMask?: string;\n html?: string;\n content?: string;\n legend?: string;\n input?: boolean;\n tableView?: boolean;\n components?: FormioComponent[];\n columns?: Array<{ components?: FormioComponent[]; width?: number }>;\n values?: Array<{ label?: string; value?: string }>;\n data?: {\n values?: Array<{ label?: string; value?: string }>;\n json?: Array<Record<string, unknown>>;\n url?: string;\n };\n dataSrc?: string;\n valueProperty?: string;\n template?: string;\n searchField?: string;\n storage?: string;\n url?: string;\n filePattern?: string;\n logic?: Array<{\n name?: string;\n trigger?: { type?: string; javascript?: string; simple?: unknown };\n actions?: Array<{\n name?: string;\n type?: string;\n state?: boolean;\n property?: { value?: string; type?: string };\n }>;\n }>;\n validate?: {\n required?: boolean;\n minLength?: number;\n maxLength?: number;\n min?: number;\n max?: number;\n step?: number | string;\n pattern?: string;\n custom?: string;\n customMessage?: string;\n };\n conditional?: {\n show?: boolean | string;\n when?: string | null;\n eq?: unknown;\n };\n customConditional?: string;\n enableTime?: boolean;\n enableDate?: boolean;\n [extra: string]: unknown;\n}\n\nexport interface FormioForm {\n display?: string;\n title?: string;\n name?: string;\n components?: FormioComponent[];\n [extra: string]: unknown;\n}\n\nexport interface FormioConversionResult {\n spec: BrickSpec;\n warnings: string[];\n}\n\ntype Converter = {\n nextUid: () => string;\n warn: (message: string) => void;\n uploadUrls: Map<string, number>;\n};\n\nconst INPUT_TYPE_MAP: Record<\n string,\n { id: string; dataType: BrickSpec[\"dataType\"]; name: string }\n> = {\n textfield: { id: \"text\", dataType: \"string\", name: \"Text\" },\n textarea: { id: \"textarea\", dataType: \"string\", name: \"Text area\" },\n number: { id: \"number\", dataType: \"number\", name: \"Number\" },\n currency: { id: \"number\", dataType: \"number\", name: \"Currency\" },\n password: { id: \"password\", dataType: \"string\", name: \"Password\" },\n email: { id: \"email\", dataType: \"string\", name: \"Email\" },\n url: { id: \"url\", dataType: \"string\", name: \"URL\" },\n phoneNumber: { id: \"phone\", dataType: \"string\", name: \"Phone\" },\n day: { id: \"date\", dataType: \"string\", name: \"Date\" },\n time: { id: \"time\", dataType: \"string\", name: \"Time\" },\n checkbox: { id: \"checkbox\", dataType: \"boolean\", name: \"Checkbox\" },\n hidden: { id: \"hidden\", dataType: \"string\", name: \"Hidden\" },\n tags: { id: \"tags\", dataType: \"array\", name: \"Tags\" },\n radio: { id: \"radio\", dataType: \"string\", name: \"Radio\" },\n signature: { id: \"signature\", dataType: \"string\", name: \"Signature\" },\n address: { id: \"address\", dataType: \"string\", name: \"Address\" },\n};\n\nexport function convertFormioForm(form: FormioForm): FormioConversionResult {\n const warnings: string[] = [];\n let counter = 0;\n const ctx: Converter = {\n nextUid: () => `fio-${++counter}`,\n warn: (message) => warnings.push(message),\n uploadUrls: new Map(),\n };\n\n let children = convertComponents(form.components ?? [], ctx);\n\n if (form.display === \"wizard\") {\n children = [\n {\n type: \"panel\",\n id: \"stepper\",\n name: \"Wizard\",\n configs: {\n uid: ctx.nextUid(),\n key: \"steps\",\n validateSteps: true,\n allowStepClick: true,\n showSubmit: true,\n },\n children,\n },\n ];\n }\n\n const spec: BrickSpec = {\n type: \"panel\",\n id: \"column\",\n name: form.title ?? \"Form\",\n configs: { uid: ctx.nextUid(), key: form.name ?? \"form\" },\n children,\n };\n\n for (const [url, count] of ctx.uploadUrls) {\n warnings.push(\n `${count} file component(s) store uploads at \"${url}\" (kept as the uploadUrl config) — configure services.fileUploadService with UrlFileUploadService to upload there`\n );\n }\n\n return { spec, warnings };\n}\n\nfunction convertComponents(\n components: FormioComponent[],\n ctx: Converter\n): BrickSpec[] {\n const bricks: BrickSpec[] = [];\n for (const component of components) {\n bricks.push(...convertComponent(component, ctx));\n }\n return bricks;\n}\n\nfunction convertComponent(\n component: FormioComponent,\n ctx: Converter\n): BrickSpec[] {\n const type = component.type ?? \"textfield\";\n\n if (type === \"button\") {\n ctx.warn(\n `button \"${component.key ?? component.label ?? \"?\"}\" skipped — FormKrafter renders its own submit action`\n );\n return [];\n }\n\n if (type === \"content\" || type === \"htmlelement\") {\n return [\n withCommon(component, ctx, {\n type: \"output\",\n dataType: \"void\",\n id: \"content\",\n name: \"Content\",\n configs: {\n uid: ctx.nextUid(),\n key: component.key ?? ctx.nextUid(),\n content: String(component.html ?? component.content ?? \"\"),\n },\n }),\n ];\n }\n\n if (type === \"panel\" || type === \"fieldset\" || type === \"well\") {\n return [\n withCommon(component, ctx, {\n type: \"panel\",\n id: \"group\",\n name: component.title ?? component.legend ?? \"Group\",\n configs: {\n uid: ctx.nextUid(),\n key: component.key ?? ctx.nextUid(),\n label: component.title ?? component.legend ?? component.label,\n },\n children: convertComponents(component.components ?? [], ctx),\n }),\n ];\n }\n\n if (type === \"container\") {\n ctx.warn(\n `container \"${component.key ?? \"?\"}\" flattened — FormKrafter stores data flat outside collections`\n );\n return [\n {\n type: \"panel\",\n id: \"group\",\n name: \"Group\",\n configs: {\n uid: ctx.nextUid(),\n key: component.key ?? ctx.nextUid(),\n label: component.label,\n },\n children: convertComponents(component.components ?? [], ctx),\n },\n ];\n }\n\n if (type === \"columns\") {\n return [\n {\n type: \"panel\",\n id: \"row\",\n name: \"Row\",\n configs: { uid: ctx.nextUid(), key: component.key ?? ctx.nextUid() },\n children: (component.columns ?? []).map((column) => ({\n type: \"panel\" as const,\n id: \"column\",\n name: \"Column\",\n configs: { uid: ctx.nextUid(), key: ctx.nextUid() },\n children: convertComponents(column.components ?? [], ctx),\n })),\n },\n ];\n }\n\n if (type === \"tabs\") {\n return [\n {\n type: \"panel\",\n id: \"tabs\",\n name: \"Tabs\",\n configs: {\n uid: ctx.nextUid(),\n key: component.key ?? ctx.nextUid(),\n validateTabs: false,\n },\n children: (component.components ?? []).map((tab) => ({\n type: \"panel\" as const,\n id: \"group\",\n name: tab.label ?? \"Tab\",\n configs: {\n uid: ctx.nextUid(),\n key: tab.key ?? ctx.nextUid(),\n label: tab.label,\n },\n children: convertComponents(tab.components ?? [], ctx),\n })),\n },\n ];\n }\n\n if (type === \"datagrid\" || type === \"editgrid\") {\n if (type === \"editgrid\") {\n ctx.warn(\n `editgrid \"${component.key ?? \"?\"}\" converted to a data-grid — row templates are not preserved`\n );\n }\n return [\n withCommon(component, ctx, {\n type: \"collection\",\n dataType: \"array\",\n id: \"data-grid\",\n name: \"Data grid\",\n configs: {\n uid: ctx.nextUid(),\n key: component.key ?? ctx.nextUid(),\n label: component.label,\n },\n children: convertComponents(component.components ?? [], ctx),\n }),\n ];\n }\n\n if (type === \"datetime\") {\n const dateOnly = component.enableTime === false;\n return [\n withCommon(component, ctx, {\n type: \"input\",\n dataType: \"string\",\n id: dateOnly ? \"date\" : \"datetime\",\n name: dateOnly ? \"Date\" : \"Date & time\",\n configs: baseConfigs(component, ctx),\n }),\n ];\n }\n\n if (type === \"select\") {\n return [convertSelect(component, ctx)];\n }\n\n if (type === \"selectboxes\") {\n return [\n withCommon(component, ctx, {\n type: \"input\",\n dataType: \"array\",\n id: \"select-boxes\",\n name: \"Select boxes\",\n configs: {\n ...baseConfigs(component, ctx),\n optionsSource: \"static\",\n options: emitOptions(staticOptions(component.values), component, ctx),\n },\n }),\n ];\n }\n\n if (type === \"radio\") {\n return [\n withCommon(component, ctx, {\n type: \"input\",\n dataType: \"string\",\n id: \"radio\",\n name: \"Radio\",\n configs: {\n ...baseConfigs(component, ctx),\n optionsSource: \"static\",\n options: emitOptions(staticOptions(component.values), component, ctx),\n },\n }),\n ];\n }\n\n if (type === \"form\") {\n const ref = String(\n component.form ?? component.path ?? component.src ?? \"\"\n );\n ctx.warn(\n `nested form \"${component.key ?? \"?\"}\" references \"${ref}\" — configure services.specSourceService so it can be resolved`\n );\n return [\n withCommon(component, ctx, {\n type: \"panel\",\n id: \"nested-form\",\n name: \"Nested form\",\n configs: {\n uid: ctx.nextUid(),\n key: component.key ?? ctx.nextUid(),\n label: component.label,\n specRef: ref,\n },\n }),\n ];\n }\n\n if (type === \"file\") {\n const configs = baseConfigs(component, ctx);\n if (component.filePattern && component.filePattern !== \"*\") {\n configs.accept = component.filePattern;\n }\n configs.multiple = component.multiple === true;\n if (component.storage === \"url\" && component.url) {\n configs.uploadUrl = component.url;\n ctx.uploadUrls.set(\n component.url,\n (ctx.uploadUrls.get(component.url) ?? 0) + 1\n );\n }\n return [\n withCommon(component, ctx, {\n type: \"input\",\n dataType: component.multiple ? \"array\" : \"object\",\n id: \"file\",\n name: \"File\",\n configs,\n }),\n ];\n }\n\n const mapped = INPUT_TYPE_MAP[type];\n if (mapped) {\n if (type === \"day\") {\n ctx.warn(\n `day \"${component.key ?? \"?\"}\" approximated with a date input`\n );\n }\n if (type === \"currency\") {\n ctx.warn(\n `currency \"${component.key ?? \"?\"}\" converted to a number with a prefix`\n );\n }\n const configs = baseConfigs(component, ctx);\n if (type === \"currency\" && !configs.prefix) {\n configs.prefix = String(component.currency ?? \"$\");\n }\n return [\n withCommon(component, ctx, {\n type: \"input\",\n dataType: mapped.dataType,\n id: mapped.id,\n name: mapped.name,\n configs,\n }),\n ];\n }\n\n ctx.warn(\n `unsupported component type \"${type}\" (key \"${component.key ?? \"?\"}\") skipped`\n );\n return [];\n}\n\nfunction convertSelect(component: FormioComponent, ctx: Converter): BrickSpec {\n const multiple = component.multiple === true;\n const configs = baseConfigs(component, ctx);\n\n if (component.dataSrc === \"url\" && component.data?.url) {\n configs.optionsSource = \"remote\";\n configs.optionsUrl = component.data.url;\n if (component.valueProperty) configs.valueKey = component.valueProperty;\n const templateKey = labelKeyFromTemplate(component.template);\n if (templateKey) configs.labelKey = templateKey;\n if (component.searchField) configs.searchParam = component.searchField;\n } else if (component.dataSrc === \"json\" && Array.isArray(component.data?.json)) {\n configs.optionsSource = \"static\";\n configs.options = emitOptions(jsonOptions(component, ctx), component, ctx);\n } else {\n if (component.dataSrc && ![\"values\", \"json\", \"\"].includes(component.dataSrc)) {\n ctx.warn(\n `select \"${component.key ?? \"?\"}\" uses dataSrc \"${component.dataSrc}\" — converted to static options`\n );\n }\n configs.optionsSource = \"static\";\n configs.options = emitOptions(staticOptions(component.data?.values ?? component.values), component, ctx);\n }\n\n return withCommon(component, ctx, {\n type: \"input\",\n dataType: multiple ? \"array\" : \"string\",\n id: multiple ? \"multi-select\" : \"select\",\n name: multiple ? \"Multi select\" : \"Select\",\n configs,\n });\n}\n\nfunction jsonOptions(\n component: FormioComponent,\n ctx: Converter\n): Array<{ label: string; value: string }> {\n const items = component.data?.json ?? [];\n const labelKey = labelKeyFromTemplate(component.template) ?? \"label\";\n let valueKey = component.valueProperty;\n if (!valueKey) {\n const first = items[0] ?? {};\n valueKey = \"value\" in first ? \"value\" : labelKey;\n if (valueKey === labelKey) {\n ctx.warn(\n `select \"${component.key ?? \"?\"}\" has no valueProperty — option labels are used as values`\n );\n }\n }\n return items.map((item) => ({\n label: String(item[labelKey] ?? item[valueKey!] ?? \"\"),\n value: String(item[valueKey!] ?? item[labelKey] ?? \"\"),\n }));\n}\n\nfunction labelKeyFromTemplate(template?: string): string | undefined {\n if (!template) return undefined;\n const match = /item\\.([a-zA-Z0-9_.]+)/.exec(template);\n return match?.[1];\n}\n\nfunction staticOptions(\n values?: Array<{ label?: string; value?: string }>\n): Array<{ label: string; value: string }> {\n return (values ?? []).map((option) => ({\n label: String(option.label ?? option.value ?? \"\"),\n value: String(option.value ?? option.label ?? \"\"),\n }));\n}\n\nconst LARGE_OPTIONS_THRESHOLD = 100;\n\nfunction emitOptions(\n list: Array<{ label: string; value: string }>,\n component: FormioComponent,\n ctx: Converter\n): string | Array<{ label: string; value: string }> {\n if (list.length > LARGE_OPTIONS_THRESHOLD) {\n ctx.warn(\n `\"${component.key ?? \"?\"}\" embeds ${list.length} static options — consider optionsSource \"remote\" or a shared catalog (optionsSource \"catalog\" + optionsRef) to keep the spec small`\n );\n }\n\n const compactable =\n list.length > 0 &&\n list.every(\n (option) =>\n option.label === option.value &&\n option.value !== \"\" &&\n option.value === option.value.trim() &&\n !option.value.includes(\"\\n\")\n );\n\n return compactable ? list.map((option) => option.value).join(\"\\n\") : list;\n}\n\nfunction baseConfigs(\n component: FormioComponent,\n ctx: Converter\n): Record<string, unknown> & { uid: string; key: string } {\n const configs: Record<string, unknown> & { uid: string; key: string } = {\n uid: ctx.nextUid(),\n key: component.key ?? ctx.nextUid(),\n };\n if (component.label) configs.label = component.label;\n if (component.placeholder) configs.placeholder = component.placeholder;\n if (component.description) configs.description = component.description;\n if (component.defaultValue !== undefined && component.defaultValue !== \"\") {\n configs.defaultValue = component.defaultValue;\n }\n if (component.validate?.step != null && component.validate.step !== \"\") {\n configs.step = component.validate.step;\n }\n if (component.disabled) configs.disabled = true;\n if (component.prefix) configs.prefix = component.prefix;\n if (component.suffix) configs.suffix = component.suffix;\n if (typeof component.inputMask === \"string\" && component.inputMask) {\n configs.mask = component.inputMask;\n }\n return configs;\n}\n\nfunction withCommon(\n component: FormioComponent,\n ctx: Converter,\n brick: BrickSpec\n): BrickSpec {\n const validations = convertValidations(component, ctx);\n if (validations.length) brick.validations = validations;\n\n const conditionalRules = convertConditional(component, ctx);\n const rules = [...conditionalRules];\n\n if (component.hidden && conditionalRules.length === 0) {\n rules.push({\n name: \"always hidden\",\n type: \"jsonLogic\",\n logic: true,\n effects: [\n { property: { target: \"hidden\", type: \"boolean\" }, boolean: true },\n ],\n });\n }\n\n rules.push(...convertLogic(component, ctx));\n\n if (rules.length) brick.rules = rules;\n\n return brick;\n}\n\nfunction convertLogic(component: FormioComponent, ctx: Converter): Rule[] {\n const rules: Rule[] = [];\n\n for (const logic of component.logic ?? []) {\n const trigger = logic.trigger;\n if (trigger?.type !== \"javascript\" || !trigger.javascript) {\n ctx.warn(\n `logic \"${logic.name ?? \"?\"}\" on \"${component.key ?? \"?\"}\" skipped — only javascript triggers are converted`\n );\n continue;\n }\n\n const effects = [];\n for (const action of logic.actions ?? []) {\n if (action.type === \"property\" && action.property?.value) {\n effects.push({\n property: {\n target: action.property.value,\n type: \"boolean\" as const,\n },\n boolean: action.state === true,\n });\n } else {\n ctx.warn(\n `logic action \"${action.name ?? action.type ?? \"?\"}\" on \"${component.key ?? \"?\"}\" skipped — only property actions are converted`\n );\n }\n }\n if (!effects.length) continue;\n\n rules.push({\n name: logic.name ?? `formio logic (${component.key ?? \"?\"})`,\n type: \"javaScript\",\n code: [\n \"const data = dataMap;\",\n \"const row = dataMap;\",\n \"let result = false;\",\n trigger.javascript,\n \"return result === true;\",\n ].join(\"\\n\"),\n effects,\n });\n }\n\n return rules;\n}\n\nfunction convertValidations(\n component: FormioComponent,\n ctx: Converter\n): Validation[] {\n const source = component.validate ?? {};\n const validations: Validation[] = [];\n const message = source.customMessage;\n\n const push = (validation: Validation) => {\n if (message) validation.message = message;\n validations.push(validation);\n };\n\n const bound = (raw: unknown): number | undefined => {\n if (raw == null || raw === \"\" || raw === false) return undefined;\n const parsed = Number(raw);\n return Number.isFinite(parsed) ? parsed : undefined;\n };\n\n if (source.required) push({ validator: \"required\" });\n const minLength = bound(source.minLength);\n if (minLength !== undefined) push({ validator: \"minLength\", value: minLength });\n const maxLength = bound(source.maxLength);\n if (maxLength !== undefined) push({ validator: \"maxLength\", value: maxLength });\n const min = bound(source.min);\n if (min !== undefined) push({ validator: \"min\", value: min });\n const max = bound(source.max);\n if (max !== undefined) push({ validator: \"max\", value: max });\n if (source.pattern) push({ validator: \"pattern\", value: source.pattern });\n if (component.type === \"email\") push({ validator: \"email\" });\n if (component.type === \"url\") push({ validator: \"url\" });\n\n if (source.custom) {\n ctx.warn(\n `validate.custom on \"${component.key ?? \"?\"}\" converted automatically — review the generated custom validator`\n );\n validations.push({\n validator: \"custom\",\n customValidator: [\n \"const input = value;\",\n \"const data = dataMap;\",\n \"const row = dataMap;\",\n \"let valid = true;\",\n source.custom,\n \"return valid;\",\n ].join(\"\\n\"),\n });\n }\n\n return validations;\n}\n\nfunction convertConditional(\n component: FormioComponent,\n ctx: Converter\n): Rule[] {\n if (component.customConditional) {\n ctx.warn(\n `customConditional on \"${component.key ?? \"?\"}\" skipped — rewrite it as a FormKrafter rule`\n );\n }\n\n const conditional = component.conditional;\n if (!conditional || !conditional.when) return [];\n\n const show = conditional.show === true || conditional.show === \"true\";\n const comparison = {\n [show ? \"!=\" : \"==\"]: [{ var: conditional.when }, conditional.eq],\n };\n\n return [\n {\n name: `formio conditional (${conditional.when})`,\n type: \"jsonLogic\",\n logic: comparison as Rule[\"logic\"],\n effects: [\n { property: { target: \"hidden\", type: \"boolean\" }, boolean: true },\n ],\n },\n ];\n}\n",
24
24
  "import type { BrickSpec } from \"./brick-spec\";\nimport { iterateBricks } from \"./brick-spec\";\nimport { services } from \"../services\";\nimport type { SpecSourceService } from \"../services/spec_source_service\";\n\nexport interface ExpandSpecOptions {\n specSourceService?: SpecSourceService;\n maxDepth?: number;\n}\n\nconst isNestedForm = (brick: BrickSpec): boolean =>\n brick.id === \"nested-form\" && typeof brick.configs?.specRef === \"string\";\n\nexport const hasNestedForms = (spec?: BrickSpec): boolean => {\n if (!spec) return false;\n for (const { brick } of iterateBricks(spec)) {\n if (isNestedForm(brick) && brick.configs?.specRef) return true;\n }\n return false;\n};\n\nexport async function expandSpec(\n spec: BrickSpec,\n options: ExpandSpecOptions = {}\n): Promise<BrickSpec> {\n const source = options.specSourceService ?? services.specSourceService;\n const maxDepth = options.maxDepth ?? 5;\n\n const expandBrick = async (\n brick: BrickSpec,\n seenRefs: string[]\n ): Promise<BrickSpec> => {\n if (isNestedForm(brick) && brick.configs?.specRef) {\n const ref = String(brick.configs.specRef);\n\n if (seenRefs.includes(ref)) {\n throw new Error(\n `Circular nested form reference: ${[...seenRefs, ref].join(\" → \")}`\n );\n }\n if (seenRefs.length >= maxDepth) {\n throw new Error(\n `Nested forms exceed the maximum depth of ${maxDepth} (${ref})`\n );\n }\n\n const fetched = await source.fetchSpec(ref);\n const inlined = await expandBrick(structuredClone(fetched), [\n ...seenRefs,\n ref,\n ]);\n\n return {\n type: \"panel\",\n id: \"group\",\n name: brick.name,\n configs: {\n ...brick.configs,\n label: brick.configs.label ?? inlined.name,\n },\n styles: brick.styles,\n rules: brick.rules,\n children: inlined.children ?? [],\n };\n }\n\n if (!brick.children?.length) return brick;\n\n return {\n ...brick,\n children: await Promise.all(\n brick.children.map((child) => expandBrick(child, seenRefs))\n ),\n };\n };\n\n return expandBrick(structuredClone(spec), []);\n}\n"
25
25
  ],
26
- "mappings": "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",
27
- "debugId": "5B1C4474681AF83564756E2164756E21",
26
+ "mappings": "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",
27
+ "debugId": "E7FD7771936F9D4564756E2164756E21",
28
28
  "names": []
29
29
  }
@@ -1,16 +1,13 @@
1
1
  import { type Options } from "acorn";
2
+ export interface JsValidationResult {
3
+ valid: boolean;
4
+ error?: Error;
5
+ }
2
6
  export interface JsRunnerService {
3
7
  eval(js: string, scope?: Record<string, unknown>): unknown;
4
- validateJs(js: string, options?: Options): {
5
- valide: boolean;
6
- error?: Error;
7
- };
8
+ validateJs(js: string, options?: Options): JsValidationResult;
8
9
  }
9
10
  export declare class SandboxJsRunnerService implements JsRunnerService {
10
- validateJs(js: string, options?: Options): {
11
- valide: boolean;
12
- error?: Error;
13
- };
11
+ validateJs(js: string, options?: Options): JsValidationResult;
14
12
  eval(js: string, scope?: Record<string, unknown>): unknown;
15
13
  }
16
- export declare const JsRunnerServiceImplementation: typeof SandboxJsRunnerService;
@@ -1,9 +1,6 @@
1
1
  import { type Options } from "acorn";
2
- import type { JsRunnerService } from "./js_runner_service";
2
+ import type { JsRunnerService, JsValidationResult } from "./js_runner_service";
3
3
  export declare class UnsafeEvalJsRunnerService implements JsRunnerService {
4
- validateJs(js: string, options?: Options): {
5
- valide: boolean;
6
- error?: Error;
7
- };
4
+ validateJs(js: string, options?: Options): JsValidationResult;
8
5
  eval(js: string, scope?: Record<string, unknown>): unknown;
9
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamline-pulse/formkrafter-core",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "Framework-agnostic core for FormKrafter: form specs, RFC 6902 ops with undo/redo, Ajv validation, sandboxed rules engine and injectable services",
5
5
  "license": "MIT",
6
6
  "type": "module",