@baseplate-dev/project-builder-web 0.2.0 → 0.2.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.
Files changed (24) hide show
  1. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/{web-DeLjV85y.js → web-DNtY4wq3.js} +2 -2
  2. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/{web-DeLjV85y.js.map → web-DNtY4wq3.js.map} +1 -1
  3. package/dist/assets/__federation_shared_@baseplate-dev/{project-builder-lib-CEcnKpIc.js → project-builder-lib-zvGcQ6PN.js} +2 -2
  4. package/dist/assets/__federation_shared_@baseplate-dev/{project-builder-lib-CEcnKpIc.js.map → project-builder-lib-zvGcQ6PN.js.map} +1 -1
  5. package/dist/assets/__federation_shared_@baseplate-dev/{ui-components-BngA7Gbo.js → ui-components-DQh2UKHB.js} +2 -2
  6. package/dist/assets/__federation_shared_@baseplate-dev/{ui-components-BngA7Gbo.js.map → ui-components-DQh2UKHB.js.map} +1 -1
  7. package/dist/assets/{_virtual___federation_fn_import-DTGz4eK3.js → _virtual___federation_fn_import-BawTfoQI.js} +2 -2
  8. package/dist/assets/{_virtual___federation_fn_import-DTGz4eK3.js.map → _virtual___federation_fn_import-BawTfoQI.js.map} +1 -1
  9. package/dist/assets/index-BDJ79UQH.css +1 -0
  10. package/dist/assets/index-C6NlRicZ.js +78 -0
  11. package/dist/assets/index-C6NlRicZ.js.map +1 -0
  12. package/dist/assets/{index.esm-BCWxrcvn.js → index.esm-H0JGW0RR.js} +2 -2
  13. package/dist/assets/{index.esm-BCWxrcvn.js.map → index.esm-H0JGW0RR.js.map} +1 -1
  14. package/dist/assets/model-merger-D2RoujrB.js +2 -0
  15. package/dist/assets/model-merger-D2RoujrB.js.map +1 -0
  16. package/dist/assets/{not-empty-CxPFIhu9.js → not-empty-CznDVwM8.js} +2 -2
  17. package/dist/assets/{not-empty-CxPFIhu9.js.map → not-empty-CznDVwM8.js.map} +1 -1
  18. package/dist/index.html +5 -5
  19. package/package.json +6 -6
  20. package/dist/assets/index-BM00URXH.js +0 -78
  21. package/dist/assets/index-BM00URXH.js.map +0 -1
  22. package/dist/assets/index-BievMsrf.css +0 -1
  23. package/dist/assets/model-merger-xMPe_PFP.js +0 -2
  24. package/dist/assets/model-merger-xMPe_PFP.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"project-builder-lib-CEcnKpIc.js","sources":["../../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/array/groupBy.mjs","../../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/array/keyBy.mjs","../../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/array/uniq.mjs","../../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/function/flow.mjs","../../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.mjs","../../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/object/mergeWith.mjs","../../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/object/pickBy.mjs","../../../../utils/dist/json/stringify-pretty-compact.js","../../../../../node_modules/.pnpm/is-plain-obj@4.1.0/node_modules/is-plain-obj/index.js","../../../../../node_modules/.pnpm/sort-keys@5.1.0/node_modules/sort-keys/index.js","../../../../utils/dist/json/stringify-pretty-stable.js","../../../../utils/dist/objects/safe-merge.js","../../../../utils/dist/toposort/errors.js","../../../../../node_modules/.pnpm/tinyqueue@3.0.0/node_modules/tinyqueue/index.js","../../../../utils/dist/toposort/toposort.js","../../../../project-builder-lib/dist/compiler/admin-crud-input-spec.js","../../../../project-builder-lib/dist/utils/strip.js","../../../../project-builder-lib/dist/plugins/schema/store.js","../../../../project-builder-lib/dist/plugins/imports/loader.js","../../../../project-builder-lib/dist/plugins/imports/types.js","../../../../project-builder-lib/dist/plugins/manifest/manifest.js","../../../../project-builder-lib/dist/plugins/metadata/types.js","../../../../project-builder-lib/dist/schema/plugins/entity-types.js","../../../../project-builder-lib/dist/plugins/spec/config-spec.js","../../../../project-builder-lib/dist/plugins/migrations/run-migrations.js","../../../../project-builder-lib/dist/plugins/schema/zod-with-plugins.js","../../../../project-builder-lib/dist/plugins/spec/auth-config-spec.js","../../../../project-builder-lib/dist/plugins/spec/web-config-spec.js","../../../../project-builder-lib/dist/compiler/app-compiler-spec.js","../../../../project-builder-lib/dist/compiler/model-transformer-compiler-spec.js","../../../../project-builder-lib/dist/constants/colors.js","../../../../project-builder-lib/dist/constants/theme-colors.js","../../../../project-builder-lib/dist/utils/path.js","../../../../project-builder-lib/dist/definition/apps/app-utils.js","../../../../project-builder-lib/dist/references/resolve-zod-ref-payload-names.js","../../../../project-builder-lib/dist/references/parse-schema-with-references.js","../../../../project-builder-lib/dist/references/deserialize-schema.js","../../../../project-builder-lib/dist/references/fix-ref-deletions.js","../../../../project-builder-lib/dist/references/serialize-schema.js","../../../../project-builder-lib/dist/schema/auth/index.js","../../../../project-builder-lib/dist/schema/apps/types.js","../../../../project-builder-lib/dist/schema/apps/base.js","../../../../project-builder-lib/dist/types/field-types.js","../../../../project-builder-lib/dist/schema/features/theme.js","../../../../project-builder-lib/dist/schema/utils/validation.js","../../../../project-builder-lib/dist/schema/models/graphql.js","../../../../project-builder-lib/dist/schema/models/transformers/types.js","../../../../project-builder-lib/dist/schema/models/transformers/built-in-transformers.js","../../../../project-builder-lib/dist/schema/models/transformers/model-transformer-spec.js","../../../../project-builder-lib/dist/schema/models/transformers/transformers.js","../../../../project-builder-lib/dist/schema/models/enums.js","../../../../project-builder-lib/dist/schema/models/index.js","../../../../project-builder-lib/dist/schema/apps/admin/sections/types.js","../../../../project-builder-lib/dist/schema/apps/admin/sections/base.js","../../../../project-builder-lib/dist/schema/apps/admin/sections/crud-form/types.js","../../../../project-builder-lib/dist/schema/apps/admin/sections/crud-form/built-in-input.js","../../../../project-builder-lib/dist/schema/apps/admin/sections/crud-form/admin-input-spec.js","../../../../project-builder-lib/dist/schema/apps/admin/sections/crud-form/admin-crud-input.js","../../../../project-builder-lib/dist/schema/apps/admin/sections/crud.js","../../../../project-builder-lib/dist/schema/apps/admin/app.js","../../../../project-builder-lib/dist/schema/apps/backend/index.js","../../../../project-builder-lib/dist/schema/apps/web/index.js","../../../../project-builder-lib/dist/schema/plugins/definition.js","../../../../project-builder-lib/dist/schema/template-extractor/index.js","../../../../project-builder-lib/dist/schema/settings.js","../../../../project-builder-lib/dist/schema/project-definition.js","../../../../project-builder-lib/dist/definition/model/enum-utils.js","../../../../project-builder-lib/dist/definition/model/model-field-utils.js","../../../../project-builder-lib/dist/definition/model/model-transformer-utils.js","../../../../project-builder-lib/dist/definition/plugins/plugin-utils.js","../../../../project-builder-lib/dist/parser/parser.js","../../../../project-builder-lib/dist/definition/project-definition-container.js","../../../../project-builder-lib/dist/migrations/migration-005-primary-unique-refs.js","../../../../project-builder-lib/dist/migrations/migration-006-individual-service-controllers.js","../../../../project-builder-lib/dist/migrations/utils.js","../../../../project-builder-lib/dist/migrations/migration-007-model-graphql.js","../../../../project-builder-lib/dist/migrations/migration-008-anonymous-public-role.js","../../../../project-builder-lib/dist/migrations/transform-json-path.js","../../../../project-builder-lib/dist/migrations/migration-009-rename-refs.js","../../../../project-builder-lib/dist/utils/color-conversions.js","../../../../project-builder-lib/dist/migrations/migration-010-hex-to-oklch.js","../../../../project-builder-lib/dist/migrations/migration-011-plugin-id.js","../../../../project-builder-lib/dist/migrations/migration-012-migrate-auth-config.js","../../../../project-builder-lib/dist/migrations/migration-013-move-general-settings.js","../../../../project-builder-lib/dist/migrations/migration-014-migrate-plugin-ids.js","../../../../project-builder-lib/dist/migrations/index.js","../../../../project-builder-lib/dist/definition/project-definition-container.test-utils.js","../../../../project-builder-lib/dist/feature-flags/flags.js","../../../../project-builder-lib/dist/utils/color-names.js","../../../../project-builder-lib/dist/utils/theme.js"],"sourcesContent":["function groupBy(arr, getKeyFromItem) {\n const result = {};\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n const key = getKeyFromItem(item);\n if (!Object.hasOwn(result, key)) {\n result[key] = [];\n }\n result[key].push(item);\n }\n return result;\n}\n\nexport { groupBy };\n","function keyBy(arr, getKeyFromItem) {\n const result = {};\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n const key = getKeyFromItem(item);\n result[key] = item;\n }\n return result;\n}\n\nexport { keyBy };\n","function uniq(arr) {\n return Array.from(new Set(arr));\n}\n\nexport { uniq };\n","function flow(...funcs) {\n return function (...args) {\n let result = funcs.length ? funcs[0].apply(this, args) : args[0];\n for (let i = 1; i < funcs.length; i++) {\n result = funcs[i].call(this, result);\n }\n return result;\n };\n}\n\nexport { flow };\n","function isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\n\nexport { isObjectLike };\n","import { isObjectLike } from '../compat/predicate/isObjectLike.mjs';\n\nfunction mergeWith(target, source, merge) {\n const sourceKeys = Object.keys(source);\n for (let i = 0; i < sourceKeys.length; i++) {\n const key = sourceKeys[i];\n const sourceValue = source[key];\n const targetValue = target[key];\n const merged = merge(targetValue, sourceValue, key, target, source);\n if (merged != null) {\n target[key] = merged;\n }\n else if (Array.isArray(sourceValue)) {\n target[key] = mergeWith(targetValue ?? [], sourceValue, merge);\n }\n else if (isObjectLike(targetValue) && isObjectLike(sourceValue)) {\n target[key] = mergeWith(targetValue ?? {}, sourceValue, merge);\n }\n else if (targetValue === undefined || sourceValue !== undefined) {\n target[key] = sourceValue;\n }\n }\n return target;\n}\n\nexport { mergeWith };\n","function pickBy(obj, shouldPick) {\n const result = {};\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const value = obj[key];\n if (shouldPick(value, key)) {\n result[key] = value;\n }\n }\n return result;\n}\n\nexport { pickBy };\n","// adapted from https://github.com/AitoDotAI/json-stringify-pretty-compact\n// allows { } to be presented as {} to better mirror prettier formatting\nfunction isObject(obj) {\n return typeof obj === 'object' && obj !== null;\n}\nfunction forEach(obj, cb) {\n if (Array.isArray(obj)) {\n // eslint-disable-next-line unicorn/no-array-for-each\n obj.forEach(cb);\n }\n else if (isObject(obj)) {\n for (const key of Object.keys(obj)) {\n const val = obj[key];\n cb(val, key);\n }\n }\n}\nfunction getTreeDepth(obj) {\n let depth = 0;\n if (Array.isArray(obj) || isObject(obj)) {\n forEach(obj, (val) => {\n if (Array.isArray(val) || isObject(val)) {\n const tmpDepth = getTreeDepth(val);\n if (tmpDepth > depth) {\n depth = tmpDepth;\n }\n }\n });\n return depth + 1;\n }\n return depth;\n}\nfunction get(options, name, defaultValue) {\n return (name in options ? options[name] : defaultValue);\n}\n// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\n// This regex has been adjusted to allow replacement of { } and [ ] with {} and []\n// to better mirror prettier formatting.\nconst stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]|\\{(?!})|(?<!\\{)}|\\[(?!])|(?<!\\[)]/g;\nfunction prettify(str, options = {}) {\n const tokens = {\n '{': '{',\n '}': '}',\n '[': '[',\n ']': ']',\n ',': ', ',\n ':': ': ',\n };\n if (!!options.addMargin || !!options.addObjectMargin) {\n tokens['{'] = '{ ';\n tokens['}'] = ' }';\n }\n if (!!options.addMargin || !!options.addArrayMargin) {\n tokens['['] = '[ ';\n tokens[']'] = ' ]';\n }\n return str.replaceAll(stringOrChar, (match, string) => string ? match : tokens[match]);\n}\nexport function stringifyPrettyCompact(rootObj, options = {}) {\n const indent = JSON.stringify([1], null, get(options, 'indent', 2)).slice(2, -3);\n const addMargin = get(options, 'margins', false);\n const addArrayMargin = get(options, 'arrayMargins', false);\n const addObjectMargin = get(options, 'objectMargins', true);\n const maxLength = indent === '' ? Infinity : get(options, 'maxLength', 80);\n const maxNesting = get(options, 'maxNesting', Infinity);\n return (function stringifyRecursive(obj, currentIndent, reserved) {\n if (obj &&\n typeof obj === 'object' &&\n typeof obj.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n obj = obj.toJSON();\n }\n const string = JSON.stringify(obj);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (string === undefined) {\n return string;\n }\n const length = maxLength - currentIndent.length - reserved;\n const treeDepth = getTreeDepth(obj);\n if (treeDepth <= maxNesting && string.length <= length) {\n const prettified = prettify(string, {\n addMargin,\n addArrayMargin,\n addObjectMargin,\n });\n if (prettified.length <= length) {\n return prettified;\n }\n }\n if (isObject(obj)) {\n const nextIndent = currentIndent + indent;\n const items = [];\n let delimiters;\n const atEndOfArray = (array, index) => index === array.length - 1 ? 0 : 1;\n if (Array.isArray(obj)) {\n for (let index = 0; index < obj.length; index += 1) {\n items.push(stringifyRecursive(obj[index], nextIndent, atEndOfArray(obj, index)) || 'null');\n }\n delimiters = '[]';\n }\n else {\n // eslint-disable-next-line unicorn/no-array-for-each\n Object.keys(obj).forEach((key, index, array) => {\n const keyPart = `${JSON.stringify(key)}: `;\n const value = stringifyRecursive(obj[key], nextIndent, keyPart.length + atEndOfArray(array, index));\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n });\n delimiters = '{}';\n }\n if (items.length > 0) {\n return [\n delimiters[0],\n indent + items.join(`,\\n${nextIndent}`),\n delimiters[1],\n ].join(`\\n${currentIndent}`);\n }\n }\n return string;\n })(rootObj, '', 0);\n}\n//# sourceMappingURL=stringify-pretty-compact.js.map","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","import isPlainObject from 'is-plain-obj';\n\nexport default function sortKeys(object, options = {}) {\n\tif (!isPlainObject(object) && !Array.isArray(object)) {\n\t\tthrow new TypeError('Expected a plain object or array');\n\t}\n\n\tconst {deep, compare} = options;\n\tconst cache = new WeakMap();\n\n\tconst deepSortArray = array => {\n\t\tconst resultFromCache = cache.get(array);\n\t\tif (resultFromCache !== undefined) {\n\t\t\treturn resultFromCache;\n\t\t}\n\n\t\tconst result = [];\n\t\tcache.set(array, result);\n\n\t\tresult.push(...array.map(item => {\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\treturn deepSortArray(item);\n\t\t\t}\n\n\t\t\tif (isPlainObject(item)) {\n\t\t\t\treturn _sortKeys(item);\n\t\t\t}\n\n\t\t\treturn item;\n\t\t}));\n\n\t\treturn result;\n\t};\n\n\tconst _sortKeys = object => {\n\t\tconst resultFromCache = cache.get(object);\n\t\tif (resultFromCache !== undefined) {\n\t\t\treturn resultFromCache;\n\t\t}\n\n\t\tconst result = {};\n\t\tconst keys = Object.keys(object).sort(compare);\n\n\t\tcache.set(object, result);\n\n\t\tfor (const key of keys) {\n\t\t\tconst value = object[key];\n\t\t\tlet newValue;\n\n\t\t\tif (deep && Array.isArray(value)) {\n\t\t\t\tnewValue = deepSortArray(value);\n\t\t\t} else {\n\t\t\t\tnewValue = deep && isPlainObject(value) ? _sortKeys(value) : value;\n\t\t\t}\n\n\t\t\tObject.defineProperty(result, key, {\n\t\t\t\t...Object.getOwnPropertyDescriptor(object, key),\n\t\t\t\tvalue: newValue,\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tif (Array.isArray(object)) {\n\t\treturn deep ? deepSortArray(object) : [...object];\n\t}\n\n\treturn _sortKeys(object);\n}\n","import sortKeys from 'sort-keys';\nimport { stringifyPrettyCompact } from './stringify-pretty-compact.js';\n/**\n * Stringifies a value with stable pretty printing.\n *\n * That means the keys are sorted and the value is pretty printed.\n *\n * @param value - The value to stringify.\n * @returns The stringified value.\n */\nexport function stringifyPrettyStable(value) {\n const sortedValue = sortKeys(value, {\n deep: true,\n });\n return `${stringifyPrettyCompact(sortedValue)}\\n`;\n}\n//# sourceMappingURL=stringify-pretty-stable.js.map","import { isEqual, mergeWith } from 'es-toolkit';\n/**\n * Merges two objects, throwing an error if any keys overlap.\n *\n * @param itemOne - The first object to merge.\n * @param itemTwo - The second object to merge.\n * @param options - Options to control merge behavior\n * @returns The merged object.\n */\nexport function safeMerge(itemOne, itemTwo, options = {}) {\n return mergeWith(itemOne, itemTwo, (targetValue, sourceValue, key) => {\n if (key in itemOne && key in itemTwo) {\n if (options.allowEqualValues && isEqual(targetValue, sourceValue)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- we're just using the sourceValue\n return sourceValue;\n }\n throw new Error(`Cannot merge key ${key} because it already exists.`);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- we're just using the sourceValue\n return sourceValue;\n });\n}\n/**\n * Merges an array of objects, throwing an error if any keys overlap.\n *\n * @param items - The array of objects to merge.\n * @param options - Options to control merge behavior\n * @returns The merged object.\n */\nexport function safeMergeAllWithOptions(items, options = {}) {\n const targetValue = {};\n for (const item of items.flat()) {\n safeMerge(targetValue, item, options);\n }\n return targetValue;\n}\n/**\n * Merges an array of objects, throwing an error if any keys overlap.\n *\n * @param items - The array of objects to merge.\n * @returns The merged object.\n */\nexport function safeMergeAll(...items) {\n return safeMergeAllWithOptions(items);\n}\n//# sourceMappingURL=safe-merge.js.map","export class ToposortCyclicalDependencyError extends Error {\n cyclePath;\n constructor(nodes) {\n super(`Cyclical dependency detected: ${nodes.map((n) => JSON.stringify(n)).join(' -> ')}`);\n this.name = 'ToposortCyclicalDependencyError';\n this.cyclePath = nodes; // Store the path for potential inspection\n }\n}\nexport class ToposortUnknownNodeError extends Error {\n unknownNode;\n constructor(node) {\n super(`Unknown node referenced in edges: ${JSON.stringify(node)}`);\n this.name = 'ToposortUnknownNodeError';\n this.unknownNode = node; // Store the node for potential inspection\n }\n}\n//# sourceMappingURL=errors.js.map","\nexport default class TinyQueue {\n constructor(data = [], compare = (a, b) => (a < b ? -1 : a > b ? 1 : 0)) {\n this.data = data;\n this.length = this.data.length;\n this.compare = compare;\n\n if (this.length > 0) {\n for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n }\n\n push(item) {\n this.data.push(item);\n this._up(this.length++);\n }\n\n pop() {\n if (this.length === 0) return undefined;\n\n const top = this.data[0];\n const bottom = this.data.pop();\n\n if (--this.length > 0) {\n this.data[0] = bottom;\n this._down(0);\n }\n\n return top;\n }\n\n peek() {\n return this.data[0];\n }\n\n _up(pos) {\n const {data, compare} = this;\n const item = data[pos];\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n }\n\n _down(pos) {\n const {data, compare} = this;\n const halfLength = this.length >> 1;\n const item = data[pos];\n\n while (pos < halfLength) {\n let bestChild = (pos << 1) + 1; // initially it is the left child\n const right = bestChild + 1;\n\n if (right < this.length && compare(data[right], data[bestChild]) < 0) {\n bestChild = right;\n }\n if (compare(data[bestChild], item) >= 0) break;\n\n data[pos] = data[bestChild];\n pos = bestChild;\n }\n\n data[pos] = item;\n }\n}\n","import TinyQueue from 'tinyqueue';\nimport { ToposortCyclicalDependencyError, ToposortUnknownNodeError, } from './errors.js';\n/**\n * Creates a map of outgoing edges from node indices to their target indices\n */\nfunction makeOutgoingEdges(nodes, edgeArr) {\n const outgoingEdgesMap = new Map();\n for (const edge of edgeArr) {\n const [source, target] = edge;\n const sourceIndex = nodes.get(source);\n const targetIndex = nodes.get(target);\n // Check both source and target exist in the provided nodes set\n if (sourceIndex === undefined)\n throw new ToposortUnknownNodeError(source);\n if (targetIndex === undefined)\n throw new ToposortUnknownNodeError(target);\n const sourceEdges = outgoingEdgesMap.get(sourceIndex);\n if (sourceEdges) {\n sourceEdges.add(targetIndex);\n }\n else {\n outgoingEdgesMap.set(sourceIndex, new Set([targetIndex]));\n }\n }\n return outgoingEdgesMap;\n}\n/**\n * Creates a map of node indices to their in-degree\n */\nfunction makeNodeInDegrees(outgoingEdgesMap, nodeLength) {\n const nodeInDegrees = Array.from({ length: nodeLength }, () => 0);\n for (const [, targets] of outgoingEdgesMap.entries()) {\n for (const target of targets) {\n nodeInDegrees[target]++;\n }\n }\n return nodeInDegrees;\n}\n/**\n * Detects cycles in a graph by checking if all nodes are included in the topological sort\n */\nfunction detectCycle(nodes, visited, edges) {\n // If all nodes were visited, no cycle exists\n if (visited.size === nodes.length) {\n return [];\n }\n // Run DFS from any unvisited node to find a cycle\n const path = [];\n const visitSet = new Set();\n function dfs(node) {\n if (visitSet.has(node)) {\n path.push(node);\n return true;\n }\n if (visited.has(node)) {\n return false;\n }\n visitSet.add(node);\n path.push(node);\n const neighbors = edges.get(node) ?? new Set();\n for (const neighbor of neighbors) {\n if (dfs(neighbor)) {\n return true;\n }\n }\n path.pop();\n visitSet.delete(node);\n return false;\n }\n // For cycle detection, we need to find nodes that weren't visited\n const unvistedNodeIdx = nodes.findIndex((node, idx) => !visited.has(idx));\n if (unvistedNodeIdx === -1) {\n return [];\n }\n // Start DFS from any unvisited node\n dfs(unvistedNodeIdx);\n // Convert path indices to actual nodes\n return path.map((idx) => nodes[idx]);\n}\n/**\n * Default comparison function for stable topological sort\n */\nfunction defaultCompareFunc(a, b) {\n if (typeof a === 'string' && typeof b === 'string') {\n return a.localeCompare(b);\n }\n if (a === b)\n return 0;\n return a < b ? -1 : 1;\n}\n/**\n * Performs a topological sort on a directed acyclic graph.\n *\n * @param nodes - The nodes to sort\n * @param edges - The edges of the graph\n * @param options - Optional options for the topological sort\n * @returns The sorted nodes\n */\nexport function toposort(nodes, edges, options = {}) {\n const { compareFunc } = options;\n // Map each node to its index\n const nodeIndexMap = new Map(nodes.map((node, index) => [node, index]));\n // Create a map of outgoing edges from each node\n const outgoingEdgesMap = makeOutgoingEdges(nodeIndexMap, edges);\n const nodeInDegrees = makeNodeInDegrees(outgoingEdgesMap, nodes.length);\n // Create a queue of nodes with no incoming edges (in-degree == 0)\n const zeroInDegreeQueue = compareFunc\n ? new TinyQueue([], (a, b) => compareFunc(nodes[a], nodes[b]))\n : [];\n for (const [i, nodeInDegree] of nodeInDegrees.entries()) {\n if (nodeInDegree === 0) {\n zeroInDegreeQueue.push(i);\n }\n }\n const result = [];\n const visited = new Set();\n // Process nodes in BFS order\n while (zeroInDegreeQueue.length > 0) {\n const current = zeroInDegreeQueue.pop();\n if (current === undefined)\n break;\n visited.add(current);\n result.push(nodes[current]);\n // Process all outgoing edges from the current node\n const outgoingEdges = outgoingEdgesMap.get(current);\n if (outgoingEdges) {\n for (const target of outgoingEdges) {\n nodeInDegrees[target]--;\n // If the target node now has no incoming edges, add it to the queue\n if (nodeInDegrees[target] === 0) {\n zeroInDegreeQueue.push(target);\n }\n }\n }\n }\n // Check for cycles\n if (result.length !== nodes.length) {\n const cyclePath = detectCycle(nodes, visited, outgoingEdgesMap);\n throw new ToposortCyclicalDependencyError(cyclePath);\n }\n return result;\n}\n/**\n * Performs a topological sort on a directed acyclic graph, always selecting\n * the smallest available node according to the provided comparison function,\n * yielding the lexicographically minimal ordering.\n *\n * @param nodes - The nodes to sort\n * @param edges - The edges of the graph\n * @param compareFunc - Optional custom comparison function to break ties between nodes with the same topological level (default is string comparison)\n * @returns The sorted nodes\n */\nexport function toposortOrdered(nodes, edges, compareFunc = defaultCompareFunc) {\n return toposort(nodes, edges, { compareFunc });\n}\n//# sourceMappingURL=toposort.js.map","import { createPluginSpec } from '#src/plugins/spec/types.js';\nexport function createAdminCrudInputCompilerImplementation() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const inputs = new Map();\n return {\n registerCompiler(input) {\n if (inputs.has(input.name)) {\n throw new Error(`Admin CRUD input with name ${input.name} is already registered`);\n }\n inputs.set(input.name, input);\n },\n getCompiler(name, builtInInputs = []) {\n const builtInInput = builtInInputs.find((b) => b.name === name);\n if (builtInInput) {\n return builtInInput;\n }\n const input = inputs.get(name);\n if (!input) {\n throw new Error(`Unable to find input with name ${name}`);\n }\n return input;\n },\n };\n}\n/**\n * Spec for adding config component for plugin\n */\nexport const adminCrudInputCompilerSpec = createPluginSpec('core/admin-crud-input-compiler', { defaultInitializer: createAdminCrudInputCompilerImplementation });\n//# sourceMappingURL=admin-crud-input-spec.js.map","import { pickBy } from 'es-toolkit';\n/**\n * Strip object of any values that are empty arrays, empty objects, null, or undefined\n */\nexport function stripEmptyGeneratorChildren(children) {\n return pickBy(children, (value) => value !== undefined && !(Array.isArray(value) && value.length === 0));\n}\n/**\n * Strip object of any values that are undefined\n */\nexport function stripUndefinedValues(obj) {\n return pickBy(obj, (value) => value !== undefined);\n}\n/**\n * Returns undefined if the value is an empty object (as defined by all values are undefined)/array/null, otherwise return value.\n */\nexport function undefinedIfEmpty(value) {\n if (value === null)\n return undefined;\n if (Array.isArray(value) && value.length === 0) {\n return undefined;\n }\n if (typeof value === 'object' &&\n Object.keys(value).every((key) => value[key] === undefined)) {\n return undefined;\n }\n return value;\n}\n/**\n * Returns undefined if the value is falsy, otherwise return value.\n */\nexport function undefinedIfFalsy(value) {\n if (!value)\n return undefined;\n return value;\n}\n//# sourceMappingURL=strip.js.map","export class PluginImplementationStore {\n constructor(implementations) {\n Object.defineProperty(this, \"implementations\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: implementations\n });\n }\n getPluginSpec(spec) {\n const implementation = this.implementations[spec.name];\n if (!implementation) {\n throw new Error(`Unable to find implementation for spec ${spec.name}`);\n }\n return implementation;\n }\n getPluginSpecOptional(spec) {\n return this.implementations[spec.name];\n }\n}\n//# sourceMappingURL=store.js.map","import { toposortOrdered } from '@baseplate-dev/utils';\nimport { keyBy, mapValues } from 'es-toolkit';\nimport { stripUndefinedValues } from '#src/utils/strip.js';\nimport { PluginImplementationStore } from '../schema/store.js';\nexport function extractPlatformModulesFromPlugins(plugins) {\n return plugins.flatMap((plugin) => plugin.pluginModules.map((m) => ({\n ...m,\n id: `${plugin.id}/${m.key}`,\n name: `${plugin.name}/${m.key}`,\n pluginId: plugin.id,\n pluginName: plugin.name,\n })));\n}\nexport function getOrderedPluginModuleInitializationSteps(pluginModules, initialSpecImplementations) {\n const pluginModulesById = keyBy(pluginModules, (p) => p.id);\n // create export map of plugin ID to export spec name\n const pluginModuleIdByExport = mapValues(initialSpecImplementations, () => 'built-in');\n for (const { name, module, id } of pluginModules) {\n for (const m of Object.values(module.exports ?? {})) {\n const exportName = m.name;\n if (exportName in pluginModuleIdByExport) {\n const existingPlugin = pluginModulesById[pluginModuleIdByExport[exportName]];\n throw new Error(`Duplicate export from plugins found ${exportName} (${name} and ${existingPlugin.name})`);\n }\n pluginModuleIdByExport[exportName] = id;\n }\n }\n // create list of plugin to plugin dependencies\n const edges = pluginModules.flatMap(({ module, name, id }) => Object.values(module.dependencies ?? {})\n .map((m) => {\n const resolvedDep = pluginModuleIdByExport[m.name];\n if (!resolvedDep) {\n if (m.isOptional) {\n return undefined;\n }\n throw new Error(`Cannot resolve plugin dependency for ${name} (${m.name})`);\n }\n if (resolvedDep === 'built-in') {\n return undefined;\n }\n return [resolvedDep, id];\n })\n .filter((x) => x !== undefined));\n const nodes = pluginModules.map((p) => p.id);\n return toposortOrdered(nodes, edges);\n}\nexport function initializeOrderedPluginModules(orderedPluginModules, initialSpecImplementations) {\n const specImplementations = { ...initialSpecImplementations };\n for (const { name, module, pluginId } of orderedPluginModules) {\n const dependencies = module.dependencies\n ? stripUndefinedValues(mapValues(module.dependencies, (dep) => {\n const implementation = specImplementations[dep.name];\n if (!implementation && !dep.isOptional) {\n throw new Error(`Plugin ${name} missing dependency ${dep.name}`);\n }\n return implementation;\n }))\n : {};\n const context = { pluginId };\n const exports = module.initialize(dependencies, context);\n Object.entries(module.exports ?? {}).map(([key, spec]) => {\n const exportedImplementation = exports[key];\n if (!exportedImplementation) {\n throw new Error(`Plugin ${name} did not return required export ${key}`);\n }\n specImplementations[spec.name] = exportedImplementation;\n });\n }\n return specImplementations;\n}\n/**\n * Initialize the plugins based on their interdependencies and creates a store of the plugin implementations\n */\nexport function initializePlugins(plugins, initialSpecImplementations) {\n const pluginModules = extractPlatformModulesFromPlugins(plugins);\n const pluginModulesById = keyBy(pluginModules, (p) => p.id);\n const orderedModuleIds = getOrderedPluginModuleInitializationSteps(pluginModules, initialSpecImplementations);\n const specImplementations = initializeOrderedPluginModules(orderedModuleIds.map((p) => pluginModulesById[p]), initialSpecImplementations);\n return new PluginImplementationStore(specImplementations);\n}\n//# sourceMappingURL=loader.js.map","export function createPlatformPluginExport(config) {\n return config;\n}\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nexport const pluginManifestJsonSchema = z.object({\n plugins: z.array(z.string()),\n webBuild: z.string(),\n});\n//# sourceMappingURL=manifest.js.map","import { z } from 'zod';\n// matches semver\nconst versionSchema = z.string().regex(/^(\\d+\\.\\d+\\.\\d+)$/);\nexport const pluginSpecSupportSchema = z.object({\n spec: z.string().min(1),\n version: z.string().min(1),\n});\nexport const pluginSpecDependencySchema = z.object({\n spec: z.string(),\n version: z.string(),\n});\n/**\n * Schema for the plugin's metadata\n */\nexport const pluginMetadataSchema = z.object({\n /**\n * The name of the plugin - must be lowercase and contain only letters, numbers, and hyphens\n */\n name: z\n .string()\n .min(1)\n .regex(/^[a-z0-9-]+$/),\n /**\n * A list of directories with entrypoints in them. Defaults to ['.']\n */\n moduleDirectories: z.array(z.string()).optional(),\n /**\n * The display name of the plugin\n */\n displayName: z.string().min(1),\n /**\n * The icon to display for the plugin as a pointer to the icon in the plugin's static folder\n */\n icon: z.string().optional(),\n /**\n * A description of the plugin\n */\n description: z.string(),\n /**\n * The version of the plugin using semver\n */\n version: versionSchema,\n /**\n * Configuration for the specs that the plugin exports/depends on\n */\n specs: z\n .object({\n /**\n * The specs that the plugin exports\n */\n exports: z.array(pluginSpecSupportSchema).optional(),\n /**\n * The specs that the plugin depends on\n */\n dependencies: z.array(pluginSpecDependencySchema).optional(),\n })\n .optional(),\n});\n//# sourceMappingURL=types.js.map","import { createEntityType } from '#src/references/types.js';\nexport const pluginEntityType = createEntityType('plugin');\n//# sourceMappingURL=entity-types.js.map","import { createPluginSpec } from './types.js';\nfunction sortAndValidateMigrations(migrations) {\n // make sure migrations are sorted by version and they are all unique\n const sortedMigrations = [...migrations].sort((a, b) => a.version - b.version);\n if (sortedMigrations.some((m) => m.version <= 0)) {\n throw new Error(`Migration version must be a positive integer`);\n }\n for (let i = 0; i < sortedMigrations.length - 1; i++) {\n if (sortedMigrations[i].version === sortedMigrations[i + 1].version) {\n throw new Error(`Migration versions must be unique`);\n }\n }\n return sortedMigrations;\n}\nexport function createPluginConfigImplementation() {\n const schemas = new Map();\n const migrationsMap = new Map();\n return {\n registerSchema(pluginKey, schema) {\n if (schemas.has(pluginKey)) {\n throw new Error(`Schema for plugin ${pluginKey} is already registered`);\n }\n schemas.set(pluginKey, schema);\n },\n registerMigrations(pluginKey, migrations) {\n if (migrationsMap.has(pluginKey)) {\n throw new Error(`Migrations for plugin ${pluginKey} are already registered`);\n }\n const sortedMigrations = sortAndValidateMigrations(migrations);\n migrationsMap.set(pluginKey, sortedMigrations);\n },\n getSchema(pluginKey) {\n return schemas.get(pluginKey);\n },\n getMigrations(pluginKey) {\n return migrationsMap.get(pluginKey);\n },\n getLastMigrationVersion(pluginKey) {\n const migrations = migrationsMap.get(pluginKey);\n return migrations?.[migrations.length - 1]?.version;\n },\n };\n}\n/**\n * Spec for adding config for the plugin in the core plugin e.g.\n * {\n * \"plugins\": [{\n * \"id\": \"...\",\n * \"config\": {\n * ...PluginConfig schema\n * }\n * }]\n * }\n */\nexport const pluginConfigSpec = createPluginSpec('core/plugin-config', {\n defaultInitializer: createPluginConfigImplementation,\n});\n//# sourceMappingURL=config-spec.js.map","import { produce, setAutoFreeze } from 'immer';\nimport { pluginEntityType } from '#src/schema/plugins/entity-types.js';\nimport { pluginConfigSpec } from '../spec/config-spec.js';\nexport function runPluginMigrations(projectDefinition, pluginImplementationStore) {\n const pluginConfigService = pluginImplementationStore.getPluginSpec(pluginConfigSpec);\n setAutoFreeze(false);\n return produce(projectDefinition, (draft) => {\n for (const pluginDefinition of draft.plugins ?? []) {\n const pluginMigrations = pluginConfigService.getMigrations(pluginEntityType.keyFromId(pluginDefinition.id));\n const currentSchemaVersion = pluginDefinition.configSchemaVersion ?? -1;\n if (!pluginMigrations)\n continue;\n const lastPluginMigration = pluginMigrations.at(-1);\n if (!lastPluginMigration)\n continue;\n for (const migration of pluginMigrations) {\n if (migration.version > currentSchemaVersion) {\n try {\n pluginDefinition.config = migration.migrate(pluginDefinition.config);\n }\n catch (error) {\n throw new Error(`Error migrating plugin ${pluginDefinition.id} to version ${migration.version}: ${String(error)}`);\n }\n }\n }\n pluginDefinition.configSchemaVersion = lastPluginMigration.version;\n }\n });\n}\n//# sourceMappingURL=run-migrations.js.map","import { ZodType } from 'zod';\nimport { zodPluginSymbol } from './common.js';\nexport class ZodWithPlugins extends ZodType {\n _parse(input) {\n const context = input.parent.common;\n // run builder\n const zodPluginContext = context[zodPluginSymbol];\n if (!zodPluginContext) {\n throw new Error(`Spec must be run within a Zod plugin context`);\n }\n const innerType = this._def.getter(zodPluginContext.pluginStore, input.data);\n return innerType._parse(input);\n }\n}\nObject.defineProperty(ZodWithPlugins, \"create\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (getter) => new ZodWithPlugins({\n getter,\n })\n});\nexport function zWithPlugins(getter) {\n return ZodWithPlugins.create(getter);\n}\n//# sourceMappingURL=zod-with-plugins.js.map","import { createPluginSpec } from './types.js';\n/**\n * Spec for adding config component for plugin\n */\nexport const authConfigSpec = createPluginSpec('core/auth-config', {});\n//# sourceMappingURL=auth-config-spec.js.map","import { createPluginSpec } from './types.js';\nexport function createWebConfigImplementation() {\n const components = new Map();\n return {\n registerWebConfigComponent(pluginId, ConfigComponent) {\n if (components.has(pluginId)) {\n throw new Error(`Web config component for plugin ${pluginId} is already registered`);\n }\n components.set(pluginId, ConfigComponent);\n },\n getWebConfigComponent(pluginId) {\n return components.get(pluginId);\n },\n };\n}\n/**\n * Spec for adding config component for plugin\n */\nexport const webConfigSpec = createPluginSpec('core/web-config', {\n platforms: 'web',\n defaultInitializer: createWebConfigImplementation,\n});\n//# sourceMappingURL=web-config-spec.js.map","import { safeMerge } from '@baseplate-dev/utils';\nimport { createPluginSpec } from '#src/plugins/index.js';\nexport function createAppCompiler() {\n const children = {};\n let rootChildren = {};\n return {\n addChildrenToFeature(featureId, newChildren) {\n children[featureId] = safeMerge(children[featureId] ?? {}, newChildren);\n },\n getChildrenForFeature(featureId) {\n return children[featureId] ?? {};\n },\n addRootChildren(newChildren) {\n rootChildren = safeMerge(rootChildren, newChildren);\n },\n getRootChildren() {\n return rootChildren;\n },\n };\n}\nexport function createAppCompilerPlugin() {\n const compilers = new Map();\n return {\n registerAppCompiler(compiler) {\n const appCompilers = compilers.get(compiler.appType) ?? [];\n if (!compilers.has(compiler.appType)) {\n compilers.set(compiler.appType, appCompilers);\n }\n appCompilers.push(compiler);\n },\n getAppCompilers(appType) {\n return compilers.get(appType) ?? [];\n },\n };\n}\n/**\n * Spec for modifying the app compiler\n */\nexport const appCompilerSpec = createPluginSpec('AppCompiler', {\n defaultInitializer: createAppCompilerPlugin,\n});\n//# sourceMappingURL=app-compiler-spec.js.map","import { createPluginSpec } from '#src/plugins/spec/types.js';\nexport function createModelTransformerCompilerImplementation() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const transformers = new Map();\n return {\n registerTransformerCompiler(transformer) {\n if (transformers.has(transformer.name)) {\n throw new Error(`Model transformer with name ${transformer.name} is already registered`);\n }\n transformers.set(transformer.name, transformer);\n },\n getModelTransformerCompiler(name, builtInTransformers = []) {\n const builtInTransformer = builtInTransformers.find((b) => b.name === name);\n if (builtInTransformer) {\n return builtInTransformer;\n }\n const transformer = transformers.get(name);\n if (!transformer) {\n throw new Error(`Unable to find transformer with name ${name}`);\n }\n return transformer;\n },\n };\n}\n/**\n * Spec for adding config component for plugin\n */\nexport const modelTransformerCompilerSpec = createPluginSpec('core/model-transformer-compiler', { defaultInitializer: createModelTransformerCompilerImplementation });\n//# sourceMappingURL=model-transformer-compiler-spec.js.map","// obtained from Tailwind (https://github.com/tailwindlabs/tailwindcss/blob/master/src/public/colors.js)\nexport const PALETTE_SHADES = [\n '50',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n '950',\n];\nexport const FIXED_COLOR_MAPPINGS = {\n white: 'oklch(1 0 0)',\n black: 'oklch(0 0 0)',\n};\nexport const COLOR_PALETTES = {\n red: {\n '50': 'oklch(0.971 0.013 17.38)',\n '100': 'oklch(0.936 0.032 17.717)',\n '200': 'oklch(0.885 0.062 18.334)',\n '300': 'oklch(0.808 0.114 19.571)',\n '400': 'oklch(0.704 0.191 22.216)',\n '500': 'oklch(0.637 0.237 25.331)',\n '600': 'oklch(0.577 0.245 27.325)',\n '700': 'oklch(0.505 0.213 27.518)',\n '800': 'oklch(0.444 0.177 26.899)',\n '900': 'oklch(0.396 0.141 25.723)',\n '950': 'oklch(0.258 0.092 26.042)',\n },\n orange: {\n '50': 'oklch(0.98 0.016 73.684)',\n '100': 'oklch(0.954 0.038 75.164)',\n '200': 'oklch(0.901 0.076 70.697)',\n '300': 'oklch(0.837 0.128 66.29)',\n '400': 'oklch(0.75 0.183 55.934)',\n '500': 'oklch(0.705 0.213 47.604)',\n '600': 'oklch(0.646 0.222 41.116)',\n '700': 'oklch(0.553 0.195 38.402)',\n '800': 'oklch(0.47 0.157 37.304)',\n '900': 'oklch(0.408 0.123 38.172)',\n '950': 'oklch(0.266 0.079 36.259)',\n },\n amber: {\n '50': 'oklch(0.987 0.022 95.277)',\n '100': 'oklch(0.962 0.059 95.617)',\n '200': 'oklch(0.924 0.12 95.746)',\n '300': 'oklch(0.879 0.169 91.605)',\n '400': 'oklch(0.828 0.189 84.429)',\n '500': 'oklch(0.769 0.188 70.08)',\n '600': 'oklch(0.666 0.179 58.318)',\n '700': 'oklch(0.555 0.163 48.998)',\n '800': 'oklch(0.473 0.137 46.201)',\n '900': 'oklch(0.414 0.112 45.904)',\n '950': 'oklch(0.279 0.077 45.635)',\n },\n yellow: {\n '50': 'oklch(0.987 0.026 102.212)',\n '100': 'oklch(0.973 0.071 103.193)',\n '200': 'oklch(0.945 0.129 101.54)',\n '300': 'oklch(0.905 0.182 98.111)',\n '400': 'oklch(0.852 0.199 91.936)',\n '500': 'oklch(0.795 0.184 86.047)',\n '600': 'oklch(0.681 0.162 75.834)',\n '700': 'oklch(0.554 0.135 66.442)',\n '800': 'oklch(0.476 0.114 61.907)',\n '900': 'oklch(0.421 0.095 57.708)',\n '950': 'oklch(0.286 0.066 53.813)',\n },\n lime: {\n '50': 'oklch(0.986 0.031 120.757)',\n '100': 'oklch(0.967 0.067 122.328)',\n '200': 'oklch(0.938 0.127 124.321)',\n '300': 'oklch(0.897 0.196 126.665)',\n '400': 'oklch(0.841 0.238 128.85)',\n '500': 'oklch(0.768 0.233 130.85)',\n '600': 'oklch(0.648 0.2 131.684)',\n '700': 'oklch(0.532 0.157 131.589)',\n '800': 'oklch(0.453 0.124 130.933)',\n '900': 'oklch(0.405 0.101 131.063)',\n '950': 'oklch(0.274 0.072 132.109)',\n },\n green: {\n '50': 'oklch(0.982 0.018 155.826)',\n '100': 'oklch(0.962 0.044 156.743)',\n '200': 'oklch(0.925 0.084 155.995)',\n '300': 'oklch(0.871 0.15 154.449)',\n '400': 'oklch(0.792 0.209 151.711)',\n '500': 'oklch(0.723 0.219 149.579)',\n '600': 'oklch(0.627 0.194 149.214)',\n '700': 'oklch(0.527 0.154 150.069)',\n '800': 'oklch(0.448 0.119 151.328)',\n '900': 'oklch(0.393 0.095 152.535)',\n '950': 'oklch(0.266 0.065 152.934)',\n },\n emerald: {\n '50': 'oklch(0.979 0.021 166.113)',\n '100': 'oklch(0.95 0.052 163.051)',\n '200': 'oklch(0.905 0.093 164.15)',\n '300': 'oklch(0.845 0.143 164.978)',\n '400': 'oklch(0.765 0.177 163.223)',\n '500': 'oklch(0.696 0.17 162.48)',\n '600': 'oklch(0.596 0.145 163.225)',\n '700': 'oklch(0.508 0.118 165.612)',\n '800': 'oklch(0.432 0.095 166.913)',\n '900': 'oklch(0.378 0.077 168.94)',\n '950': 'oklch(0.262 0.051 172.552)',\n },\n teal: {\n '50': 'oklch(0.984 0.014 180.72)',\n '100': 'oklch(0.953 0.051 180.801)',\n '200': 'oklch(0.91 0.096 180.426)',\n '300': 'oklch(0.855 0.138 181.071)',\n '400': 'oklch(0.777 0.152 181.912)',\n '500': 'oklch(0.704 0.14 182.503)',\n '600': 'oklch(0.6 0.118 184.704)',\n '700': 'oklch(0.511 0.096 186.391)',\n '800': 'oklch(0.437 0.078 188.216)',\n '900': 'oklch(0.386 0.063 188.416)',\n '950': 'oklch(0.277 0.046 192.524)',\n },\n cyan: {\n '50': 'oklch(0.984 0.019 200.873)',\n '100': 'oklch(0.956 0.045 203.388)',\n '200': 'oklch(0.917 0.08 205.041)',\n '300': 'oklch(0.865 0.127 207.078)',\n '400': 'oklch(0.789 0.154 211.53)',\n '500': 'oklch(0.715 0.143 215.221)',\n '600': 'oklch(0.609 0.126 221.723)',\n '700': 'oklch(0.52 0.105 223.128)',\n '800': 'oklch(0.45 0.085 224.283)',\n '900': 'oklch(0.398 0.07 227.392)',\n '950': 'oklch(0.302 0.056 229.695)',\n },\n sky: {\n '50': 'oklch(0.977 0.013 236.62)',\n '100': 'oklch(0.951 0.026 236.824)',\n '200': 'oklch(0.901 0.058 230.902)',\n '300': 'oklch(0.828 0.111 230.318)',\n '400': 'oklch(0.746 0.16 232.661)',\n '500': 'oklch(0.685 0.169 237.323)',\n '600': 'oklch(0.588 0.158 241.966)',\n '700': 'oklch(0.5 0.134 242.749)',\n '800': 'oklch(0.443 0.11 240.79)',\n '900': 'oklch(0.391 0.09 240.876)',\n '950': 'oklch(0.293 0.066 243.157)',\n },\n blue: {\n '50': 'oklch(0.97 0.014 254.604)',\n '100': 'oklch(0.932 0.032 255.585)',\n '200': 'oklch(0.882 0.059 254.128)',\n '300': 'oklch(0.809 0.105 251.813)',\n '400': 'oklch(0.707 0.165 254.624)',\n '500': 'oklch(0.623 0.214 259.815)',\n '600': 'oklch(0.546 0.245 262.881)',\n '700': 'oklch(0.488 0.243 264.376)',\n '800': 'oklch(0.424 0.199 265.638)',\n '900': 'oklch(0.379 0.146 265.522)',\n '950': 'oklch(0.282 0.091 267.935)',\n },\n indigo: {\n '50': 'oklch(0.962 0.018 272.314)',\n '100': 'oklch(0.93 0.034 272.788)',\n '200': 'oklch(0.87 0.065 274.039)',\n '300': 'oklch(0.785 0.115 274.713)',\n '400': 'oklch(0.673 0.182 276.935)',\n '500': 'oklch(0.585 0.233 277.117)',\n '600': 'oklch(0.511 0.262 276.966)',\n '700': 'oklch(0.457 0.24 277.023)',\n '800': 'oklch(0.398 0.195 277.366)',\n '900': 'oklch(0.359 0.144 278.697)',\n '950': 'oklch(0.257 0.09 281.288)',\n },\n violet: {\n '50': 'oklch(0.969 0.016 293.756)',\n '100': 'oklch(0.943 0.029 294.588)',\n '200': 'oklch(0.894 0.057 293.283)',\n '300': 'oklch(0.811 0.111 293.571)',\n '400': 'oklch(0.702 0.183 293.541)',\n '500': 'oklch(0.606 0.25 292.717)',\n '600': 'oklch(0.541 0.281 293.009)',\n '700': 'oklch(0.491 0.27 292.581)',\n '800': 'oklch(0.432 0.232 292.759)',\n '900': 'oklch(0.38 0.189 293.745)',\n '950': 'oklch(0.283 0.141 291.089)',\n },\n purple: {\n '50': 'oklch(0.977 0.014 308.299)',\n '100': 'oklch(0.946 0.033 307.174)',\n '200': 'oklch(0.902 0.063 306.703)',\n '300': 'oklch(0.827 0.119 306.383)',\n '400': 'oklch(0.714 0.203 305.504)',\n '500': 'oklch(0.627 0.265 303.9)',\n '600': 'oklch(0.558 0.288 302.321)',\n '700': 'oklch(0.496 0.265 301.924)',\n '800': 'oklch(0.438 0.218 303.724)',\n '900': 'oklch(0.381 0.176 304.987)',\n '950': 'oklch(0.291 0.149 302.717)',\n },\n fuchsia: {\n '50': 'oklch(0.977 0.017 320.058)',\n '100': 'oklch(0.952 0.037 318.852)',\n '200': 'oklch(0.903 0.076 319.62)',\n '300': 'oklch(0.833 0.145 321.434)',\n '400': 'oklch(0.74 0.238 322.16)',\n '500': 'oklch(0.667 0.295 322.15)',\n '600': 'oklch(0.591 0.293 322.896)',\n '700': 'oklch(0.518 0.253 323.949)',\n '800': 'oklch(0.452 0.211 324.591)',\n '900': 'oklch(0.401 0.17 325.612)',\n '950': 'oklch(0.293 0.136 325.661)',\n },\n pink: {\n '50': 'oklch(0.971 0.014 343.198)',\n '100': 'oklch(0.948 0.028 342.258)',\n '200': 'oklch(0.899 0.061 343.231)',\n '300': 'oklch(0.823 0.12 346.018)',\n '400': 'oklch(0.718 0.202 349.761)',\n '500': 'oklch(0.656 0.241 354.308)',\n '600': 'oklch(0.592 0.249 0.584)',\n '700': 'oklch(0.525 0.223 3.958)',\n '800': 'oklch(0.459 0.187 3.815)',\n '900': 'oklch(0.408 0.153 2.432)',\n '950': 'oklch(0.284 0.109 3.907)',\n },\n rose: {\n '50': 'oklch(0.969 0.015 12.422)',\n '100': 'oklch(0.941 0.03 12.58)',\n '200': 'oklch(0.892 0.058 10.001)',\n '300': 'oklch(0.81 0.117 11.638)',\n '400': 'oklch(0.712 0.194 13.428)',\n '500': 'oklch(0.645 0.246 16.439)',\n '600': 'oklch(0.586 0.253 17.585)',\n '700': 'oklch(0.514 0.222 16.935)',\n '800': 'oklch(0.455 0.188 13.697)',\n '900': 'oklch(0.41 0.159 10.272)',\n '950': 'oklch(0.271 0.105 12.094)',\n },\n slate: {\n '50': 'oklch(0.984 0.003 247.858)',\n '100': 'oklch(0.968 0.007 247.896)',\n '200': 'oklch(0.929 0.013 255.508)',\n '300': 'oklch(0.869 0.022 252.894)',\n '400': 'oklch(0.704 0.04 256.788)',\n '500': 'oklch(0.554 0.046 257.417)',\n '600': 'oklch(0.446 0.043 257.281)',\n '700': 'oklch(0.372 0.044 257.287)',\n '800': 'oklch(0.279 0.041 260.031)',\n '900': 'oklch(0.208 0.042 265.755)',\n '950': 'oklch(0.129 0.042 264.695)',\n },\n gray: {\n '50': 'oklch(0.985 0.002 247.839)',\n '100': 'oklch(0.967 0.003 264.542)',\n '200': 'oklch(0.928 0.006 264.531)',\n '300': 'oklch(0.872 0.01 258.338)',\n '400': 'oklch(0.707 0.022 261.325)',\n '500': 'oklch(0.551 0.027 264.364)',\n '600': 'oklch(0.446 0.03 256.802)',\n '700': 'oklch(0.373 0.034 259.733)',\n '800': 'oklch(0.278 0.033 256.848)',\n '900': 'oklch(0.21 0.034 264.665)',\n '950': 'oklch(0.13 0.028 261.692)',\n },\n zinc: {\n '50': 'oklch(0.985 0 0)',\n '100': 'oklch(0.967 0.001 286.375)',\n '200': 'oklch(0.92 0.004 286.32)',\n '300': 'oklch(0.871 0.006 286.286)',\n '400': 'oklch(0.705 0.015 286.067)',\n '500': 'oklch(0.552 0.016 285.938)',\n '600': 'oklch(0.442 0.017 285.786)',\n '700': 'oklch(0.37 0.013 285.805)',\n '800': 'oklch(0.274 0.006 286.033)',\n '900': 'oklch(0.21 0.006 285.885)',\n '950': 'oklch(0.141 0.005 285.823)',\n },\n neutral: {\n '50': 'oklch(0.985 0 0)',\n '100': 'oklch(0.97 0 0)',\n '200': 'oklch(0.922 0 0)',\n '300': 'oklch(0.87 0 0)',\n '400': 'oklch(0.708 0 0)',\n '500': 'oklch(0.556 0 0)',\n '600': 'oklch(0.439 0 0)',\n '700': 'oklch(0.371 0 0)',\n '800': 'oklch(0.269 0 0)',\n '900': 'oklch(0.205 0 0)',\n '950': 'oklch(0.145 0 0)',\n },\n stone: {\n '50': 'oklch(0.985 0.001 106.423)',\n '100': 'oklch(0.97 0.001 106.424)',\n '200': 'oklch(0.923 0.003 48.717)',\n '300': 'oklch(0.869 0.005 56.366)',\n '400': 'oklch(0.709 0.01 56.259)',\n '500': 'oklch(0.553 0.013 58.071)',\n '600': 'oklch(0.444 0.011 73.639)',\n '700': 'oklch(0.374 0.01 67.558)',\n '800': 'oklch(0.268 0.007 34.298)',\n '900': 'oklch(0.216 0.006 56.043)',\n '950': 'oklch(0.147 0.004 49.25)',\n },\n};\n//# sourceMappingURL=colors.js.map","export const THEME_COLORS = {\n // Surface Colors\n background: {\n name: 'Background',\n description: 'The background color of the page',\n lightDefault: { color: 'white' },\n darkDefault: { baseShade: '950' },\n groupKey: 'page',\n category: 'surface',\n },\n foreground: {\n name: 'Foreground',\n description: 'The foreground color of the page',\n lightDefault: { baseShade: '950' },\n darkDefault: { baseShade: '50' },\n groupKey: 'page',\n category: 'surface',\n },\n muted: {\n name: 'Muted Background',\n description: 'Muted backgrounds such as <TabsList />, <Skeleton /> and <Switch />, also used as background for containers on white background or vice versa',\n lightDefault: { baseShade: '100' },\n darkDefault: { baseShade: '800' },\n groupKey: 'muted',\n category: 'surface',\n },\n mutedForeground: {\n name: 'Muted Foreground',\n description: 'Used for secondary text and subtitles',\n lightDefault: { baseShade: '500' },\n darkDefault: { baseShade: '400' },\n groupKey: 'muted',\n category: 'surface',\n },\n card: {\n name: 'Card Background',\n description: 'Background color for <Card />',\n lightDefault: { color: 'white' },\n darkDefault: { baseShade: '950' },\n groupKey: 'card',\n category: 'surface',\n },\n cardForeground: {\n name: 'Card Foreground',\n description: 'Foreground color for <Card />',\n lightDefault: { baseShade: '950' },\n darkDefault: { baseShade: '50' },\n groupKey: 'card',\n category: 'surface',\n },\n popover: {\n name: 'Popover Background',\n description: 'Background color for popovers such as <DropdownMenu />, <HoverCard />, <Popover />',\n lightDefault: { color: 'white' },\n darkDefault: { baseShade: '950' },\n groupKey: 'popover',\n category: 'surface',\n },\n popoverForeground: {\n name: 'Popover Foreground',\n description: 'Foreground color for popovers such as <DropdownMenu />, <HoverCard />, <Popover />',\n lightDefault: { baseShade: '950' },\n darkDefault: { baseShade: '50' },\n groupKey: 'popover',\n category: 'surface',\n },\n accent: {\n name: 'Accent',\n description: 'Used for accents such as hover effects on <DropdownMenuItem>, <SelectItem>...',\n lightDefault: { baseShade: '100' },\n darkDefault: { baseShade: '800' },\n groupKey: 'accent',\n category: 'surface',\n },\n accentForeground: {\n name: 'Accent Foreground',\n description: 'Used for accent foregrounds such as hover effects on <DropdownMenuItem>, <SelectItem>...',\n lightDefault: { baseShade: '900' },\n darkDefault: { baseShade: '50' },\n groupKey: 'accent',\n category: 'surface',\n },\n success: {\n name: 'Success',\n description: 'Used for success state on input fields, toast or alerts',\n lightDefault: { color: 'emerald-50' },\n darkDefault: { color: 'emerald-950' },\n groupKey: 'success',\n category: 'surface',\n },\n successForeground: {\n name: 'Success Foreground',\n description: 'Used for success foregrounds',\n lightDefault: { color: 'emerald-950' },\n darkDefault: { color: 'emerald-50' },\n groupKey: 'success',\n category: 'surface',\n },\n warning: {\n name: 'Warning',\n description: 'Used for warning color on toast or alert',\n lightDefault: { color: 'amber-50' },\n darkDefault: { color: 'amber-950' },\n groupKey: 'warning',\n category: 'surface',\n },\n warningForeground: {\n name: 'Warning Foreground',\n description: 'Used for warning foregrounds',\n lightDefault: { color: 'amber-950' },\n darkDefault: { color: 'amber-50' },\n groupKey: 'warning',\n category: 'surface',\n },\n error: {\n name: 'Error',\n description: 'Used for error state on input fields, toast or alerts',\n lightDefault: { color: 'red-50' },\n darkDefault: { color: 'red-950' },\n groupKey: 'error',\n category: 'surface',\n },\n errorForeground: {\n name: 'Error Foreground',\n description: 'Used for error foregrounds',\n lightDefault: { color: 'red-950' },\n darkDefault: { color: 'red-50' },\n groupKey: 'error',\n category: 'surface',\n },\n // Interactive Element Colors\n primary: {\n name: 'Primary',\n description: 'Primary colors for <Button /> and other active states for interactive elements such as checkbox',\n lightDefault: { primaryShade: '800' },\n darkDefault: { primaryShade: '950' },\n groupKey: 'primary',\n category: 'interactive',\n },\n primaryHover: {\n name: 'Primary Hover',\n description: 'Hover background for primary color',\n lightDefault: { primaryShade: '900' },\n darkDefault: { primaryShade: '800' },\n groupKey: 'primary',\n category: 'interactive',\n },\n primaryForeground: {\n name: 'Primary Foreground',\n description: 'Text color for primary button',\n lightDefault: { baseShade: '50' },\n darkDefault: { baseShade: '50' },\n groupKey: 'primary',\n category: 'interactive',\n },\n secondary: {\n name: 'Secondary',\n description: 'Secondary colors for <Button />',\n lightDefault: { baseShade: '100' },\n darkDefault: { baseShade: '800' },\n groupKey: 'secondary',\n category: 'interactive',\n },\n secondaryHover: {\n name: 'Secondary Hover',\n description: 'Hover background for secondary color',\n lightDefault: { baseShade: '300' },\n darkDefault: { baseShade: '600' },\n groupKey: 'secondary',\n category: 'interactive',\n },\n secondaryForeground: {\n name: 'Secondary Foreground',\n description: 'Text color for secondary button',\n lightDefault: { baseShade: '900' },\n darkDefault: { baseShade: '50' },\n groupKey: 'secondary',\n category: 'interactive',\n },\n destructive: {\n name: 'Destructive',\n description: 'Used for destructive actions such as <Button variant=\"destructive\">',\n lightDefault: { color: 'red-500' },\n darkDefault: { color: 'red-900' },\n groupKey: 'destructive',\n category: 'interactive',\n },\n destructiveHover: {\n name: 'Destructive Hover',\n description: 'Hover color for destructive background',\n lightDefault: { color: 'red-700' },\n darkDefault: { color: 'red-700' },\n groupKey: 'destructive',\n category: 'interactive',\n },\n destructiveForeground: {\n name: 'Destructive Foreground',\n description: 'Hover color for destructive background',\n lightDefault: { baseShade: '50' },\n darkDefault: { baseShade: '50' },\n groupKey: 'destructive',\n category: 'interactive',\n },\n link: {\n name: 'Link',\n description: 'Used for interactive links mostly in text',\n lightDefault: { primaryShade: '700' },\n darkDefault: { primaryShade: '600' },\n groupKey: 'link',\n category: 'interactive',\n },\n linkVisited: {\n name: 'Visited Link',\n description: 'Color for link after being visited',\n lightDefault: { primaryShade: '800' },\n darkDefault: { primaryShade: '700' },\n groupKey: 'link',\n category: 'interactive',\n },\n // Utility Colors\n border: {\n name: 'Border',\n description: 'Default border color',\n lightDefault: { baseShade: '200' },\n darkDefault: { baseShade: '800' },\n groupKey: 'border',\n category: 'utility',\n },\n input: {\n name: 'Input Border',\n description: 'Border color for inputs such as <Input />, <Select />, <Textarea />',\n lightDefault: { baseShade: '200' },\n darkDefault: { baseShade: '800' },\n groupKey: 'border',\n category: 'utility',\n },\n ring: {\n name: 'Focus Ring',\n description: 'Used for focus ring.',\n lightDefault: { primaryShade: '400' },\n darkDefault: { primaryShade: '500' },\n groupKey: 'ring',\n category: 'utility',\n },\n};\nexport const THEME_COLOR_KEYS = Object.keys(THEME_COLORS);\n//# sourceMappingURL=theme-colors.js.map","function cleanAndSplitPath(path) {\n return path\n .replace(/^\\./, '')\n .split('/')\n .filter((segment) => segment !== '');\n}\n/**\n * Computes the relative path from one path to another.\n */\nexport function computeRelativePath(fromPath, toPath) {\n const fromSegments = cleanAndSplitPath(fromPath);\n const toSegments = cleanAndSplitPath(toPath);\n // Remove the common segments from the beginning\n while (fromSegments.length > 0 &&\n toSegments.length > 0 &&\n fromSegments[0] === toSegments[0]) {\n fromSegments.shift();\n toSegments.shift();\n }\n // Add the necessary number of '../' to go up the directory hierarchy\n const numParentDirs = fromSegments.length;\n const parentDirs = Array.from({ length: numParentDirs }).fill('..');\n // Construct the relative path\n const relativePath = [...parentDirs, ...toSegments].join('/');\n return relativePath;\n}\n//# sourceMappingURL=path.js.map","import { computeRelativePath } from '#src/utils/path.js';\nfunction byId(projectDefinition, id) {\n const config = projectDefinition.apps.find((app) => app.id === id);\n if (!config) {\n throw new Error(`Unable to find app with ID ${id}`);\n }\n return config;\n}\nfunction getBackendApp(projectDefinition) {\n const backendApps = projectDefinition.apps.filter((a) => a.type === 'backend');\n if (backendApps.length > 1 || backendApps.length === 0) {\n throw new Error(`Only one backend app is supported and must exist`);\n }\n const backendApp = backendApps[0];\n return backendApp;\n}\nexport function getBackendRelativePath(appConfig, backendApp) {\n const backendRelativePath = computeRelativePath(appConfig.packageLocation\n ? appConfig.packageLocation\n : `packages/${appConfig.name}`, backendApp.packageLocation\n ? backendApp.packageLocation\n : `packages/${backendApp.name}`);\n return backendRelativePath;\n}\nexport const AppUtils = {\n byId,\n getBackendApp,\n getBackendRelativePath,\n};\n//# sourceMappingURL=app-utils.js.map","import { toposort } from '@baseplate-dev/utils';\nimport { keyBy, mapValues } from 'es-toolkit';\n/**\n * Resolves entity names in a ZodRefPayload.\n *\n * @param payload - The ZodRefPayload to resolve.\n * @param options - The options for resolving entity names.\n *\n * @template T - The type of the payload.\n */\nexport function resolveZodRefPayloadNames(payload, { skipReferenceNameResolution = false, allowInvalidReferences = false, } = {}) {\n const { entitiesWithNameResolver, references, data } = payload;\n const entitiesById = keyBy(entitiesWithNameResolver, (entity) => entity.id);\n const resolvedEntitiesById = new Map();\n // sort entities by dependency order\n const orderedEntities = toposort(entitiesWithNameResolver.map((entity) => entity.id), entitiesWithNameResolver.flatMap((entity) => {\n const entityIds = entity.nameResolver.idsToResolve ?? {};\n return Object.values(entityIds)\n .flat()\n .filter((id) => id in entitiesById)\n .map((id) => [id, entity.id]);\n }));\n function resolveIdToName(id) {\n if (skipReferenceNameResolution) {\n return id;\n }\n const entity = resolvedEntitiesById.get(id);\n if (!entity) {\n if (allowInvalidReferences) {\n return id;\n }\n throw new Error(`Could not resolve entity name for id: ${id}`);\n }\n return entity.name;\n }\n for (const id of orderedEntities) {\n const { nameResolver, ...rest } = entitiesById[id];\n const resolvedIds = mapValues(nameResolver.idsToResolve ?? {}, (idOrIds) => Array.isArray(idOrIds)\n ? idOrIds.map((id) => resolveIdToName(id))\n : resolveIdToName(idOrIds));\n resolvedEntitiesById.set(rest.id, {\n ...rest,\n name: nameResolver.resolveName(resolvedIds),\n });\n }\n return {\n entities: [...resolvedEntitiesById.values()],\n references,\n data,\n };\n}\n//# sourceMappingURL=resolve-zod-ref-payload-names.js.map","import { ZodRefWrapper } from './ref-builder.js';\nimport { resolveZodRefPayloadNames } from './resolve-zod-ref-payload-names.js';\n/**\n * Parses a schema with references.\n *\n * @param schema - The schema to parse.\n * @param input - The input to parse.\n * @param options - The options for parsing the schema.\n *\n * @returns The parsed data.\n */\nexport function parseSchemaWithReferences(schema, input, options) {\n const wrapper = ZodRefWrapper.create(schema);\n return resolveZodRefPayloadNames(wrapper.parse(input), options);\n}\n//# sourceMappingURL=parse-schema-with-references.js.map","import { toposort } from '@baseplate-dev/utils';\nimport { groupBy, keyBy, uniq } from 'es-toolkit';\nimport { get, set } from 'es-toolkit/compat';\nimport { parseSchemaWithReferences } from './parse-schema-with-references.js';\nfunction referenceToNameParentId(name, parentId) {\n return JSON.stringify({ name, parentId });\n}\nexport function deserializeSchemaWithReferences(schema, input) {\n const payload = parseSchemaWithReferences(schema, input, {\n skipReferenceNameResolution: true,\n });\n // resolve all references\n const { references, entities, data } = payload;\n // check we don't have more entities than IDs\n const entitiesById = groupBy(entities, (entity) => entity.id);\n const duplicateEntityIds = Object.values(entitiesById).filter((e) => e.length > 1);\n if (duplicateEntityIds.length > 0) {\n throw new Error(`Found multiple duplicate entity IDs: ${duplicateEntityIds\n .map((ents) => `${ents[0].id} (${ents.map((e) => e.path.join('.')).join(',')})`)\n .join(', ')}`);\n }\n const uniqueEntityIds = uniq(entities.map((e) => e.id));\n if (uniqueEntityIds.length !== entities.length) {\n throw new Error(`Found duplicate entity IDs`);\n }\n // collect reference entity types\n const entityTypes = uniq(entities.map((e) => e.type));\n const entityTypeNames = uniq(entityTypes.map((t) => t.name));\n if (entityTypeNames.length !== entityTypes.length) {\n throw new Error(`Found more entity types than entity type names implying duplicate entity type name`);\n }\n const entityTypeOrder = toposort(entityTypeNames, entityTypes\n .filter((entityType) => !!entityType.parentType)\n .map((entityType) => [\n entityType.parentType?.name ?? '',\n entityType.name,\n ]));\n const entitiesByType = groupBy(entities, (e) => e.type.name);\n const referencesByType = groupBy(references, (r) => r.type.name);\n for (const name of entityTypeOrder) {\n const entities = entitiesByType[name] ?? [];\n const references = referencesByType[name] ?? [];\n // resolve references to their ID\n const entitiesByParentIdName = keyBy(entities, (e) => {\n const { parentPath } = e;\n const parentId = parentPath\n ? get(data, parentPath)\n : undefined;\n if (parentPath && typeof parentId !== 'string') {\n throw new Error(`Could not resolve parent path: ${parentPath.join('.')}`);\n }\n return referenceToNameParentId(e.name, parentId);\n });\n for (const ref of references) {\n const name = get(data, ref.path);\n // parent ID should have already been resolved due to order of resolving references\n const parentId = ref.parentPath && get(data, ref.parentPath);\n const parentIdName = referenceToNameParentId(name, parentId);\n const resolvedEntity = entitiesByParentIdName[parentIdName];\n if (!resolvedEntity) {\n throw new Error(`Unable to resolve reference: ${ref.path.join('.')} (${ref.type.name} ${parentIdName})`);\n }\n set(data, ref.path, resolvedEntity.id);\n }\n }\n return payload;\n}\n//# sourceMappingURL=deserialize-schema.js.map","import { sortBy } from 'es-toolkit';\nimport { get, groupBy, set } from 'es-toolkit/compat';\nimport { parseSchemaWithReferences } from './parse-schema-with-references.js';\n// sentinel ID to signify the reference has been flagged for deletion\nconst DELETED_SENTINEL_ID = 'deleted-sentinel-id';\n/**\n * Fixes any reference deletions by performing the appropriate action for the reference\n */\nexport function fixRefDeletions(schema, value) {\n const issues = [];\n // find all references that do not have a corresponding entity\n let iterations;\n let valueToEdit = value;\n for (iterations = 0; iterations < 100; iterations++) {\n const parseResult = parseSchemaWithReferences(schema, valueToEdit, {\n allowInvalidReferences: true,\n });\n const { references, entities } = parseResult;\n valueToEdit = parseResult.data;\n const entitiesById = new Map(entities.map((e) => [e.id, e]));\n const referencesMissingEntity = references.filter((r) => {\n const id = get(valueToEdit, r.path);\n return id !== DELETED_SENTINEL_ID && !entitiesById.has(id);\n });\n if (referencesMissingEntity.length === 0) {\n if (issues.length > 0) {\n return {\n type: 'failure',\n issues,\n };\n }\n return {\n type: 'success',\n value: valueToEdit,\n refPayload: parseResult,\n };\n }\n const objectsToDeleteInArray = [];\n function tryDeleteParent(path) {\n if (path.length === 0) {\n return false;\n }\n const parentPath = path.slice(0, -1);\n const parent = get(valueToEdit, parentPath);\n if (!Array.isArray(parent)) {\n return false;\n }\n objectsToDeleteInArray.push({\n path: parentPath,\n idx: path.at(-1),\n });\n return true;\n }\n // attempt to fix reference\n for (const ref of referencesMissingEntity) {\n const id = get(valueToEdit, ref.path);\n switch (ref.onDelete) {\n case 'SET_NULL': {\n set(valueToEdit, ref.path, null);\n break;\n }\n case 'RESTRICT': {\n issues.push({ ref, entityId: id });\n set(valueToEdit, ref.path, DELETED_SENTINEL_ID);\n break;\n }\n case 'DELETE': {\n if (!tryDeleteParent(ref.path)) {\n throw new Error(`Unable to find ref to cascade delete to`);\n }\n break;\n }\n case 'DELETE_PARENT': {\n if (!tryDeleteParent(ref.path.slice(0, -1))) {\n throw new Error(`Unable to find ref to cascade delete to`);\n }\n break;\n }\n default: {\n throw new Error(`Unknown onDelete action ${ref.onDelete}`);\n }\n }\n }\n const objectsToDeleteByPath = groupBy(objectsToDeleteInArray, (o) => o.path.join('.'));\n // delete objects in reverse order to avoid index shifting\n for (const [, objects] of Object.entries(objectsToDeleteByPath)) {\n const sortedObjects = sortBy(objects, [(o) => -o.idx]);\n for (const o of sortedObjects) {\n const parent = get(valueToEdit, o.path);\n if (!Array.isArray(parent)) {\n throw new TypeError(`Expected parent to be an array at path ${o.path.join('.')}`);\n }\n parent.splice(o.idx, 1);\n }\n }\n }\n throw new Error(`Exceeded max iterations fixing deletions`);\n}\n//# sourceMappingURL=fix-ref-deletions.js.map","import { get, set } from 'es-toolkit/compat';\nimport { produce } from 'immer';\nimport { parseSchemaWithReferences } from './parse-schema-with-references.js';\nexport function serializeSchemaFromRefPayload(payload) {\n const { references, entities, data } = payload;\n const entitiesById = new Map(entities.map((e) => [e.id, e]));\n return produce((draftData) => {\n for (const reference of references) {\n const entityId = get(draftData, reference.path);\n const entity = entitiesById.get(entityId);\n if (!entity) {\n throw new Error(`Could not find entity with ID: ${entityId} at ${reference.path.join('.')}`);\n }\n set(draftData, reference.path, entity.name);\n }\n })(data);\n}\nexport function serializeSchema(schema, value) {\n const payload = parseSchemaWithReferences(schema, value);\n return serializeSchemaFromRefPayload(payload);\n}\n//# sourceMappingURL=serialize-schema.js.map","import { createEntityType } from '#src/references/index.js';\nexport const authRoleEntityType = createEntityType('role');\n//# sourceMappingURL=index.js.map","import { createEntityType } from '#src/references/index.js';\nexport const appEntityType = createEntityType('app');\nexport function createAppEntryType(name) {\n return name;\n}\n//# sourceMappingURL=types.js.map","import { CASE_VALIDATORS } from '@baseplate-dev/utils';\nimport { z } from 'zod';\nimport { appEntityType } from './types.js';\nexport const baseAppValidators = {\n id: z.string().default(appEntityType.generateNewId()),\n name: CASE_VALIDATORS.KEBAB_CASE,\n type: z.string(),\n packageLocation: z\n .string()\n .regex(/^(?!.*(?:\\/|\\.\\.)\\/)(?!^\\.\\.$)(?!^\\.$)(?:[\\w\\-.]+\\/?)+[\\w\\-.]*|^$/, {\n message: 'Invalid package location. Must be a valid subdirectory.',\n })\n .optional(),\n};\nexport const baseAppSchema = z.object(baseAppValidators);\n//# sourceMappingURL=base.js.map","export const SCALAR_FIELD_TYPES = [\n 'string',\n 'uuid',\n 'int',\n 'boolean',\n 'dateTime',\n 'float',\n 'decimal',\n 'json',\n 'date',\n 'enum',\n];\n//# sourceMappingURL=field-types.js.map","import { z } from 'zod';\nimport { PALETTE_SHADES } from '#src/constants/colors.js';\nimport { THEME_COLOR_KEYS } from '#src/constants/theme-colors.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nexport const oklchColor = z\n .string()\n .regex(/^oklch\\(\\s*([\\d.]+)\\s+([\\d.]+)\\s+([\\d.]+)(?:\\s*\\/\\s*([\\d.]+))?\\s*\\)$/, {\n message: 'OKLCH color must be of the format \"oklch(l c h [/ a])\" where l and c are between 0 and 1 and h is between 0 and 360 and a is between 0 and 100',\n});\nexport const themeColorSchema = z.record(z.enum(THEME_COLOR_KEYS), oklchColor);\nexport const paletteSchema = z\n .object({\n paletteName: z.string().min(1),\n customBase: oklchColor.nullish(),\n shades: z.record(z.enum(PALETTE_SHADES), oklchColor),\n})\n .refine((data) => data.paletteName !== 'custom' || !!data.paletteName, {\n message: 'A custom base color is required if using a custom base palette',\n path: ['customBase'],\n});\nexport const palettesSchema = z.object({\n base: paletteSchema,\n primary: paletteSchema,\n});\nexport const createThemeSchema = definitionSchema(() => z.object({\n palettes: z.object({\n base: paletteSchema,\n primary: paletteSchema,\n }),\n colors: z.object({\n light: themeColorSchema,\n dark: themeColorSchema,\n }),\n}));\n//# sourceMappingURL=theme.js.map","import { z } from 'zod';\nexport const VALIDATORS = {\n PASCAL_CASE_STRING: z\n .string()\n .regex(/^[A-Z][a-zA-Z0-9]*$/, \"Should be PascalCase, e.g. 'MyModel'\"),\n CAMEL_CASE_STRING: z\n .string()\n .regex(/^[a-z][a-zA-Z0-9]*$/, \"Should be camelCase, e.g. 'myField'\"),\n CONSTANT_CASE_STRING: z\n .string()\n .regex(/^[A-Z][A-Z0-9_]*$/, \"Should be CONSTANT_CASE, e.g. 'MY_CONSTANT'\"),\n OPTIONAL_CONSTANT_CASE_STRING: z\n .string()\n .regex(/^[A-Z][A-Z0-9_]*$/, \"Should be CONSTANT_CASE, e.g. 'MY_CONSTANT'\")\n .or(z.literal(''))\n .optional(),\n};\n//# sourceMappingURL=validation.js.map","import { z } from 'zod';\nimport { zRef } from '#src/references/ref-builder.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { authRoleEntityType } from '../auth/index.js';\nimport { modelForeignRelationEntityType, modelLocalRelationEntityType, modelScalarFieldEntityType, } from './types.js';\nconst roleArray = z\n .array(zRef(z.string(), {\n type: authRoleEntityType,\n onDelete: 'DELETE',\n}))\n .optional();\nexport const createModelGraphqlSchema = definitionSchema(() => z.object({\n objectType: z\n .object({\n enabled: z.boolean().default(false),\n fields: z.array(zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n })),\n localRelations: z\n .array(zRef(z.string(), {\n type: modelLocalRelationEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n foreignRelations: z\n .array(zRef(z.string(), {\n type: modelForeignRelationEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n })\n .default({\n enabled: false,\n fields: [],\n }),\n queries: z\n .object({\n get: z\n .object({\n enabled: z.boolean().optional(),\n roles: roleArray,\n })\n .optional(),\n list: z\n .object({\n enabled: z.boolean().optional(),\n roles: roleArray,\n })\n .optional(),\n })\n .default({\n get: {\n enabled: false,\n roles: [],\n },\n list: {\n enabled: false,\n roles: [],\n },\n }),\n mutations: z\n .object({\n create: z\n .object({\n enabled: z.boolean().optional(),\n roles: roleArray,\n })\n .default({\n enabled: false,\n roles: [],\n }),\n update: z\n .object({\n enabled: z.boolean().optional(),\n roles: roleArray,\n })\n .default({\n enabled: false,\n roles: [],\n }),\n delete: z\n .object({\n enabled: z.boolean().optional(),\n roles: roleArray,\n })\n .default({\n enabled: false,\n roles: [],\n }),\n })\n .default({}),\n}));\n//# sourceMappingURL=graphql.js.map","import { z } from 'zod';\nexport const baseTransformerFields = {\n type: z.string().min(1),\n};\nexport const baseTransformerSchema = z.object({\n id: z.string(),\n ...baseTransformerFields,\n});\nexport function createModelTransformerType(payload) {\n return payload;\n}\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { createDefinitionEntityNameResolver, zEnt, zRef, } from '#src/references/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { modelEntityType, modelForeignRelationEntityType, modelScalarFieldEntityType, modelTransformerEntityType, } from '../types.js';\nimport { baseTransformerFields, createModelTransformerType } from './types.js';\nexport const createPasswordTransformerSchema = definitionSchema(() => zEnt(z.object({\n ...baseTransformerFields,\n type: z.literal('password'),\n}), {\n type: modelTransformerEntityType,\n parentPath: { context: 'model' },\n getNameResolver: () => 'password',\n}));\nexport const createEmbeddedRelationTransformerSchema = definitionSchema(() => zEnt(z.object({\n ...baseTransformerFields,\n foreignRelationRef: zRef(z.string().min(1), {\n type: modelForeignRelationEntityType,\n onDelete: 'DELETE_PARENT',\n parentPath: { context: 'model' },\n }),\n type: z.literal('embeddedRelation'),\n embeddedFieldNames: z.array(zRef(z.string().min(1), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'embeddedModel' },\n })),\n embeddedTransformerNames: z\n .array(zRef(z.string().min(1), {\n type: modelTransformerEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'embeddedModel' },\n }))\n .optional(),\n modelRef: zRef(z.string().min(1), {\n type: modelEntityType,\n onDelete: 'RESTRICT',\n }),\n}), {\n type: modelTransformerEntityType,\n parentPath: { context: 'model' },\n getNameResolver: (entity) => createDefinitionEntityNameResolver({\n idsToResolve: { foreignRelation: entity.foreignRelationRef },\n resolveName: (entityNames) => entityNames.foreignRelation,\n }),\n}).refBuilder((builder) => {\n builder.addPathToContext('modelRef', modelEntityType, 'embeddedModel');\n}));\nexport const BUILT_IN_TRANSFORMERS = [\n createModelTransformerType({\n name: 'password',\n schema: createPasswordTransformerSchema,\n getName: () => 'Password',\n }),\n createModelTransformerType({\n name: 'embeddedRelation',\n schema: createEmbeddedRelationTransformerSchema,\n getName: (definitionContainer, definition) => definitionContainer.nameFromId(definition.foreignRelationRef),\n }),\n];\n//# sourceMappingURL=built-in-transformers.js.map","import { createPluginSpec } from '#src/plugins/spec/types.js';\nimport { BUILT_IN_TRANSFORMERS } from './built-in-transformers.js';\nexport function createModelTransformerImplementation() {\n const transformers = {};\n for (const transformer of BUILT_IN_TRANSFORMERS) {\n transformers[transformer.name] =\n transformer;\n }\n return {\n registerModelTransformer(transformer) {\n if (transformers[transformer.name]) {\n throw new Error(`Model transformer with name ${transformer.name} is already registered`);\n }\n transformers[transformer.name] =\n transformer;\n },\n getModelTransformers() {\n return transformers;\n },\n getModelTransformer(name) {\n const transformer = transformers[name];\n if (!transformer) {\n throw new Error(`Unable to find transformer with name ${name}`);\n }\n return transformer;\n },\n };\n}\n/**\n * Spec for adding config component for plugin\n */\nexport const modelTransformerSpec = createPluginSpec('core/model-transformer', {\n defaultInitializer: createModelTransformerImplementation,\n});\n//# sourceMappingURL=model-transformer-spec.js.map","import { zWithPlugins } from '#src/plugins/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { modelTransformerSpec } from './model-transformer-spec.js';\nimport { baseTransformerSchema } from './types.js';\nexport const createTransformerSchema = definitionSchema((ctx) => zWithPlugins((plugins, data) => {\n const { type } = baseTransformerSchema.parse(data);\n const transformer = plugins\n .getPluginSpec(modelTransformerSpec)\n .getModelTransformer(type);\n return transformer.schema(ctx);\n}));\n//# sourceMappingURL=transformers.js.map","import { z } from 'zod';\nimport { zEnt, zRef } from '#src/references/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { featureEntityType } from '../features/index.js';\nimport { modelEnumEntityType, modelEnumValueEntityType } from './types.js';\nexport const createEnumValueSchema = definitionSchema(() => zEnt(z.object({\n name: z.string().min(1),\n friendlyName: z.string().min(1),\n}), {\n type: modelEnumValueEntityType,\n parentPath: { context: 'enum' },\n}));\nexport const createEnumBaseSchema = definitionSchema((ctx) => z.object({\n name: z.string().min(1),\n featureRef: zRef(z.string().min(1), {\n type: featureEntityType,\n onDelete: 'RESTRICT',\n }),\n values: z.array(createEnumValueSchema(ctx)),\n isExposed: z.boolean(),\n}));\nexport const createEnumSchema = definitionSchema((ctx) => zEnt(createEnumBaseSchema(ctx), {\n type: modelEnumEntityType,\n addContext: 'enum',\n}));\n//# sourceMappingURL=enums.js.map","import { z } from 'zod';\nimport { createDefinitionEntityNameResolver, zEnt, zRef, zRefBuilder, zRefId, } from '#src/references/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { SCALAR_FIELD_TYPES } from '#src/types/field-types.js';\nimport { featureEntityType } from '../features/index.js';\nimport { VALIDATORS } from '../utils/validation.js';\nimport { createModelGraphqlSchema } from './graphql.js';\nimport { createTransformerSchema } from './transformers/transformers.js';\nimport { modelEntityType, modelEnumEntityType, modelEnumValueEntityType, modelForeignRelationEntityType, modelLocalRelationEntityType, modelScalarFieldEntityType, modelTransformerEntityType, modelUniqueConstraintEntityType, } from './types.js';\nexport * from './enums.js';\nexport * from './graphql.js';\nexport * from './transformers/index.js';\nexport * from './types.js';\nexport const createModelScalarFieldSchema = definitionSchema(() => zEnt(z.object({\n name: VALIDATORS.CAMEL_CASE_STRING,\n type: z.enum(SCALAR_FIELD_TYPES),\n isOptional: z.boolean().default(false),\n options: zRefBuilder(z\n .object({\n // string options\n default: z.string().default(''),\n // uuid options\n genUuid: z.boolean().optional(),\n // date options\n updatedAt: z.boolean().optional(),\n defaultToNow: z.boolean().optional(),\n // enum options\n enumRef: zRef(z.string().optional(), {\n type: modelEnumEntityType,\n onDelete: 'RESTRICT',\n }),\n defaultEnumValueRef: z.string().optional(),\n })\n .transform((val) => ({\n ...val,\n ...(val.enumRef ? {} : { defaultEnumValueRef: undefined }),\n }))\n .default({ default: '' }), (builder) => {\n builder.addReference({\n type: modelEnumValueEntityType,\n onDelete: 'RESTRICT',\n path: 'defaultEnumValueRef',\n parentPath: 'enumRef',\n });\n }),\n}), {\n type: modelScalarFieldEntityType,\n parentPath: { context: 'model' },\n})\n .superRefine((arg, ctx) => {\n // check default values\n const defaultValue = arg.options.default;\n const { type } = arg;\n if (!defaultValue) {\n return;\n }\n if (type === 'boolean' && !['true', 'false'].includes(defaultValue)) {\n ctx.addIssue({\n path: ['options', 'default'],\n code: 'custom',\n message: 'Default value must be true or false',\n });\n }\n})\n .transform((value) => {\n if (value.type !== 'enum' && value.options.enumRef) {\n return {\n ...value,\n options: {\n ...value.options,\n enumRef: undefined,\n },\n };\n }\n return value;\n}));\nexport const REFERENTIAL_ACTIONS = [\n 'Cascade',\n 'Restrict',\n 'NoAction',\n 'SetNull',\n 'SetDefault',\n];\nexport const createModelRelationFieldSchema = definitionSchema(() => zRefBuilder(z.object({\n id: zRefId,\n foreignId: z\n .string()\n .default(() => modelForeignRelationEntityType.generateNewId()),\n name: VALIDATORS.CAMEL_CASE_STRING,\n references: z.array(z.object({\n localRef: zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n foreignRef: zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'foreignModel' },\n }),\n })),\n modelRef: z.string().min(1),\n foreignRelationName: VALIDATORS.CAMEL_CASE_STRING,\n onDelete: z.enum(REFERENTIAL_ACTIONS).default('Cascade'),\n onUpdate: z.enum(REFERENTIAL_ACTIONS).default('Restrict'),\n}), (builder) => {\n builder.addReference({\n type: modelEntityType,\n onDelete: 'RESTRICT',\n addContext: 'foreignModel',\n path: 'modelRef',\n });\n builder.addEntity({\n type: modelLocalRelationEntityType,\n parentPath: { context: 'model' },\n });\n builder.addEntity({\n type: modelForeignRelationEntityType,\n idPath: 'foreignId',\n getNameResolver: (entity) => entity.foreignRelationName,\n parentPath: 'modelRef',\n });\n}));\nexport const createModelUniqueConstraintSchema = definitionSchema(() => zEnt(z.object({\n fields: z.array(z.object({\n fieldRef: zRef(z.string().min(1), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n })),\n}), {\n type: modelUniqueConstraintEntityType,\n parentPath: { context: 'model' },\n getNameResolver(value) {\n return createDefinitionEntityNameResolver({\n idsToResolve: { fields: value.fields.map((f) => f.fieldRef) },\n resolveName: (entityNames) => entityNames.fields.join('_'),\n });\n },\n}));\nexport const createModelServiceSchema = definitionSchema((ctx) => z.object({\n create: z\n .object({\n enabled: z.boolean().default(false),\n fields: z\n .array(zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n transformerNames: z\n .array(zRef(z.string(), {\n type: modelTransformerEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n })\n .default({ enabled: false }),\n update: z\n .object({\n enabled: z.boolean().default(false),\n fields: z\n .array(zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n transformerNames: z\n .array(zRef(z.string(), {\n type: modelTransformerEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n })\n .default({ enabled: false }),\n delete: z\n .object({\n enabled: z.boolean().default(false),\n })\n .default({\n enabled: false,\n }),\n transformers: z.array(createTransformerSchema(ctx)).default([]),\n}));\nexport const createModelBaseSchema = definitionSchema((ctx) => z.object({\n id: zRefId,\n name: VALIDATORS.PASCAL_CASE_STRING,\n featureRef: zRef(z.string().min(1), {\n type: featureEntityType,\n onDelete: 'RESTRICT',\n }),\n model: z.object({\n fields: z.array(createModelScalarFieldSchema(ctx)),\n relations: z.array(createModelRelationFieldSchema(ctx)).optional(),\n primaryKeyFieldRefs: z\n .array(zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }))\n .min(1),\n uniqueConstraints: z\n .array(createModelUniqueConstraintSchema(ctx))\n .optional(),\n }),\n service: createModelServiceSchema(ctx).default({\n create: { enabled: false },\n update: { enabled: false },\n delete: { enabled: false },\n transformers: [],\n }),\n graphql: createModelGraphqlSchema(ctx).optional(),\n}));\nexport const createModelSchema = definitionSchema((ctx) => zEnt(createModelBaseSchema(ctx), {\n type: modelEntityType,\n addContext: 'model',\n}));\n//# sourceMappingURL=index.js.map","import { createEntityType } from '#src/references/index.js';\nimport { appEntityType } from '../../types.js';\nexport const adminSectionEntityType = createEntityType('admin-section', {\n parentType: appEntityType,\n});\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { zRef } from '#src/references/index.js';\nimport { featureEntityType } from '#src/schema/features/index.js';\nimport { adminSectionEntityType } from './types.js';\nexport const baseAdminSectionValidators = {\n id: z.string().default(adminSectionEntityType.generateNewId()),\n name: z.string().min(1),\n featureRef: zRef(z.string().min(1), {\n type: featureEntityType,\n onDelete: 'RESTRICT',\n }),\n icon: z.string().optional(),\n type: z.string().min(1),\n};\n//# sourceMappingURL=base.js.map","import { z } from 'zod';\nimport { createEntityType } from '#src/references/types.js';\nimport { adminSectionEntityType } from '../types.js';\nexport const baseAdminCrudInputSchema = z.object({\n type: z.string().min(1),\n label: z.string().min(1),\n});\nexport function createAdminCrudInputType(payload) {\n return payload;\n}\nexport const adminCrudEmbeddedFormEntityType = createEntityType('admin-crud-embedded-form', {\n parentType: adminSectionEntityType,\n});\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { zRef } from '#src/references/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { modelForeignRelationEntityType, modelLocalRelationEntityType, modelScalarFieldEntityType, } from '#src/schema/models/index.js';\nimport { adminCrudEmbeddedFormEntityType, createAdminCrudInputType, } from './types.js';\nexport const createAdminCrudTextInputSchema = definitionSchema(() => z.object({\n type: z.literal('text'),\n label: z.string().min(1),\n modelFieldRef: zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n validation: z.string().optional(),\n}));\nconst adminCrudTextInputType = createAdminCrudInputType({\n name: 'text',\n schema: createAdminCrudTextInputSchema,\n});\nexport const createAdminCrudForeignInputSchema = definitionSchema(() => z.object({\n type: z.literal('foreign'),\n label: z.string().min(1),\n localRelationRef: zRef(z.string(), {\n type: modelLocalRelationEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n labelExpression: z.string().min(1),\n valueExpression: z.string().min(1),\n defaultLabel: z.string().optional(),\n nullLabel: z.string().optional(),\n}));\nconst adminCrudForeignInputType = createAdminCrudInputType({\n name: 'foreign',\n schema: createAdminCrudForeignInputSchema,\n});\nexport const createAdminCrudEnumInputSchema = definitionSchema(() => z.object({\n type: z.literal('enum'),\n label: z.string().min(1),\n modelFieldRef: zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n}));\nconst adminCrudEnumInputType = createAdminCrudInputType({\n name: 'enum',\n schema: createAdminCrudEnumInputSchema,\n});\nexport const createAdminCrudEmbeddedInputSchema = definitionSchema(() => z.object({\n type: z.literal('embedded'),\n label: z.string().min(1),\n modelRelationRef: zRef(z.string(), {\n type: modelForeignRelationEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n embeddedFormRef: zRef(z.string(), {\n type: adminCrudEmbeddedFormEntityType,\n parentPath: { context: 'admin-section' },\n onDelete: 'RESTRICT',\n }),\n}));\nexport const adminCrudEmbeddedInputType = createAdminCrudInputType({\n name: 'embedded',\n schema: createAdminCrudEmbeddedInputSchema,\n});\nexport const createAdminCrudEmbeddedLocalInputSchema = definitionSchema(() => z.object({\n type: z.literal('embeddedLocal'),\n label: z.string().min(1),\n localRelationRef: zRef(z.string(), {\n type: modelLocalRelationEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n embeddedFormRef: zRef(z.string(), {\n type: adminCrudEmbeddedFormEntityType,\n parentPath: { context: 'admin-section' },\n onDelete: 'RESTRICT',\n }),\n}));\nexport const adminCrudEmbeddedLocalInputType = createAdminCrudInputType({\n name: 'embeddedLocal',\n schema: createAdminCrudEmbeddedLocalInputSchema,\n});\nexport const createAdminCrudPasswordInputSchema = definitionSchema(() => z.object({\n type: z.literal('password'),\n label: z.string().min(1),\n}));\nconst adminCrudPasswordInputType = createAdminCrudInputType({\n name: 'password',\n schema: createAdminCrudPasswordInputSchema,\n});\nexport const BUILT_IN_ADMIN_CRUD_INPUTS = [\n adminCrudTextInputType,\n adminCrudForeignInputType,\n adminCrudEnumInputType,\n adminCrudEmbeddedInputType,\n adminCrudEmbeddedLocalInputType,\n adminCrudPasswordInputType,\n];\n//# sourceMappingURL=built-in-input.js.map","import { createPluginSpec } from '#src/plugins/spec/types.js';\nimport { BUILT_IN_ADMIN_CRUD_INPUTS } from './built-in-input.js';\nexport function createAdminCrudInputImplementation() {\n const adminCrudInputs = new Map(BUILT_IN_ADMIN_CRUD_INPUTS.map((input) => [input.name, input]));\n return {\n registerAdminCrudInput(input) {\n if (adminCrudInputs.has(input.name)) {\n throw new Error(`Admin CRUD input with name ${input.name} is already registered`);\n }\n adminCrudInputs.set(input.name, input);\n },\n getAdminCrudInputs() {\n return adminCrudInputs;\n },\n getAdminCrudInput(name) {\n const input = adminCrudInputs.get(name);\n if (!input) {\n throw new Error(`Unable to find input with name ${name}`);\n }\n return input;\n },\n };\n}\n/**\n * Spec for adding admin crud input\n */\nexport const adminCrudInputSpec = createPluginSpec('core/admin-crud-input', {\n defaultInitializer: createAdminCrudInputImplementation,\n});\n//# sourceMappingURL=admin-input-spec.js.map","import { zWithPlugins } from '#src/plugins/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { adminCrudInputSpec } from './admin-input-spec.js';\nimport { baseAdminCrudInputSchema } from './types.js';\nexport const createAdminCrudInputSchema = definitionSchema((ctx) => zWithPlugins((plugins, data) => {\n const { type } = baseAdminCrudInputSchema.parse(data);\n const input = plugins\n .getPluginSpec(adminCrudInputSpec)\n .getAdminCrudInput(type);\n return input.schema(ctx);\n}));\n//# sourceMappingURL=admin-crud-input.js.map","import { z } from 'zod';\nimport { zRef, zRefBuilder } from '#src/references/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { modelEntityType, modelLocalRelationEntityType, modelScalarFieldEntityType, } from '#src/schema/models/index.js';\nimport { baseAdminSectionValidators } from './base.js';\nimport { createAdminCrudInputSchema } from './crud-form/admin-crud-input.js';\nimport { adminCrudEmbeddedFormEntityType } from './crud-form/types.js';\n// Table Columns\nexport const createAdminCrudForeignDisplaySchema = definitionSchema(() => z.object({\n type: z.literal('foreign'),\n localRelationRef: zRef(z.string(), {\n type: modelLocalRelationEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n labelExpression: z.string().min(1),\n valueExpression: z.string().min(1),\n}));\nexport const createAdminCrudTextDisplaySchema = definitionSchema(() => z.object({\n type: z.literal('text'),\n modelFieldRef: zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n}));\nexport const createAdminCrudDisplaySchema = definitionSchema((ctx) => z.discriminatedUnion('type', [\n createAdminCrudTextDisplaySchema(ctx),\n createAdminCrudForeignDisplaySchema(ctx),\n]));\n// TODO: Improve this to be more dynamic in the future\nexport const adminCrudDisplayTypes = ['text', 'foreign'];\nexport const createAdminCrudTableColumnSchema = definitionSchema((ctx) => z.object({\n label: z.string().min(1),\n display: createAdminCrudDisplaySchema(ctx),\n}));\n// Embedded Crud\nexport const createAdminCrudEmbeddedObjectSchema = definitionSchema((ctx) => z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n modelRef: zRef(z.string().min(1), {\n type: modelEntityType,\n onDelete: 'RESTRICT',\n }),\n includeIdField: z.boolean().optional(),\n type: z.literal('object'),\n form: z.object({\n fields: z.array(createAdminCrudInputSchema(ctx)),\n }),\n}));\nexport const createAdminCrudEmbeddedListSchema = definitionSchema((ctx) => z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n modelRef: zRef(z.string().min(1), {\n type: modelEntityType,\n onDelete: 'RESTRICT',\n }),\n includeIdField: z.boolean().optional(),\n type: z.literal('list'),\n // NOTE: These two fields need to be synced with crud section schema\n // because the web app expects that (TODO)\n table: z.object({\n columns: z.array(createAdminCrudTableColumnSchema(ctx)),\n }),\n form: z.object({\n fields: z.array(createAdminCrudInputSchema(ctx)),\n }),\n}));\nexport const createAdminCrudEmbeddedFormSchema = definitionSchema((ctx) => zRefBuilder(z.discriminatedUnion('type', [\n createAdminCrudEmbeddedObjectSchema(ctx),\n createAdminCrudEmbeddedListSchema(ctx),\n]), (builder) => {\n builder.addEntity({\n type: adminCrudEmbeddedFormEntityType,\n parentPath: { context: 'admin-section' },\n });\n builder.addPathToContext('modelRef', modelEntityType, 'model');\n}));\n// Admin Section\nexport const createAdminCrudSectionSchema = definitionSchema((ctx) => zRefBuilder(z.object({\n ...baseAdminSectionValidators,\n type: z.literal('crud'),\n modelRef: zRef(z.string().min(1), {\n type: modelEntityType,\n onDelete: 'RESTRICT',\n }),\n disableCreate: z.boolean().optional(),\n table: z.object({\n columns: z.array(createAdminCrudTableColumnSchema(ctx)),\n }),\n form: z.object({\n fields: z.array(createAdminCrudInputSchema(ctx)),\n }),\n embeddedForms: z.array(createAdminCrudEmbeddedFormSchema(ctx)).optional(),\n}), (builder) => {\n builder.addPathToContext('modelRef', modelEntityType, 'model');\n}));\n//# sourceMappingURL=crud.js.map","import { z } from 'zod';\nimport { zRef, zRefBuilder } from '#src/references/index.js';\nimport { authRoleEntityType } from '#src/schema/auth/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { baseAppValidators } from '../base.js';\nimport { createAppEntryType } from '../types.js';\nimport { createAdminCrudSectionSchema } from './sections/crud.js';\nimport { adminSectionEntityType } from './sections/types.js';\nexport const createAdminSectionSchema = definitionSchema((ctx) => zRefBuilder(createAdminCrudSectionSchema(ctx), (builder) => {\n builder.addEntity({\n type: adminSectionEntityType,\n parentPath: { context: 'app' },\n addContext: 'admin-section',\n });\n}));\nexport const createAdminAppSchema = definitionSchema((ctx) => z.object({\n ...baseAppValidators,\n type: z.literal('admin'),\n allowedRoles: z\n .array(zRef(z.string(), {\n type: authRoleEntityType,\n onDelete: 'DELETE',\n }))\n .optional(),\n sections: z.array(createAdminSectionSchema(ctx)).optional(),\n}));\nexport const adminAppEntryType = createAppEntryType('admin');\n//# sourceMappingURL=app.js.map","import { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { baseAppValidators } from '../base.js';\nimport { createAppEntryType } from '../types.js';\nexport const createBackendAppSchema = definitionSchema(() => z.object({\n ...baseAppValidators,\n type: z.literal('backend'),\n enableStripe: z.boolean().optional(),\n enableRedis: z.boolean().optional(),\n enableBullQueue: z.boolean().optional(),\n enablePostmark: z.boolean().optional(),\n enableSubscriptions: z.boolean().optional(),\n enableAxios: z.boolean().optional(),\n}));\nexport const backendAppEntryType = createAppEntryType('backend');\n//# sourceMappingURL=index.js.map","import { z } from 'zod';\nimport { zRef } from '#src/references/index.js';\nimport { authRoleEntityType } from '#src/schema/auth/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { baseAppValidators } from '../base.js';\nimport { createAppEntryType } from '../types.js';\nexport const createWebAppSchema = definitionSchema(() => z.object({\n ...baseAppValidators,\n type: z.literal('web'),\n includeAuth: z.boolean().optional(),\n title: z.string().optional(),\n description: z.string().optional(),\n allowedRoles: z\n .array(zRef(z.string().min(1), {\n type: authRoleEntityType,\n onDelete: 'DELETE',\n }))\n .optional(),\n includeUploadComponents: z.boolean().optional(),\n enableSubscriptions: z.boolean().optional(),\n}));\nexport const webAppEntryType = createAppEntryType('web');\n//# sourceMappingURL=index.js.map","import { z } from 'zod';\nimport { pluginConfigSpec, zWithPlugins } from '#src/plugins/index.js';\nimport { zEnt } from '#src/references/ref-builder.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { pluginEntityType } from './entity-types.js';\nexport const basePluginDefinitionSchema = z.object({\n id: z.string().min(1),\n packageName: z.string(),\n name: z.string(),\n version: z.string(),\n config: z.unknown(),\n configSchemaVersion: z.number().optional(),\n});\nexport const createPluginWithConfigSchema = definitionSchema(() => zWithPlugins((plugins, data) => {\n const parsedBasePlugin = basePluginDefinitionSchema.parse(data);\n const pluginKey = pluginEntityType.keyFromId(parsedBasePlugin.id);\n const configSchema = plugins\n .getPluginSpec(pluginConfigSpec)\n .getSchema(pluginKey);\n const pluginDefinitionWithEnt = zEnt(basePluginDefinitionSchema, {\n type: pluginEntityType,\n });\n if (!configSchema) {\n return pluginDefinitionWithEnt;\n }\n return pluginDefinitionWithEnt.and(z.object({\n config: configSchema,\n }));\n}));\nexport const createPluginsSchema = definitionSchema((ctx) => z.array(createPluginWithConfigSchema(ctx)));\n//# sourceMappingURL=definition.js.map","import { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nexport const createTemplateExtractorSchema = definitionSchema(() => z.object({\n /**\n * Whether to write template extractor metadata when writing files to the project.\n *\n * This allows the template extraction process to update the generator's templates.\n */\n writeMetadata: z.boolean().default(false),\n /**\n * A list of file IDs to include in the template extractor metadata for generators\n * that have a manually assigned file IDs, e.g. files generated by generators that\n * have multiple instances.\n *\n * The list is delimited by a newline and can include a * to match any number of characters.\n */\n fileIdRegexWhitelist: z.string().default(''),\n}));\n//# sourceMappingURL=index.js.map","import { CASE_VALIDATORS } from '@baseplate-dev/utils';\nimport { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { createThemeSchema } from './features/index.js';\nimport { createTemplateExtractorSchema } from './template-extractor/index.js';\nexport const generalSettingsSchema = z.object({\n /**\n * The name of the project.\n */\n name: CASE_VALIDATORS.KEBAB_CASE,\n /**\n * The package scope of the project if any e.g. halfdomelabs for @baseplate-dev/package-name.\n */\n packageScope: z\n .union([z.literal(''), CASE_VALIDATORS.KEBAB_CASE])\n .default(''),\n /**\n * The port offset to base the app ports on for development (e.g. 8000 => 8432 for DB).\n */\n portOffset: z\n .number()\n .min(1000)\n .max(60000)\n .int()\n .refine((portOffset) => portOffset % 1000 === 0, 'Port offset must be a multiple of 1000, e.g. 1000, 2000, 3000, etc.'),\n});\nexport const createSettingsSchema = definitionSchema((ctx) => z.object({\n general: generalSettingsSchema,\n templateExtractor: createTemplateExtractorSchema(ctx).optional(),\n theme: createThemeSchema(ctx).optional(),\n}));\n//# sourceMappingURL=settings.js.map","import { z } from 'zod';\nimport { zRefBuilder } from '#src/references/index.js';\nimport { createAdminAppSchema } from './apps/admin/index.js';\nimport { createBackendAppSchema } from './apps/backend/index.js';\nimport { createWebAppSchema } from './apps/index.js';\nimport { appEntityType } from './apps/types.js';\nimport { definitionSchema } from './creator/schema-creator.js';\nimport { createFeaturesSchema } from './features/index.js';\nimport { createEnumSchema } from './models/enums.js';\nimport { createModelSchema } from './models/index.js';\nimport { createPluginsSchema } from './plugins/index.js';\nimport { createSettingsSchema } from './settings.js';\nexport const createAppSchema = definitionSchema((ctx) => zRefBuilder(z.discriminatedUnion('type', [\n createBackendAppSchema(ctx),\n createWebAppSchema(ctx),\n createAdminAppSchema(ctx),\n]), (builder) => {\n builder.addEntity({\n type: appEntityType,\n addContext: 'app',\n });\n}));\nexport const createProjectDefinitionSchema = definitionSchema((ctx) => z.object({\n cliVersion: z.string().nullish(),\n apps: z.array(createAppSchema(ctx)).default([]),\n features: createFeaturesSchema(ctx),\n models: z.array(createModelSchema(ctx)).default([]),\n enums: z.array(createEnumSchema(ctx)).optional(),\n isInitialized: z.boolean().default(false),\n schemaVersion: z.number(),\n plugins: createPluginsSchema(ctx).optional(),\n settings: createSettingsSchema(ctx),\n}));\n//# sourceMappingURL=project-definition.js.map","function byId(projectDefinition, id) {\n return projectDefinition.enums?.find((e) => e.id === id);\n}\nfunction byIdOrThrow(projectDefinition, id) {\n const enumConfig = byId(projectDefinition, id);\n if (!enumConfig) {\n throw new Error(`Could not find enum with ID ${id}`);\n }\n return enumConfig;\n}\nexport const EnumUtils = {\n byId,\n byIdOrThrow,\n};\n//# sourceMappingURL=enum-utils.js.map","import { isEqual } from 'es-toolkit';\nimport { ModelUtils } from './model-utils.js';\nfunction isScalarUnique(model, fieldId) {\n const { primaryKeyFieldRefs } = model.model;\n const uniqueConstraints = model.model.uniqueConstraints ?? [];\n return ((primaryKeyFieldRefs.length === 1 &&\n primaryKeyFieldRefs.includes(fieldId)) ||\n uniqueConstraints.some((c) => c.fields.length === 1 && c.fields[0].fieldRef === fieldId));\n}\nfunction areScalarsUnique(model, fieldIds) {\n const sortedFieldIds = [...fieldIds].sort();\n return ((isEqual([...model.model.primaryKeyFieldRefs].sort(), sortedFieldIds) ||\n model.model.uniqueConstraints?.some((c) => isEqual(c.fields.map((f) => f.fieldRef).sort(), sortedFieldIds))) ??\n false);\n}\nfunction getRelationLocalFields(model, relation) {\n return relation.references.map((r) => {\n const field = model.model.fields.find((f) => f.id === r.localRef);\n if (!field) {\n throw new Error(`Could not find field ${r.localRef} from relation ${relation.name} in model ${model.name}`);\n }\n return field;\n });\n}\nfunction isRelationOptional(model, relation) {\n const localFields = getRelationLocalFields(model, relation);\n return localFields.some((f) => f.isOptional);\n}\nfunction isRelationOneToOne(model, relation) {\n const localFields = getRelationLocalFields(model, relation);\n const localFieldIds = localFields.map((f) => f.id).sort();\n // check if the local fields are a primary key or unique constraint\n return areScalarsUnique(model, localFieldIds);\n}\nfunction getModelValidator(modelField) {\n switch (modelField.type) {\n case 'boolean': {\n return 'boolean()';\n }\n case 'date': {\n return 'string()';\n }\n case 'int':\n case 'float': {\n return 'number()';\n }\n case 'dateTime':\n case 'string':\n case 'decimal':\n case 'uuid': {\n return 'string()';\n }\n default: {\n throw new Error(`Unsupported validator for ${modelField.type}`);\n }\n }\n}\nfunction getModelFieldValidation(projectDefinition, modelId, fieldId, preProcess) {\n const model = ModelUtils.byIdOrThrow(projectDefinition, modelId);\n const field = model.model.fields.find((f) => f.id === fieldId);\n if (!field) {\n throw new Error(`Field ${fieldId} not found in model ${model.name}`);\n }\n const nullishSuffix = field.isOptional ? '.nullish()' : '';\n if (field.type === 'int') {\n return `z.number().or(z.string()).pipe(z.coerce.number().finite().int())${nullishSuffix}`;\n }\n if (field.type === 'float') {\n return `z.number().or(z.string()).pipe(z.coerce.number().finite())${nullishSuffix}`;\n }\n const validator = `z.${getModelValidator(field)}${nullishSuffix}`;\n if (!preProcess) {\n return validator;\n }\n return validator;\n}\nexport const ModelFieldUtils = {\n isScalarUnique,\n areScalarsUnique,\n getRelationLocalFields,\n isRelationOptional,\n isRelationOneToOne,\n getModelFieldValidation,\n};\n//# sourceMappingURL=model-field-utils.js.map","import { modelTransformerSpec } from '#src/schema/index.js';\nfunction getTransformer(transformer, pluginStore) {\n const transformers = pluginStore.getPluginSpec(modelTransformerSpec);\n return transformers.getModelTransformer(transformer.type);\n}\nfunction getTransformName(definitionContainer, transformer, pluginStore) {\n const transformers = pluginStore.getPluginSpec(modelTransformerSpec);\n return transformers\n .getModelTransformer(transformer.type)\n .getName(definitionContainer, transformer);\n}\nexport const ModelTransformerUtils = { getTransformer, getTransformName };\n//# sourceMappingURL=model-transformer-utils.js.map","import { pluginConfigSpec } from '#src/plugins/index.js';\nimport { pluginEntityType } from '#src/schema/index.js';\nfunction byId(projectDefinition, id) {\n const pluginEntityId = pluginEntityType.idFromKey(id);\n const plugin = projectDefinition.plugins?.find((m) => m.id === pluginEntityId);\n return plugin ?? null;\n}\nfunction byIdOrThrow(projectDefinition, id) {\n const plugin = byId(projectDefinition, id);\n if (!plugin) {\n throw new Error(`Could not find plugin with ID ${id}`);\n }\n return plugin;\n}\nfunction configByIdOrThrow(projectDefinition, id) {\n const def = byIdOrThrow(projectDefinition, id);\n return def.config;\n}\nfunction setPluginConfig(projectDefinition, plugin, pluginConfig, pluginImplementationStore) {\n const plugins = projectDefinition.plugins ?? [];\n const pluginEntityId = pluginEntityType.idFromKey(plugin.id);\n const pluginConfigService = pluginImplementationStore.getPluginSpec(pluginConfigSpec);\n const lastMigrationVersion = pluginConfigService.getLastMigrationVersion(plugin.id);\n projectDefinition.plugins = plugins.some((p) => p.id === pluginEntityId)\n ? plugins.map((p) => pluginEntityId === p.id ? { ...p, config: pluginConfig } : p)\n : [\n ...plugins,\n {\n id: pluginEntityId,\n name: plugin.name,\n version: plugin.version,\n packageName: plugin.packageName,\n config: pluginConfig,\n configSchemaVersion: lastMigrationVersion,\n },\n ];\n}\nexport const PluginUtils = {\n byId,\n byIdOrThrow,\n setPluginConfig,\n configByIdOrThrow,\n};\n//# sourceMappingURL=plugin-utils.js.map","import { z } from 'zod';\nimport { initializePlugins } from '#src/plugins/imports/loader.js';\nimport { pluginConfigSpec, zPluginWrapper } from '#src/plugins/index.js';\nimport { parseSchemaWithReferences } from '#src/references/parse-schema-with-references.js';\nimport { adminCrudInputSpec, modelTransformerSpec } from '#src/schema/index.js';\nimport { basePluginDefinitionSchema } from '#src/schema/plugins/definition.js';\nimport { createProjectDefinitionSchema } from '#src/schema/project-definition.js';\nconst COMMON_SPEC_IMPLEMENTATIONS = [pluginConfigSpec, modelTransformerSpec, adminCrudInputSpec];\n/**\n * Creates a plugin implementation store from the project definition and plugin store,\n * initializing the set of plugins enabled in the project definition.\n *\n * @param pluginStore The plugin store to use\n * @param projectDefinition The project definition to use\n * @returns The plugin implementation store\n */\nexport function createPluginImplementationStore(pluginStore, projectDefinition) {\n const { availablePlugins, builtinSpecImplementations = [] } = pluginStore;\n const pluginData = z\n .object({\n plugins: z.array(basePluginDefinitionSchema).optional(),\n })\n .parse(projectDefinition);\n const { plugins = [] } = pluginData;\n // initialize plugins\n const initialImplementations = [\n ...COMMON_SPEC_IMPLEMENTATIONS,\n ...builtinSpecImplementations,\n ];\n const specImplementations = {};\n for (const spec of initialImplementations) {\n if ('type' in spec) {\n if (typeof spec.defaultInitializer !== 'function') {\n throw new TypeError(`Spec ${spec.type} does not have a defaultInitializer function!`);\n }\n specImplementations[spec.name] = spec.defaultInitializer();\n }\n else {\n specImplementations[spec.spec.name] = spec.implementation;\n }\n }\n const pluginsWithModules = plugins.map((p) => {\n const plugin = availablePlugins.find(({ metadata }) => metadata.name === p.name && metadata.packageName === p.packageName);\n const pluginName = `${p.packageName}/${p.name}`;\n if (!plugin) {\n throw new Error(`Unable to find plugin ${pluginName}!`);\n }\n return {\n id: plugin.metadata.id,\n name: pluginName,\n pluginModules: plugin.modules,\n };\n });\n return initializePlugins(pluginsWithModules, specImplementations);\n}\n/**\n * Creates a project definition schema with the given context.\n *\n * @param projectDefinition The project definition to create a schema for\n * @param context The context to use\n * @return The project definition schema\n */\nexport function createProjectDefinitionSchemaWithContext(projectDefinition, context) {\n const { pluginStore } = context;\n const pluginImplementationStore = createPluginImplementationStore(pluginStore, projectDefinition);\n return zPluginWrapper(createProjectDefinitionSchema({ plugins: pluginImplementationStore }), pluginImplementationStore);\n}\nexport function parseProjectDefinitionWithContext(projectDefinition, context) {\n const schema = createProjectDefinitionSchemaWithContext(projectDefinition, context);\n return schema.parse(projectDefinition);\n}\n/**\n * Parses a project definition and obtains entities/references from it.\n *\n * @param projectDefinition The project definition to parse\n * @param context The context to use\n * @returns The parsed project definition with entities/references\n */\nexport function parseProjectDefinitionWithReferences(projectDefinition, context) {\n const schema = createProjectDefinitionSchemaWithContext(projectDefinition, context);\n const definition = parseSchemaWithReferences(schema, projectDefinition);\n return { definition, pluginStore: schema._def.pluginStore };\n}\n//# sourceMappingURL=parser.js.map","import { stringifyPrettyStable } from '@baseplate-dev/utils';\nimport { produce } from 'immer';\nimport { createProjectDefinitionSchemaWithContext, parseProjectDefinitionWithReferences, } from '#src/parser/parser.js';\nimport { deserializeSchemaWithReferences, fixRefDeletions, serializeSchemaFromRefPayload, } from '#src/references/index.js';\n/**\n * Container for a project definition that includes references and entities.\n *\n * This class provides utility methods for working with a project definition\n * such as the ability to fetch an entity by ID.\n */\nexport class ProjectDefinitionContainer {\n constructor(config, parserContext, pluginStore) {\n Object.defineProperty(this, \"pluginStore\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: pluginStore\n });\n Object.defineProperty(this, \"refPayload\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"definition\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"references\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"entities\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"parserContext\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.refPayload = config;\n this.definition = config.data;\n this.references = config.references;\n this.entities = config.entities;\n this.parserContext = parserContext;\n }\n nameFromId(id) {\n if (!id)\n return undefined;\n const name = this.entities.find((e) => e.id === id)?.name;\n if (!name) {\n throw new Error(`Could not find name for id ${id}`);\n }\n return name;\n }\n /**\n * Fetches the name of an entity by its ID, returning undefined if the ID is not found.\n *\n * @param id The ID of the entity to fetch\n * @returns The name of the entity, or undefined if the ID is not found\n */\n safeNameFromId(id) {\n if (!id)\n return undefined;\n const name = this.entities.find((e) => e.id === id)?.name;\n return name;\n }\n /**\n * Fix any reference deletions that would occur when applying the given setter.\n *\n * @param setter A function that modifies the project definition\n * @returns A result indicating whether the reference deletions were fixed\n */\n fixRefDeletions(setter) {\n const newDefinition = produce(setter)(this.definition);\n const schemaWithContext = createProjectDefinitionSchemaWithContext(newDefinition, this.parserContext);\n return fixRefDeletions(schemaWithContext, newDefinition);\n }\n /**\n * Serializes the project definition resolving references to their names for easier reading.\n *\n * @returns The serialized contents of the project definition\n */\n toSerializedContents() {\n return stringifyPrettyStable(serializeSchemaFromRefPayload(this.refPayload));\n }\n /**\n * Creates a new ProjectDefinitionContainer from a raw project definition.\n *\n * @param definition The raw project definition\n * @param context The parser context to use\n * @returns A new ProjectDefinitionContainer\n */\n static fromDefinition(definition, context) {\n const { definition: parsedDefinition, pluginStore } = parseProjectDefinitionWithReferences(definition, context);\n return new ProjectDefinitionContainer(parsedDefinition, context, pluginStore);\n }\n /**\n * Creates a new ProjectDefinitionContainer from a serialized configuration.\n *\n * @param config The serialized configuration\n * @param context The parser context to use\n * @returns A new ProjectDefinitionContainer\n */\n static fromSerializedConfig(config, context) {\n const projectDefinitionSchemaWithContext = createProjectDefinitionSchemaWithContext(config, context);\n return new ProjectDefinitionContainer(deserializeSchemaWithReferences(projectDefinitionSchemaWithContext, config), context, projectDefinitionSchemaWithContext.pluginStore);\n }\n}\n//# sourceMappingURL=project-definition-container.js.map","import { omit } from 'es-toolkit';\nimport { modelUniqueConstraintEntityType } from '../schema/index.js';\nimport { createSchemaMigration } from './types.js';\nexport const migration005PrimaryUniqueRefs = createSchemaMigration({\n version: 5,\n name: 'primaryUniqueRefs',\n description: 'Store primary key in primaryKeyFieldRefs field and unique constraints in unique constraints field',\n migrate: (config) => ({\n ...config,\n models: config.models.map((model) => {\n const oldModel = model.model;\n const primaryKeyFieldRefs = oldModel.primaryKeys?.length\n ? oldModel.primaryKeys\n : oldModel.fields.filter((f) => f.isId).map((f) => f.name);\n return {\n ...model,\n model: {\n ...omit(oldModel, ['primaryKeys', 'uniqueConstraints']),\n primaryKeyFieldRefs,\n fields: oldModel.fields.map((f) => omit(f, ['isId', 'isUnique'])),\n uniqueConstraints: [\n ...(oldModel.uniqueConstraints?.map((c) => ({\n id: modelUniqueConstraintEntityType.generateNewId(),\n fields: c.fields.map((f) => ({\n fieldRef: f.name,\n })),\n })) ?? []),\n ...oldModel.fields\n .filter((f) => f.isUnique)\n .map((f) => ({\n id: modelUniqueConstraintEntityType.generateNewId(),\n fields: [{ fieldRef: f.name }],\n })),\n ],\n },\n };\n }),\n }),\n});\n//# sourceMappingURL=migration-005-primary-unique-refs.js.map","import { omit } from 'es-toolkit';\nimport { createSchemaMigration } from './types.js';\nexport const migration006IndividualServiceControllers = createSchemaMigration({\n version: 6,\n name: 'individualServiceControllers',\n description: 'Make service controller fields individually enabled',\n migrate: (config) => ({\n ...config,\n models: config.models.map((model) => {\n const { build, create, update, delete: deleteOp, ...rest } = model.service ?? {};\n if (!build) {\n return omit(model, ['service']);\n }\n const isCreateEnabled = create &&\n (!!create.fields?.length || !!create.transformerNames?.length);\n const isUpdateEnabled = update &&\n (!!update.fields?.length || !!update.transformerNames?.length);\n const isDeleteEnabled = !deleteOp?.disabled;\n return {\n ...model,\n service: {\n ...rest,\n create: isCreateEnabled ? { ...create, enabled: true } : undefined,\n update: isUpdateEnabled ? { ...update, enabled: true } : undefined,\n delete: isDeleteEnabled ? { enabled: true } : undefined,\n },\n };\n }),\n }),\n});\n//# sourceMappingURL=migration-006-individual-service-controllers.js.map","import { pickBy } from 'es-toolkit';\nexport function stripUndefinedChildren(obj) {\n return pickBy(obj, (value) => value !== undefined);\n}\nexport function undefinedIfEmptyObject(obj) {\n return Object.keys(obj).every((key) => obj[key] === undefined)\n ? undefined\n : obj;\n}\n//# sourceMappingURL=utils.js.map","import { createSchemaMigration } from './types.js';\nimport { stripUndefinedChildren, undefinedIfEmptyObject } from './utils.js';\nexport const migration007ModelGraphql = createSchemaMigration({\n version: 7,\n name: 'modelGraphql',\n description: 'Migrate model schema to GraphQL schema',\n migrate: (config) => ({\n ...config,\n models: config.models.map((model) => {\n const { schema, ...rest } = model;\n const { buildObjectType, exposedFields, exposedLocalRelations, exposedForeignRelations, buildQuery, buildMutations, authorize, } = schema ?? {};\n return stripUndefinedChildren({\n ...rest,\n graphql: undefinedIfEmptyObject(stripUndefinedChildren({\n objectType: buildObjectType\n ? {\n enabled: !!buildObjectType,\n fields: exposedFields ?? [],\n localRelations: exposedLocalRelations ?? [],\n foreignRelations: exposedForeignRelations ?? [],\n }\n : undefined,\n queries: buildQuery\n ? {\n get: {\n enabled: buildQuery,\n roles: authorize?.read ?? [],\n },\n list: {\n enabled: buildQuery,\n roles: authorize?.read ?? [],\n },\n }\n : undefined,\n mutations: buildMutations\n ? undefinedIfEmptyObject({\n create: !authorize || authorize.create.length > 0\n ? {\n enabled: true,\n roles: authorize?.create ?? [],\n }\n : undefined,\n update: !authorize || authorize.update.length > 0\n ? {\n enabled: true,\n roles: authorize?.update ?? [],\n }\n : undefined,\n delete: !authorize || authorize.delete.length > 0\n ? {\n enabled: true,\n roles: authorize?.delete ?? [],\n }\n : undefined,\n })\n : undefined,\n })),\n });\n }),\n }),\n});\n//# sourceMappingURL=migration-007-model-graphql.js.map","import { authRoleEntityType } from '#src/schema/index.js';\nimport { createSchemaMigration } from './types.js';\nconst AUTH_DEFAULT_ROLES = [\n {\n name: 'public',\n comment: 'All users (including unauthenticated and authenticated users)',\n builtIn: true,\n },\n {\n name: 'user',\n comment: 'All authenticated users',\n builtIn: true,\n },\n {\n name: 'system',\n comment: 'System processes without a user context, e.g. background jobs',\n builtIn: true,\n },\n];\nexport const migration008AnonymousPublicRole = createSchemaMigration({\n version: 8,\n name: 'anonymousPublicRole',\n description: 'Migrate anonymous to public role',\n migrate: (config) => ({\n ...config,\n auth: config.auth && {\n ...config.auth,\n roles: [\n ...AUTH_DEFAULT_ROLES.map((role) => {\n const existingRole = config.auth?.roles?.find((r) => r.name === role.name ||\n (r.name === 'anonymous' && role.name === 'public'));\n return {\n id: existingRole?.id ?? authRoleEntityType.generateNewId(),\n name: role.name,\n comment: role.comment,\n builtIn: true,\n };\n }),\n ...(config.auth.roles\n ?.filter((r) => !AUTH_DEFAULT_ROLES.some((role) => role.name === r.name) &&\n r.name !== 'anonymous')\n .map((r) => ({\n id: r.id,\n name: r.name,\n comment: r.comment,\n builtIn: false,\n })) ?? []),\n ],\n },\n }),\n});\n//# sourceMappingURL=migration-008-anonymous-public-role.js.map","import { cloneDeep } from 'es-toolkit';\n/**\n * Transform a value at a specific path in a JSON object.\n *\n * @param data - The JSON object to transform.\n * @param path - The path to the value to transform, using dot notation (* matches all elements in an array and ** matches all elements in an object).\n * @param transformFn - The transformation function to apply to the value.\n * @returns The transformed JSON object.\n */\nexport function transformJsonPath(data, path, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- make it easier to use any transform functions\ntransformFn) {\n // Split the path into parts\n const pathParts = path.split('.');\n // Recursive function to navigate and transform the JSON\n const navigateAndTransform = (current, parts) => {\n if (parts.length === 0) {\n // If at the end of the path, apply the transformation function\n return transformFn(cloneDeep(current));\n }\n const [currentPart, ...remainingParts] = parts;\n if (currentPart === '*') {\n // If the current path part is a wildcard\n if (!Array.isArray(current)) {\n throw new TypeError(`Expected an array at ${pathParts.join('.')}`);\n }\n // Apply transformation recursively for each item\n return current.map((item) => navigateAndTransform(item, remainingParts));\n }\n else {\n if (typeof current !== 'object') {\n throw new TypeError(`Expected an object at ${pathParts.join('.')}, got ${typeof current}`);\n }\n // Navigate deeper\n if (current === null) {\n return current;\n }\n if (currentPart === '**') {\n return Object.fromEntries(Object.entries(current).map(([key, value]) => [\n key,\n navigateAndTransform(value, remainingParts),\n ]));\n }\n if (!(currentPart in current)) {\n return current;\n }\n return {\n ...current,\n [currentPart]: navigateAndTransform(current[currentPart], remainingParts),\n };\n }\n };\n // Start the navigation and transformation process\n return navigateAndTransform(data, pathParts);\n}\nexport function renameObjectKeysTransform(renames) {\n return (data) => {\n if (data === null)\n return null;\n if (typeof data !== 'object') {\n throw new TypeError(`Expected an object, got ${typeof data}`);\n }\n return Object.fromEntries(Object.entries(data).map(([key, value]) => [renames[key] || key, value]));\n };\n}\n//# sourceMappingURL=transform-json-path.js.map","import { flow } from 'es-toolkit';\nimport { renameObjectKeysTransform, transformJsonPath, } from './transform-json-path.js';\nimport { createSchemaMigration } from './types.js';\nexport const migration009RenameRefs = createSchemaMigration({\n version: 9,\n name: 'renameRefs',\n description: 'Rename zRefs to be suffixed with \"Ref\"',\n migrate: (config) => {\n // const definition: ProjectDefinition = config;\n // const adminConfig: AdminAppConfig;\n // adminConfig.sections?.[0].form.fields[0];\n const transform = flow((c) => transformJsonPath(c, 'apps.*.sections.*', renameObjectKeysTransform({\n feature: 'featureRef',\n modelName: 'modelRef',\n })), (c) => transformJsonPath(c, 'apps.*.sections.*.form.fields.*', renameObjectKeysTransform({\n localRelationName: 'localRelationRef',\n modelField: 'modelFieldRef',\n localRelation: 'localRelationRef',\n modelRelation: 'modelRelationRef',\n embeddedFormName: 'embeddedFormRef',\n })), (c) => transformJsonPath(c, 'apps.*.sections.*.embeddedForms.*.form.fields.*', renameObjectKeysTransform({\n localRelationName: 'localRelationRef',\n localRelation: 'localRelationRef',\n modelField: 'modelFieldRef',\n modelRelation: 'modelRelationRef',\n embeddedFormName: 'embeddedFormRef',\n })), (c) => transformJsonPath(c, 'apps.*.sections.*.table.columns.*.display', renameObjectKeysTransform({\n modelField: 'modelFieldRef',\n localRelationName: 'localRelationRef',\n })), (c) => transformJsonPath(c, 'apps.*.sections.*.embeddedForms.*.table.columns.*.display', renameObjectKeysTransform({\n modelField: 'modelFieldRef',\n localRelationName: 'localRelationRef',\n })), (c) => transformJsonPath(c, 'apps.*.sections.*.embeddedForms.*', renameObjectKeysTransform({\n modelName: 'modelRef',\n })), (c) => transformJsonPath(c, 'auth', renameObjectKeysTransform({\n userModel: 'userModelRef',\n userRoleModel: 'userRoleModelRef',\n authFeaturePath: 'authFeatureRef',\n accountsFeaturePath: 'accountsFeatureRef',\n })), (c) => transformJsonPath(c, 'enums.*', renameObjectKeysTransform({\n feature: 'featureRef',\n })), (c) => transformJsonPath(c, 'models.*.model.fields.*.options', renameObjectKeysTransform({\n enumType: 'enumRef',\n defaultEnumValue: 'defaultEnumValueRef',\n })), (c) => transformJsonPath(c, 'models.*', renameObjectKeysTransform({\n feature: 'featureRef',\n })), (c) => transformJsonPath(c, 'models.*.model.relations.*.references.*', renameObjectKeysTransform({\n local: 'localRef',\n foreign: 'foreignRef',\n })), (c) => transformJsonPath(c, 'models.*.model.relations.*', renameObjectKeysTransform({\n modelName: 'modelRef',\n })), (c) => transformJsonPath(c, 'plugins.*.config.categories.*', renameObjectKeysTransform({\n usedByRelation: 'usedByRelationRef',\n defaultAdapter: 'defaultAdapterRef',\n })));\n return transform(config);\n },\n});\n//# sourceMappingURL=migration-009-rename-refs.js.map","import { converter, formatHex, parse } from 'culori';\n/**\n * Parse an OKLCH color string into an Oklch object.\n * @param oklch - The OKLCH color string in format \"oklch(l c h [/ a])\" (e.g. \"oklch(0.5 0.2 180 / 0.3)\")\n * @returns The Oklch object\n */\nexport function parseOklch(color) {\n const parsedColor = parse(color);\n if (!parsedColor || parsedColor.mode !== 'oklch') {\n throw new Error(`Invalid OKLCH color string: ${color}`);\n }\n return parsedColor;\n}\n/**\n * Convert an OKLCH color string to a hex color.\n * @param oklch - The OKLCH color string in format \"l c h\" (e.g. \"0.5 0.2 180\")\n * @returns The hex color string\n */\nexport function convertOklchToHex(oklch) {\n const color = typeof oklch === 'string' ? parseOklch(oklch) : oklch;\n const convert = converter('rgb');\n const rgb = convert(color);\n return formatHex(rgb);\n}\n/**\n * Convert a hex color to an OKLCH color string.\n * @param hex - The hex color string\n * @returns The OKLCH color string in format \"oklch(l c h [/ a])\"\n */\nexport function convertHexToOklch(hex) {\n const convert = converter('oklch');\n const oklch = convert(hex);\n if (!oklch) {\n return 'oklch(0 0 0)';\n }\n return `oklch(${oklch.l.toFixed(3)} ${oklch.c.toFixed(3)} ${oklch.h?.toFixed(3) ?? 0}${oklch.alpha === undefined ? '' : `/ ${oklch.alpha.toFixed(3)}`})`;\n}\n//# sourceMappingURL=color-conversions.js.map","import { flow } from 'es-toolkit';\nimport { convertHexToOklch } from '#src/utils/color-conversions.js';\nimport { transformJsonPath } from './transform-json-path.js';\nimport { createSchemaMigration } from './types.js';\nfunction transformThemeColor(color) {\n if (color.startsWith('oklch'))\n return color;\n if (color.startsWith('#'))\n return convertHexToOklch(color);\n throw new Error(`Invalid color: ${color}`);\n}\nexport const migration010HexToOklch = createSchemaMigration({\n version: 10,\n name: 'hexToOklch',\n description: 'Convert hex colors to OKLCH in theme configuration',\n migrate: (config) => {\n if (!config.theme) {\n return config;\n }\n const transform = flow((c) => transformJsonPath(c, 'theme.palettes.**.customBase', transformThemeColor), (c) => transformJsonPath(c, 'theme.palettes.**.shades.**', transformThemeColor), (c) => transformJsonPath(c, 'theme.colors.**.**', transformThemeColor));\n return transform(config);\n },\n});\n//# sourceMappingURL=migration-010-hex-to-oklch.js.map","import { pluginEntityType } from '#src/schema/plugins/index.js';\nimport { transformJsonPath } from './transform-json-path.js';\nimport { createSchemaMigration } from './types.js';\nexport const migration011PluginId = createSchemaMigration({\n version: 11,\n name: 'pluginId',\n description: 'Convert plugin ids to use the plugin entity type',\n migrate: (config) => transformJsonPath(config, 'plugins.*.id', (id) => pluginEntityType.idFromKey(id)),\n});\n//# sourceMappingURL=migration-011-plugin-id.js.map","import { createSchemaMigration } from './types.js';\nexport const migration012MigrateAuthConfig = createSchemaMigration({\n version: 12,\n name: 'migrateAuthConfig',\n description: 'Migrate auth config to auth0 plugin config',\n migrate: (config) => {\n if (!config.auth?.useAuth0) {\n return {\n ...config,\n auth: undefined,\n };\n }\n const auth0PluginId = 'plugin:halfdomelabs_baseplate-plugin-auth_auth0';\n const auth0Config = {\n userAccountModelRef: config.auth.userModelRef,\n authFeatureRef: config.auth.authFeatureRef,\n roles: config.auth.roles.map((role) => ({\n id: role.id,\n name: role.name,\n comment: role.comment,\n builtIn: role.builtIn,\n })),\n };\n const plugins = config.plugins ?? [];\n const pluginIndex = plugins.findIndex((p) => p.id === auth0PluginId);\n if (pluginIndex === -1) {\n plugins.push({\n id: auth0PluginId,\n name: 'auth0',\n packageName: '@halfdomelabs/baseplate-plugin-auth',\n version: '0.1.0',\n config: auth0Config,\n });\n }\n else {\n plugins[pluginIndex] = {\n ...plugins[pluginIndex],\n config: auth0Config,\n };\n }\n return {\n ...config,\n auth: undefined,\n plugins,\n };\n },\n});\n//# sourceMappingURL=migration-012-migrate-auth-config.js.map","import { createSchemaMigration } from './types.js';\nexport const migration013MoveGeneralSettings = createSchemaMigration({\n version: 13,\n name: 'moveGeneralSettings',\n description: 'Move general settings fields from root to settings.general',\n migrate: (config) => {\n const { name, packageScope, portOffset, templateExtractor, theme, ...rest } = config;\n return {\n ...rest,\n settings: {\n general: {\n name,\n packageScope,\n portOffset,\n },\n templateExtractor,\n theme,\n },\n };\n },\n});\n//# sourceMappingURL=migration-013-move-general-settings.js.map","import { createSchemaMigration } from './types.js';\nconst PLUGIN_MAPPINGS = {\n 'plugin:halfdomelabs_baseplate-plugin-auth_auth0': 'plugin:baseplate-dev_plugin-auth_auth0',\n 'plugin:halfdomelabs_baseplate-plugin-storage_storage': 'plugin:baseplate-dev_plugin-storage_storage',\n};\nexport const migration014MigratePluginIds = createSchemaMigration({\n version: 14,\n name: 'migratePluginIds',\n description: 'Migrate plugin IDs and package names to new format and resets client version in preparation for 0.1.0 reset',\n migrate: (config) => {\n if (!config.plugins) {\n return config;\n }\n const plugins = config.plugins.map((plugin) => {\n const newId = plugin.id in PLUGIN_MAPPINGS\n ? PLUGIN_MAPPINGS[plugin.id]\n : plugin.id;\n const newPackageName = plugin.packageName.replace('@halfdomelabs/baseplate-', '@baseplate-dev/');\n return {\n ...plugin,\n id: newId,\n packageName: newPackageName,\n };\n });\n return {\n ...config,\n plugins,\n cliVersion: '0.1.0',\n };\n },\n});\n//# sourceMappingURL=migration-014-migrate-plugin-ids.js.map","import { migration005PrimaryUniqueRefs } from './migration-005-primary-unique-refs.js';\nimport { migration006IndividualServiceControllers } from './migration-006-individual-service-controllers.js';\nimport { migration007ModelGraphql } from './migration-007-model-graphql.js';\nimport { migration008AnonymousPublicRole } from './migration-008-anonymous-public-role.js';\nimport { migration009RenameRefs } from './migration-009-rename-refs.js';\nimport { migration010HexToOklch } from './migration-010-hex-to-oklch.js';\nimport { migration011PluginId } from './migration-011-plugin-id.js';\nimport { migration012MigrateAuthConfig } from './migration-012-migrate-auth-config.js';\nimport { migration013MoveGeneralSettings } from './migration-013-move-general-settings.js';\nimport { migration014MigratePluginIds } from './migration-014-migrate-plugin-ids.js';\nexport const SCHEMA_MIGRATIONS = [\n migration005PrimaryUniqueRefs,\n migration006IndividualServiceControllers,\n migration007ModelGraphql,\n migration008AnonymousPublicRole,\n migration009RenameRefs,\n migration010HexToOklch,\n migration011PluginId,\n migration012MigrateAuthConfig,\n migration013MoveGeneralSettings,\n migration014MigratePluginIds,\n];\nexport function isMigrateableProjectDefinition(projectDefinition) {\n return (typeof projectDefinition === 'object' &&\n !!projectDefinition &&\n 'schemaVersion' in projectDefinition);\n}\nexport class SchemaMigrationError extends Error {\n constructor(migrationName, cause) {\n super(`Schema migration ${migrationName} failed: ${cause instanceof Error ? cause.message : String(cause)}`);\n Object.defineProperty(this, \"migrationName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"cause\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = 'SchemaMigrationError';\n this.migrationName = migrationName;\n this.cause = cause;\n }\n}\nexport function runSchemaMigrations(config) {\n const { schemaVersion } = config;\n const unappliedMigrations = SCHEMA_MIGRATIONS.filter((m) => m.version > schemaVersion).sort((a, b) => a.version - b.version);\n let migratedDefinition = config;\n for (const migration of unappliedMigrations) {\n try {\n migratedDefinition = {\n ...migration.migrate(migratedDefinition),\n schemaVersion: migration.version,\n };\n }\n catch (cause) {\n throw new SchemaMigrationError(migration.name, cause);\n }\n }\n return { migratedDefinition, appliedMigrations: unappliedMigrations };\n}\nexport function getLatestMigrationVersion() {\n return SCHEMA_MIGRATIONS.at(-1)?.version ?? 0;\n}\n//# sourceMappingURL=index.js.map","import { getLatestMigrationVersion } from '#src/migrations/index.js';\nimport { PluginImplementationStore, zPluginWrapper, } from '#src/plugins/index.js';\nimport { deserializeSchemaWithReferences } from '#src/references/deserialize-schema.js';\nimport { createProjectDefinitionSchema } from '#src/schema/project-definition.js';\nimport { ProjectDefinitionContainer } from './project-definition-container.js';\nexport function createTestProjectDefinition(input = {}) {\n return {\n settings: {\n general: {\n name: 'test-project',\n packageScope: '',\n portOffset: 3000,\n },\n },\n features: [],\n cliVersion: '1.0.0',\n apps: [],\n models: [],\n isInitialized: true,\n schemaVersion: getLatestMigrationVersion(),\n ...input,\n };\n}\nexport function createTestProjectDefinitionInput(input = {}) {\n return {\n ...createTestProjectDefinition(),\n ...input,\n };\n}\nexport function createTestProjectDefinitionContainer(input = {}) {\n const pluginStore = {\n availablePlugins: [],\n };\n const pluginImplementationStore = new PluginImplementationStore({});\n const projectDefinitionSchema = createProjectDefinitionSchema({\n plugins: pluginImplementationStore,\n });\n const schemaWithPlugins = zPluginWrapper(projectDefinitionSchema, pluginImplementationStore);\n const resolvedRefPayload = deserializeSchemaWithReferences(schemaWithPlugins, createTestProjectDefinitionInput(input));\n return new ProjectDefinitionContainer(resolvedRefPayload, { pluginStore }, pluginImplementationStore);\n}\n//# sourceMappingURL=project-definition-container.test-utils.js.map","export const AVAILABLE_FLAGS = ['TEMPLATE_EXTRACTOR'];\n//# sourceMappingURL=flags.js.map","import { COLOR_PALETTES, FIXED_COLOR_MAPPINGS } from '#src/constants/colors.js';\nimport { convertOklchToHex } from './color-conversions.js';\n/**\n * Convert a color name to a hex color. Can be one of the following:\n * - A fixed color name (e.g. 'white', 'black').\n * - A color palette name (e.g. 'slate-500', 'gray-300').\n * - A hex color (e.g. '#ff0000').\n * - A OKLCH color (e.g. 'oklch(0.5 0.2 180 / 0.3)').\n *\n * @param color - The color name to convert.\n * @returns The OKLCH color.\n */\nexport function convertColorNameToOklch(color) {\n const fixedColorMapping = FIXED_COLOR_MAPPINGS[color];\n if (fixedColorMapping) {\n return fixedColorMapping;\n }\n const colorComponents = color.split('-');\n if (colorComponents.length === 2) {\n const paletteName = colorComponents[0];\n if (Object.prototype.hasOwnProperty.call(COLOR_PALETTES, paletteName)) {\n const palette = COLOR_PALETTES[colorComponents[0]];\n const shade = palette[colorComponents[1]];\n if (shade) {\n return shade;\n }\n }\n }\n return color;\n}\nlet reverseColorMapping = null;\nfunction getReverseColorMapping() {\n if (!reverseColorMapping) {\n reverseColorMapping = {};\n for (const [key, value] of Object.entries(FIXED_COLOR_MAPPINGS)) {\n reverseColorMapping[value] = key;\n }\n for (const [paletteName, palette] of Object.entries(COLOR_PALETTES)) {\n for (const [shade, hex] of Object.entries(palette)) {\n reverseColorMapping[hex] = `${paletteName}-${shade}`;\n }\n }\n }\n return reverseColorMapping;\n}\n/**\n * Convert an OKLCH color to a color name.\n * @param oklch - The OKLCH color to convert.\n * @returns The color name.\n */\nexport function convertOklchToColorName(oklch) {\n return getReverseColorMapping()[oklch] ?? convertOklchToHex(oklch);\n}\n//# sourceMappingURL=color-names.js.map","import { dasherize, underscore } from 'inflection';\nimport { COLOR_PALETTES } from '#src/constants/colors.js';\nimport { THEME_COLORS } from '#src/constants/theme-colors.js';\nimport { convertColorNameToOklch } from '#src/utils/color-names.js';\nfunction getDefaultOklch(palettes, color) {\n if ('color' in color) {\n return convertColorNameToOklch(color.color);\n }\n if ('primaryShade' in color) {\n return palettes.primary.shades[color.primaryShade];\n }\n return palettes.base.shades[color.baseShade];\n}\nexport function getDefaultThemeColorFromShade(palettes, mode, themeColorKey) {\n const defaultColorConfig = THEME_COLORS[themeColorKey][mode === 'light' ? 'lightDefault' : 'darkDefault'];\n return getDefaultOklch(palettes, defaultColorConfig);\n}\nexport function generateThemeColorsFromShade(palettes, mode, previousValues) {\n const result = {};\n for (const [key, config] of Object.entries(THEME_COLORS)) {\n const themeColorKey = key;\n const defaultColorConfig = mode === 'light' ? config.lightDefault : config.darkDefault;\n const newDefaultColor = getDefaultOklch(palettes, defaultColorConfig);\n const previousDefaultColor = previousValues?.config[themeColorKey] &&\n getDefaultOklch(previousValues.palettes, defaultColorConfig);\n const previousValue = previousValues?.config[themeColorKey];\n result[themeColorKey] =\n !newDefaultColor ||\n (previousValue && previousDefaultColor !== previousValue)\n ? previousValue\n : newDefaultColor;\n }\n return result;\n}\nexport function generateCssFromThemeConfig(config) {\n return Object.fromEntries(Object.entries(config).map(([key, value]) => [\n `--${dasherize(underscore(key))}`,\n value,\n ]));\n}\nexport function generateDefaultTheme() {\n const slatePalette = {\n paletteName: 'slate',\n shades: COLOR_PALETTES.slate,\n };\n const slatePalettes = {\n base: slatePalette,\n primary: slatePalette,\n };\n return {\n palettes: slatePalettes,\n colors: {\n light: generateThemeColorsFromShade(slatePalettes, 'light'),\n dark: generateThemeColorsFromShade(slatePalettes, 'dark'),\n },\n };\n}\n//# sourceMappingURL=theme.js.map"],"names":["groupBy","arr","getKeyFromItem","result","i","item","key","keyBy","uniq","flow","funcs","args","isObjectLike","value","mergeWith","target","source","merge","sourceKeys","sourceValue","targetValue","merged","pickBy","obj","shouldPick","keys","isObject","forEach","cb","val","getTreeDepth","depth","tmpDepth","get","options","name","defaultValue","stringOrChar","prettify","str","tokens","match","string","stringifyPrettyCompact","rootObj","indent","addMargin","addArrayMargin","addObjectMargin","maxLength","maxNesting","stringifyRecursive","currentIndent","reserved","length","prettified","nextIndent","items","delimiters","atEndOfArray","array","index","keyPart","isPlainObject","prototype","sortKeys","object","deep","compare","cache","deepSortArray","resultFromCache","_sortKeys","newValue","stringifyPrettyStable","sortedValue","safeMerge","itemOne","itemTwo","isEqual","ToposortCyclicalDependencyError","nodes","ToposortUnknownNodeError","node","TinyQueue","data","a","b","top","bottom","pos","parent","current","halfLength","bestChild","right","makeOutgoingEdges","edgeArr","outgoingEdgesMap","edge","sourceIndex","targetIndex","sourceEdges","makeNodeInDegrees","nodeLength","nodeInDegrees","targets","detectCycle","visited","edges","path","visitSet","dfs","neighbors","neighbor","unvistedNodeIdx","idx","defaultCompareFunc","toposort","compareFunc","nodeIndexMap","zeroInDegreeQueue","nodeInDegree","outgoingEdges","cyclePath","toposortOrdered","createAdminCrudInputCompilerImplementation","inputs","input","builtInInputs","builtInInput","adminCrudInputCompilerSpec","createPluginSpec","stripEmptyGeneratorChildren","children","stripUndefinedValues","undefinedIfEmpty","undefinedIfFalsy","PluginImplementationStore","implementations","spec","implementation","extractPlatformModulesFromPlugins","plugins","plugin","m","getOrderedPluginModuleInitializationSteps","pluginModules","initialSpecImplementations","pluginModulesById","p","pluginModuleIdByExport","mapValues","module","id","exportName","existingPlugin","resolvedDep","x","initializeOrderedPluginModules","orderedPluginModules","specImplementations","pluginId","dependencies","dep","context","exports","exportedImplementation","initializePlugins","orderedModuleIds","createPlatformPluginExport","config","z","importShared","pluginManifestJsonSchema","versionSchema","pluginSpecSupportSchema","pluginSpecDependencySchema","pluginMetadataSchema","pluginEntityType","createEntityType","sortAndValidateMigrations","migrations","sortedMigrations","createPluginConfigImplementation","schemas","migrationsMap","pluginKey","schema","pluginConfigSpec","runPluginMigrations","projectDefinition","pluginImplementationStore","pluginConfigService","setAutoFreeze","produce","draft","pluginDefinition","pluginMigrations","currentSchemaVersion","lastPluginMigration","migration","error","ZodType","ZodWithPlugins","zodPluginContext","zodPluginSymbol","getter","zWithPlugins","authConfigSpec","createWebConfigImplementation","components","ConfigComponent","webConfigSpec","createAppCompiler","rootChildren","featureId","newChildren","createAppCompilerPlugin","compilers","compiler","appCompilers","appType","appCompilerSpec","createModelTransformerCompilerImplementation","transformers","transformer","builtInTransformers","builtInTransformer","modelTransformerCompilerSpec","PALETTE_SHADES","FIXED_COLOR_MAPPINGS","COLOR_PALETTES","THEME_COLORS","THEME_COLOR_KEYS","cleanAndSplitPath","segment","computeRelativePath","fromPath","toPath","fromSegments","toSegments","numParentDirs","byId","app","getBackendApp","backendApps","getBackendRelativePath","appConfig","backendApp","AppUtils","resolveZodRefPayloadNames","payload","skipReferenceNameResolution","allowInvalidReferences","entitiesWithNameResolver","references","entitiesById","entity","resolvedEntitiesById","orderedEntities","entityIds","resolveIdToName","nameResolver","rest","resolvedIds","idOrIds","parseSchemaWithReferences","wrapper","ZodRefWrapper","referenceToNameParentId","parentId","deserializeSchemaWithReferences","entities","duplicateEntityIds","e","ents","entityTypes","entityTypeNames","t","entityTypeOrder","entityType","entitiesByType","referencesByType","r","entitiesByParentIdName","parentPath","ref","parentIdName","resolvedEntity","set","DELETED_SENTINEL_ID","fixRefDeletions","issues","iterations","valueToEdit","tryDeleteParent","objectsToDeleteInArray","parseResult","referencesMissingEntity","objectsToDeleteByPath","o","objects","sortedObjects","sortBy","serializeSchemaFromRefPayload","draftData","reference","entityId","serializeSchema","authRoleEntityType","appEntityType","createAppEntryType","baseAppValidators","CASE_VALIDATORS","baseAppSchema","SCALAR_FIELD_TYPES","oklchColor","themeColorSchema","paletteSchema","palettesSchema","createThemeSchema","definitionSchema","VALIDATORS","roleArray","zRef","createModelGraphqlSchema","modelScalarFieldEntityType","modelLocalRelationEntityType","modelForeignRelationEntityType","baseTransformerFields","baseTransformerSchema","createModelTransformerType","createPasswordTransformerSchema","zEnt","modelTransformerEntityType","createEmbeddedRelationTransformerSchema","modelEntityType","createDefinitionEntityNameResolver","entityNames","builder","BUILT_IN_TRANSFORMERS","definitionContainer","definition","createModelTransformerImplementation","modelTransformerSpec","createTransformerSchema","ctx","type","z$d","createEnumValueSchema","modelEnumValueEntityType","createEnumBaseSchema","featureEntityType","createEnumSchema","modelEnumEntityType","createModelScalarFieldSchema","zRefBuilder","arg","REFERENTIAL_ACTIONS","createModelRelationFieldSchema","zRefId","createModelUniqueConstraintSchema","modelUniqueConstraintEntityType","f","createModelServiceSchema","createModelBaseSchema","createModelSchema","adminSectionEntityType","baseAdminSectionValidators","baseAdminCrudInputSchema","createAdminCrudInputType","adminCrudEmbeddedFormEntityType","createAdminCrudTextInputSchema","adminCrudTextInputType","createAdminCrudForeignInputSchema","adminCrudForeignInputType","createAdminCrudEnumInputSchema","adminCrudEnumInputType","createAdminCrudEmbeddedInputSchema","adminCrudEmbeddedInputType","createAdminCrudEmbeddedLocalInputSchema","adminCrudEmbeddedLocalInputType","createAdminCrudPasswordInputSchema","adminCrudPasswordInputType","BUILT_IN_ADMIN_CRUD_INPUTS","createAdminCrudInputImplementation","adminCrudInputs","adminCrudInputSpec","createAdminCrudInputSchema","createAdminCrudForeignDisplaySchema","createAdminCrudTextDisplaySchema","createAdminCrudDisplaySchema","adminCrudDisplayTypes","createAdminCrudTableColumnSchema","createAdminCrudEmbeddedObjectSchema","createAdminCrudEmbeddedListSchema","createAdminCrudEmbeddedFormSchema","createAdminCrudSectionSchema","createAdminSectionSchema","createAdminAppSchema","adminAppEntryType","createBackendAppSchema","backendAppEntryType","createWebAppSchema","webAppEntryType","basePluginDefinitionSchema","createPluginWithConfigSchema","parsedBasePlugin","configSchema","pluginDefinitionWithEnt","createPluginsSchema","createTemplateExtractorSchema","generalSettingsSchema","portOffset","createSettingsSchema","createAppSchema","createProjectDefinitionSchema","createFeaturesSchema","byIdOrThrow","enumConfig","EnumUtils","isScalarUnique","model","fieldId","primaryKeyFieldRefs","uniqueConstraints","c","areScalarsUnique","fieldIds","sortedFieldIds","getRelationLocalFields","relation","field","isRelationOptional","isRelationOneToOne","localFieldIds","getModelValidator","modelField","getModelFieldValidation","modelId","preProcess","ModelUtils","nullishSuffix","validator","ModelFieldUtils","getTransformer","pluginStore","getTransformName","ModelTransformerUtils","pluginEntityId","configByIdOrThrow","setPluginConfig","pluginConfig","lastMigrationVersion","PluginUtils","COMMON_SPEC_IMPLEMENTATIONS","createPluginImplementationStore","availablePlugins","builtinSpecImplementations","pluginData","initialImplementations","pluginsWithModules","metadata","pluginName","createProjectDefinitionSchemaWithContext","zPluginWrapper","parseProjectDefinitionWithContext","parseProjectDefinitionWithReferences","ProjectDefinitionContainer","parserContext","setter","newDefinition","schemaWithContext","parsedDefinition","projectDefinitionSchemaWithContext","migration005PrimaryUniqueRefs","oldModel","omit","migration006IndividualServiceControllers","build","create","update","deleteOp","isCreateEnabled","isUpdateEnabled","isDeleteEnabled","stripUndefinedChildren","undefinedIfEmptyObject","migration007ModelGraphql","buildObjectType","exposedFields","exposedLocalRelations","exposedForeignRelations","buildQuery","buildMutations","authorize","AUTH_DEFAULT_ROLES","migration008AnonymousPublicRole","role","transformJsonPath","transformFn","pathParts","navigateAndTransform","parts","cloneDeep","currentPart","remainingParts","renameObjectKeysTransform","renames","migration009RenameRefs","parseOklch","color","parsedColor","parse","convertOklchToHex","oklch","rgb","converter","formatHex","convertHexToOklch","hex","transformThemeColor","migration010HexToOklch","migration011PluginId","migration012MigrateAuthConfig","auth0PluginId","auth0Config","pluginIndex","migration013MoveGeneralSettings","packageScope","templateExtractor","theme","PLUGIN_MAPPINGS","migration014MigratePluginIds","newId","newPackageName","SCHEMA_MIGRATIONS","isMigrateableProjectDefinition","SchemaMigrationError","migrationName","cause","runSchemaMigrations","schemaVersion","unappliedMigrations","migratedDefinition","getLatestMigrationVersion","createTestProjectDefinition","createTestProjectDefinitionInput","createTestProjectDefinitionContainer","projectDefinitionSchema","schemaWithPlugins","resolvedRefPayload","AVAILABLE_FLAGS","convertColorNameToOklch","fixedColorMapping","colorComponents","paletteName","shade","reverseColorMapping","getReverseColorMapping","palette","convertOklchToColorName","getDefaultOklch","palettes","getDefaultThemeColorFromShade","mode","themeColorKey","defaultColorConfig","generateThemeColorsFromShade","previousValues","newDefaultColor","previousDefaultColor","previousValue","generateCssFromThemeConfig","dasherize","underscore","generateDefaultTheme","slatePalette","slatePalettes"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,8,9,13]}
1
+ {"version":3,"file":"project-builder-lib-zvGcQ6PN.js","sources":["../../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/array/groupBy.mjs","../../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/array/keyBy.mjs","../../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/array/uniq.mjs","../../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/function/flow.mjs","../../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.mjs","../../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/object/mergeWith.mjs","../../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/object/pickBy.mjs","../../../../utils/dist/json/stringify-pretty-compact.js","../../../../../node_modules/.pnpm/is-plain-obj@4.1.0/node_modules/is-plain-obj/index.js","../../../../../node_modules/.pnpm/sort-keys@5.1.0/node_modules/sort-keys/index.js","../../../../utils/dist/json/stringify-pretty-stable.js","../../../../utils/dist/objects/safe-merge.js","../../../../utils/dist/toposort/errors.js","../../../../../node_modules/.pnpm/tinyqueue@3.0.0/node_modules/tinyqueue/index.js","../../../../utils/dist/toposort/toposort.js","../../../../project-builder-lib/dist/compiler/admin-crud-input-spec.js","../../../../project-builder-lib/dist/utils/strip.js","../../../../project-builder-lib/dist/plugins/schema/store.js","../../../../project-builder-lib/dist/plugins/imports/loader.js","../../../../project-builder-lib/dist/plugins/imports/types.js","../../../../project-builder-lib/dist/plugins/manifest/manifest.js","../../../../project-builder-lib/dist/plugins/metadata/types.js","../../../../project-builder-lib/dist/schema/plugins/entity-types.js","../../../../project-builder-lib/dist/plugins/spec/config-spec.js","../../../../project-builder-lib/dist/plugins/migrations/run-migrations.js","../../../../project-builder-lib/dist/plugins/schema/zod-with-plugins.js","../../../../project-builder-lib/dist/plugins/spec/auth-config-spec.js","../../../../project-builder-lib/dist/plugins/spec/web-config-spec.js","../../../../project-builder-lib/dist/compiler/app-compiler-spec.js","../../../../project-builder-lib/dist/compiler/model-transformer-compiler-spec.js","../../../../project-builder-lib/dist/constants/colors.js","../../../../project-builder-lib/dist/constants/theme-colors.js","../../../../project-builder-lib/dist/utils/path.js","../../../../project-builder-lib/dist/definition/apps/app-utils.js","../../../../project-builder-lib/dist/references/resolve-zod-ref-payload-names.js","../../../../project-builder-lib/dist/references/parse-schema-with-references.js","../../../../project-builder-lib/dist/references/deserialize-schema.js","../../../../project-builder-lib/dist/references/fix-ref-deletions.js","../../../../project-builder-lib/dist/references/serialize-schema.js","../../../../project-builder-lib/dist/schema/auth/index.js","../../../../project-builder-lib/dist/schema/apps/types.js","../../../../project-builder-lib/dist/schema/apps/base.js","../../../../project-builder-lib/dist/types/field-types.js","../../../../project-builder-lib/dist/schema/features/theme.js","../../../../project-builder-lib/dist/schema/utils/validation.js","../../../../project-builder-lib/dist/schema/models/graphql.js","../../../../project-builder-lib/dist/schema/models/transformers/types.js","../../../../project-builder-lib/dist/schema/models/transformers/built-in-transformers.js","../../../../project-builder-lib/dist/schema/models/transformers/model-transformer-spec.js","../../../../project-builder-lib/dist/schema/models/transformers/transformers.js","../../../../project-builder-lib/dist/schema/models/enums.js","../../../../project-builder-lib/dist/schema/models/index.js","../../../../project-builder-lib/dist/schema/apps/admin/sections/types.js","../../../../project-builder-lib/dist/schema/apps/admin/sections/base.js","../../../../project-builder-lib/dist/schema/apps/admin/sections/crud-form/types.js","../../../../project-builder-lib/dist/schema/apps/admin/sections/crud-form/built-in-input.js","../../../../project-builder-lib/dist/schema/apps/admin/sections/crud-form/admin-input-spec.js","../../../../project-builder-lib/dist/schema/apps/admin/sections/crud-form/admin-crud-input.js","../../../../project-builder-lib/dist/schema/apps/admin/sections/crud.js","../../../../project-builder-lib/dist/schema/apps/admin/app.js","../../../../project-builder-lib/dist/schema/apps/backend/index.js","../../../../project-builder-lib/dist/schema/apps/web/index.js","../../../../project-builder-lib/dist/schema/plugins/definition.js","../../../../project-builder-lib/dist/schema/template-extractor/index.js","../../../../project-builder-lib/dist/schema/settings.js","../../../../project-builder-lib/dist/schema/project-definition.js","../../../../project-builder-lib/dist/definition/model/enum-utils.js","../../../../project-builder-lib/dist/definition/model/model-field-utils.js","../../../../project-builder-lib/dist/definition/model/model-transformer-utils.js","../../../../project-builder-lib/dist/definition/plugins/plugin-utils.js","../../../../project-builder-lib/dist/parser/parser.js","../../../../project-builder-lib/dist/definition/project-definition-container.js","../../../../project-builder-lib/dist/migrations/migration-005-primary-unique-refs.js","../../../../project-builder-lib/dist/migrations/migration-006-individual-service-controllers.js","../../../../project-builder-lib/dist/migrations/utils.js","../../../../project-builder-lib/dist/migrations/migration-007-model-graphql.js","../../../../project-builder-lib/dist/migrations/migration-008-anonymous-public-role.js","../../../../project-builder-lib/dist/migrations/transform-json-path.js","../../../../project-builder-lib/dist/migrations/migration-009-rename-refs.js","../../../../project-builder-lib/dist/utils/color-conversions.js","../../../../project-builder-lib/dist/migrations/migration-010-hex-to-oklch.js","../../../../project-builder-lib/dist/migrations/migration-011-plugin-id.js","../../../../project-builder-lib/dist/migrations/migration-012-migrate-auth-config.js","../../../../project-builder-lib/dist/migrations/migration-013-move-general-settings.js","../../../../project-builder-lib/dist/migrations/migration-014-migrate-plugin-ids.js","../../../../project-builder-lib/dist/migrations/index.js","../../../../project-builder-lib/dist/definition/project-definition-container.test-utils.js","../../../../project-builder-lib/dist/feature-flags/flags.js","../../../../project-builder-lib/dist/utils/color-names.js","../../../../project-builder-lib/dist/utils/theme.js"],"sourcesContent":["function groupBy(arr, getKeyFromItem) {\n const result = {};\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n const key = getKeyFromItem(item);\n if (!Object.hasOwn(result, key)) {\n result[key] = [];\n }\n result[key].push(item);\n }\n return result;\n}\n\nexport { groupBy };\n","function keyBy(arr, getKeyFromItem) {\n const result = {};\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n const key = getKeyFromItem(item);\n result[key] = item;\n }\n return result;\n}\n\nexport { keyBy };\n","function uniq(arr) {\n return Array.from(new Set(arr));\n}\n\nexport { uniq };\n","function flow(...funcs) {\n return function (...args) {\n let result = funcs.length ? funcs[0].apply(this, args) : args[0];\n for (let i = 1; i < funcs.length; i++) {\n result = funcs[i].call(this, result);\n }\n return result;\n };\n}\n\nexport { flow };\n","function isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\n\nexport { isObjectLike };\n","import { isObjectLike } from '../compat/predicate/isObjectLike.mjs';\n\nfunction mergeWith(target, source, merge) {\n const sourceKeys = Object.keys(source);\n for (let i = 0; i < sourceKeys.length; i++) {\n const key = sourceKeys[i];\n const sourceValue = source[key];\n const targetValue = target[key];\n const merged = merge(targetValue, sourceValue, key, target, source);\n if (merged != null) {\n target[key] = merged;\n }\n else if (Array.isArray(sourceValue)) {\n target[key] = mergeWith(targetValue ?? [], sourceValue, merge);\n }\n else if (isObjectLike(targetValue) && isObjectLike(sourceValue)) {\n target[key] = mergeWith(targetValue ?? {}, sourceValue, merge);\n }\n else if (targetValue === undefined || sourceValue !== undefined) {\n target[key] = sourceValue;\n }\n }\n return target;\n}\n\nexport { mergeWith };\n","function pickBy(obj, shouldPick) {\n const result = {};\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const value = obj[key];\n if (shouldPick(value, key)) {\n result[key] = value;\n }\n }\n return result;\n}\n\nexport { pickBy };\n","// adapted from https://github.com/AitoDotAI/json-stringify-pretty-compact\n// allows { } to be presented as {} to better mirror prettier formatting\nfunction isObject(obj) {\n return typeof obj === 'object' && obj !== null;\n}\nfunction forEach(obj, cb) {\n if (Array.isArray(obj)) {\n // eslint-disable-next-line unicorn/no-array-for-each\n obj.forEach(cb);\n }\n else if (isObject(obj)) {\n for (const key of Object.keys(obj)) {\n const val = obj[key];\n cb(val, key);\n }\n }\n}\nfunction getTreeDepth(obj) {\n let depth = 0;\n if (Array.isArray(obj) || isObject(obj)) {\n forEach(obj, (val) => {\n if (Array.isArray(val) || isObject(val)) {\n const tmpDepth = getTreeDepth(val);\n if (tmpDepth > depth) {\n depth = tmpDepth;\n }\n }\n });\n return depth + 1;\n }\n return depth;\n}\nfunction get(options, name, defaultValue) {\n return (name in options ? options[name] : defaultValue);\n}\n// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\n// This regex has been adjusted to allow replacement of { } and [ ] with {} and []\n// to better mirror prettier formatting.\nconst stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]|\\{(?!})|(?<!\\{)}|\\[(?!])|(?<!\\[)]/g;\nfunction prettify(str, options = {}) {\n const tokens = {\n '{': '{',\n '}': '}',\n '[': '[',\n ']': ']',\n ',': ', ',\n ':': ': ',\n };\n if (!!options.addMargin || !!options.addObjectMargin) {\n tokens['{'] = '{ ';\n tokens['}'] = ' }';\n }\n if (!!options.addMargin || !!options.addArrayMargin) {\n tokens['['] = '[ ';\n tokens[']'] = ' ]';\n }\n return str.replaceAll(stringOrChar, (match, string) => string ? match : tokens[match]);\n}\nexport function stringifyPrettyCompact(rootObj, options = {}) {\n const indent = JSON.stringify([1], null, get(options, 'indent', 2)).slice(2, -3);\n const addMargin = get(options, 'margins', false);\n const addArrayMargin = get(options, 'arrayMargins', false);\n const addObjectMargin = get(options, 'objectMargins', true);\n const maxLength = indent === '' ? Infinity : get(options, 'maxLength', 80);\n const maxNesting = get(options, 'maxNesting', Infinity);\n return (function stringifyRecursive(obj, currentIndent, reserved) {\n if (obj &&\n typeof obj === 'object' &&\n typeof obj.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n obj = obj.toJSON();\n }\n const string = JSON.stringify(obj);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (string === undefined) {\n return string;\n }\n const length = maxLength - currentIndent.length - reserved;\n const treeDepth = getTreeDepth(obj);\n if (treeDepth <= maxNesting && string.length <= length) {\n const prettified = prettify(string, {\n addMargin,\n addArrayMargin,\n addObjectMargin,\n });\n if (prettified.length <= length) {\n return prettified;\n }\n }\n if (isObject(obj)) {\n const nextIndent = currentIndent + indent;\n const items = [];\n let delimiters;\n const atEndOfArray = (array, index) => index === array.length - 1 ? 0 : 1;\n if (Array.isArray(obj)) {\n for (let index = 0; index < obj.length; index += 1) {\n items.push(stringifyRecursive(obj[index], nextIndent, atEndOfArray(obj, index)) || 'null');\n }\n delimiters = '[]';\n }\n else {\n // eslint-disable-next-line unicorn/no-array-for-each\n Object.keys(obj).forEach((key, index, array) => {\n const keyPart = `${JSON.stringify(key)}: `;\n const value = stringifyRecursive(obj[key], nextIndent, keyPart.length + atEndOfArray(array, index));\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n });\n delimiters = '{}';\n }\n if (items.length > 0) {\n return [\n delimiters[0],\n indent + items.join(`,\\n${nextIndent}`),\n delimiters[1],\n ].join(`\\n${currentIndent}`);\n }\n }\n return string;\n })(rootObj, '', 0);\n}\n//# sourceMappingURL=stringify-pretty-compact.js.map","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","import isPlainObject from 'is-plain-obj';\n\nexport default function sortKeys(object, options = {}) {\n\tif (!isPlainObject(object) && !Array.isArray(object)) {\n\t\tthrow new TypeError('Expected a plain object or array');\n\t}\n\n\tconst {deep, compare} = options;\n\tconst cache = new WeakMap();\n\n\tconst deepSortArray = array => {\n\t\tconst resultFromCache = cache.get(array);\n\t\tif (resultFromCache !== undefined) {\n\t\t\treturn resultFromCache;\n\t\t}\n\n\t\tconst result = [];\n\t\tcache.set(array, result);\n\n\t\tresult.push(...array.map(item => {\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\treturn deepSortArray(item);\n\t\t\t}\n\n\t\t\tif (isPlainObject(item)) {\n\t\t\t\treturn _sortKeys(item);\n\t\t\t}\n\n\t\t\treturn item;\n\t\t}));\n\n\t\treturn result;\n\t};\n\n\tconst _sortKeys = object => {\n\t\tconst resultFromCache = cache.get(object);\n\t\tif (resultFromCache !== undefined) {\n\t\t\treturn resultFromCache;\n\t\t}\n\n\t\tconst result = {};\n\t\tconst keys = Object.keys(object).sort(compare);\n\n\t\tcache.set(object, result);\n\n\t\tfor (const key of keys) {\n\t\t\tconst value = object[key];\n\t\t\tlet newValue;\n\n\t\t\tif (deep && Array.isArray(value)) {\n\t\t\t\tnewValue = deepSortArray(value);\n\t\t\t} else {\n\t\t\t\tnewValue = deep && isPlainObject(value) ? _sortKeys(value) : value;\n\t\t\t}\n\n\t\t\tObject.defineProperty(result, key, {\n\t\t\t\t...Object.getOwnPropertyDescriptor(object, key),\n\t\t\t\tvalue: newValue,\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tif (Array.isArray(object)) {\n\t\treturn deep ? deepSortArray(object) : [...object];\n\t}\n\n\treturn _sortKeys(object);\n}\n","import sortKeys from 'sort-keys';\nimport { stringifyPrettyCompact } from './stringify-pretty-compact.js';\n/**\n * Stringifies a value with stable pretty printing.\n *\n * That means the keys are sorted and the value is pretty printed.\n *\n * @param value - The value to stringify.\n * @returns The stringified value.\n */\nexport function stringifyPrettyStable(value) {\n const sortedValue = sortKeys(value, {\n deep: true,\n });\n return `${stringifyPrettyCompact(sortedValue)}\\n`;\n}\n//# sourceMappingURL=stringify-pretty-stable.js.map","import { isEqual, mergeWith } from 'es-toolkit';\n/**\n * Merges two objects, throwing an error if any keys overlap.\n *\n * @param itemOne - The first object to merge.\n * @param itemTwo - The second object to merge.\n * @param options - Options to control merge behavior\n * @returns The merged object.\n */\nexport function safeMerge(itemOne, itemTwo, options = {}) {\n return mergeWith(itemOne, itemTwo, (targetValue, sourceValue, key) => {\n if (key in itemOne && key in itemTwo) {\n if (options.allowEqualValues && isEqual(targetValue, sourceValue)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- we're just using the sourceValue\n return sourceValue;\n }\n throw new Error(`Cannot merge key ${key} because it already exists.`);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- we're just using the sourceValue\n return sourceValue;\n });\n}\n/**\n * Merges an array of objects, throwing an error if any keys overlap.\n *\n * @param items - The array of objects to merge.\n * @param options - Options to control merge behavior\n * @returns The merged object.\n */\nexport function safeMergeAllWithOptions(items, options = {}) {\n const targetValue = {};\n for (const item of items.flat()) {\n safeMerge(targetValue, item, options);\n }\n return targetValue;\n}\n/**\n * Merges an array of objects, throwing an error if any keys overlap.\n *\n * @param items - The array of objects to merge.\n * @returns The merged object.\n */\nexport function safeMergeAll(...items) {\n return safeMergeAllWithOptions(items);\n}\n//# sourceMappingURL=safe-merge.js.map","export class ToposortCyclicalDependencyError extends Error {\n cyclePath;\n constructor(nodes) {\n super(`Cyclical dependency detected: ${nodes.map((n) => JSON.stringify(n)).join(' -> ')}`);\n this.name = 'ToposortCyclicalDependencyError';\n this.cyclePath = nodes; // Store the path for potential inspection\n }\n}\nexport class ToposortUnknownNodeError extends Error {\n unknownNode;\n constructor(node) {\n super(`Unknown node referenced in edges: ${JSON.stringify(node)}`);\n this.name = 'ToposortUnknownNodeError';\n this.unknownNode = node; // Store the node for potential inspection\n }\n}\n//# sourceMappingURL=errors.js.map","\nexport default class TinyQueue {\n constructor(data = [], compare = (a, b) => (a < b ? -1 : a > b ? 1 : 0)) {\n this.data = data;\n this.length = this.data.length;\n this.compare = compare;\n\n if (this.length > 0) {\n for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n }\n\n push(item) {\n this.data.push(item);\n this._up(this.length++);\n }\n\n pop() {\n if (this.length === 0) return undefined;\n\n const top = this.data[0];\n const bottom = this.data.pop();\n\n if (--this.length > 0) {\n this.data[0] = bottom;\n this._down(0);\n }\n\n return top;\n }\n\n peek() {\n return this.data[0];\n }\n\n _up(pos) {\n const {data, compare} = this;\n const item = data[pos];\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n }\n\n _down(pos) {\n const {data, compare} = this;\n const halfLength = this.length >> 1;\n const item = data[pos];\n\n while (pos < halfLength) {\n let bestChild = (pos << 1) + 1; // initially it is the left child\n const right = bestChild + 1;\n\n if (right < this.length && compare(data[right], data[bestChild]) < 0) {\n bestChild = right;\n }\n if (compare(data[bestChild], item) >= 0) break;\n\n data[pos] = data[bestChild];\n pos = bestChild;\n }\n\n data[pos] = item;\n }\n}\n","import TinyQueue from 'tinyqueue';\nimport { ToposortCyclicalDependencyError, ToposortUnknownNodeError, } from './errors.js';\n/**\n * Creates a map of outgoing edges from node indices to their target indices\n */\nfunction makeOutgoingEdges(nodes, edgeArr) {\n const outgoingEdgesMap = new Map();\n for (const edge of edgeArr) {\n const [source, target] = edge;\n const sourceIndex = nodes.get(source);\n const targetIndex = nodes.get(target);\n // Check both source and target exist in the provided nodes set\n if (sourceIndex === undefined)\n throw new ToposortUnknownNodeError(source);\n if (targetIndex === undefined)\n throw new ToposortUnknownNodeError(target);\n const sourceEdges = outgoingEdgesMap.get(sourceIndex);\n if (sourceEdges) {\n sourceEdges.add(targetIndex);\n }\n else {\n outgoingEdgesMap.set(sourceIndex, new Set([targetIndex]));\n }\n }\n return outgoingEdgesMap;\n}\n/**\n * Creates a map of node indices to their in-degree\n */\nfunction makeNodeInDegrees(outgoingEdgesMap, nodeLength) {\n const nodeInDegrees = Array.from({ length: nodeLength }, () => 0);\n for (const [, targets] of outgoingEdgesMap.entries()) {\n for (const target of targets) {\n nodeInDegrees[target]++;\n }\n }\n return nodeInDegrees;\n}\n/**\n * Detects cycles in a graph by checking if all nodes are included in the topological sort\n */\nfunction detectCycle(nodes, visited, edges) {\n // If all nodes were visited, no cycle exists\n if (visited.size === nodes.length) {\n return [];\n }\n // Run DFS from any unvisited node to find a cycle\n const path = [];\n const visitSet = new Set();\n function dfs(node) {\n if (visitSet.has(node)) {\n path.push(node);\n return true;\n }\n if (visited.has(node)) {\n return false;\n }\n visitSet.add(node);\n path.push(node);\n const neighbors = edges.get(node) ?? new Set();\n for (const neighbor of neighbors) {\n if (dfs(neighbor)) {\n return true;\n }\n }\n path.pop();\n visitSet.delete(node);\n return false;\n }\n // For cycle detection, we need to find nodes that weren't visited\n const unvistedNodeIdx = nodes.findIndex((node, idx) => !visited.has(idx));\n if (unvistedNodeIdx === -1) {\n return [];\n }\n // Start DFS from any unvisited node\n dfs(unvistedNodeIdx);\n // Convert path indices to actual nodes\n return path.map((idx) => nodes[idx]);\n}\n/**\n * Default comparison function for stable topological sort\n */\nfunction defaultCompareFunc(a, b) {\n if (typeof a === 'string' && typeof b === 'string') {\n return a.localeCompare(b);\n }\n if (a === b)\n return 0;\n return a < b ? -1 : 1;\n}\n/**\n * Performs a topological sort on a directed acyclic graph.\n *\n * @param nodes - The nodes to sort\n * @param edges - The edges of the graph\n * @param options - Optional options for the topological sort\n * @returns The sorted nodes\n */\nexport function toposort(nodes, edges, options = {}) {\n const { compareFunc } = options;\n // Map each node to its index\n const nodeIndexMap = new Map(nodes.map((node, index) => [node, index]));\n // Create a map of outgoing edges from each node\n const outgoingEdgesMap = makeOutgoingEdges(nodeIndexMap, edges);\n const nodeInDegrees = makeNodeInDegrees(outgoingEdgesMap, nodes.length);\n // Create a queue of nodes with no incoming edges (in-degree == 0)\n const zeroInDegreeQueue = compareFunc\n ? new TinyQueue([], (a, b) => compareFunc(nodes[a], nodes[b]))\n : [];\n for (const [i, nodeInDegree] of nodeInDegrees.entries()) {\n if (nodeInDegree === 0) {\n zeroInDegreeQueue.push(i);\n }\n }\n const result = [];\n const visited = new Set();\n // Process nodes in BFS order\n while (zeroInDegreeQueue.length > 0) {\n const current = zeroInDegreeQueue.pop();\n if (current === undefined)\n break;\n visited.add(current);\n result.push(nodes[current]);\n // Process all outgoing edges from the current node\n const outgoingEdges = outgoingEdgesMap.get(current);\n if (outgoingEdges) {\n for (const target of outgoingEdges) {\n nodeInDegrees[target]--;\n // If the target node now has no incoming edges, add it to the queue\n if (nodeInDegrees[target] === 0) {\n zeroInDegreeQueue.push(target);\n }\n }\n }\n }\n // Check for cycles\n if (result.length !== nodes.length) {\n const cyclePath = detectCycle(nodes, visited, outgoingEdgesMap);\n throw new ToposortCyclicalDependencyError(cyclePath);\n }\n return result;\n}\n/**\n * Performs a topological sort on a directed acyclic graph, always selecting\n * the smallest available node according to the provided comparison function,\n * yielding the lexicographically minimal ordering.\n *\n * @param nodes - The nodes to sort\n * @param edges - The edges of the graph\n * @param compareFunc - Optional custom comparison function to break ties between nodes with the same topological level (default is string comparison)\n * @returns The sorted nodes\n */\nexport function toposortOrdered(nodes, edges, compareFunc = defaultCompareFunc) {\n return toposort(nodes, edges, { compareFunc });\n}\n//# sourceMappingURL=toposort.js.map","import { createPluginSpec } from '#src/plugins/spec/types.js';\nexport function createAdminCrudInputCompilerImplementation() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const inputs = new Map();\n return {\n registerCompiler(input) {\n if (inputs.has(input.name)) {\n throw new Error(`Admin CRUD input with name ${input.name} is already registered`);\n }\n inputs.set(input.name, input);\n },\n getCompiler(name, builtInInputs = []) {\n const builtInInput = builtInInputs.find((b) => b.name === name);\n if (builtInInput) {\n return builtInInput;\n }\n const input = inputs.get(name);\n if (!input) {\n throw new Error(`Unable to find input with name ${name}`);\n }\n return input;\n },\n };\n}\n/**\n * Spec for adding config component for plugin\n */\nexport const adminCrudInputCompilerSpec = createPluginSpec('core/admin-crud-input-compiler', { defaultInitializer: createAdminCrudInputCompilerImplementation });\n//# sourceMappingURL=admin-crud-input-spec.js.map","import { pickBy } from 'es-toolkit';\n/**\n * Strip object of any values that are empty arrays, empty objects, null, or undefined\n */\nexport function stripEmptyGeneratorChildren(children) {\n return pickBy(children, (value) => value !== undefined && !(Array.isArray(value) && value.length === 0));\n}\n/**\n * Strip object of any values that are undefined\n */\nexport function stripUndefinedValues(obj) {\n return pickBy(obj, (value) => value !== undefined);\n}\n/**\n * Returns undefined if the value is an empty object (as defined by all values are undefined)/array/null, otherwise return value.\n */\nexport function undefinedIfEmpty(value) {\n if (value === null)\n return undefined;\n if (Array.isArray(value) && value.length === 0) {\n return undefined;\n }\n if (typeof value === 'object' &&\n Object.keys(value).every((key) => value[key] === undefined)) {\n return undefined;\n }\n return value;\n}\n/**\n * Returns undefined if the value is falsy, otherwise return value.\n */\nexport function undefinedIfFalsy(value) {\n if (!value)\n return undefined;\n return value;\n}\n//# sourceMappingURL=strip.js.map","export class PluginImplementationStore {\n constructor(implementations) {\n Object.defineProperty(this, \"implementations\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: implementations\n });\n }\n getPluginSpec(spec) {\n const implementation = this.implementations[spec.name];\n if (!implementation) {\n throw new Error(`Unable to find implementation for spec ${spec.name}`);\n }\n return implementation;\n }\n getPluginSpecOptional(spec) {\n return this.implementations[spec.name];\n }\n}\n//# sourceMappingURL=store.js.map","import { toposortOrdered } from '@baseplate-dev/utils';\nimport { keyBy, mapValues } from 'es-toolkit';\nimport { stripUndefinedValues } from '#src/utils/strip.js';\nimport { PluginImplementationStore } from '../schema/store.js';\nexport function extractPlatformModulesFromPlugins(plugins) {\n return plugins.flatMap((plugin) => plugin.pluginModules.map((m) => ({\n ...m,\n id: `${plugin.id}/${m.key}`,\n name: `${plugin.name}/${m.key}`,\n pluginId: plugin.id,\n pluginName: plugin.name,\n })));\n}\nexport function getOrderedPluginModuleInitializationSteps(pluginModules, initialSpecImplementations) {\n const pluginModulesById = keyBy(pluginModules, (p) => p.id);\n // create export map of plugin ID to export spec name\n const pluginModuleIdByExport = mapValues(initialSpecImplementations, () => 'built-in');\n for (const { name, module, id } of pluginModules) {\n for (const m of Object.values(module.exports ?? {})) {\n const exportName = m.name;\n if (exportName in pluginModuleIdByExport) {\n const existingPlugin = pluginModulesById[pluginModuleIdByExport[exportName]];\n throw new Error(`Duplicate export from plugins found ${exportName} (${name} and ${existingPlugin.name})`);\n }\n pluginModuleIdByExport[exportName] = id;\n }\n }\n // create list of plugin to plugin dependencies\n const edges = pluginModules.flatMap(({ module, name, id }) => Object.values(module.dependencies ?? {})\n .map((m) => {\n const resolvedDep = pluginModuleIdByExport[m.name];\n if (!resolvedDep) {\n if (m.isOptional) {\n return undefined;\n }\n throw new Error(`Cannot resolve plugin dependency for ${name} (${m.name})`);\n }\n if (resolvedDep === 'built-in') {\n return undefined;\n }\n return [resolvedDep, id];\n })\n .filter((x) => x !== undefined));\n const nodes = pluginModules.map((p) => p.id);\n return toposortOrdered(nodes, edges);\n}\nexport function initializeOrderedPluginModules(orderedPluginModules, initialSpecImplementations) {\n const specImplementations = { ...initialSpecImplementations };\n for (const { name, module, pluginId } of orderedPluginModules) {\n const dependencies = module.dependencies\n ? stripUndefinedValues(mapValues(module.dependencies, (dep) => {\n const implementation = specImplementations[dep.name];\n if (!implementation && !dep.isOptional) {\n throw new Error(`Plugin ${name} missing dependency ${dep.name}`);\n }\n return implementation;\n }))\n : {};\n const context = { pluginId };\n const exports = module.initialize(dependencies, context);\n Object.entries(module.exports ?? {}).map(([key, spec]) => {\n const exportedImplementation = exports[key];\n if (!exportedImplementation) {\n throw new Error(`Plugin ${name} did not return required export ${key}`);\n }\n specImplementations[spec.name] = exportedImplementation;\n });\n }\n return specImplementations;\n}\n/**\n * Initialize the plugins based on their interdependencies and creates a store of the plugin implementations\n */\nexport function initializePlugins(plugins, initialSpecImplementations) {\n const pluginModules = extractPlatformModulesFromPlugins(plugins);\n const pluginModulesById = keyBy(pluginModules, (p) => p.id);\n const orderedModuleIds = getOrderedPluginModuleInitializationSteps(pluginModules, initialSpecImplementations);\n const specImplementations = initializeOrderedPluginModules(orderedModuleIds.map((p) => pluginModulesById[p]), initialSpecImplementations);\n return new PluginImplementationStore(specImplementations);\n}\n//# sourceMappingURL=loader.js.map","export function createPlatformPluginExport(config) {\n return config;\n}\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nexport const pluginManifestJsonSchema = z.object({\n plugins: z.array(z.string()),\n webBuild: z.string(),\n});\n//# sourceMappingURL=manifest.js.map","import { z } from 'zod';\n// matches semver\nconst versionSchema = z.string().regex(/^(\\d+\\.\\d+\\.\\d+)$/);\nexport const pluginSpecSupportSchema = z.object({\n spec: z.string().min(1),\n version: z.string().min(1),\n});\nexport const pluginSpecDependencySchema = z.object({\n spec: z.string(),\n version: z.string(),\n});\n/**\n * Schema for the plugin's metadata\n */\nexport const pluginMetadataSchema = z.object({\n /**\n * The name of the plugin - must be lowercase and contain only letters, numbers, and hyphens\n */\n name: z\n .string()\n .min(1)\n .regex(/^[a-z0-9-]+$/),\n /**\n * A list of directories with entrypoints in them. Defaults to ['.']\n */\n moduleDirectories: z.array(z.string()).optional(),\n /**\n * The display name of the plugin\n */\n displayName: z.string().min(1),\n /**\n * The icon to display for the plugin as a pointer to the icon in the plugin's static folder\n */\n icon: z.string().optional(),\n /**\n * A description of the plugin\n */\n description: z.string(),\n /**\n * The version of the plugin using semver\n */\n version: versionSchema,\n /**\n * Configuration for the specs that the plugin exports/depends on\n */\n specs: z\n .object({\n /**\n * The specs that the plugin exports\n */\n exports: z.array(pluginSpecSupportSchema).optional(),\n /**\n * The specs that the plugin depends on\n */\n dependencies: z.array(pluginSpecDependencySchema).optional(),\n })\n .optional(),\n});\n//# sourceMappingURL=types.js.map","import { createEntityType } from '#src/references/types.js';\nexport const pluginEntityType = createEntityType('plugin');\n//# sourceMappingURL=entity-types.js.map","import { createPluginSpec } from './types.js';\nfunction sortAndValidateMigrations(migrations) {\n // make sure migrations are sorted by version and they are all unique\n const sortedMigrations = [...migrations].sort((a, b) => a.version - b.version);\n if (sortedMigrations.some((m) => m.version <= 0)) {\n throw new Error(`Migration version must be a positive integer`);\n }\n for (let i = 0; i < sortedMigrations.length - 1; i++) {\n if (sortedMigrations[i].version === sortedMigrations[i + 1].version) {\n throw new Error(`Migration versions must be unique`);\n }\n }\n return sortedMigrations;\n}\nexport function createPluginConfigImplementation() {\n const schemas = new Map();\n const migrationsMap = new Map();\n return {\n registerSchema(pluginKey, schema) {\n if (schemas.has(pluginKey)) {\n throw new Error(`Schema for plugin ${pluginKey} is already registered`);\n }\n schemas.set(pluginKey, schema);\n },\n registerMigrations(pluginKey, migrations) {\n if (migrationsMap.has(pluginKey)) {\n throw new Error(`Migrations for plugin ${pluginKey} are already registered`);\n }\n const sortedMigrations = sortAndValidateMigrations(migrations);\n migrationsMap.set(pluginKey, sortedMigrations);\n },\n getSchema(pluginKey) {\n return schemas.get(pluginKey);\n },\n getMigrations(pluginKey) {\n return migrationsMap.get(pluginKey);\n },\n getLastMigrationVersion(pluginKey) {\n const migrations = migrationsMap.get(pluginKey);\n return migrations?.[migrations.length - 1]?.version;\n },\n };\n}\n/**\n * Spec for adding config for the plugin in the core plugin e.g.\n * {\n * \"plugins\": [{\n * \"id\": \"...\",\n * \"config\": {\n * ...PluginConfig schema\n * }\n * }]\n * }\n */\nexport const pluginConfigSpec = createPluginSpec('core/plugin-config', {\n defaultInitializer: createPluginConfigImplementation,\n});\n//# sourceMappingURL=config-spec.js.map","import { produce, setAutoFreeze } from 'immer';\nimport { pluginEntityType } from '#src/schema/plugins/entity-types.js';\nimport { pluginConfigSpec } from '../spec/config-spec.js';\nexport function runPluginMigrations(projectDefinition, pluginImplementationStore) {\n const pluginConfigService = pluginImplementationStore.getPluginSpec(pluginConfigSpec);\n setAutoFreeze(false);\n return produce(projectDefinition, (draft) => {\n for (const pluginDefinition of draft.plugins ?? []) {\n const pluginMigrations = pluginConfigService.getMigrations(pluginEntityType.keyFromId(pluginDefinition.id));\n const currentSchemaVersion = pluginDefinition.configSchemaVersion ?? -1;\n if (!pluginMigrations)\n continue;\n const lastPluginMigration = pluginMigrations.at(-1);\n if (!lastPluginMigration)\n continue;\n for (const migration of pluginMigrations) {\n if (migration.version > currentSchemaVersion) {\n try {\n pluginDefinition.config = migration.migrate(pluginDefinition.config);\n }\n catch (error) {\n throw new Error(`Error migrating plugin ${pluginDefinition.id} to version ${migration.version}: ${String(error)}`);\n }\n }\n }\n pluginDefinition.configSchemaVersion = lastPluginMigration.version;\n }\n });\n}\n//# sourceMappingURL=run-migrations.js.map","import { ZodType } from 'zod';\nimport { zodPluginSymbol } from './common.js';\nexport class ZodWithPlugins extends ZodType {\n _parse(input) {\n const context = input.parent.common;\n // run builder\n const zodPluginContext = context[zodPluginSymbol];\n if (!zodPluginContext) {\n throw new Error(`Spec must be run within a Zod plugin context`);\n }\n const innerType = this._def.getter(zodPluginContext.pluginStore, input.data);\n return innerType._parse(input);\n }\n}\nObject.defineProperty(ZodWithPlugins, \"create\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (getter) => new ZodWithPlugins({\n getter,\n })\n});\nexport function zWithPlugins(getter) {\n return ZodWithPlugins.create(getter);\n}\n//# sourceMappingURL=zod-with-plugins.js.map","import { createPluginSpec } from './types.js';\n/**\n * Spec for adding config component for plugin\n */\nexport const authConfigSpec = createPluginSpec('core/auth-config', {});\n//# sourceMappingURL=auth-config-spec.js.map","import { createPluginSpec } from './types.js';\nexport function createWebConfigImplementation() {\n const components = new Map();\n return {\n registerWebConfigComponent(pluginId, ConfigComponent) {\n if (components.has(pluginId)) {\n throw new Error(`Web config component for plugin ${pluginId} is already registered`);\n }\n components.set(pluginId, ConfigComponent);\n },\n getWebConfigComponent(pluginId) {\n return components.get(pluginId);\n },\n };\n}\n/**\n * Spec for adding config component for plugin\n */\nexport const webConfigSpec = createPluginSpec('core/web-config', {\n platforms: 'web',\n defaultInitializer: createWebConfigImplementation,\n});\n//# sourceMappingURL=web-config-spec.js.map","import { safeMerge } from '@baseplate-dev/utils';\nimport { createPluginSpec } from '#src/plugins/index.js';\nexport function createAppCompiler() {\n const children = {};\n let rootChildren = {};\n return {\n addChildrenToFeature(featureId, newChildren) {\n children[featureId] = safeMerge(children[featureId] ?? {}, newChildren);\n },\n getChildrenForFeature(featureId) {\n return children[featureId] ?? {};\n },\n addRootChildren(newChildren) {\n rootChildren = safeMerge(rootChildren, newChildren);\n },\n getRootChildren() {\n return rootChildren;\n },\n };\n}\nexport function createAppCompilerPlugin() {\n const compilers = new Map();\n return {\n registerAppCompiler(compiler) {\n const appCompilers = compilers.get(compiler.appType) ?? [];\n if (!compilers.has(compiler.appType)) {\n compilers.set(compiler.appType, appCompilers);\n }\n appCompilers.push(compiler);\n },\n getAppCompilers(appType) {\n return compilers.get(appType) ?? [];\n },\n };\n}\n/**\n * Spec for modifying the app compiler\n */\nexport const appCompilerSpec = createPluginSpec('AppCompiler', {\n defaultInitializer: createAppCompilerPlugin,\n});\n//# sourceMappingURL=app-compiler-spec.js.map","import { createPluginSpec } from '#src/plugins/spec/types.js';\nexport function createModelTransformerCompilerImplementation() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const transformers = new Map();\n return {\n registerTransformerCompiler(transformer) {\n if (transformers.has(transformer.name)) {\n throw new Error(`Model transformer with name ${transformer.name} is already registered`);\n }\n transformers.set(transformer.name, transformer);\n },\n getModelTransformerCompiler(name, builtInTransformers = []) {\n const builtInTransformer = builtInTransformers.find((b) => b.name === name);\n if (builtInTransformer) {\n return builtInTransformer;\n }\n const transformer = transformers.get(name);\n if (!transformer) {\n throw new Error(`Unable to find transformer with name ${name}`);\n }\n return transformer;\n },\n };\n}\n/**\n * Spec for adding config component for plugin\n */\nexport const modelTransformerCompilerSpec = createPluginSpec('core/model-transformer-compiler', { defaultInitializer: createModelTransformerCompilerImplementation });\n//# sourceMappingURL=model-transformer-compiler-spec.js.map","// obtained from Tailwind (https://github.com/tailwindlabs/tailwindcss/blob/master/src/public/colors.js)\nexport const PALETTE_SHADES = [\n '50',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n '950',\n];\nexport const FIXED_COLOR_MAPPINGS = {\n white: 'oklch(1 0 0)',\n black: 'oklch(0 0 0)',\n};\nexport const COLOR_PALETTES = {\n red: {\n '50': 'oklch(0.971 0.013 17.38)',\n '100': 'oklch(0.936 0.032 17.717)',\n '200': 'oklch(0.885 0.062 18.334)',\n '300': 'oklch(0.808 0.114 19.571)',\n '400': 'oklch(0.704 0.191 22.216)',\n '500': 'oklch(0.637 0.237 25.331)',\n '600': 'oklch(0.577 0.245 27.325)',\n '700': 'oklch(0.505 0.213 27.518)',\n '800': 'oklch(0.444 0.177 26.899)',\n '900': 'oklch(0.396 0.141 25.723)',\n '950': 'oklch(0.258 0.092 26.042)',\n },\n orange: {\n '50': 'oklch(0.98 0.016 73.684)',\n '100': 'oklch(0.954 0.038 75.164)',\n '200': 'oklch(0.901 0.076 70.697)',\n '300': 'oklch(0.837 0.128 66.29)',\n '400': 'oklch(0.75 0.183 55.934)',\n '500': 'oklch(0.705 0.213 47.604)',\n '600': 'oklch(0.646 0.222 41.116)',\n '700': 'oklch(0.553 0.195 38.402)',\n '800': 'oklch(0.47 0.157 37.304)',\n '900': 'oklch(0.408 0.123 38.172)',\n '950': 'oklch(0.266 0.079 36.259)',\n },\n amber: {\n '50': 'oklch(0.987 0.022 95.277)',\n '100': 'oklch(0.962 0.059 95.617)',\n '200': 'oklch(0.924 0.12 95.746)',\n '300': 'oklch(0.879 0.169 91.605)',\n '400': 'oklch(0.828 0.189 84.429)',\n '500': 'oklch(0.769 0.188 70.08)',\n '600': 'oklch(0.666 0.179 58.318)',\n '700': 'oklch(0.555 0.163 48.998)',\n '800': 'oklch(0.473 0.137 46.201)',\n '900': 'oklch(0.414 0.112 45.904)',\n '950': 'oklch(0.279 0.077 45.635)',\n },\n yellow: {\n '50': 'oklch(0.987 0.026 102.212)',\n '100': 'oklch(0.973 0.071 103.193)',\n '200': 'oklch(0.945 0.129 101.54)',\n '300': 'oklch(0.905 0.182 98.111)',\n '400': 'oklch(0.852 0.199 91.936)',\n '500': 'oklch(0.795 0.184 86.047)',\n '600': 'oklch(0.681 0.162 75.834)',\n '700': 'oklch(0.554 0.135 66.442)',\n '800': 'oklch(0.476 0.114 61.907)',\n '900': 'oklch(0.421 0.095 57.708)',\n '950': 'oklch(0.286 0.066 53.813)',\n },\n lime: {\n '50': 'oklch(0.986 0.031 120.757)',\n '100': 'oklch(0.967 0.067 122.328)',\n '200': 'oklch(0.938 0.127 124.321)',\n '300': 'oklch(0.897 0.196 126.665)',\n '400': 'oklch(0.841 0.238 128.85)',\n '500': 'oklch(0.768 0.233 130.85)',\n '600': 'oklch(0.648 0.2 131.684)',\n '700': 'oklch(0.532 0.157 131.589)',\n '800': 'oklch(0.453 0.124 130.933)',\n '900': 'oklch(0.405 0.101 131.063)',\n '950': 'oklch(0.274 0.072 132.109)',\n },\n green: {\n '50': 'oklch(0.982 0.018 155.826)',\n '100': 'oklch(0.962 0.044 156.743)',\n '200': 'oklch(0.925 0.084 155.995)',\n '300': 'oklch(0.871 0.15 154.449)',\n '400': 'oklch(0.792 0.209 151.711)',\n '500': 'oklch(0.723 0.219 149.579)',\n '600': 'oklch(0.627 0.194 149.214)',\n '700': 'oklch(0.527 0.154 150.069)',\n '800': 'oklch(0.448 0.119 151.328)',\n '900': 'oklch(0.393 0.095 152.535)',\n '950': 'oklch(0.266 0.065 152.934)',\n },\n emerald: {\n '50': 'oklch(0.979 0.021 166.113)',\n '100': 'oklch(0.95 0.052 163.051)',\n '200': 'oklch(0.905 0.093 164.15)',\n '300': 'oklch(0.845 0.143 164.978)',\n '400': 'oklch(0.765 0.177 163.223)',\n '500': 'oklch(0.696 0.17 162.48)',\n '600': 'oklch(0.596 0.145 163.225)',\n '700': 'oklch(0.508 0.118 165.612)',\n '800': 'oklch(0.432 0.095 166.913)',\n '900': 'oklch(0.378 0.077 168.94)',\n '950': 'oklch(0.262 0.051 172.552)',\n },\n teal: {\n '50': 'oklch(0.984 0.014 180.72)',\n '100': 'oklch(0.953 0.051 180.801)',\n '200': 'oklch(0.91 0.096 180.426)',\n '300': 'oklch(0.855 0.138 181.071)',\n '400': 'oklch(0.777 0.152 181.912)',\n '500': 'oklch(0.704 0.14 182.503)',\n '600': 'oklch(0.6 0.118 184.704)',\n '700': 'oklch(0.511 0.096 186.391)',\n '800': 'oklch(0.437 0.078 188.216)',\n '900': 'oklch(0.386 0.063 188.416)',\n '950': 'oklch(0.277 0.046 192.524)',\n },\n cyan: {\n '50': 'oklch(0.984 0.019 200.873)',\n '100': 'oklch(0.956 0.045 203.388)',\n '200': 'oklch(0.917 0.08 205.041)',\n '300': 'oklch(0.865 0.127 207.078)',\n '400': 'oklch(0.789 0.154 211.53)',\n '500': 'oklch(0.715 0.143 215.221)',\n '600': 'oklch(0.609 0.126 221.723)',\n '700': 'oklch(0.52 0.105 223.128)',\n '800': 'oklch(0.45 0.085 224.283)',\n '900': 'oklch(0.398 0.07 227.392)',\n '950': 'oklch(0.302 0.056 229.695)',\n },\n sky: {\n '50': 'oklch(0.977 0.013 236.62)',\n '100': 'oklch(0.951 0.026 236.824)',\n '200': 'oklch(0.901 0.058 230.902)',\n '300': 'oklch(0.828 0.111 230.318)',\n '400': 'oklch(0.746 0.16 232.661)',\n '500': 'oklch(0.685 0.169 237.323)',\n '600': 'oklch(0.588 0.158 241.966)',\n '700': 'oklch(0.5 0.134 242.749)',\n '800': 'oklch(0.443 0.11 240.79)',\n '900': 'oklch(0.391 0.09 240.876)',\n '950': 'oklch(0.293 0.066 243.157)',\n },\n blue: {\n '50': 'oklch(0.97 0.014 254.604)',\n '100': 'oklch(0.932 0.032 255.585)',\n '200': 'oklch(0.882 0.059 254.128)',\n '300': 'oklch(0.809 0.105 251.813)',\n '400': 'oklch(0.707 0.165 254.624)',\n '500': 'oklch(0.623 0.214 259.815)',\n '600': 'oklch(0.546 0.245 262.881)',\n '700': 'oklch(0.488 0.243 264.376)',\n '800': 'oklch(0.424 0.199 265.638)',\n '900': 'oklch(0.379 0.146 265.522)',\n '950': 'oklch(0.282 0.091 267.935)',\n },\n indigo: {\n '50': 'oklch(0.962 0.018 272.314)',\n '100': 'oklch(0.93 0.034 272.788)',\n '200': 'oklch(0.87 0.065 274.039)',\n '300': 'oklch(0.785 0.115 274.713)',\n '400': 'oklch(0.673 0.182 276.935)',\n '500': 'oklch(0.585 0.233 277.117)',\n '600': 'oklch(0.511 0.262 276.966)',\n '700': 'oklch(0.457 0.24 277.023)',\n '800': 'oklch(0.398 0.195 277.366)',\n '900': 'oklch(0.359 0.144 278.697)',\n '950': 'oklch(0.257 0.09 281.288)',\n },\n violet: {\n '50': 'oklch(0.969 0.016 293.756)',\n '100': 'oklch(0.943 0.029 294.588)',\n '200': 'oklch(0.894 0.057 293.283)',\n '300': 'oklch(0.811 0.111 293.571)',\n '400': 'oklch(0.702 0.183 293.541)',\n '500': 'oklch(0.606 0.25 292.717)',\n '600': 'oklch(0.541 0.281 293.009)',\n '700': 'oklch(0.491 0.27 292.581)',\n '800': 'oklch(0.432 0.232 292.759)',\n '900': 'oklch(0.38 0.189 293.745)',\n '950': 'oklch(0.283 0.141 291.089)',\n },\n purple: {\n '50': 'oklch(0.977 0.014 308.299)',\n '100': 'oklch(0.946 0.033 307.174)',\n '200': 'oklch(0.902 0.063 306.703)',\n '300': 'oklch(0.827 0.119 306.383)',\n '400': 'oklch(0.714 0.203 305.504)',\n '500': 'oklch(0.627 0.265 303.9)',\n '600': 'oklch(0.558 0.288 302.321)',\n '700': 'oklch(0.496 0.265 301.924)',\n '800': 'oklch(0.438 0.218 303.724)',\n '900': 'oklch(0.381 0.176 304.987)',\n '950': 'oklch(0.291 0.149 302.717)',\n },\n fuchsia: {\n '50': 'oklch(0.977 0.017 320.058)',\n '100': 'oklch(0.952 0.037 318.852)',\n '200': 'oklch(0.903 0.076 319.62)',\n '300': 'oklch(0.833 0.145 321.434)',\n '400': 'oklch(0.74 0.238 322.16)',\n '500': 'oklch(0.667 0.295 322.15)',\n '600': 'oklch(0.591 0.293 322.896)',\n '700': 'oklch(0.518 0.253 323.949)',\n '800': 'oklch(0.452 0.211 324.591)',\n '900': 'oklch(0.401 0.17 325.612)',\n '950': 'oklch(0.293 0.136 325.661)',\n },\n pink: {\n '50': 'oklch(0.971 0.014 343.198)',\n '100': 'oklch(0.948 0.028 342.258)',\n '200': 'oklch(0.899 0.061 343.231)',\n '300': 'oklch(0.823 0.12 346.018)',\n '400': 'oklch(0.718 0.202 349.761)',\n '500': 'oklch(0.656 0.241 354.308)',\n '600': 'oklch(0.592 0.249 0.584)',\n '700': 'oklch(0.525 0.223 3.958)',\n '800': 'oklch(0.459 0.187 3.815)',\n '900': 'oklch(0.408 0.153 2.432)',\n '950': 'oklch(0.284 0.109 3.907)',\n },\n rose: {\n '50': 'oklch(0.969 0.015 12.422)',\n '100': 'oklch(0.941 0.03 12.58)',\n '200': 'oklch(0.892 0.058 10.001)',\n '300': 'oklch(0.81 0.117 11.638)',\n '400': 'oklch(0.712 0.194 13.428)',\n '500': 'oklch(0.645 0.246 16.439)',\n '600': 'oklch(0.586 0.253 17.585)',\n '700': 'oklch(0.514 0.222 16.935)',\n '800': 'oklch(0.455 0.188 13.697)',\n '900': 'oklch(0.41 0.159 10.272)',\n '950': 'oklch(0.271 0.105 12.094)',\n },\n slate: {\n '50': 'oklch(0.984 0.003 247.858)',\n '100': 'oklch(0.968 0.007 247.896)',\n '200': 'oklch(0.929 0.013 255.508)',\n '300': 'oklch(0.869 0.022 252.894)',\n '400': 'oklch(0.704 0.04 256.788)',\n '500': 'oklch(0.554 0.046 257.417)',\n '600': 'oklch(0.446 0.043 257.281)',\n '700': 'oklch(0.372 0.044 257.287)',\n '800': 'oklch(0.279 0.041 260.031)',\n '900': 'oklch(0.208 0.042 265.755)',\n '950': 'oklch(0.129 0.042 264.695)',\n },\n gray: {\n '50': 'oklch(0.985 0.002 247.839)',\n '100': 'oklch(0.967 0.003 264.542)',\n '200': 'oklch(0.928 0.006 264.531)',\n '300': 'oklch(0.872 0.01 258.338)',\n '400': 'oklch(0.707 0.022 261.325)',\n '500': 'oklch(0.551 0.027 264.364)',\n '600': 'oklch(0.446 0.03 256.802)',\n '700': 'oklch(0.373 0.034 259.733)',\n '800': 'oklch(0.278 0.033 256.848)',\n '900': 'oklch(0.21 0.034 264.665)',\n '950': 'oklch(0.13 0.028 261.692)',\n },\n zinc: {\n '50': 'oklch(0.985 0 0)',\n '100': 'oklch(0.967 0.001 286.375)',\n '200': 'oklch(0.92 0.004 286.32)',\n '300': 'oklch(0.871 0.006 286.286)',\n '400': 'oklch(0.705 0.015 286.067)',\n '500': 'oklch(0.552 0.016 285.938)',\n '600': 'oklch(0.442 0.017 285.786)',\n '700': 'oklch(0.37 0.013 285.805)',\n '800': 'oklch(0.274 0.006 286.033)',\n '900': 'oklch(0.21 0.006 285.885)',\n '950': 'oklch(0.141 0.005 285.823)',\n },\n neutral: {\n '50': 'oklch(0.985 0 0)',\n '100': 'oklch(0.97 0 0)',\n '200': 'oklch(0.922 0 0)',\n '300': 'oklch(0.87 0 0)',\n '400': 'oklch(0.708 0 0)',\n '500': 'oklch(0.556 0 0)',\n '600': 'oklch(0.439 0 0)',\n '700': 'oklch(0.371 0 0)',\n '800': 'oklch(0.269 0 0)',\n '900': 'oklch(0.205 0 0)',\n '950': 'oklch(0.145 0 0)',\n },\n stone: {\n '50': 'oklch(0.985 0.001 106.423)',\n '100': 'oklch(0.97 0.001 106.424)',\n '200': 'oklch(0.923 0.003 48.717)',\n '300': 'oklch(0.869 0.005 56.366)',\n '400': 'oklch(0.709 0.01 56.259)',\n '500': 'oklch(0.553 0.013 58.071)',\n '600': 'oklch(0.444 0.011 73.639)',\n '700': 'oklch(0.374 0.01 67.558)',\n '800': 'oklch(0.268 0.007 34.298)',\n '900': 'oklch(0.216 0.006 56.043)',\n '950': 'oklch(0.147 0.004 49.25)',\n },\n};\n//# sourceMappingURL=colors.js.map","export const THEME_COLORS = {\n // Surface Colors\n background: {\n name: 'Background',\n description: 'The background color of the page',\n lightDefault: { color: 'white' },\n darkDefault: { baseShade: '950' },\n groupKey: 'page',\n category: 'surface',\n },\n foreground: {\n name: 'Foreground',\n description: 'The foreground color of the page',\n lightDefault: { baseShade: '950' },\n darkDefault: { baseShade: '50' },\n groupKey: 'page',\n category: 'surface',\n },\n muted: {\n name: 'Muted Background',\n description: 'Muted backgrounds such as <TabsList />, <Skeleton /> and <Switch />, also used as background for containers on white background or vice versa',\n lightDefault: { baseShade: '100' },\n darkDefault: { baseShade: '800' },\n groupKey: 'muted',\n category: 'surface',\n },\n mutedForeground: {\n name: 'Muted Foreground',\n description: 'Used for secondary text and subtitles',\n lightDefault: { baseShade: '500' },\n darkDefault: { baseShade: '400' },\n groupKey: 'muted',\n category: 'surface',\n },\n card: {\n name: 'Card Background',\n description: 'Background color for <Card />',\n lightDefault: { color: 'white' },\n darkDefault: { baseShade: '950' },\n groupKey: 'card',\n category: 'surface',\n },\n cardForeground: {\n name: 'Card Foreground',\n description: 'Foreground color for <Card />',\n lightDefault: { baseShade: '950' },\n darkDefault: { baseShade: '50' },\n groupKey: 'card',\n category: 'surface',\n },\n popover: {\n name: 'Popover Background',\n description: 'Background color for popovers such as <DropdownMenu />, <HoverCard />, <Popover />',\n lightDefault: { color: 'white' },\n darkDefault: { baseShade: '950' },\n groupKey: 'popover',\n category: 'surface',\n },\n popoverForeground: {\n name: 'Popover Foreground',\n description: 'Foreground color for popovers such as <DropdownMenu />, <HoverCard />, <Popover />',\n lightDefault: { baseShade: '950' },\n darkDefault: { baseShade: '50' },\n groupKey: 'popover',\n category: 'surface',\n },\n accent: {\n name: 'Accent',\n description: 'Used for accents such as hover effects on <DropdownMenuItem>, <SelectItem>...',\n lightDefault: { baseShade: '100' },\n darkDefault: { baseShade: '800' },\n groupKey: 'accent',\n category: 'surface',\n },\n accentForeground: {\n name: 'Accent Foreground',\n description: 'Used for accent foregrounds such as hover effects on <DropdownMenuItem>, <SelectItem>...',\n lightDefault: { baseShade: '900' },\n darkDefault: { baseShade: '50' },\n groupKey: 'accent',\n category: 'surface',\n },\n success: {\n name: 'Success',\n description: 'Used for success state on input fields, toast or alerts',\n lightDefault: { color: 'emerald-50' },\n darkDefault: { color: 'emerald-950' },\n groupKey: 'success',\n category: 'surface',\n },\n successForeground: {\n name: 'Success Foreground',\n description: 'Used for success foregrounds',\n lightDefault: { color: 'emerald-950' },\n darkDefault: { color: 'emerald-50' },\n groupKey: 'success',\n category: 'surface',\n },\n warning: {\n name: 'Warning',\n description: 'Used for warning color on toast or alert',\n lightDefault: { color: 'amber-50' },\n darkDefault: { color: 'amber-950' },\n groupKey: 'warning',\n category: 'surface',\n },\n warningForeground: {\n name: 'Warning Foreground',\n description: 'Used for warning foregrounds',\n lightDefault: { color: 'amber-950' },\n darkDefault: { color: 'amber-50' },\n groupKey: 'warning',\n category: 'surface',\n },\n error: {\n name: 'Error',\n description: 'Used for error state on input fields, toast or alerts',\n lightDefault: { color: 'red-50' },\n darkDefault: { color: 'red-950' },\n groupKey: 'error',\n category: 'surface',\n },\n errorForeground: {\n name: 'Error Foreground',\n description: 'Used for error foregrounds',\n lightDefault: { color: 'red-950' },\n darkDefault: { color: 'red-50' },\n groupKey: 'error',\n category: 'surface',\n },\n // Interactive Element Colors\n primary: {\n name: 'Primary',\n description: 'Primary colors for <Button /> and other active states for interactive elements such as checkbox',\n lightDefault: { primaryShade: '800' },\n darkDefault: { primaryShade: '950' },\n groupKey: 'primary',\n category: 'interactive',\n },\n primaryHover: {\n name: 'Primary Hover',\n description: 'Hover background for primary color',\n lightDefault: { primaryShade: '900' },\n darkDefault: { primaryShade: '800' },\n groupKey: 'primary',\n category: 'interactive',\n },\n primaryForeground: {\n name: 'Primary Foreground',\n description: 'Text color for primary button',\n lightDefault: { baseShade: '50' },\n darkDefault: { baseShade: '50' },\n groupKey: 'primary',\n category: 'interactive',\n },\n secondary: {\n name: 'Secondary',\n description: 'Secondary colors for <Button />',\n lightDefault: { baseShade: '100' },\n darkDefault: { baseShade: '800' },\n groupKey: 'secondary',\n category: 'interactive',\n },\n secondaryHover: {\n name: 'Secondary Hover',\n description: 'Hover background for secondary color',\n lightDefault: { baseShade: '300' },\n darkDefault: { baseShade: '600' },\n groupKey: 'secondary',\n category: 'interactive',\n },\n secondaryForeground: {\n name: 'Secondary Foreground',\n description: 'Text color for secondary button',\n lightDefault: { baseShade: '900' },\n darkDefault: { baseShade: '50' },\n groupKey: 'secondary',\n category: 'interactive',\n },\n destructive: {\n name: 'Destructive',\n description: 'Used for destructive actions such as <Button variant=\"destructive\">',\n lightDefault: { color: 'red-500' },\n darkDefault: { color: 'red-900' },\n groupKey: 'destructive',\n category: 'interactive',\n },\n destructiveHover: {\n name: 'Destructive Hover',\n description: 'Hover color for destructive background',\n lightDefault: { color: 'red-700' },\n darkDefault: { color: 'red-700' },\n groupKey: 'destructive',\n category: 'interactive',\n },\n destructiveForeground: {\n name: 'Destructive Foreground',\n description: 'Hover color for destructive background',\n lightDefault: { baseShade: '50' },\n darkDefault: { baseShade: '50' },\n groupKey: 'destructive',\n category: 'interactive',\n },\n link: {\n name: 'Link',\n description: 'Used for interactive links mostly in text',\n lightDefault: { primaryShade: '700' },\n darkDefault: { primaryShade: '600' },\n groupKey: 'link',\n category: 'interactive',\n },\n linkVisited: {\n name: 'Visited Link',\n description: 'Color for link after being visited',\n lightDefault: { primaryShade: '800' },\n darkDefault: { primaryShade: '700' },\n groupKey: 'link',\n category: 'interactive',\n },\n // Utility Colors\n border: {\n name: 'Border',\n description: 'Default border color',\n lightDefault: { baseShade: '200' },\n darkDefault: { baseShade: '800' },\n groupKey: 'border',\n category: 'utility',\n },\n input: {\n name: 'Input Border',\n description: 'Border color for inputs such as <Input />, <Select />, <Textarea />',\n lightDefault: { baseShade: '200' },\n darkDefault: { baseShade: '800' },\n groupKey: 'border',\n category: 'utility',\n },\n ring: {\n name: 'Focus Ring',\n description: 'Used for focus ring.',\n lightDefault: { primaryShade: '400' },\n darkDefault: { primaryShade: '500' },\n groupKey: 'ring',\n category: 'utility',\n },\n};\nexport const THEME_COLOR_KEYS = Object.keys(THEME_COLORS);\n//# sourceMappingURL=theme-colors.js.map","function cleanAndSplitPath(path) {\n return path\n .replace(/^\\./, '')\n .split('/')\n .filter((segment) => segment !== '');\n}\n/**\n * Computes the relative path from one path to another.\n */\nexport function computeRelativePath(fromPath, toPath) {\n const fromSegments = cleanAndSplitPath(fromPath);\n const toSegments = cleanAndSplitPath(toPath);\n // Remove the common segments from the beginning\n while (fromSegments.length > 0 &&\n toSegments.length > 0 &&\n fromSegments[0] === toSegments[0]) {\n fromSegments.shift();\n toSegments.shift();\n }\n // Add the necessary number of '../' to go up the directory hierarchy\n const numParentDirs = fromSegments.length;\n const parentDirs = Array.from({ length: numParentDirs }).fill('..');\n // Construct the relative path\n const relativePath = [...parentDirs, ...toSegments].join('/');\n return relativePath;\n}\n//# sourceMappingURL=path.js.map","import { computeRelativePath } from '#src/utils/path.js';\nfunction byId(projectDefinition, id) {\n const config = projectDefinition.apps.find((app) => app.id === id);\n if (!config) {\n throw new Error(`Unable to find app with ID ${id}`);\n }\n return config;\n}\nfunction getBackendApp(projectDefinition) {\n const backendApps = projectDefinition.apps.filter((a) => a.type === 'backend');\n if (backendApps.length > 1 || backendApps.length === 0) {\n throw new Error(`Only one backend app is supported and must exist`);\n }\n const backendApp = backendApps[0];\n return backendApp;\n}\nexport function getBackendRelativePath(appConfig, backendApp) {\n const backendRelativePath = computeRelativePath(appConfig.packageLocation\n ? appConfig.packageLocation\n : `packages/${appConfig.name}`, backendApp.packageLocation\n ? backendApp.packageLocation\n : `packages/${backendApp.name}`);\n return backendRelativePath;\n}\nexport const AppUtils = {\n byId,\n getBackendApp,\n getBackendRelativePath,\n};\n//# sourceMappingURL=app-utils.js.map","import { toposort } from '@baseplate-dev/utils';\nimport { keyBy, mapValues } from 'es-toolkit';\n/**\n * Resolves entity names in a ZodRefPayload.\n *\n * @param payload - The ZodRefPayload to resolve.\n * @param options - The options for resolving entity names.\n *\n * @template T - The type of the payload.\n */\nexport function resolveZodRefPayloadNames(payload, { skipReferenceNameResolution = false, allowInvalidReferences = false, } = {}) {\n const { entitiesWithNameResolver, references, data } = payload;\n const entitiesById = keyBy(entitiesWithNameResolver, (entity) => entity.id);\n const resolvedEntitiesById = new Map();\n // sort entities by dependency order\n const orderedEntities = toposort(entitiesWithNameResolver.map((entity) => entity.id), entitiesWithNameResolver.flatMap((entity) => {\n const entityIds = entity.nameResolver.idsToResolve ?? {};\n return Object.values(entityIds)\n .flat()\n .filter((id) => id in entitiesById)\n .map((id) => [id, entity.id]);\n }));\n function resolveIdToName(id) {\n if (skipReferenceNameResolution) {\n return id;\n }\n const entity = resolvedEntitiesById.get(id);\n if (!entity) {\n if (allowInvalidReferences) {\n return id;\n }\n throw new Error(`Could not resolve entity name for id: ${id}`);\n }\n return entity.name;\n }\n for (const id of orderedEntities) {\n const { nameResolver, ...rest } = entitiesById[id];\n const resolvedIds = mapValues(nameResolver.idsToResolve ?? {}, (idOrIds) => Array.isArray(idOrIds)\n ? idOrIds.map((id) => resolveIdToName(id))\n : resolveIdToName(idOrIds));\n resolvedEntitiesById.set(rest.id, {\n ...rest,\n name: nameResolver.resolveName(resolvedIds),\n });\n }\n return {\n entities: [...resolvedEntitiesById.values()],\n references,\n data,\n };\n}\n//# sourceMappingURL=resolve-zod-ref-payload-names.js.map","import { ZodRefWrapper } from './ref-builder.js';\nimport { resolveZodRefPayloadNames } from './resolve-zod-ref-payload-names.js';\n/**\n * Parses a schema with references.\n *\n * @param schema - The schema to parse.\n * @param input - The input to parse.\n * @param options - The options for parsing the schema.\n *\n * @returns The parsed data.\n */\nexport function parseSchemaWithReferences(schema, input, options) {\n const wrapper = ZodRefWrapper.create(schema);\n return resolveZodRefPayloadNames(wrapper.parse(input), options);\n}\n//# sourceMappingURL=parse-schema-with-references.js.map","import { toposort } from '@baseplate-dev/utils';\nimport { groupBy, keyBy, uniq } from 'es-toolkit';\nimport { get, set } from 'es-toolkit/compat';\nimport { parseSchemaWithReferences } from './parse-schema-with-references.js';\nfunction referenceToNameParentId(name, parentId) {\n return JSON.stringify({ name, parentId });\n}\nexport function deserializeSchemaWithReferences(schema, input) {\n const payload = parseSchemaWithReferences(schema, input, {\n skipReferenceNameResolution: true,\n });\n // resolve all references\n const { references, entities, data } = payload;\n // check we don't have more entities than IDs\n const entitiesById = groupBy(entities, (entity) => entity.id);\n const duplicateEntityIds = Object.values(entitiesById).filter((e) => e.length > 1);\n if (duplicateEntityIds.length > 0) {\n throw new Error(`Found multiple duplicate entity IDs: ${duplicateEntityIds\n .map((ents) => `${ents[0].id} (${ents.map((e) => e.path.join('.')).join(',')})`)\n .join(', ')}`);\n }\n const uniqueEntityIds = uniq(entities.map((e) => e.id));\n if (uniqueEntityIds.length !== entities.length) {\n throw new Error(`Found duplicate entity IDs`);\n }\n // collect reference entity types\n const entityTypes = uniq(entities.map((e) => e.type));\n const entityTypeNames = uniq(entityTypes.map((t) => t.name));\n if (entityTypeNames.length !== entityTypes.length) {\n throw new Error(`Found more entity types than entity type names implying duplicate entity type name`);\n }\n const entityTypeOrder = toposort(entityTypeNames, entityTypes\n .filter((entityType) => !!entityType.parentType)\n .map((entityType) => [\n entityType.parentType?.name ?? '',\n entityType.name,\n ]));\n const entitiesByType = groupBy(entities, (e) => e.type.name);\n const referencesByType = groupBy(references, (r) => r.type.name);\n for (const name of entityTypeOrder) {\n const entities = entitiesByType[name] ?? [];\n const references = referencesByType[name] ?? [];\n // resolve references to their ID\n const entitiesByParentIdName = keyBy(entities, (e) => {\n const { parentPath } = e;\n const parentId = parentPath\n ? get(data, parentPath)\n : undefined;\n if (parentPath && typeof parentId !== 'string') {\n throw new Error(`Could not resolve parent path: ${parentPath.join('.')}`);\n }\n return referenceToNameParentId(e.name, parentId);\n });\n for (const ref of references) {\n const name = get(data, ref.path);\n // parent ID should have already been resolved due to order of resolving references\n const parentId = ref.parentPath && get(data, ref.parentPath);\n const parentIdName = referenceToNameParentId(name, parentId);\n const resolvedEntity = entitiesByParentIdName[parentIdName];\n if (!resolvedEntity) {\n throw new Error(`Unable to resolve reference: ${ref.path.join('.')} (${ref.type.name} ${parentIdName})`);\n }\n set(data, ref.path, resolvedEntity.id);\n }\n }\n return payload;\n}\n//# sourceMappingURL=deserialize-schema.js.map","import { sortBy } from 'es-toolkit';\nimport { get, groupBy, set } from 'es-toolkit/compat';\nimport { parseSchemaWithReferences } from './parse-schema-with-references.js';\n// sentinel ID to signify the reference has been flagged for deletion\nconst DELETED_SENTINEL_ID = 'deleted-sentinel-id';\n/**\n * Fixes any reference deletions by performing the appropriate action for the reference\n */\nexport function fixRefDeletions(schema, value) {\n const issues = [];\n // find all references that do not have a corresponding entity\n let iterations;\n let valueToEdit = value;\n for (iterations = 0; iterations < 100; iterations++) {\n const parseResult = parseSchemaWithReferences(schema, valueToEdit, {\n allowInvalidReferences: true,\n });\n const { references, entities } = parseResult;\n valueToEdit = parseResult.data;\n const entitiesById = new Map(entities.map((e) => [e.id, e]));\n const referencesMissingEntity = references.filter((r) => {\n const id = get(valueToEdit, r.path);\n return id !== DELETED_SENTINEL_ID && !entitiesById.has(id);\n });\n if (referencesMissingEntity.length === 0) {\n if (issues.length > 0) {\n return {\n type: 'failure',\n issues,\n };\n }\n return {\n type: 'success',\n value: valueToEdit,\n refPayload: parseResult,\n };\n }\n const objectsToDeleteInArray = [];\n function tryDeleteParent(path) {\n if (path.length === 0) {\n return false;\n }\n const parentPath = path.slice(0, -1);\n const parent = get(valueToEdit, parentPath);\n if (!Array.isArray(parent)) {\n return false;\n }\n objectsToDeleteInArray.push({\n path: parentPath,\n idx: path.at(-1),\n });\n return true;\n }\n // attempt to fix reference\n for (const ref of referencesMissingEntity) {\n const id = get(valueToEdit, ref.path);\n switch (ref.onDelete) {\n case 'SET_NULL': {\n set(valueToEdit, ref.path, null);\n break;\n }\n case 'RESTRICT': {\n issues.push({ ref, entityId: id });\n set(valueToEdit, ref.path, DELETED_SENTINEL_ID);\n break;\n }\n case 'DELETE': {\n if (!tryDeleteParent(ref.path)) {\n throw new Error(`Unable to find ref to cascade delete to`);\n }\n break;\n }\n case 'DELETE_PARENT': {\n if (!tryDeleteParent(ref.path.slice(0, -1))) {\n throw new Error(`Unable to find ref to cascade delete to`);\n }\n break;\n }\n default: {\n throw new Error(`Unknown onDelete action ${ref.onDelete}`);\n }\n }\n }\n const objectsToDeleteByPath = groupBy(objectsToDeleteInArray, (o) => o.path.join('.'));\n // delete objects in reverse order to avoid index shifting\n for (const [, objects] of Object.entries(objectsToDeleteByPath)) {\n const sortedObjects = sortBy(objects, [(o) => -o.idx]);\n for (const o of sortedObjects) {\n const parent = get(valueToEdit, o.path);\n if (!Array.isArray(parent)) {\n throw new TypeError(`Expected parent to be an array at path ${o.path.join('.')}`);\n }\n parent.splice(o.idx, 1);\n }\n }\n }\n throw new Error(`Exceeded max iterations fixing deletions`);\n}\n//# sourceMappingURL=fix-ref-deletions.js.map","import { get, set } from 'es-toolkit/compat';\nimport { produce } from 'immer';\nimport { parseSchemaWithReferences } from './parse-schema-with-references.js';\nexport function serializeSchemaFromRefPayload(payload) {\n const { references, entities, data } = payload;\n const entitiesById = new Map(entities.map((e) => [e.id, e]));\n return produce((draftData) => {\n for (const reference of references) {\n const entityId = get(draftData, reference.path);\n const entity = entitiesById.get(entityId);\n if (!entity) {\n throw new Error(`Could not find entity with ID: ${entityId} at ${reference.path.join('.')}`);\n }\n set(draftData, reference.path, entity.name);\n }\n })(data);\n}\nexport function serializeSchema(schema, value) {\n const payload = parseSchemaWithReferences(schema, value);\n return serializeSchemaFromRefPayload(payload);\n}\n//# sourceMappingURL=serialize-schema.js.map","import { createEntityType } from '#src/references/index.js';\nexport const authRoleEntityType = createEntityType('role');\n//# sourceMappingURL=index.js.map","import { createEntityType } from '#src/references/index.js';\nexport const appEntityType = createEntityType('app');\nexport function createAppEntryType(name) {\n return name;\n}\n//# sourceMappingURL=types.js.map","import { CASE_VALIDATORS } from '@baseplate-dev/utils';\nimport { z } from 'zod';\nimport { appEntityType } from './types.js';\nexport const baseAppValidators = {\n id: z.string().default(appEntityType.generateNewId()),\n name: CASE_VALIDATORS.KEBAB_CASE,\n type: z.string(),\n packageLocation: z\n .string()\n .regex(/^(?!.*(?:\\/|\\.\\.)\\/)(?!^\\.\\.$)(?!^\\.$)(?:[\\w\\-.]+\\/?)+[\\w\\-.]*|^$/, {\n message: 'Invalid package location. Must be a valid subdirectory.',\n })\n .optional(),\n};\nexport const baseAppSchema = z.object(baseAppValidators);\n//# sourceMappingURL=base.js.map","export const SCALAR_FIELD_TYPES = [\n 'string',\n 'uuid',\n 'int',\n 'boolean',\n 'dateTime',\n 'float',\n 'decimal',\n 'json',\n 'date',\n 'enum',\n];\n//# sourceMappingURL=field-types.js.map","import { z } from 'zod';\nimport { PALETTE_SHADES } from '#src/constants/colors.js';\nimport { THEME_COLOR_KEYS } from '#src/constants/theme-colors.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nexport const oklchColor = z\n .string()\n .regex(/^oklch\\(\\s*([\\d.]+)\\s+([\\d.]+)\\s+([\\d.]+)(?:\\s*\\/\\s*([\\d.]+))?\\s*\\)$/, {\n message: 'OKLCH color must be of the format \"oklch(l c h [/ a])\" where l and c are between 0 and 1 and h is between 0 and 360 and a is between 0 and 100',\n});\nexport const themeColorSchema = z.record(z.enum(THEME_COLOR_KEYS), oklchColor);\nexport const paletteSchema = z\n .object({\n paletteName: z.string().min(1),\n customBase: oklchColor.nullish(),\n shades: z.record(z.enum(PALETTE_SHADES), oklchColor),\n})\n .refine((data) => data.paletteName !== 'custom' || !!data.paletteName, {\n message: 'A custom base color is required if using a custom base palette',\n path: ['customBase'],\n});\nexport const palettesSchema = z.object({\n base: paletteSchema,\n primary: paletteSchema,\n});\nexport const createThemeSchema = definitionSchema(() => z.object({\n palettes: z.object({\n base: paletteSchema,\n primary: paletteSchema,\n }),\n colors: z.object({\n light: themeColorSchema,\n dark: themeColorSchema,\n }),\n}));\n//# sourceMappingURL=theme.js.map","import { z } from 'zod';\nexport const VALIDATORS = {\n PASCAL_CASE_STRING: z\n .string()\n .regex(/^[A-Z][a-zA-Z0-9]*$/, \"Should be PascalCase, e.g. 'MyModel'\"),\n CAMEL_CASE_STRING: z\n .string()\n .regex(/^[a-z][a-zA-Z0-9]*$/, \"Should be camelCase, e.g. 'myField'\"),\n CONSTANT_CASE_STRING: z\n .string()\n .regex(/^[A-Z][A-Z0-9_]*$/, \"Should be CONSTANT_CASE, e.g. 'MY_CONSTANT'\"),\n OPTIONAL_CONSTANT_CASE_STRING: z\n .string()\n .regex(/^[A-Z][A-Z0-9_]*$/, \"Should be CONSTANT_CASE, e.g. 'MY_CONSTANT'\")\n .or(z.literal(''))\n .optional(),\n};\n//# sourceMappingURL=validation.js.map","import { z } from 'zod';\nimport { zRef } from '#src/references/ref-builder.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { authRoleEntityType } from '../auth/index.js';\nimport { modelForeignRelationEntityType, modelLocalRelationEntityType, modelScalarFieldEntityType, } from './types.js';\nconst roleArray = z\n .array(zRef(z.string(), {\n type: authRoleEntityType,\n onDelete: 'DELETE',\n}))\n .optional();\nexport const createModelGraphqlSchema = definitionSchema(() => z.object({\n objectType: z\n .object({\n enabled: z.boolean().default(false),\n fields: z.array(zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n })),\n localRelations: z\n .array(zRef(z.string(), {\n type: modelLocalRelationEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n foreignRelations: z\n .array(zRef(z.string(), {\n type: modelForeignRelationEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n })\n .default({\n enabled: false,\n fields: [],\n }),\n queries: z\n .object({\n get: z\n .object({\n enabled: z.boolean().optional(),\n roles: roleArray,\n })\n .optional(),\n list: z\n .object({\n enabled: z.boolean().optional(),\n roles: roleArray,\n })\n .optional(),\n })\n .default({\n get: {\n enabled: false,\n roles: [],\n },\n list: {\n enabled: false,\n roles: [],\n },\n }),\n mutations: z\n .object({\n create: z\n .object({\n enabled: z.boolean().optional(),\n roles: roleArray,\n })\n .default({\n enabled: false,\n roles: [],\n }),\n update: z\n .object({\n enabled: z.boolean().optional(),\n roles: roleArray,\n })\n .default({\n enabled: false,\n roles: [],\n }),\n delete: z\n .object({\n enabled: z.boolean().optional(),\n roles: roleArray,\n })\n .default({\n enabled: false,\n roles: [],\n }),\n })\n .default({}),\n}));\n//# sourceMappingURL=graphql.js.map","import { z } from 'zod';\nexport const baseTransformerFields = {\n type: z.string().min(1),\n};\nexport const baseTransformerSchema = z.object({\n id: z.string(),\n ...baseTransformerFields,\n});\nexport function createModelTransformerType(payload) {\n return payload;\n}\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { createDefinitionEntityNameResolver, zEnt, zRef, } from '#src/references/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { modelEntityType, modelForeignRelationEntityType, modelScalarFieldEntityType, modelTransformerEntityType, } from '../types.js';\nimport { baseTransformerFields, createModelTransformerType } from './types.js';\nexport const createPasswordTransformerSchema = definitionSchema(() => zEnt(z.object({\n ...baseTransformerFields,\n type: z.literal('password'),\n}), {\n type: modelTransformerEntityType,\n parentPath: { context: 'model' },\n getNameResolver: () => 'password',\n}));\nexport const createEmbeddedRelationTransformerSchema = definitionSchema(() => zEnt(z.object({\n ...baseTransformerFields,\n foreignRelationRef: zRef(z.string().min(1), {\n type: modelForeignRelationEntityType,\n onDelete: 'DELETE_PARENT',\n parentPath: { context: 'model' },\n }),\n type: z.literal('embeddedRelation'),\n embeddedFieldNames: z.array(zRef(z.string().min(1), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'embeddedModel' },\n })),\n embeddedTransformerNames: z\n .array(zRef(z.string().min(1), {\n type: modelTransformerEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'embeddedModel' },\n }))\n .optional(),\n modelRef: zRef(z.string().min(1), {\n type: modelEntityType,\n onDelete: 'RESTRICT',\n }),\n}), {\n type: modelTransformerEntityType,\n parentPath: { context: 'model' },\n getNameResolver: (entity) => createDefinitionEntityNameResolver({\n idsToResolve: { foreignRelation: entity.foreignRelationRef },\n resolveName: (entityNames) => entityNames.foreignRelation,\n }),\n}).refBuilder((builder) => {\n builder.addPathToContext('modelRef', modelEntityType, 'embeddedModel');\n}));\nexport const BUILT_IN_TRANSFORMERS = [\n createModelTransformerType({\n name: 'password',\n schema: createPasswordTransformerSchema,\n getName: () => 'Password',\n }),\n createModelTransformerType({\n name: 'embeddedRelation',\n schema: createEmbeddedRelationTransformerSchema,\n getName: (definitionContainer, definition) => definitionContainer.nameFromId(definition.foreignRelationRef),\n }),\n];\n//# sourceMappingURL=built-in-transformers.js.map","import { createPluginSpec } from '#src/plugins/spec/types.js';\nimport { BUILT_IN_TRANSFORMERS } from './built-in-transformers.js';\nexport function createModelTransformerImplementation() {\n const transformers = {};\n for (const transformer of BUILT_IN_TRANSFORMERS) {\n transformers[transformer.name] =\n transformer;\n }\n return {\n registerModelTransformer(transformer) {\n if (transformers[transformer.name]) {\n throw new Error(`Model transformer with name ${transformer.name} is already registered`);\n }\n transformers[transformer.name] =\n transformer;\n },\n getModelTransformers() {\n return transformers;\n },\n getModelTransformer(name) {\n const transformer = transformers[name];\n if (!transformer) {\n throw new Error(`Unable to find transformer with name ${name}`);\n }\n return transformer;\n },\n };\n}\n/**\n * Spec for adding config component for plugin\n */\nexport const modelTransformerSpec = createPluginSpec('core/model-transformer', {\n defaultInitializer: createModelTransformerImplementation,\n});\n//# sourceMappingURL=model-transformer-spec.js.map","import { zWithPlugins } from '#src/plugins/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { modelTransformerSpec } from './model-transformer-spec.js';\nimport { baseTransformerSchema } from './types.js';\nexport const createTransformerSchema = definitionSchema((ctx) => zWithPlugins((plugins, data) => {\n const { type } = baseTransformerSchema.parse(data);\n const transformer = plugins\n .getPluginSpec(modelTransformerSpec)\n .getModelTransformer(type);\n return transformer.schema(ctx);\n}));\n//# sourceMappingURL=transformers.js.map","import { z } from 'zod';\nimport { zEnt, zRef } from '#src/references/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { featureEntityType } from '../features/index.js';\nimport { modelEnumEntityType, modelEnumValueEntityType } from './types.js';\nexport const createEnumValueSchema = definitionSchema(() => zEnt(z.object({\n name: z.string().min(1),\n friendlyName: z.string().min(1),\n}), {\n type: modelEnumValueEntityType,\n parentPath: { context: 'enum' },\n}));\nexport const createEnumBaseSchema = definitionSchema((ctx) => z.object({\n name: z.string().min(1),\n featureRef: zRef(z.string().min(1), {\n type: featureEntityType,\n onDelete: 'RESTRICT',\n }),\n values: z.array(createEnumValueSchema(ctx)),\n isExposed: z.boolean(),\n}));\nexport const createEnumSchema = definitionSchema((ctx) => zEnt(createEnumBaseSchema(ctx), {\n type: modelEnumEntityType,\n addContext: 'enum',\n}));\n//# sourceMappingURL=enums.js.map","import { z } from 'zod';\nimport { createDefinitionEntityNameResolver, zEnt, zRef, zRefBuilder, zRefId, } from '#src/references/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { SCALAR_FIELD_TYPES } from '#src/types/field-types.js';\nimport { featureEntityType } from '../features/index.js';\nimport { VALIDATORS } from '../utils/validation.js';\nimport { createModelGraphqlSchema } from './graphql.js';\nimport { createTransformerSchema } from './transformers/transformers.js';\nimport { modelEntityType, modelEnumEntityType, modelEnumValueEntityType, modelForeignRelationEntityType, modelLocalRelationEntityType, modelScalarFieldEntityType, modelTransformerEntityType, modelUniqueConstraintEntityType, } from './types.js';\nexport * from './enums.js';\nexport * from './graphql.js';\nexport * from './transformers/index.js';\nexport * from './types.js';\nexport const createModelScalarFieldSchema = definitionSchema(() => zEnt(z.object({\n name: VALIDATORS.CAMEL_CASE_STRING,\n type: z.enum(SCALAR_FIELD_TYPES),\n isOptional: z.boolean().default(false),\n options: zRefBuilder(z\n .object({\n // string options\n default: z.string().default(''),\n // uuid options\n genUuid: z.boolean().optional(),\n // date options\n updatedAt: z.boolean().optional(),\n defaultToNow: z.boolean().optional(),\n // enum options\n enumRef: zRef(z.string().optional(), {\n type: modelEnumEntityType,\n onDelete: 'RESTRICT',\n }),\n defaultEnumValueRef: z.string().optional(),\n })\n .transform((val) => ({\n ...val,\n ...(val.enumRef ? {} : { defaultEnumValueRef: undefined }),\n }))\n .default({ default: '' }), (builder) => {\n builder.addReference({\n type: modelEnumValueEntityType,\n onDelete: 'RESTRICT',\n path: 'defaultEnumValueRef',\n parentPath: 'enumRef',\n });\n }),\n}), {\n type: modelScalarFieldEntityType,\n parentPath: { context: 'model' },\n})\n .superRefine((arg, ctx) => {\n // check default values\n const defaultValue = arg.options.default;\n const { type } = arg;\n if (!defaultValue) {\n return;\n }\n if (type === 'boolean' && !['true', 'false'].includes(defaultValue)) {\n ctx.addIssue({\n path: ['options', 'default'],\n code: 'custom',\n message: 'Default value must be true or false',\n });\n }\n})\n .transform((value) => {\n if (value.type !== 'enum' && value.options.enumRef) {\n return {\n ...value,\n options: {\n ...value.options,\n enumRef: undefined,\n },\n };\n }\n return value;\n}));\nexport const REFERENTIAL_ACTIONS = [\n 'Cascade',\n 'Restrict',\n 'NoAction',\n 'SetNull',\n 'SetDefault',\n];\nexport const createModelRelationFieldSchema = definitionSchema(() => zRefBuilder(z.object({\n id: zRefId,\n foreignId: z\n .string()\n .default(() => modelForeignRelationEntityType.generateNewId()),\n name: VALIDATORS.CAMEL_CASE_STRING,\n references: z.array(z.object({\n localRef: zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n foreignRef: zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'foreignModel' },\n }),\n })),\n modelRef: z.string().min(1),\n foreignRelationName: VALIDATORS.CAMEL_CASE_STRING,\n onDelete: z.enum(REFERENTIAL_ACTIONS).default('Cascade'),\n onUpdate: z.enum(REFERENTIAL_ACTIONS).default('Restrict'),\n}), (builder) => {\n builder.addReference({\n type: modelEntityType,\n onDelete: 'RESTRICT',\n addContext: 'foreignModel',\n path: 'modelRef',\n });\n builder.addEntity({\n type: modelLocalRelationEntityType,\n parentPath: { context: 'model' },\n });\n builder.addEntity({\n type: modelForeignRelationEntityType,\n idPath: 'foreignId',\n getNameResolver: (entity) => entity.foreignRelationName,\n parentPath: 'modelRef',\n });\n}));\nexport const createModelUniqueConstraintSchema = definitionSchema(() => zEnt(z.object({\n fields: z.array(z.object({\n fieldRef: zRef(z.string().min(1), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n })),\n}), {\n type: modelUniqueConstraintEntityType,\n parentPath: { context: 'model' },\n getNameResolver(value) {\n return createDefinitionEntityNameResolver({\n idsToResolve: { fields: value.fields.map((f) => f.fieldRef) },\n resolveName: (entityNames) => entityNames.fields.join('_'),\n });\n },\n}));\nexport const createModelServiceSchema = definitionSchema((ctx) => z.object({\n create: z\n .object({\n enabled: z.boolean().default(false),\n fields: z\n .array(zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n transformerNames: z\n .array(zRef(z.string(), {\n type: modelTransformerEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n })\n .default({ enabled: false }),\n update: z\n .object({\n enabled: z.boolean().default(false),\n fields: z\n .array(zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n transformerNames: z\n .array(zRef(z.string(), {\n type: modelTransformerEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n })\n .default({ enabled: false }),\n delete: z\n .object({\n enabled: z.boolean().default(false),\n })\n .default({\n enabled: false,\n }),\n transformers: z.array(createTransformerSchema(ctx)).default([]),\n}));\nexport const createModelBaseSchema = definitionSchema((ctx) => z.object({\n id: zRefId,\n name: VALIDATORS.PASCAL_CASE_STRING,\n featureRef: zRef(z.string().min(1), {\n type: featureEntityType,\n onDelete: 'RESTRICT',\n }),\n model: z.object({\n fields: z.array(createModelScalarFieldSchema(ctx)),\n relations: z.array(createModelRelationFieldSchema(ctx)).optional(),\n primaryKeyFieldRefs: z\n .array(zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }))\n .min(1),\n uniqueConstraints: z\n .array(createModelUniqueConstraintSchema(ctx))\n .optional(),\n }),\n service: createModelServiceSchema(ctx).default({\n create: { enabled: false },\n update: { enabled: false },\n delete: { enabled: false },\n transformers: [],\n }),\n graphql: createModelGraphqlSchema(ctx).optional(),\n}));\nexport const createModelSchema = definitionSchema((ctx) => zEnt(createModelBaseSchema(ctx), {\n type: modelEntityType,\n addContext: 'model',\n}));\n//# sourceMappingURL=index.js.map","import { createEntityType } from '#src/references/index.js';\nimport { appEntityType } from '../../types.js';\nexport const adminSectionEntityType = createEntityType('admin-section', {\n parentType: appEntityType,\n});\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { zRef } from '#src/references/index.js';\nimport { featureEntityType } from '#src/schema/features/index.js';\nimport { adminSectionEntityType } from './types.js';\nexport const baseAdminSectionValidators = {\n id: z.string().default(adminSectionEntityType.generateNewId()),\n name: z.string().min(1),\n featureRef: zRef(z.string().min(1), {\n type: featureEntityType,\n onDelete: 'RESTRICT',\n }),\n icon: z.string().optional(),\n type: z.string().min(1),\n};\n//# sourceMappingURL=base.js.map","import { z } from 'zod';\nimport { createEntityType } from '#src/references/types.js';\nimport { adminSectionEntityType } from '../types.js';\nexport const baseAdminCrudInputSchema = z.object({\n type: z.string().min(1),\n label: z.string().min(1),\n});\nexport function createAdminCrudInputType(payload) {\n return payload;\n}\nexport const adminCrudEmbeddedFormEntityType = createEntityType('admin-crud-embedded-form', {\n parentType: adminSectionEntityType,\n});\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { zRef } from '#src/references/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { modelForeignRelationEntityType, modelLocalRelationEntityType, modelScalarFieldEntityType, } from '#src/schema/models/index.js';\nimport { adminCrudEmbeddedFormEntityType, createAdminCrudInputType, } from './types.js';\nexport const createAdminCrudTextInputSchema = definitionSchema(() => z.object({\n type: z.literal('text'),\n label: z.string().min(1),\n modelFieldRef: zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n validation: z.string().optional(),\n}));\nconst adminCrudTextInputType = createAdminCrudInputType({\n name: 'text',\n schema: createAdminCrudTextInputSchema,\n});\nexport const createAdminCrudForeignInputSchema = definitionSchema(() => z.object({\n type: z.literal('foreign'),\n label: z.string().min(1),\n localRelationRef: zRef(z.string(), {\n type: modelLocalRelationEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n labelExpression: z.string().min(1),\n valueExpression: z.string().min(1),\n defaultLabel: z.string().optional(),\n nullLabel: z.string().optional(),\n}));\nconst adminCrudForeignInputType = createAdminCrudInputType({\n name: 'foreign',\n schema: createAdminCrudForeignInputSchema,\n});\nexport const createAdminCrudEnumInputSchema = definitionSchema(() => z.object({\n type: z.literal('enum'),\n label: z.string().min(1),\n modelFieldRef: zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n}));\nconst adminCrudEnumInputType = createAdminCrudInputType({\n name: 'enum',\n schema: createAdminCrudEnumInputSchema,\n});\nexport const createAdminCrudEmbeddedInputSchema = definitionSchema(() => z.object({\n type: z.literal('embedded'),\n label: z.string().min(1),\n modelRelationRef: zRef(z.string(), {\n type: modelForeignRelationEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n embeddedFormRef: zRef(z.string(), {\n type: adminCrudEmbeddedFormEntityType,\n parentPath: { context: 'admin-section' },\n onDelete: 'RESTRICT',\n }),\n}));\nexport const adminCrudEmbeddedInputType = createAdminCrudInputType({\n name: 'embedded',\n schema: createAdminCrudEmbeddedInputSchema,\n});\nexport const createAdminCrudEmbeddedLocalInputSchema = definitionSchema(() => z.object({\n type: z.literal('embeddedLocal'),\n label: z.string().min(1),\n localRelationRef: zRef(z.string(), {\n type: modelLocalRelationEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n embeddedFormRef: zRef(z.string(), {\n type: adminCrudEmbeddedFormEntityType,\n parentPath: { context: 'admin-section' },\n onDelete: 'RESTRICT',\n }),\n}));\nexport const adminCrudEmbeddedLocalInputType = createAdminCrudInputType({\n name: 'embeddedLocal',\n schema: createAdminCrudEmbeddedLocalInputSchema,\n});\nexport const createAdminCrudPasswordInputSchema = definitionSchema(() => z.object({\n type: z.literal('password'),\n label: z.string().min(1),\n}));\nconst adminCrudPasswordInputType = createAdminCrudInputType({\n name: 'password',\n schema: createAdminCrudPasswordInputSchema,\n});\nexport const BUILT_IN_ADMIN_CRUD_INPUTS = [\n adminCrudTextInputType,\n adminCrudForeignInputType,\n adminCrudEnumInputType,\n adminCrudEmbeddedInputType,\n adminCrudEmbeddedLocalInputType,\n adminCrudPasswordInputType,\n];\n//# sourceMappingURL=built-in-input.js.map","import { createPluginSpec } from '#src/plugins/spec/types.js';\nimport { BUILT_IN_ADMIN_CRUD_INPUTS } from './built-in-input.js';\nexport function createAdminCrudInputImplementation() {\n const adminCrudInputs = new Map(BUILT_IN_ADMIN_CRUD_INPUTS.map((input) => [input.name, input]));\n return {\n registerAdminCrudInput(input) {\n if (adminCrudInputs.has(input.name)) {\n throw new Error(`Admin CRUD input with name ${input.name} is already registered`);\n }\n adminCrudInputs.set(input.name, input);\n },\n getAdminCrudInputs() {\n return adminCrudInputs;\n },\n getAdminCrudInput(name) {\n const input = adminCrudInputs.get(name);\n if (!input) {\n throw new Error(`Unable to find input with name ${name}`);\n }\n return input;\n },\n };\n}\n/**\n * Spec for adding admin crud input\n */\nexport const adminCrudInputSpec = createPluginSpec('core/admin-crud-input', {\n defaultInitializer: createAdminCrudInputImplementation,\n});\n//# sourceMappingURL=admin-input-spec.js.map","import { zWithPlugins } from '#src/plugins/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { adminCrudInputSpec } from './admin-input-spec.js';\nimport { baseAdminCrudInputSchema } from './types.js';\nexport const createAdminCrudInputSchema = definitionSchema((ctx) => zWithPlugins((plugins, data) => {\n const { type } = baseAdminCrudInputSchema.parse(data);\n const input = plugins\n .getPluginSpec(adminCrudInputSpec)\n .getAdminCrudInput(type);\n return input.schema(ctx);\n}));\n//# sourceMappingURL=admin-crud-input.js.map","import { z } from 'zod';\nimport { zRef, zRefBuilder } from '#src/references/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { modelEntityType, modelLocalRelationEntityType, modelScalarFieldEntityType, } from '#src/schema/models/index.js';\nimport { baseAdminSectionValidators } from './base.js';\nimport { createAdminCrudInputSchema } from './crud-form/admin-crud-input.js';\nimport { adminCrudEmbeddedFormEntityType } from './crud-form/types.js';\n// Table Columns\nexport const createAdminCrudForeignDisplaySchema = definitionSchema(() => z.object({\n type: z.literal('foreign'),\n localRelationRef: zRef(z.string(), {\n type: modelLocalRelationEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n labelExpression: z.string().min(1),\n valueExpression: z.string().min(1),\n}));\nexport const createAdminCrudTextDisplaySchema = definitionSchema(() => z.object({\n type: z.literal('text'),\n modelFieldRef: zRef(z.string(), {\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n}));\nexport const createAdminCrudDisplaySchema = definitionSchema((ctx) => z.discriminatedUnion('type', [\n createAdminCrudTextDisplaySchema(ctx),\n createAdminCrudForeignDisplaySchema(ctx),\n]));\n// TODO: Improve this to be more dynamic in the future\nexport const adminCrudDisplayTypes = ['text', 'foreign'];\nexport const createAdminCrudTableColumnSchema = definitionSchema((ctx) => z.object({\n label: z.string().min(1),\n display: createAdminCrudDisplaySchema(ctx),\n}));\n// Embedded Crud\nexport const createAdminCrudEmbeddedObjectSchema = definitionSchema((ctx) => z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n modelRef: zRef(z.string().min(1), {\n type: modelEntityType,\n onDelete: 'RESTRICT',\n }),\n includeIdField: z.boolean().optional(),\n type: z.literal('object'),\n form: z.object({\n fields: z.array(createAdminCrudInputSchema(ctx)),\n }),\n}));\nexport const createAdminCrudEmbeddedListSchema = definitionSchema((ctx) => z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n modelRef: zRef(z.string().min(1), {\n type: modelEntityType,\n onDelete: 'RESTRICT',\n }),\n includeIdField: z.boolean().optional(),\n type: z.literal('list'),\n // NOTE: These two fields need to be synced with crud section schema\n // because the web app expects that (TODO)\n table: z.object({\n columns: z.array(createAdminCrudTableColumnSchema(ctx)),\n }),\n form: z.object({\n fields: z.array(createAdminCrudInputSchema(ctx)),\n }),\n}));\nexport const createAdminCrudEmbeddedFormSchema = definitionSchema((ctx) => zRefBuilder(z.discriminatedUnion('type', [\n createAdminCrudEmbeddedObjectSchema(ctx),\n createAdminCrudEmbeddedListSchema(ctx),\n]), (builder) => {\n builder.addEntity({\n type: adminCrudEmbeddedFormEntityType,\n parentPath: { context: 'admin-section' },\n });\n builder.addPathToContext('modelRef', modelEntityType, 'model');\n}));\n// Admin Section\nexport const createAdminCrudSectionSchema = definitionSchema((ctx) => zRefBuilder(z.object({\n ...baseAdminSectionValidators,\n type: z.literal('crud'),\n modelRef: zRef(z.string().min(1), {\n type: modelEntityType,\n onDelete: 'RESTRICT',\n }),\n disableCreate: z.boolean().optional(),\n table: z.object({\n columns: z.array(createAdminCrudTableColumnSchema(ctx)),\n }),\n form: z.object({\n fields: z.array(createAdminCrudInputSchema(ctx)),\n }),\n embeddedForms: z.array(createAdminCrudEmbeddedFormSchema(ctx)).optional(),\n}), (builder) => {\n builder.addPathToContext('modelRef', modelEntityType, 'model');\n}));\n//# sourceMappingURL=crud.js.map","import { z } from 'zod';\nimport { zRef, zRefBuilder } from '#src/references/index.js';\nimport { authRoleEntityType } from '#src/schema/auth/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { baseAppValidators } from '../base.js';\nimport { createAppEntryType } from '../types.js';\nimport { createAdminCrudSectionSchema } from './sections/crud.js';\nimport { adminSectionEntityType } from './sections/types.js';\nexport const createAdminSectionSchema = definitionSchema((ctx) => zRefBuilder(createAdminCrudSectionSchema(ctx), (builder) => {\n builder.addEntity({\n type: adminSectionEntityType,\n parentPath: { context: 'app' },\n addContext: 'admin-section',\n });\n}));\nexport const createAdminAppSchema = definitionSchema((ctx) => z.object({\n ...baseAppValidators,\n type: z.literal('admin'),\n allowedRoles: z\n .array(zRef(z.string(), {\n type: authRoleEntityType,\n onDelete: 'DELETE',\n }))\n .optional(),\n sections: z.array(createAdminSectionSchema(ctx)).optional(),\n}));\nexport const adminAppEntryType = createAppEntryType('admin');\n//# sourceMappingURL=app.js.map","import { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { baseAppValidators } from '../base.js';\nimport { createAppEntryType } from '../types.js';\nexport const createBackendAppSchema = definitionSchema(() => z.object({\n ...baseAppValidators,\n type: z.literal('backend'),\n enableStripe: z.boolean().optional(),\n enableRedis: z.boolean().optional(),\n enableBullQueue: z.boolean().optional(),\n enablePostmark: z.boolean().optional(),\n enableSubscriptions: z.boolean().optional(),\n enableAxios: z.boolean().optional(),\n}));\nexport const backendAppEntryType = createAppEntryType('backend');\n//# sourceMappingURL=index.js.map","import { z } from 'zod';\nimport { zRef } from '#src/references/index.js';\nimport { authRoleEntityType } from '#src/schema/auth/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { baseAppValidators } from '../base.js';\nimport { createAppEntryType } from '../types.js';\nexport const createWebAppSchema = definitionSchema(() => z.object({\n ...baseAppValidators,\n type: z.literal('web'),\n includeAuth: z.boolean().optional(),\n title: z.string().optional(),\n description: z.string().optional(),\n allowedRoles: z\n .array(zRef(z.string().min(1), {\n type: authRoleEntityType,\n onDelete: 'DELETE',\n }))\n .optional(),\n includeUploadComponents: z.boolean().optional(),\n enableSubscriptions: z.boolean().optional(),\n}));\nexport const webAppEntryType = createAppEntryType('web');\n//# sourceMappingURL=index.js.map","import { z } from 'zod';\nimport { pluginConfigSpec, zWithPlugins } from '#src/plugins/index.js';\nimport { zEnt } from '#src/references/ref-builder.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { pluginEntityType } from './entity-types.js';\nexport const basePluginDefinitionSchema = z.object({\n id: z.string().min(1),\n packageName: z.string(),\n name: z.string(),\n version: z.string(),\n config: z.unknown(),\n configSchemaVersion: z.number().optional(),\n});\nexport const createPluginWithConfigSchema = definitionSchema(() => zWithPlugins((plugins, data) => {\n const parsedBasePlugin = basePluginDefinitionSchema.parse(data);\n const pluginKey = pluginEntityType.keyFromId(parsedBasePlugin.id);\n const configSchema = plugins\n .getPluginSpec(pluginConfigSpec)\n .getSchema(pluginKey);\n const pluginDefinitionWithEnt = zEnt(basePluginDefinitionSchema, {\n type: pluginEntityType,\n });\n if (!configSchema) {\n return pluginDefinitionWithEnt;\n }\n return pluginDefinitionWithEnt.and(z.object({\n config: configSchema,\n }));\n}));\nexport const createPluginsSchema = definitionSchema((ctx) => z.array(createPluginWithConfigSchema(ctx)));\n//# sourceMappingURL=definition.js.map","import { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nexport const createTemplateExtractorSchema = definitionSchema(() => z.object({\n /**\n * Whether to write template extractor metadata when writing files to the project.\n *\n * This allows the template extraction process to update the generator's templates.\n */\n writeMetadata: z.boolean().default(false),\n /**\n * A list of file IDs to include in the template extractor metadata for generators\n * that have a manually assigned file IDs, e.g. files generated by generators that\n * have multiple instances.\n *\n * The list is delimited by a newline and can include a * to match any number of characters.\n */\n fileIdRegexWhitelist: z.string().default(''),\n}));\n//# sourceMappingURL=index.js.map","import { CASE_VALIDATORS } from '@baseplate-dev/utils';\nimport { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { createThemeSchema } from './features/index.js';\nimport { createTemplateExtractorSchema } from './template-extractor/index.js';\nexport const generalSettingsSchema = z.object({\n /**\n * The name of the project.\n */\n name: CASE_VALIDATORS.KEBAB_CASE,\n /**\n * The package scope of the project if any e.g. halfdomelabs for @baseplate-dev/package-name.\n */\n packageScope: z\n .union([z.literal(''), CASE_VALIDATORS.KEBAB_CASE])\n .default(''),\n /**\n * The port offset to base the app ports on for development (e.g. 8000 => 8432 for DB).\n */\n portOffset: z\n .number()\n .min(1000)\n .max(60000)\n .int()\n .refine((portOffset) => portOffset % 1000 === 0, 'Port offset must be a multiple of 1000, e.g. 1000, 2000, 3000, etc.'),\n});\nexport const createSettingsSchema = definitionSchema((ctx) => z.object({\n general: generalSettingsSchema,\n templateExtractor: createTemplateExtractorSchema(ctx).optional(),\n theme: createThemeSchema(ctx).optional(),\n}));\n//# sourceMappingURL=settings.js.map","import { z } from 'zod';\nimport { zRefBuilder } from '#src/references/index.js';\nimport { createAdminAppSchema } from './apps/admin/index.js';\nimport { createBackendAppSchema } from './apps/backend/index.js';\nimport { createWebAppSchema } from './apps/index.js';\nimport { appEntityType } from './apps/types.js';\nimport { definitionSchema } from './creator/schema-creator.js';\nimport { createFeaturesSchema } from './features/index.js';\nimport { createEnumSchema } from './models/enums.js';\nimport { createModelSchema } from './models/index.js';\nimport { createPluginsSchema } from './plugins/index.js';\nimport { createSettingsSchema } from './settings.js';\nexport const createAppSchema = definitionSchema((ctx) => zRefBuilder(z.discriminatedUnion('type', [\n createBackendAppSchema(ctx),\n createWebAppSchema(ctx),\n createAdminAppSchema(ctx),\n]), (builder) => {\n builder.addEntity({\n type: appEntityType,\n addContext: 'app',\n });\n}));\nexport const createProjectDefinitionSchema = definitionSchema((ctx) => z.object({\n cliVersion: z.string().nullish(),\n apps: z.array(createAppSchema(ctx)).default([]),\n features: createFeaturesSchema(ctx),\n models: z.array(createModelSchema(ctx)).default([]),\n enums: z.array(createEnumSchema(ctx)).optional(),\n isInitialized: z.boolean().default(false),\n schemaVersion: z.number(),\n plugins: createPluginsSchema(ctx).optional(),\n settings: createSettingsSchema(ctx),\n}));\n//# sourceMappingURL=project-definition.js.map","function byId(projectDefinition, id) {\n return projectDefinition.enums?.find((e) => e.id === id);\n}\nfunction byIdOrThrow(projectDefinition, id) {\n const enumConfig = byId(projectDefinition, id);\n if (!enumConfig) {\n throw new Error(`Could not find enum with ID ${id}`);\n }\n return enumConfig;\n}\nexport const EnumUtils = {\n byId,\n byIdOrThrow,\n};\n//# sourceMappingURL=enum-utils.js.map","import { isEqual } from 'es-toolkit';\nimport { ModelUtils } from './model-utils.js';\nfunction isScalarUnique(model, fieldId) {\n const { primaryKeyFieldRefs } = model.model;\n const uniqueConstraints = model.model.uniqueConstraints ?? [];\n return ((primaryKeyFieldRefs.length === 1 &&\n primaryKeyFieldRefs.includes(fieldId)) ||\n uniqueConstraints.some((c) => c.fields.length === 1 && c.fields[0].fieldRef === fieldId));\n}\nfunction areScalarsUnique(model, fieldIds) {\n const sortedFieldIds = [...fieldIds].sort();\n return ((isEqual([...model.model.primaryKeyFieldRefs].sort(), sortedFieldIds) ||\n model.model.uniqueConstraints?.some((c) => isEqual(c.fields.map((f) => f.fieldRef).sort(), sortedFieldIds))) ??\n false);\n}\nfunction getRelationLocalFields(model, relation) {\n return relation.references.map((r) => {\n const field = model.model.fields.find((f) => f.id === r.localRef);\n if (!field) {\n throw new Error(`Could not find field ${r.localRef} from relation ${relation.name} in model ${model.name}`);\n }\n return field;\n });\n}\nfunction isRelationOptional(model, relation) {\n const localFields = getRelationLocalFields(model, relation);\n return localFields.some((f) => f.isOptional);\n}\nfunction isRelationOneToOne(model, relation) {\n const localFields = getRelationLocalFields(model, relation);\n const localFieldIds = localFields.map((f) => f.id).sort();\n // check if the local fields are a primary key or unique constraint\n return areScalarsUnique(model, localFieldIds);\n}\nfunction getModelValidator(modelField) {\n switch (modelField.type) {\n case 'boolean': {\n return 'boolean()';\n }\n case 'date': {\n return 'string()';\n }\n case 'int':\n case 'float': {\n return 'number()';\n }\n case 'dateTime':\n case 'string':\n case 'decimal':\n case 'uuid': {\n return 'string()';\n }\n default: {\n throw new Error(`Unsupported validator for ${modelField.type}`);\n }\n }\n}\nfunction getModelFieldValidation(projectDefinition, modelId, fieldId, preProcess) {\n const model = ModelUtils.byIdOrThrow(projectDefinition, modelId);\n const field = model.model.fields.find((f) => f.id === fieldId);\n if (!field) {\n throw new Error(`Field ${fieldId} not found in model ${model.name}`);\n }\n const nullishSuffix = field.isOptional ? '.nullish()' : '';\n if (field.type === 'int') {\n return `z.number().or(z.string()).pipe(z.coerce.number().finite().int())${nullishSuffix}`;\n }\n if (field.type === 'float') {\n return `z.number().or(z.string()).pipe(z.coerce.number().finite())${nullishSuffix}`;\n }\n const validator = `z.${getModelValidator(field)}${nullishSuffix}`;\n if (!preProcess) {\n return validator;\n }\n return validator;\n}\nexport const ModelFieldUtils = {\n isScalarUnique,\n areScalarsUnique,\n getRelationLocalFields,\n isRelationOptional,\n isRelationOneToOne,\n getModelFieldValidation,\n};\n//# sourceMappingURL=model-field-utils.js.map","import { modelTransformerSpec } from '#src/schema/index.js';\nfunction getTransformer(transformer, pluginStore) {\n const transformers = pluginStore.getPluginSpec(modelTransformerSpec);\n return transformers.getModelTransformer(transformer.type);\n}\nfunction getTransformName(definitionContainer, transformer, pluginStore) {\n const transformers = pluginStore.getPluginSpec(modelTransformerSpec);\n return transformers\n .getModelTransformer(transformer.type)\n .getName(definitionContainer, transformer);\n}\nexport const ModelTransformerUtils = { getTransformer, getTransformName };\n//# sourceMappingURL=model-transformer-utils.js.map","import { pluginConfigSpec } from '#src/plugins/index.js';\nimport { pluginEntityType } from '#src/schema/index.js';\nfunction byId(projectDefinition, id) {\n const pluginEntityId = pluginEntityType.idFromKey(id);\n const plugin = projectDefinition.plugins?.find((m) => m.id === pluginEntityId);\n return plugin ?? null;\n}\nfunction byIdOrThrow(projectDefinition, id) {\n const plugin = byId(projectDefinition, id);\n if (!plugin) {\n throw new Error(`Could not find plugin with ID ${id}`);\n }\n return plugin;\n}\nfunction configByIdOrThrow(projectDefinition, id) {\n const def = byIdOrThrow(projectDefinition, id);\n return def.config;\n}\nfunction setPluginConfig(projectDefinition, plugin, pluginConfig, pluginImplementationStore) {\n const plugins = projectDefinition.plugins ?? [];\n const pluginEntityId = pluginEntityType.idFromKey(plugin.id);\n const pluginConfigService = pluginImplementationStore.getPluginSpec(pluginConfigSpec);\n const lastMigrationVersion = pluginConfigService.getLastMigrationVersion(plugin.id);\n projectDefinition.plugins = plugins.some((p) => p.id === pluginEntityId)\n ? plugins.map((p) => pluginEntityId === p.id ? { ...p, config: pluginConfig } : p)\n : [\n ...plugins,\n {\n id: pluginEntityId,\n name: plugin.name,\n version: plugin.version,\n packageName: plugin.packageName,\n config: pluginConfig,\n configSchemaVersion: lastMigrationVersion,\n },\n ];\n}\nexport const PluginUtils = {\n byId,\n byIdOrThrow,\n setPluginConfig,\n configByIdOrThrow,\n};\n//# sourceMappingURL=plugin-utils.js.map","import { z } from 'zod';\nimport { initializePlugins } from '#src/plugins/imports/loader.js';\nimport { pluginConfigSpec, zPluginWrapper } from '#src/plugins/index.js';\nimport { parseSchemaWithReferences } from '#src/references/parse-schema-with-references.js';\nimport { adminCrudInputSpec, modelTransformerSpec } from '#src/schema/index.js';\nimport { basePluginDefinitionSchema } from '#src/schema/plugins/definition.js';\nimport { createProjectDefinitionSchema } from '#src/schema/project-definition.js';\nconst COMMON_SPEC_IMPLEMENTATIONS = [pluginConfigSpec, modelTransformerSpec, adminCrudInputSpec];\n/**\n * Creates a plugin implementation store from the project definition and plugin store,\n * initializing the set of plugins enabled in the project definition.\n *\n * @param pluginStore The plugin store to use\n * @param projectDefinition The project definition to use\n * @returns The plugin implementation store\n */\nexport function createPluginImplementationStore(pluginStore, projectDefinition) {\n const { availablePlugins, builtinSpecImplementations = [] } = pluginStore;\n const pluginData = z\n .object({\n plugins: z.array(basePluginDefinitionSchema).optional(),\n })\n .parse(projectDefinition);\n const { plugins = [] } = pluginData;\n // initialize plugins\n const initialImplementations = [\n ...COMMON_SPEC_IMPLEMENTATIONS,\n ...builtinSpecImplementations,\n ];\n const specImplementations = {};\n for (const spec of initialImplementations) {\n if ('type' in spec) {\n if (typeof spec.defaultInitializer !== 'function') {\n throw new TypeError(`Spec ${spec.type} does not have a defaultInitializer function!`);\n }\n specImplementations[spec.name] = spec.defaultInitializer();\n }\n else {\n specImplementations[spec.spec.name] = spec.implementation;\n }\n }\n const pluginsWithModules = plugins.map((p) => {\n const plugin = availablePlugins.find(({ metadata }) => metadata.name === p.name && metadata.packageName === p.packageName);\n const pluginName = `${p.packageName}/${p.name}`;\n if (!plugin) {\n throw new Error(`Unable to find plugin ${pluginName}!`);\n }\n return {\n id: plugin.metadata.id,\n name: pluginName,\n pluginModules: plugin.modules,\n };\n });\n return initializePlugins(pluginsWithModules, specImplementations);\n}\n/**\n * Creates a project definition schema with the given context.\n *\n * @param projectDefinition The project definition to create a schema for\n * @param context The context to use\n * @return The project definition schema\n */\nexport function createProjectDefinitionSchemaWithContext(projectDefinition, context) {\n const { pluginStore } = context;\n const pluginImplementationStore = createPluginImplementationStore(pluginStore, projectDefinition);\n return zPluginWrapper(createProjectDefinitionSchema({ plugins: pluginImplementationStore }), pluginImplementationStore);\n}\nexport function parseProjectDefinitionWithContext(projectDefinition, context) {\n const schema = createProjectDefinitionSchemaWithContext(projectDefinition, context);\n return schema.parse(projectDefinition);\n}\n/**\n * Parses a project definition and obtains entities/references from it.\n *\n * @param projectDefinition The project definition to parse\n * @param context The context to use\n * @returns The parsed project definition with entities/references\n */\nexport function parseProjectDefinitionWithReferences(projectDefinition, context) {\n const schema = createProjectDefinitionSchemaWithContext(projectDefinition, context);\n const definition = parseSchemaWithReferences(schema, projectDefinition);\n return { definition, pluginStore: schema._def.pluginStore };\n}\n//# sourceMappingURL=parser.js.map","import { stringifyPrettyStable } from '@baseplate-dev/utils';\nimport { produce } from 'immer';\nimport { createProjectDefinitionSchemaWithContext, parseProjectDefinitionWithReferences, } from '#src/parser/parser.js';\nimport { deserializeSchemaWithReferences, fixRefDeletions, serializeSchemaFromRefPayload, } from '#src/references/index.js';\n/**\n * Container for a project definition that includes references and entities.\n *\n * This class provides utility methods for working with a project definition\n * such as the ability to fetch an entity by ID.\n */\nexport class ProjectDefinitionContainer {\n constructor(config, parserContext, pluginStore) {\n Object.defineProperty(this, \"pluginStore\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: pluginStore\n });\n Object.defineProperty(this, \"refPayload\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"definition\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"references\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"entities\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"parserContext\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.refPayload = config;\n this.definition = config.data;\n this.references = config.references;\n this.entities = config.entities;\n this.parserContext = parserContext;\n }\n nameFromId(id) {\n if (!id)\n return undefined;\n const name = this.entities.find((e) => e.id === id)?.name;\n if (!name) {\n throw new Error(`Could not find name for id ${id}`);\n }\n return name;\n }\n /**\n * Fetches the name of an entity by its ID, returning undefined if the ID is not found.\n *\n * @param id The ID of the entity to fetch\n * @returns The name of the entity, or undefined if the ID is not found\n */\n safeNameFromId(id) {\n if (!id)\n return undefined;\n const name = this.entities.find((e) => e.id === id)?.name;\n return name;\n }\n /**\n * Fix any reference deletions that would occur when applying the given setter.\n *\n * @param setter A function that modifies the project definition\n * @returns A result indicating whether the reference deletions were fixed\n */\n fixRefDeletions(setter) {\n const newDefinition = produce(setter)(this.definition);\n const schemaWithContext = createProjectDefinitionSchemaWithContext(newDefinition, this.parserContext);\n return fixRefDeletions(schemaWithContext, newDefinition);\n }\n /**\n * Serializes the project definition resolving references to their names for easier reading.\n *\n * @returns The serialized contents of the project definition\n */\n toSerializedContents() {\n return stringifyPrettyStable(serializeSchemaFromRefPayload(this.refPayload));\n }\n /**\n * Creates a new ProjectDefinitionContainer from a raw project definition.\n *\n * @param definition The raw project definition\n * @param context The parser context to use\n * @returns A new ProjectDefinitionContainer\n */\n static fromDefinition(definition, context) {\n const { definition: parsedDefinition, pluginStore } = parseProjectDefinitionWithReferences(definition, context);\n return new ProjectDefinitionContainer(parsedDefinition, context, pluginStore);\n }\n /**\n * Creates a new ProjectDefinitionContainer from a serialized configuration.\n *\n * @param config The serialized configuration\n * @param context The parser context to use\n * @returns A new ProjectDefinitionContainer\n */\n static fromSerializedConfig(config, context) {\n const projectDefinitionSchemaWithContext = createProjectDefinitionSchemaWithContext(config, context);\n return new ProjectDefinitionContainer(deserializeSchemaWithReferences(projectDefinitionSchemaWithContext, config), context, projectDefinitionSchemaWithContext.pluginStore);\n }\n}\n//# sourceMappingURL=project-definition-container.js.map","import { omit } from 'es-toolkit';\nimport { modelUniqueConstraintEntityType } from '../schema/index.js';\nimport { createSchemaMigration } from './types.js';\nexport const migration005PrimaryUniqueRefs = createSchemaMigration({\n version: 5,\n name: 'primaryUniqueRefs',\n description: 'Store primary key in primaryKeyFieldRefs field and unique constraints in unique constraints field',\n migrate: (config) => ({\n ...config,\n models: config.models.map((model) => {\n const oldModel = model.model;\n const primaryKeyFieldRefs = oldModel.primaryKeys?.length\n ? oldModel.primaryKeys\n : oldModel.fields.filter((f) => f.isId).map((f) => f.name);\n return {\n ...model,\n model: {\n ...omit(oldModel, ['primaryKeys', 'uniqueConstraints']),\n primaryKeyFieldRefs,\n fields: oldModel.fields.map((f) => omit(f, ['isId', 'isUnique'])),\n uniqueConstraints: [\n ...(oldModel.uniqueConstraints?.map((c) => ({\n id: modelUniqueConstraintEntityType.generateNewId(),\n fields: c.fields.map((f) => ({\n fieldRef: f.name,\n })),\n })) ?? []),\n ...oldModel.fields\n .filter((f) => f.isUnique)\n .map((f) => ({\n id: modelUniqueConstraintEntityType.generateNewId(),\n fields: [{ fieldRef: f.name }],\n })),\n ],\n },\n };\n }),\n }),\n});\n//# sourceMappingURL=migration-005-primary-unique-refs.js.map","import { omit } from 'es-toolkit';\nimport { createSchemaMigration } from './types.js';\nexport const migration006IndividualServiceControllers = createSchemaMigration({\n version: 6,\n name: 'individualServiceControllers',\n description: 'Make service controller fields individually enabled',\n migrate: (config) => ({\n ...config,\n models: config.models.map((model) => {\n const { build, create, update, delete: deleteOp, ...rest } = model.service ?? {};\n if (!build) {\n return omit(model, ['service']);\n }\n const isCreateEnabled = create &&\n (!!create.fields?.length || !!create.transformerNames?.length);\n const isUpdateEnabled = update &&\n (!!update.fields?.length || !!update.transformerNames?.length);\n const isDeleteEnabled = !deleteOp?.disabled;\n return {\n ...model,\n service: {\n ...rest,\n create: isCreateEnabled ? { ...create, enabled: true } : undefined,\n update: isUpdateEnabled ? { ...update, enabled: true } : undefined,\n delete: isDeleteEnabled ? { enabled: true } : undefined,\n },\n };\n }),\n }),\n});\n//# sourceMappingURL=migration-006-individual-service-controllers.js.map","import { pickBy } from 'es-toolkit';\nexport function stripUndefinedChildren(obj) {\n return pickBy(obj, (value) => value !== undefined);\n}\nexport function undefinedIfEmptyObject(obj) {\n return Object.keys(obj).every((key) => obj[key] === undefined)\n ? undefined\n : obj;\n}\n//# sourceMappingURL=utils.js.map","import { createSchemaMigration } from './types.js';\nimport { stripUndefinedChildren, undefinedIfEmptyObject } from './utils.js';\nexport const migration007ModelGraphql = createSchemaMigration({\n version: 7,\n name: 'modelGraphql',\n description: 'Migrate model schema to GraphQL schema',\n migrate: (config) => ({\n ...config,\n models: config.models.map((model) => {\n const { schema, ...rest } = model;\n const { buildObjectType, exposedFields, exposedLocalRelations, exposedForeignRelations, buildQuery, buildMutations, authorize, } = schema ?? {};\n return stripUndefinedChildren({\n ...rest,\n graphql: undefinedIfEmptyObject(stripUndefinedChildren({\n objectType: buildObjectType\n ? {\n enabled: !!buildObjectType,\n fields: exposedFields ?? [],\n localRelations: exposedLocalRelations ?? [],\n foreignRelations: exposedForeignRelations ?? [],\n }\n : undefined,\n queries: buildQuery\n ? {\n get: {\n enabled: buildQuery,\n roles: authorize?.read ?? [],\n },\n list: {\n enabled: buildQuery,\n roles: authorize?.read ?? [],\n },\n }\n : undefined,\n mutations: buildMutations\n ? undefinedIfEmptyObject({\n create: !authorize || authorize.create.length > 0\n ? {\n enabled: true,\n roles: authorize?.create ?? [],\n }\n : undefined,\n update: !authorize || authorize.update.length > 0\n ? {\n enabled: true,\n roles: authorize?.update ?? [],\n }\n : undefined,\n delete: !authorize || authorize.delete.length > 0\n ? {\n enabled: true,\n roles: authorize?.delete ?? [],\n }\n : undefined,\n })\n : undefined,\n })),\n });\n }),\n }),\n});\n//# sourceMappingURL=migration-007-model-graphql.js.map","import { authRoleEntityType } from '#src/schema/index.js';\nimport { createSchemaMigration } from './types.js';\nconst AUTH_DEFAULT_ROLES = [\n {\n name: 'public',\n comment: 'All users (including unauthenticated and authenticated users)',\n builtIn: true,\n },\n {\n name: 'user',\n comment: 'All authenticated users',\n builtIn: true,\n },\n {\n name: 'system',\n comment: 'System processes without a user context, e.g. background jobs',\n builtIn: true,\n },\n];\nexport const migration008AnonymousPublicRole = createSchemaMigration({\n version: 8,\n name: 'anonymousPublicRole',\n description: 'Migrate anonymous to public role',\n migrate: (config) => ({\n ...config,\n auth: config.auth && {\n ...config.auth,\n roles: [\n ...AUTH_DEFAULT_ROLES.map((role) => {\n const existingRole = config.auth?.roles?.find((r) => r.name === role.name ||\n (r.name === 'anonymous' && role.name === 'public'));\n return {\n id: existingRole?.id ?? authRoleEntityType.generateNewId(),\n name: role.name,\n comment: role.comment,\n builtIn: true,\n };\n }),\n ...(config.auth.roles\n ?.filter((r) => !AUTH_DEFAULT_ROLES.some((role) => role.name === r.name) &&\n r.name !== 'anonymous')\n .map((r) => ({\n id: r.id,\n name: r.name,\n comment: r.comment,\n builtIn: false,\n })) ?? []),\n ],\n },\n }),\n});\n//# sourceMappingURL=migration-008-anonymous-public-role.js.map","import { cloneDeep } from 'es-toolkit';\n/**\n * Transform a value at a specific path in a JSON object.\n *\n * @param data - The JSON object to transform.\n * @param path - The path to the value to transform, using dot notation (* matches all elements in an array and ** matches all elements in an object).\n * @param transformFn - The transformation function to apply to the value.\n * @returns The transformed JSON object.\n */\nexport function transformJsonPath(data, path, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- make it easier to use any transform functions\ntransformFn) {\n // Split the path into parts\n const pathParts = path.split('.');\n // Recursive function to navigate and transform the JSON\n const navigateAndTransform = (current, parts) => {\n if (parts.length === 0) {\n // If at the end of the path, apply the transformation function\n return transformFn(cloneDeep(current));\n }\n const [currentPart, ...remainingParts] = parts;\n if (currentPart === '*') {\n // If the current path part is a wildcard\n if (!Array.isArray(current)) {\n throw new TypeError(`Expected an array at ${pathParts.join('.')}`);\n }\n // Apply transformation recursively for each item\n return current.map((item) => navigateAndTransform(item, remainingParts));\n }\n else {\n if (typeof current !== 'object') {\n throw new TypeError(`Expected an object at ${pathParts.join('.')}, got ${typeof current}`);\n }\n // Navigate deeper\n if (current === null) {\n return current;\n }\n if (currentPart === '**') {\n return Object.fromEntries(Object.entries(current).map(([key, value]) => [\n key,\n navigateAndTransform(value, remainingParts),\n ]));\n }\n if (!(currentPart in current)) {\n return current;\n }\n return {\n ...current,\n [currentPart]: navigateAndTransform(current[currentPart], remainingParts),\n };\n }\n };\n // Start the navigation and transformation process\n return navigateAndTransform(data, pathParts);\n}\nexport function renameObjectKeysTransform(renames) {\n return (data) => {\n if (data === null)\n return null;\n if (typeof data !== 'object') {\n throw new TypeError(`Expected an object, got ${typeof data}`);\n }\n return Object.fromEntries(Object.entries(data).map(([key, value]) => [renames[key] || key, value]));\n };\n}\n//# sourceMappingURL=transform-json-path.js.map","import { flow } from 'es-toolkit';\nimport { renameObjectKeysTransform, transformJsonPath, } from './transform-json-path.js';\nimport { createSchemaMigration } from './types.js';\nexport const migration009RenameRefs = createSchemaMigration({\n version: 9,\n name: 'renameRefs',\n description: 'Rename zRefs to be suffixed with \"Ref\"',\n migrate: (config) => {\n // const definition: ProjectDefinition = config;\n // const adminConfig: AdminAppConfig;\n // adminConfig.sections?.[0].form.fields[0];\n const transform = flow((c) => transformJsonPath(c, 'apps.*.sections.*', renameObjectKeysTransform({\n feature: 'featureRef',\n modelName: 'modelRef',\n })), (c) => transformJsonPath(c, 'apps.*.sections.*.form.fields.*', renameObjectKeysTransform({\n localRelationName: 'localRelationRef',\n modelField: 'modelFieldRef',\n localRelation: 'localRelationRef',\n modelRelation: 'modelRelationRef',\n embeddedFormName: 'embeddedFormRef',\n })), (c) => transformJsonPath(c, 'apps.*.sections.*.embeddedForms.*.form.fields.*', renameObjectKeysTransform({\n localRelationName: 'localRelationRef',\n localRelation: 'localRelationRef',\n modelField: 'modelFieldRef',\n modelRelation: 'modelRelationRef',\n embeddedFormName: 'embeddedFormRef',\n })), (c) => transformJsonPath(c, 'apps.*.sections.*.table.columns.*.display', renameObjectKeysTransform({\n modelField: 'modelFieldRef',\n localRelationName: 'localRelationRef',\n })), (c) => transformJsonPath(c, 'apps.*.sections.*.embeddedForms.*.table.columns.*.display', renameObjectKeysTransform({\n modelField: 'modelFieldRef',\n localRelationName: 'localRelationRef',\n })), (c) => transformJsonPath(c, 'apps.*.sections.*.embeddedForms.*', renameObjectKeysTransform({\n modelName: 'modelRef',\n })), (c) => transformJsonPath(c, 'auth', renameObjectKeysTransform({\n userModel: 'userModelRef',\n userRoleModel: 'userRoleModelRef',\n authFeaturePath: 'authFeatureRef',\n accountsFeaturePath: 'accountsFeatureRef',\n })), (c) => transformJsonPath(c, 'enums.*', renameObjectKeysTransform({\n feature: 'featureRef',\n })), (c) => transformJsonPath(c, 'models.*.model.fields.*.options', renameObjectKeysTransform({\n enumType: 'enumRef',\n defaultEnumValue: 'defaultEnumValueRef',\n })), (c) => transformJsonPath(c, 'models.*', renameObjectKeysTransform({\n feature: 'featureRef',\n })), (c) => transformJsonPath(c, 'models.*.model.relations.*.references.*', renameObjectKeysTransform({\n local: 'localRef',\n foreign: 'foreignRef',\n })), (c) => transformJsonPath(c, 'models.*.model.relations.*', renameObjectKeysTransform({\n modelName: 'modelRef',\n })), (c) => transformJsonPath(c, 'plugins.*.config.categories.*', renameObjectKeysTransform({\n usedByRelation: 'usedByRelationRef',\n defaultAdapter: 'defaultAdapterRef',\n })));\n return transform(config);\n },\n});\n//# sourceMappingURL=migration-009-rename-refs.js.map","import { converter, formatHex, parse } from 'culori';\n/**\n * Parse an OKLCH color string into an Oklch object.\n * @param oklch - The OKLCH color string in format \"oklch(l c h [/ a])\" (e.g. \"oklch(0.5 0.2 180 / 0.3)\")\n * @returns The Oklch object\n */\nexport function parseOklch(color) {\n const parsedColor = parse(color);\n if (!parsedColor || parsedColor.mode !== 'oklch') {\n throw new Error(`Invalid OKLCH color string: ${color}`);\n }\n return parsedColor;\n}\n/**\n * Convert an OKLCH color string to a hex color.\n * @param oklch - The OKLCH color string in format \"l c h\" (e.g. \"0.5 0.2 180\")\n * @returns The hex color string\n */\nexport function convertOklchToHex(oklch) {\n const color = typeof oklch === 'string' ? parseOklch(oklch) : oklch;\n const convert = converter('rgb');\n const rgb = convert(color);\n return formatHex(rgb);\n}\n/**\n * Convert a hex color to an OKLCH color string.\n * @param hex - The hex color string\n * @returns The OKLCH color string in format \"oklch(l c h [/ a])\"\n */\nexport function convertHexToOklch(hex) {\n const convert = converter('oklch');\n const oklch = convert(hex);\n if (!oklch) {\n return 'oklch(0 0 0)';\n }\n return `oklch(${oklch.l.toFixed(3)} ${oklch.c.toFixed(3)} ${oklch.h?.toFixed(3) ?? 0}${oklch.alpha === undefined ? '' : `/ ${oklch.alpha.toFixed(3)}`})`;\n}\n//# sourceMappingURL=color-conversions.js.map","import { flow } from 'es-toolkit';\nimport { convertHexToOklch } from '#src/utils/color-conversions.js';\nimport { transformJsonPath } from './transform-json-path.js';\nimport { createSchemaMigration } from './types.js';\nfunction transformThemeColor(color) {\n if (color.startsWith('oklch'))\n return color;\n if (color.startsWith('#'))\n return convertHexToOklch(color);\n throw new Error(`Invalid color: ${color}`);\n}\nexport const migration010HexToOklch = createSchemaMigration({\n version: 10,\n name: 'hexToOklch',\n description: 'Convert hex colors to OKLCH in theme configuration',\n migrate: (config) => {\n if (!config.theme) {\n return config;\n }\n const transform = flow((c) => transformJsonPath(c, 'theme.palettes.**.customBase', transformThemeColor), (c) => transformJsonPath(c, 'theme.palettes.**.shades.**', transformThemeColor), (c) => transformJsonPath(c, 'theme.colors.**.**', transformThemeColor));\n return transform(config);\n },\n});\n//# sourceMappingURL=migration-010-hex-to-oklch.js.map","import { pluginEntityType } from '#src/schema/plugins/index.js';\nimport { transformJsonPath } from './transform-json-path.js';\nimport { createSchemaMigration } from './types.js';\nexport const migration011PluginId = createSchemaMigration({\n version: 11,\n name: 'pluginId',\n description: 'Convert plugin ids to use the plugin entity type',\n migrate: (config) => transformJsonPath(config, 'plugins.*.id', (id) => pluginEntityType.idFromKey(id)),\n});\n//# sourceMappingURL=migration-011-plugin-id.js.map","import { createSchemaMigration } from './types.js';\nexport const migration012MigrateAuthConfig = createSchemaMigration({\n version: 12,\n name: 'migrateAuthConfig',\n description: 'Migrate auth config to auth0 plugin config',\n migrate: (config) => {\n if (!config.auth?.useAuth0) {\n return {\n ...config,\n auth: undefined,\n };\n }\n const auth0PluginId = 'plugin:halfdomelabs_baseplate-plugin-auth_auth0';\n const auth0Config = {\n userAccountModelRef: config.auth.userModelRef,\n authFeatureRef: config.auth.authFeatureRef,\n roles: config.auth.roles.map((role) => ({\n id: role.id,\n name: role.name,\n comment: role.comment,\n builtIn: role.builtIn,\n })),\n };\n const plugins = config.plugins ?? [];\n const pluginIndex = plugins.findIndex((p) => p.id === auth0PluginId);\n if (pluginIndex === -1) {\n plugins.push({\n id: auth0PluginId,\n name: 'auth0',\n packageName: '@halfdomelabs/baseplate-plugin-auth',\n version: '0.1.0',\n config: auth0Config,\n });\n }\n else {\n plugins[pluginIndex] = {\n ...plugins[pluginIndex],\n config: auth0Config,\n };\n }\n return {\n ...config,\n auth: undefined,\n plugins,\n };\n },\n});\n//# sourceMappingURL=migration-012-migrate-auth-config.js.map","import { createSchemaMigration } from './types.js';\nexport const migration013MoveGeneralSettings = createSchemaMigration({\n version: 13,\n name: 'moveGeneralSettings',\n description: 'Move general settings fields from root to settings.general',\n migrate: (config) => {\n const { name, packageScope, portOffset, templateExtractor, theme, ...rest } = config;\n return {\n ...rest,\n settings: {\n general: {\n name,\n packageScope,\n portOffset,\n },\n templateExtractor,\n theme,\n },\n };\n },\n});\n//# sourceMappingURL=migration-013-move-general-settings.js.map","import { createSchemaMigration } from './types.js';\nconst PLUGIN_MAPPINGS = {\n 'plugin:halfdomelabs_baseplate-plugin-auth_auth0': 'plugin:baseplate-dev_plugin-auth_auth0',\n 'plugin:halfdomelabs_baseplate-plugin-storage_storage': 'plugin:baseplate-dev_plugin-storage_storage',\n};\nexport const migration014MigratePluginIds = createSchemaMigration({\n version: 14,\n name: 'migratePluginIds',\n description: 'Migrate plugin IDs and package names to new format and resets client version in preparation for 0.1.0 reset',\n migrate: (config) => {\n if (!config.plugins) {\n return config;\n }\n const plugins = config.plugins.map((plugin) => {\n const newId = plugin.id in PLUGIN_MAPPINGS\n ? PLUGIN_MAPPINGS[plugin.id]\n : plugin.id;\n const newPackageName = plugin.packageName.replace('@halfdomelabs/baseplate-', '@baseplate-dev/');\n return {\n ...plugin,\n id: newId,\n packageName: newPackageName,\n };\n });\n return {\n ...config,\n plugins,\n cliVersion: '0.1.0',\n };\n },\n});\n//# sourceMappingURL=migration-014-migrate-plugin-ids.js.map","import { migration005PrimaryUniqueRefs } from './migration-005-primary-unique-refs.js';\nimport { migration006IndividualServiceControllers } from './migration-006-individual-service-controllers.js';\nimport { migration007ModelGraphql } from './migration-007-model-graphql.js';\nimport { migration008AnonymousPublicRole } from './migration-008-anonymous-public-role.js';\nimport { migration009RenameRefs } from './migration-009-rename-refs.js';\nimport { migration010HexToOklch } from './migration-010-hex-to-oklch.js';\nimport { migration011PluginId } from './migration-011-plugin-id.js';\nimport { migration012MigrateAuthConfig } from './migration-012-migrate-auth-config.js';\nimport { migration013MoveGeneralSettings } from './migration-013-move-general-settings.js';\nimport { migration014MigratePluginIds } from './migration-014-migrate-plugin-ids.js';\nexport const SCHEMA_MIGRATIONS = [\n migration005PrimaryUniqueRefs,\n migration006IndividualServiceControllers,\n migration007ModelGraphql,\n migration008AnonymousPublicRole,\n migration009RenameRefs,\n migration010HexToOklch,\n migration011PluginId,\n migration012MigrateAuthConfig,\n migration013MoveGeneralSettings,\n migration014MigratePluginIds,\n];\nexport function isMigrateableProjectDefinition(projectDefinition) {\n return (typeof projectDefinition === 'object' &&\n !!projectDefinition &&\n 'schemaVersion' in projectDefinition);\n}\nexport class SchemaMigrationError extends Error {\n constructor(migrationName, cause) {\n super(`Schema migration ${migrationName} failed: ${cause instanceof Error ? cause.message : String(cause)}`);\n Object.defineProperty(this, \"migrationName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"cause\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = 'SchemaMigrationError';\n this.migrationName = migrationName;\n this.cause = cause;\n }\n}\nexport function runSchemaMigrations(config) {\n const { schemaVersion } = config;\n const unappliedMigrations = SCHEMA_MIGRATIONS.filter((m) => m.version > schemaVersion).sort((a, b) => a.version - b.version);\n let migratedDefinition = config;\n for (const migration of unappliedMigrations) {\n try {\n migratedDefinition = {\n ...migration.migrate(migratedDefinition),\n schemaVersion: migration.version,\n };\n }\n catch (cause) {\n throw new SchemaMigrationError(migration.name, cause);\n }\n }\n return { migratedDefinition, appliedMigrations: unappliedMigrations };\n}\nexport function getLatestMigrationVersion() {\n return SCHEMA_MIGRATIONS.at(-1)?.version ?? 0;\n}\n//# sourceMappingURL=index.js.map","import { getLatestMigrationVersion } from '#src/migrations/index.js';\nimport { PluginImplementationStore, zPluginWrapper, } from '#src/plugins/index.js';\nimport { deserializeSchemaWithReferences } from '#src/references/deserialize-schema.js';\nimport { createProjectDefinitionSchema } from '#src/schema/project-definition.js';\nimport { ProjectDefinitionContainer } from './project-definition-container.js';\nexport function createTestProjectDefinition(input = {}) {\n return {\n settings: {\n general: {\n name: 'test-project',\n packageScope: '',\n portOffset: 3000,\n },\n },\n features: [],\n cliVersion: '1.0.0',\n apps: [],\n models: [],\n isInitialized: true,\n schemaVersion: getLatestMigrationVersion(),\n ...input,\n };\n}\nexport function createTestProjectDefinitionInput(input = {}) {\n return {\n ...createTestProjectDefinition(),\n ...input,\n };\n}\nexport function createTestProjectDefinitionContainer(input = {}) {\n const pluginStore = {\n availablePlugins: [],\n };\n const pluginImplementationStore = new PluginImplementationStore({});\n const projectDefinitionSchema = createProjectDefinitionSchema({\n plugins: pluginImplementationStore,\n });\n const schemaWithPlugins = zPluginWrapper(projectDefinitionSchema, pluginImplementationStore);\n const resolvedRefPayload = deserializeSchemaWithReferences(schemaWithPlugins, createTestProjectDefinitionInput(input));\n return new ProjectDefinitionContainer(resolvedRefPayload, { pluginStore }, pluginImplementationStore);\n}\n//# sourceMappingURL=project-definition-container.test-utils.js.map","export const AVAILABLE_FLAGS = ['TEMPLATE_EXTRACTOR'];\n//# sourceMappingURL=flags.js.map","import { COLOR_PALETTES, FIXED_COLOR_MAPPINGS } from '#src/constants/colors.js';\nimport { convertOklchToHex } from './color-conversions.js';\n/**\n * Convert a color name to a hex color. Can be one of the following:\n * - A fixed color name (e.g. 'white', 'black').\n * - A color palette name (e.g. 'slate-500', 'gray-300').\n * - A hex color (e.g. '#ff0000').\n * - A OKLCH color (e.g. 'oklch(0.5 0.2 180 / 0.3)').\n *\n * @param color - The color name to convert.\n * @returns The OKLCH color.\n */\nexport function convertColorNameToOklch(color) {\n const fixedColorMapping = FIXED_COLOR_MAPPINGS[color];\n if (fixedColorMapping) {\n return fixedColorMapping;\n }\n const colorComponents = color.split('-');\n if (colorComponents.length === 2) {\n const paletteName = colorComponents[0];\n if (Object.prototype.hasOwnProperty.call(COLOR_PALETTES, paletteName)) {\n const palette = COLOR_PALETTES[colorComponents[0]];\n const shade = palette[colorComponents[1]];\n if (shade) {\n return shade;\n }\n }\n }\n return color;\n}\nlet reverseColorMapping = null;\nfunction getReverseColorMapping() {\n if (!reverseColorMapping) {\n reverseColorMapping = {};\n for (const [key, value] of Object.entries(FIXED_COLOR_MAPPINGS)) {\n reverseColorMapping[value] = key;\n }\n for (const [paletteName, palette] of Object.entries(COLOR_PALETTES)) {\n for (const [shade, hex] of Object.entries(palette)) {\n reverseColorMapping[hex] = `${paletteName}-${shade}`;\n }\n }\n }\n return reverseColorMapping;\n}\n/**\n * Convert an OKLCH color to a color name.\n * @param oklch - The OKLCH color to convert.\n * @returns The color name.\n */\nexport function convertOklchToColorName(oklch) {\n return getReverseColorMapping()[oklch] ?? convertOklchToHex(oklch);\n}\n//# sourceMappingURL=color-names.js.map","import { dasherize, underscore } from 'inflection';\nimport { COLOR_PALETTES } from '#src/constants/colors.js';\nimport { THEME_COLORS } from '#src/constants/theme-colors.js';\nimport { convertColorNameToOklch } from '#src/utils/color-names.js';\nfunction getDefaultOklch(palettes, color) {\n if ('color' in color) {\n return convertColorNameToOklch(color.color);\n }\n if ('primaryShade' in color) {\n return palettes.primary.shades[color.primaryShade];\n }\n return palettes.base.shades[color.baseShade];\n}\nexport function getDefaultThemeColorFromShade(palettes, mode, themeColorKey) {\n const defaultColorConfig = THEME_COLORS[themeColorKey][mode === 'light' ? 'lightDefault' : 'darkDefault'];\n return getDefaultOklch(palettes, defaultColorConfig);\n}\nexport function generateThemeColorsFromShade(palettes, mode, previousValues) {\n const result = {};\n for (const [key, config] of Object.entries(THEME_COLORS)) {\n const themeColorKey = key;\n const defaultColorConfig = mode === 'light' ? config.lightDefault : config.darkDefault;\n const newDefaultColor = getDefaultOklch(palettes, defaultColorConfig);\n const previousDefaultColor = previousValues?.config[themeColorKey] &&\n getDefaultOklch(previousValues.palettes, defaultColorConfig);\n const previousValue = previousValues?.config[themeColorKey];\n result[themeColorKey] =\n !newDefaultColor ||\n (previousValue && previousDefaultColor !== previousValue)\n ? previousValue\n : newDefaultColor;\n }\n return result;\n}\nexport function generateCssFromThemeConfig(config) {\n return Object.fromEntries(Object.entries(config).map(([key, value]) => [\n `--${dasherize(underscore(key))}`,\n value,\n ]));\n}\nexport function generateDefaultTheme() {\n const slatePalette = {\n paletteName: 'slate',\n shades: COLOR_PALETTES.slate,\n };\n const slatePalettes = {\n base: slatePalette,\n primary: slatePalette,\n };\n return {\n palettes: slatePalettes,\n colors: {\n light: generateThemeColorsFromShade(slatePalettes, 'light'),\n dark: generateThemeColorsFromShade(slatePalettes, 'dark'),\n },\n };\n}\n//# sourceMappingURL=theme.js.map"],"names":["groupBy","arr","getKeyFromItem","result","i","item","key","keyBy","uniq","flow","funcs","args","isObjectLike","value","mergeWith","target","source","merge","sourceKeys","sourceValue","targetValue","merged","pickBy","obj","shouldPick","keys","isObject","forEach","cb","val","getTreeDepth","depth","tmpDepth","get","options","name","defaultValue","stringOrChar","prettify","str","tokens","match","string","stringifyPrettyCompact","rootObj","indent","addMargin","addArrayMargin","addObjectMargin","maxLength","maxNesting","stringifyRecursive","currentIndent","reserved","length","prettified","nextIndent","items","delimiters","atEndOfArray","array","index","keyPart","isPlainObject","prototype","sortKeys","object","deep","compare","cache","deepSortArray","resultFromCache","_sortKeys","newValue","stringifyPrettyStable","sortedValue","safeMerge","itemOne","itemTwo","isEqual","ToposortCyclicalDependencyError","nodes","ToposortUnknownNodeError","node","TinyQueue","data","a","b","top","bottom","pos","parent","current","halfLength","bestChild","right","makeOutgoingEdges","edgeArr","outgoingEdgesMap","edge","sourceIndex","targetIndex","sourceEdges","makeNodeInDegrees","nodeLength","nodeInDegrees","targets","detectCycle","visited","edges","path","visitSet","dfs","neighbors","neighbor","unvistedNodeIdx","idx","defaultCompareFunc","toposort","compareFunc","nodeIndexMap","zeroInDegreeQueue","nodeInDegree","outgoingEdges","cyclePath","toposortOrdered","createAdminCrudInputCompilerImplementation","inputs","input","builtInInputs","builtInInput","adminCrudInputCompilerSpec","createPluginSpec","stripEmptyGeneratorChildren","children","stripUndefinedValues","undefinedIfEmpty","undefinedIfFalsy","PluginImplementationStore","implementations","spec","implementation","extractPlatformModulesFromPlugins","plugins","plugin","m","getOrderedPluginModuleInitializationSteps","pluginModules","initialSpecImplementations","pluginModulesById","p","pluginModuleIdByExport","mapValues","module","id","exportName","existingPlugin","resolvedDep","x","initializeOrderedPluginModules","orderedPluginModules","specImplementations","pluginId","dependencies","dep","context","exports","exportedImplementation","initializePlugins","orderedModuleIds","createPlatformPluginExport","config","z","importShared","pluginManifestJsonSchema","versionSchema","pluginSpecSupportSchema","pluginSpecDependencySchema","pluginMetadataSchema","pluginEntityType","createEntityType","sortAndValidateMigrations","migrations","sortedMigrations","createPluginConfigImplementation","schemas","migrationsMap","pluginKey","schema","pluginConfigSpec","runPluginMigrations","projectDefinition","pluginImplementationStore","pluginConfigService","setAutoFreeze","produce","draft","pluginDefinition","pluginMigrations","currentSchemaVersion","lastPluginMigration","migration","error","ZodType","ZodWithPlugins","zodPluginContext","zodPluginSymbol","getter","zWithPlugins","authConfigSpec","createWebConfigImplementation","components","ConfigComponent","webConfigSpec","createAppCompiler","rootChildren","featureId","newChildren","createAppCompilerPlugin","compilers","compiler","appCompilers","appType","appCompilerSpec","createModelTransformerCompilerImplementation","transformers","transformer","builtInTransformers","builtInTransformer","modelTransformerCompilerSpec","PALETTE_SHADES","FIXED_COLOR_MAPPINGS","COLOR_PALETTES","THEME_COLORS","THEME_COLOR_KEYS","cleanAndSplitPath","segment","computeRelativePath","fromPath","toPath","fromSegments","toSegments","numParentDirs","byId","app","getBackendApp","backendApps","getBackendRelativePath","appConfig","backendApp","AppUtils","resolveZodRefPayloadNames","payload","skipReferenceNameResolution","allowInvalidReferences","entitiesWithNameResolver","references","entitiesById","entity","resolvedEntitiesById","orderedEntities","entityIds","resolveIdToName","nameResolver","rest","resolvedIds","idOrIds","parseSchemaWithReferences","wrapper","ZodRefWrapper","referenceToNameParentId","parentId","deserializeSchemaWithReferences","entities","duplicateEntityIds","e","ents","entityTypes","entityTypeNames","t","entityTypeOrder","entityType","entitiesByType","referencesByType","r","entitiesByParentIdName","parentPath","ref","parentIdName","resolvedEntity","set","DELETED_SENTINEL_ID","fixRefDeletions","issues","iterations","valueToEdit","tryDeleteParent","objectsToDeleteInArray","parseResult","referencesMissingEntity","objectsToDeleteByPath","o","objects","sortedObjects","sortBy","serializeSchemaFromRefPayload","draftData","reference","entityId","serializeSchema","authRoleEntityType","appEntityType","createAppEntryType","baseAppValidators","CASE_VALIDATORS","baseAppSchema","SCALAR_FIELD_TYPES","oklchColor","themeColorSchema","paletteSchema","palettesSchema","createThemeSchema","definitionSchema","VALIDATORS","roleArray","zRef","createModelGraphqlSchema","modelScalarFieldEntityType","modelLocalRelationEntityType","modelForeignRelationEntityType","baseTransformerFields","baseTransformerSchema","createModelTransformerType","createPasswordTransformerSchema","zEnt","modelTransformerEntityType","createEmbeddedRelationTransformerSchema","modelEntityType","createDefinitionEntityNameResolver","entityNames","builder","BUILT_IN_TRANSFORMERS","definitionContainer","definition","createModelTransformerImplementation","modelTransformerSpec","createTransformerSchema","ctx","type","z$d","createEnumValueSchema","modelEnumValueEntityType","createEnumBaseSchema","featureEntityType","createEnumSchema","modelEnumEntityType","createModelScalarFieldSchema","zRefBuilder","arg","REFERENTIAL_ACTIONS","createModelRelationFieldSchema","zRefId","createModelUniqueConstraintSchema","modelUniqueConstraintEntityType","f","createModelServiceSchema","createModelBaseSchema","createModelSchema","adminSectionEntityType","baseAdminSectionValidators","baseAdminCrudInputSchema","createAdminCrudInputType","adminCrudEmbeddedFormEntityType","createAdminCrudTextInputSchema","adminCrudTextInputType","createAdminCrudForeignInputSchema","adminCrudForeignInputType","createAdminCrudEnumInputSchema","adminCrudEnumInputType","createAdminCrudEmbeddedInputSchema","adminCrudEmbeddedInputType","createAdminCrudEmbeddedLocalInputSchema","adminCrudEmbeddedLocalInputType","createAdminCrudPasswordInputSchema","adminCrudPasswordInputType","BUILT_IN_ADMIN_CRUD_INPUTS","createAdminCrudInputImplementation","adminCrudInputs","adminCrudInputSpec","createAdminCrudInputSchema","createAdminCrudForeignDisplaySchema","createAdminCrudTextDisplaySchema","createAdminCrudDisplaySchema","adminCrudDisplayTypes","createAdminCrudTableColumnSchema","createAdminCrudEmbeddedObjectSchema","createAdminCrudEmbeddedListSchema","createAdminCrudEmbeddedFormSchema","createAdminCrudSectionSchema","createAdminSectionSchema","createAdminAppSchema","adminAppEntryType","createBackendAppSchema","backendAppEntryType","createWebAppSchema","webAppEntryType","basePluginDefinitionSchema","createPluginWithConfigSchema","parsedBasePlugin","configSchema","pluginDefinitionWithEnt","createPluginsSchema","createTemplateExtractorSchema","generalSettingsSchema","portOffset","createSettingsSchema","createAppSchema","createProjectDefinitionSchema","createFeaturesSchema","byIdOrThrow","enumConfig","EnumUtils","isScalarUnique","model","fieldId","primaryKeyFieldRefs","uniqueConstraints","c","areScalarsUnique","fieldIds","sortedFieldIds","getRelationLocalFields","relation","field","isRelationOptional","isRelationOneToOne","localFieldIds","getModelValidator","modelField","getModelFieldValidation","modelId","preProcess","ModelUtils","nullishSuffix","validator","ModelFieldUtils","getTransformer","pluginStore","getTransformName","ModelTransformerUtils","pluginEntityId","configByIdOrThrow","setPluginConfig","pluginConfig","lastMigrationVersion","PluginUtils","COMMON_SPEC_IMPLEMENTATIONS","createPluginImplementationStore","availablePlugins","builtinSpecImplementations","pluginData","initialImplementations","pluginsWithModules","metadata","pluginName","createProjectDefinitionSchemaWithContext","zPluginWrapper","parseProjectDefinitionWithContext","parseProjectDefinitionWithReferences","ProjectDefinitionContainer","parserContext","setter","newDefinition","schemaWithContext","parsedDefinition","projectDefinitionSchemaWithContext","migration005PrimaryUniqueRefs","oldModel","omit","migration006IndividualServiceControllers","build","create","update","deleteOp","isCreateEnabled","isUpdateEnabled","isDeleteEnabled","stripUndefinedChildren","undefinedIfEmptyObject","migration007ModelGraphql","buildObjectType","exposedFields","exposedLocalRelations","exposedForeignRelations","buildQuery","buildMutations","authorize","AUTH_DEFAULT_ROLES","migration008AnonymousPublicRole","role","transformJsonPath","transformFn","pathParts","navigateAndTransform","parts","cloneDeep","currentPart","remainingParts","renameObjectKeysTransform","renames","migration009RenameRefs","parseOklch","color","parsedColor","parse","convertOklchToHex","oklch","rgb","converter","formatHex","convertHexToOklch","hex","transformThemeColor","migration010HexToOklch","migration011PluginId","migration012MigrateAuthConfig","auth0PluginId","auth0Config","pluginIndex","migration013MoveGeneralSettings","packageScope","templateExtractor","theme","PLUGIN_MAPPINGS","migration014MigratePluginIds","newId","newPackageName","SCHEMA_MIGRATIONS","isMigrateableProjectDefinition","SchemaMigrationError","migrationName","cause","runSchemaMigrations","schemaVersion","unappliedMigrations","migratedDefinition","getLatestMigrationVersion","createTestProjectDefinition","createTestProjectDefinitionInput","createTestProjectDefinitionContainer","projectDefinitionSchema","schemaWithPlugins","resolvedRefPayload","AVAILABLE_FLAGS","convertColorNameToOklch","fixedColorMapping","colorComponents","paletteName","shade","reverseColorMapping","getReverseColorMapping","palette","convertOklchToColorName","getDefaultOklch","palettes","getDefaultThemeColorFromShade","mode","themeColorKey","defaultColorConfig","generateThemeColorsFromShade","previousValues","newDefaultColor","previousDefaultColor","previousValue","generateCssFromThemeConfig","dasherize","underscore","generateDefaultTheme","slatePalette","slatePalettes"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,8,9,13]}