@baseplate-dev/project-builder-web 0.3.5 → 0.3.7

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 (106) hide show
  1. package/dist/assets/{-constants-BYERQCO8.js → -constants-CBBXnsgS.js} +2 -2
  2. package/dist/assets/{-constants-BYERQCO8.js.map → -constants-CBBXnsgS.js.map} +1 -1
  3. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/web-Db9HEBw5.js.map +1 -1
  4. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-fZlnH9Ds.js.map +1 -1
  5. package/dist/assets/__federation_shared_@baseplate-dev/ui-components-CoxJjxbV.js.map +1 -1
  6. package/dist/assets/__federation_shared_@baseplate-dev/utils-Bhl1WBIT.js.map +1 -1
  7. package/dist/assets/__federation_shared_@tanstack/react-router-JHHIpdEJ.js.map +1 -1
  8. package/dist/assets/__federation_shared_react-WURrSs1p.js.map +1 -1
  9. package/dist/assets/__federation_shared_react-dom-CWagDEjd.js.map +1 -1
  10. package/dist/assets/__federation_shared_zod-CBKZOTZP.js.map +1 -1
  11. package/dist/assets/_virtual___federation_fn_import-D3sI42Ph.js.map +1 -1
  12. package/dist/assets/{admin-Dy1xMuLp.js → admin-BmEAbqDf.js} +2 -2
  13. package/dist/assets/{admin-Dy1xMuLp.js.map → admin-BmEAbqDf.js.map} +1 -1
  14. package/dist/assets/{backend-SevlkhOM.js → backend-3ZlC6POv.js} +2 -2
  15. package/dist/assets/{backend-SevlkhOM.js.map → backend-3ZlC6POv.js.map} +1 -1
  16. package/dist/assets/badge-with-type-label-CThmzNSh.js.map +1 -1
  17. package/dist/assets/capitalize-gOJXDbsR.js.map +1 -1
  18. package/dist/assets/{edit._key-BgnflZIL.js → edit._key-D-7xw9rv.js} +2 -2
  19. package/dist/assets/{edit._key-BgnflZIL.js.map → edit._key-D-7xw9rv.js.map} +1 -1
  20. package/dist/assets/{edit._sectionKey-D4mTSUhO.js → edit._sectionKey-CZgof0ob.js} +3 -3
  21. package/dist/assets/edit._sectionKey-CZgof0ob.js.map +1 -0
  22. package/dist/assets/enum-info-form-3ykREN-o.js.map +1 -1
  23. package/dist/assets/{graphql-C37jbnTG.js → graphql-DFecTG83.js} +2 -2
  24. package/dist/assets/{graphql-C37jbnTG.js.map → graphql-DFecTG83.js.map} +1 -1
  25. package/dist/assets/{hierarchy-CNBHjTAJ.js → hierarchy-jFN5DTrv.js} +2 -2
  26. package/dist/assets/{hierarchy-CNBHjTAJ.js.map → hierarchy-jFN5DTrv.js.map} +1 -1
  27. package/dist/assets/immer-B7fdkLVi.js.map +1 -1
  28. package/dist/assets/{index-CFlVUowS.js → index-B4AqRYYd.js} +2 -2
  29. package/dist/assets/{index-CFlVUowS.js.map → index-B4AqRYYd.js.map} +1 -1
  30. package/dist/assets/{index-B3A5IWAQ.js → index-BJlq0bmu.js} +2 -2
  31. package/dist/assets/{index-B3A5IWAQ.js.map → index-BJlq0bmu.js.map} +1 -1
  32. package/dist/assets/{index-CDx3IfgN.js → index-BPRSO52F.js} +2 -2
  33. package/dist/assets/{index-CDx3IfgN.js.map → index-BPRSO52F.js.map} +1 -1
  34. package/dist/assets/{index-CAFf3K5-.js → index-BWWBFiT1.js} +2 -2
  35. package/dist/assets/{index-CAFf3K5-.js.map → index-BWWBFiT1.js.map} +1 -1
  36. package/dist/assets/{index-Ckh17o1U.js → index-BZ4uW6kN.js} +2 -2
  37. package/dist/assets/{index-Ckh17o1U.js.map → index-BZ4uW6kN.js.map} +1 -1
  38. package/dist/assets/{index-D48MR3bL.js → index-BpFwTs3X.js} +2 -2
  39. package/dist/assets/{index-D48MR3bL.js.map → index-BpFwTs3X.js.map} +1 -1
  40. package/dist/assets/{index-mFxKl9yz.js → index-CbnCfDth.js} +2 -2
  41. package/dist/assets/{index-mFxKl9yz.js.map → index-CbnCfDth.js.map} +1 -1
  42. package/dist/assets/{index-DEKFCy0H.js → index-Cd_baD6T.js} +4 -4
  43. package/dist/assets/index-Cd_baD6T.js.map +1 -0
  44. package/dist/assets/index-D5UX5AHP.js.map +1 -1
  45. package/dist/assets/index-DRRJXHq_.js.map +1 -1
  46. package/dist/assets/{index-2EwzbJik.js → index-DhfdQsvQ.js} +2 -2
  47. package/dist/assets/{index-2EwzbJik.js.map → index-DhfdQsvQ.js.map} +1 -1
  48. package/dist/assets/index-DqHVrEeL.js.map +1 -1
  49. package/dist/assets/index-Dqph-b0R.css +1 -0
  50. package/dist/assets/{index-B2l1e3vi.js → index-UtPzkFI2.js} +2 -2
  51. package/dist/assets/{index-B2l1e3vi.js.map → index-UtPzkFI2.js.map} +1 -1
  52. package/dist/assets/index-c0qeY2gs.js.map +1 -1
  53. package/dist/assets/index-tHURiz2C.js.map +1 -1
  54. package/dist/assets/index-tflukq04.js.map +1 -1
  55. package/dist/assets/index.esm-CdP29Ssb.js.map +1 -1
  56. package/dist/assets/inflection-C1nKqrJS.js.map +1 -1
  57. package/dist/assets/isEqual-C420KeG-.js.map +1 -1
  58. package/dist/assets/jsx-runtime-D_zvdyIk.js.map +1 -1
  59. package/dist/assets/model-info-form-koY65NLs.js.map +1 -1
  60. package/dist/assets/model-merger-D1L5cIAo.js.map +1 -1
  61. package/dist/assets/{new-admin-section-dialog-4X2fxo7a.js → new-admin-section-dialog-DFpUuP_Z.js} +2 -2
  62. package/dist/assets/{new-admin-section-dialog-4X2fxo7a.js.map → new-admin-section-dialog-DFpUuP_Z.js.map} +1 -1
  63. package/dist/assets/{new-app-dialog-CCI4q4Mt.js → new-app-dialog-Cnp9A5Cx.js} +2 -2
  64. package/dist/assets/{new-app-dialog-CCI4q4Mt.js.map → new-app-dialog-Cnp9A5Cx.js.map} +1 -1
  65. package/dist/assets/{new-enum-dialog-B5zvBxhT.js → new-enum-dialog-CE3pNVPW.js} +2 -2
  66. package/dist/assets/{new-enum-dialog-B5zvBxhT.js.map → new-enum-dialog-CE3pNVPW.js.map} +1 -1
  67. package/dist/assets/{new-model-dialog-CiwTpKcZ.js → new-model-dialog-BUqUnu3F.js} +2 -2
  68. package/dist/assets/{new-model-dialog-CiwTpKcZ.js.map → new-model-dialog-BUqUnu3F.js.map} +1 -1
  69. package/dist/assets/{route-PmxQsBVj.js → route-BMREAhaC.js} +2 -2
  70. package/dist/assets/{route-PmxQsBVj.js.map → route-BMREAhaC.js.map} +1 -1
  71. package/dist/assets/{route-CZgTuGeJ.js → route-B_y_fjG1.js} +2 -2
  72. package/dist/assets/{route-CZgTuGeJ.js.map → route-B_y_fjG1.js.map} +1 -1
  73. package/dist/assets/{route-DluQ5e3_.js → route-CM78Qts_.js} +2 -2
  74. package/dist/assets/{route-DluQ5e3_.js.map → route-CM78Qts_.js.map} +1 -1
  75. package/dist/assets/{route-6ErXC2Qt.js → route-D-8r4X0U.js} +2 -2
  76. package/dist/assets/{route-6ErXC2Qt.js.map → route-D-8r4X0U.js.map} +1 -1
  77. package/dist/assets/{route-gzD4oiAl.js → route-D7DRL965.js} +2 -2
  78. package/dist/assets/{route-gzD4oiAl.js.map → route-D7DRL965.js.map} +1 -1
  79. package/dist/assets/{route-C6wCPwVj.js → route-DGnyRZBc.js} +2 -2
  80. package/dist/assets/{route-C6wCPwVj.js.map → route-DGnyRZBc.js.map} +1 -1
  81. package/dist/assets/route-Dm8VYkZY.js +2 -0
  82. package/dist/assets/{route-DLz_DL5S.js.map → route-Dm8VYkZY.js.map} +1 -1
  83. package/dist/assets/{route-C3eBLQEr.js → route-Dpt-JNZC.js} +2 -2
  84. package/dist/assets/{route-C3eBLQEr.js.map → route-Dpt-JNZC.js.map} +1 -1
  85. package/dist/assets/{route-DzYT3FNA.js → route-pfSpaHo3.js} +2 -2
  86. package/dist/assets/{route-DzYT3FNA.js.map → route-pfSpaHo3.js.map} +1 -1
  87. package/dist/assets/{route-gYB7kkkm.js → route-x978fCyu.js} +2 -2
  88. package/dist/assets/{route-gYB7kkkm.js.map → route-x978fCyu.js.map} +1 -1
  89. package/dist/assets/{service--2LVz4Ht.js → service-BSH0RhEL.js} +2 -2
  90. package/dist/assets/{service--2LVz4Ht.js.map → service-BSH0RhEL.js.map} +1 -1
  91. package/dist/assets/sortBy-C9bvycg5.js.map +1 -1
  92. package/dist/assets/{template-extractor-D33LuEZ8.js → template-extractor-Dzitw66S.js} +2 -2
  93. package/dist/assets/{template-extractor-D33LuEZ8.js.map → template-extractor-Dzitw66S.js.map} +1 -1
  94. package/dist/assets/{theme-builder-CWetoMuo.js → theme-builder-00-pJhvO.js} +2 -2
  95. package/dist/assets/{theme-builder-CWetoMuo.js.map → theme-builder-00-pJhvO.js.map} +1 -1
  96. package/dist/assets/use-definition-schema-BuO4pbji.js.map +1 -1
  97. package/dist/assets/{use-enum-form-BRBAlWJc.js → use-enum-form-CiJfrBqR.js} +2 -2
  98. package/dist/assets/{use-enum-form-BRBAlWJc.js.map → use-enum-form-CiJfrBqR.js.map} +1 -1
  99. package/dist/assets/{use-model-form-psj-JlE9.js → use-model-form-AKI1Wi68.js} +2 -2
  100. package/dist/assets/{use-model-form-psj-JlE9.js.map → use-model-form-AKI1Wi68.js.map} +1 -1
  101. package/dist/index.html +2 -2
  102. package/package.json +11 -11
  103. package/dist/assets/edit._sectionKey-D4mTSUhO.js.map +0 -1
  104. package/dist/assets/index-DEKFCy0H.js.map +0 -1
  105. package/dist/assets/index-DPK1IfNZ.css +0 -1
  106. package/dist/assets/route-DLz_DL5S.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"project-builder-lib-fZlnH9Ds.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/object/pickBy.mjs","../../../../project-builder-lib/dist/compiler/admin-crud-action-spec.js","../../../../project-builder-lib/dist/compiler/admin-crud-column-compiler-spec.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/imports/utils.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/spec/auth-config-spec.js","../../../../project-builder-lib/dist/plugins/spec/auth-model-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/schema/apps/types.js","../../../../project-builder-lib/dist/schema/apps/base.js","../../../../project-builder-lib/dist/schema/apps/backend/index.js","../../../../project-builder-lib/dist/schema/auth/index.js","../../../../project-builder-lib/dist/references/strip-ref-markers.js","../../../../project-builder-lib/dist/references/definition-ref-builder.js","../../../../project-builder-lib/dist/references/extract-definition-refs.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/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/web/admin/sections/types.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/base.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-actions/types.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-actions/built-in-actions.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-actions/admin-action-spec.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-actions/admin-crud-action.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-columns/types.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-columns/built-in-columns.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-columns/admin-column-spec.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-columns/admin-crud-column.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-form/types.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-form/built-in-input.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-form/admin-input-spec.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-form/admin-crud-input.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud.js","../../../../project-builder-lib/dist/schema/apps/web/admin/admin.js","../../../../project-builder-lib/dist/schema/apps/web/web-app.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/migration-015-null-parent-refs.js","../../../../project-builder-lib/dist/migrations/migration-016-web-admin-config.js","../../../../project-builder-lib/dist/migrations/migration-017-rename-auth-plugin.js","../../../../project-builder-lib/dist/migrations/migration-018-crud-name-field-ref.js","../../../../project-builder-lib/dist/migrations/migration-019-column-type-based.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 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","import { createPluginSpec } from '#src/plugins/spec/types.js';\nexport function createAdminCrudActionCompilerImplementation() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const actions = new Map();\n return {\n registerCompiler(action) {\n if (actions.has(action.name)) {\n throw new Error(`Admin CRUD action with name ${action.name} is already registered`);\n }\n actions.set(action.name, action);\n },\n getCompiler(name, builtInActions = []) {\n const builtInAction = builtInActions.find((b) => b.name === name);\n if (builtInAction) {\n return builtInAction;\n }\n const action = actions.get(name);\n if (!action) {\n throw new Error(`Unable to find action with name ${name}`);\n }\n return action;\n },\n };\n}\n/**\n * Spec for adding config component for plugin\n */\nexport const adminCrudActionCompilerSpec = createPluginSpec('core/admin-crud-action-compiler', { defaultInitializer: createAdminCrudActionCompilerImplementation });\n//# sourceMappingURL=admin-crud-action-spec.js.map","import { createPluginSpec } from '#src/plugins/spec/types.js';\nexport function createAdminCrudColumnCompiler(input) {\n return input;\n}\nexport function createAdminCrudColumnCompilerImplementation() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const columns = new Map();\n return {\n registerCompiler(column) {\n if (columns.has(column.name)) {\n throw new Error(`Admin CRUD column with name ${column.name} is already registered`);\n }\n columns.set(column.name, column);\n },\n getCompiler(type, builtInColumns = []) {\n const builtInColumn = builtInColumns.find((b) => b.name === type);\n if (builtInColumn) {\n return builtInColumn;\n }\n const column = columns.get(type);\n if (!column) {\n throw new Error(`Unable to find column with type ${type}`);\n }\n return column;\n },\n getColumnCompilers() {\n return columns;\n },\n };\n}\n/**\n * Spec for adding column compilers\n */\nexport const adminCrudColumnCompilerSpec = createPluginSpec('core/admin-crud-column-compiler', { defaultInitializer: createAdminCrudColumnCompilerImplementation });\n//# sourceMappingURL=admin-crud-column-compiler-spec.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 implementations;\n constructor(implementations) {\n this.implementations = implementations;\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.key}/${m.key}`,\n name: `${plugin.name}/${m.key}`,\n pluginKey: plugin.key,\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, pluginKey } 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 = { pluginKey };\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","/**\n * Gets a plugin metadata object by its key.\n *\n * @param pluginStore The plugin store to use\n * @param key The key of the plugin to get\n * @returns The plugin metadata object or undefined if the plugin is not found\n */\nexport function getPluginMetadataByKey(pluginStore, key) {\n return pluginStore.availablePlugins.find((p) => p.metadata.key === key)\n ?.metadata;\n}\n/**\n * Gets a plugin metadata object by its key.\n *\n * @param pluginStore The plugin store to use\n * @param key The key of the plugin to get\n * @returns The plugin metadata object\n * @throws An error if the plugin is not found\n */\nexport function getPluginMetadataByKeyOrThrow(pluginStore, key) {\n const metadata = getPluginMetadataByKey(pluginStore, key);\n if (!metadata) {\n throw new Error(`Could not find plugin with key ${key}`);\n }\n return metadata;\n}\nexport function getManagedPluginsForPlugin(pluginStore, pluginKey) {\n const plugin = getPluginMetadataByKeyOrThrow(pluginStore, pluginKey);\n return pluginStore.availablePlugins\n .filter((p) => p.metadata.managedBy === plugin.fullyQualifiedName)\n .map((p) => p.metadata);\n}\n//# sourceMappingURL=utils.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 (plugin.json)\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 fully qualified name of the plugin that manages this plugin,\n * e.g. \"@baseplate-dev/plugin-auth:auth0\" would be managed by the \"@baseplate-dev/plugin-auth:auth\" plugin.\n *\n * Managed plugins do not appear in the plugin list but are managed by the base plugin. If the base\n * plugin is disabled, the managed plugins will also be disabled.\n */\n managedBy: z.string().optional(),\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 * Whether the plugin should be hidden in the project builder UI\n *\n * (It can be used once in the definition but cannot be added)\n */\n hidden: z.boolean().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 registerSchemaCreator(pluginKey, schemaCreator) {\n if (schemas.has(pluginKey)) {\n throw new Error(`Schema for plugin ${pluginKey} is already registered`);\n }\n schemas.set(pluginKey, schemaCreator);\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 getSchemaCreator(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 } 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 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 const migrationResult = migration.migrate(pluginDefinition.config, draft);\n if (migrationResult.updatedConfig !== undefined) {\n pluginDefinition.config = migrationResult.updatedConfig;\n }\n if (migrationResult.updateProjectDefinition) {\n migrationResult.updateProjectDefinition(draft);\n }\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 { 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';\n/**\n * Spec for adding user model config component for plugin\n */\nexport const authModelConfigSpec = createPluginSpec('core/auth-model-config', {});\n//# sourceMappingURL=auth-model-config-spec.js.map","import { createPluginSpec } from './types.js';\nexport function createWebConfigImplementation() {\n const components = new Map();\n return {\n registerWebConfigComponent(pluginKey, ConfigComponent) {\n if (components.has(pluginKey)) {\n throw new Error(`Web config component for plugin ${pluginKey} is already registered`);\n }\n components.set(pluginKey, ConfigComponent);\n },\n getWebConfigComponent(pluginKey) {\n return components.get(pluginKey);\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}\n/**\n * Given an app config, get the relative directory of the app\n *\n * @param appConfig The app config\n * @returns The directory of the app\n */\nfunction getAppDirectory(appConfig) {\n return appConfig.packageLocation\n ? appConfig.packageLocation\n : `packages/${appConfig.name}`;\n}\nexport function getBackendRelativePath(appConfig, backendApp) {\n const backendRelativePath = computeRelativePath(getAppDirectory(appConfig), getAppDirectory(backendApp));\n return backendRelativePath;\n}\nexport const AppUtils = {\n byId,\n getBackendApp,\n getBackendRelativePath,\n getAppDirectory,\n};\n//# sourceMappingURL=app-utils.js.map","import { createEntityType } from '#src/references/types.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","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 { createEntityType } from '#src/references/types.js';\nexport const authRoleEntityType = createEntityType('role');\n//# sourceMappingURL=index.js.map","import { DefinitionReferenceMarker } from './markers.js';\n/**\n * Strips the DefinitionReferenceMarker from the value recursively.\n * @param value - The value to strip the DefinitionReferenceMarker from.\n * @returns The value without the DefinitionReferenceMarker.\n */\nexport function stripRefMarkers(value) {\n if (value instanceof DefinitionReferenceMarker) {\n return value.value;\n }\n if (Array.isArray(value)) {\n return value.map(stripRefMarkers);\n }\n if (typeof value === 'object' && value !== null) {\n return Object.fromEntries(Object.entries(value).map(([key, childValue]) => [\n key,\n stripRefMarkers(childValue),\n ]));\n }\n return value;\n}\n//# sourceMappingURL=strip-ref-markers.js.map","import { get } from 'es-toolkit/compat';\nimport { stripRefMarkers } from './strip-ref-markers.js';\n/**\n * Creates a definition entity name resolver.\n * @param entityNameResolver - The entity name resolver.\n * @returns The definition entity name resolver.\n */\nexport function createDefinitionEntityNameResolver(entityNameResolver) {\n return entityNameResolver;\n}\n/**\n * DefinitionRefBuilder is responsible for constructing reference paths, and registering\n * references and entities as defined in a Zod schema.\n *\n * The builder uses a prefix (usually the current parsing path) and context (a\n * shared map for resolving relative references) to build complete reference paths.\n *\n * @template TInput - The type of the input data being parsed.\n */\nexport class DefinitionRefBuilder {\n references;\n entitiesWithNameResolver;\n pathPrefix;\n context;\n pathMap;\n data;\n /**\n * Creates a new builder instance.\n * @param pathPrefix - The starting path for all references.\n * @param context - Shared context including a path map and deserialize flag.\n * @param data - The data being parsed.\n */\n constructor(pathPrefix, context, data) {\n this.references = [];\n this.entitiesWithNameResolver = [];\n this.pathPrefix = pathPrefix;\n this.context = context;\n this.pathMap = new Map();\n this.data = data;\n }\n /**\n * Converts a dot-separated string path into an array of keys.\n * @param path - A string (e.g. \"a.b.0.c\") representing the path.\n * @returns An array of keys (numbers for numeric strings, otherwise strings).\n */\n _constructPathWithoutPrefix(path) {\n if (!path)\n return [];\n const pathComponents = path\n .split('.')\n .map((key) => (/^[0-9]+$/.test(key) ? Number.parseInt(key, 10) : key));\n return pathComponents;\n }\n /**\n * Prepends the builder's path prefix to the provided path.\n * @param path - The dot-separated path string.\n * @returns The complete reference path as an array.\n */\n _constructPath(path) {\n if (!path)\n return this.pathPrefix;\n return [...this.pathPrefix, ...this._constructPathWithoutPrefix(path)];\n }\n /**\n * Constructs a reference path that may be defined directly as a string or indirectly\n * via a context object. If a context object is provided, the function looks up the\n * actual path from the builder's context.\n *\n * @param path - Either a dot-separated string path or an object with a context key.\n * @param expectedEntityType - The entity type expected for this context.\n * @returns The resolved reference path.\n * @throws If the context cannot be found or its type does not match.\n */\n _constructPathWithContext(path, expectedEntityType) {\n if (typeof path === 'string') {\n return this._constructPath(path);\n }\n // Lookup the context for the given key.\n const pathContext = this.context.pathMap.get(path.context);\n if (!pathContext) {\n throw new Error(`Could not find context for ${path.context} from ${this.pathPrefix.join('.')}`);\n }\n if (pathContext.type !== expectedEntityType) {\n throw new Error(`Attempted to retrieve context for ${path.context} from ${this.pathPrefix.join('.')} expecting ${expectedEntityType.name}, but found ${pathContext.type.name}`);\n }\n return pathContext.path;\n }\n /**\n * Registers a reference based on the provided input definition.\n *\n * Flow:\n * 1. Validate that the parent path is provided if required (and vice versa).\n * 2. Compute the reference path; if the path is empty, use the entire data.\n * 3. If the referenced value is null or undefined, skip adding the reference.\n * 4. Otherwise, add the reference and, if requested, register its context.\n *\n * @param reference - The reference definition.\n * @throws If parent path usage is incorrect.\n */\n addReference(reference) {\n if (!reference.type.parentType && reference.parentPath) {\n throw new Error(`Parent path does nothing since reference does not have parent`);\n }\n if (reference.type.parentType && !reference.parentPath) {\n throw new Error(`Parent path required if reference type has parent type`);\n }\n // Compute the path without prefix once.\n const refPathWithoutPrefix = this._constructPathWithoutPrefix(reference.path);\n // If the path is empty, use the entire data; otherwise, retrieve the value.\n const refValue = refPathWithoutPrefix.length === 0\n ? this.data\n : get(this.data, refPathWithoutPrefix);\n if (refValue === undefined || refValue === null)\n return;\n const fullPath = this._constructPath(reference.path);\n this.references.push({\n type: reference.type,\n path: fullPath,\n parentPath: reference.parentPath &&\n reference.type.parentType &&\n this._constructPathWithContext(reference.parentPath, reference.type.parentType),\n onDelete: reference.onDelete,\n });\n // Optionally, add this path to the shared context.\n if (reference.addContext) {\n this._addPathToContext(fullPath, reference.type, reference.addContext);\n }\n }\n /**\n * Registers an entity based on the provided definition.\n *\n * Flow:\n * 1. Validate that not both a name and a name reference path are provided.\n * 2. Compute the full entity path.\n * 3. Resolve the entity ID:\n * - Use the provided idPath if available; otherwise, default to appending 'id'\n * to the entity path.\n * - If no id is found, generate a new one.\n * 4. Resolve the entity name:\n * - Use the provided resolveName if available; otherwise, default to using the\n * name path.\n * 5. Register the entity in either the direct entities list or the name-ref list.\n * 6. Optionally, add the entity’s id path to the shared context.\n *\n * @param entity - The entity definition.\n * @throws If both name and nameRefPath are provided or if no name is resolved.\n */\n addEntity(entity) {\n // Build the full path for the entity.\n const path = this._constructPath(entity.path);\n // Resolve the id path: if provided use it; otherwise, assume the id is at \"entity.path.id\"\n const idPath = entity.idPath\n ? this._constructPathWithoutPrefix(entity.idPath)\n : [...this._constructPathWithoutPrefix(entity.path), 'id'];\n const id = get(this.data, idPath);\n if (!id) {\n throw new Error(`No id found for entity ${entity.type.name}`);\n }\n if (!entity.type.isId(id)) {\n throw new Error(`Invalid id: ${id} for entity ${entity.type.name}`);\n }\n // Resolve the name: if getNameResolver is provided, use it to build the name resolver; otherwise,\n // use the default name resolver.\n const getNameResolver = entity.getNameResolver ??\n ((value) => get(value, 'name'));\n const nameResolver = getNameResolver(stripRefMarkers(this.data));\n if (!nameResolver) {\n throw new Error(`No name resolver found for entity ${entity.type.name} at ${path.join('.')}`);\n }\n // Base entity definition shared between regular entities and those with a name reference.\n const entityBase = {\n id,\n type: entity.type,\n path,\n idPath: [...this.pathPrefix, ...idPath],\n parentPath: entity.parentPath &&\n entity.type.parentType &&\n this._constructPathWithContext(entity.parentPath, entity.type.parentType),\n };\n this.entitiesWithNameResolver.push({\n ...entityBase,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- needed to allow more specific generic typed to be put in here\n nameResolver: typeof nameResolver === 'string'\n ? { resolveName: () => nameResolver }\n : nameResolver,\n });\n // Optionally add the id path to the context.\n if (entity.addContext) {\n this._addPathToContext([...this.pathPrefix, ...idPath], entity.type, entity.addContext);\n }\n }\n /**\n * Registers a given path into the builder's context map.\n * @param path - The full reference path.\n * @param type - The entity type associated with the path.\n * @param context - A unique key to identify this context.\n * @throws If the context key is already registered.\n */\n _addPathToContext(path, type, context) {\n // For now, allow overriding contexts to maintain compatibility\n this.pathMap.set(context, { path, type });\n // Also register in the shared context for other builders to access\n this.context.pathMap.set(context, { path, type });\n }\n /**\n * Convenience method that builds a full path from a dot-separated string and\n * adds it to the context.\n * @param path - The dot-separated string path.\n * @param type - The entity type.\n * @param context - The context key.\n */\n addPathToContext(path, type, context) {\n this._addPathToContext(this._constructPath(path), type, context);\n }\n}\n//# sourceMappingURL=definition-ref-builder.js.map","import { DefinitionRefBuilder } from './definition-ref-builder.js';\nimport { DefinitionReferenceMarker, REF_ANNOTATIONS_MARKER_SYMBOL, } from './markers.js';\nexport function extractDefinitionRefsRecursive(value, context, path) {\n const builder = new DefinitionRefBuilder(path, context.context, value);\n if (value instanceof DefinitionReferenceMarker) {\n builder.addReference(value.reference);\n context.references.push(...builder.references);\n context.entitiesWithNameResolver.push(...builder.entitiesWithNameResolver);\n return value.value;\n }\n if (typeof value === 'object' &&\n value !== null &&\n REF_ANNOTATIONS_MARKER_SYMBOL in value) {\n const annotations = value[REF_ANNOTATIONS_MARKER_SYMBOL];\n for (const entity of annotations.entities) {\n builder.addEntity(entity);\n }\n for (const reference of annotations.references) {\n builder.addReference(reference);\n }\n for (const pathInfo of annotations.contextPaths) {\n builder.addPathToContext(pathInfo.path, pathInfo.type, pathInfo.context);\n }\n context.references.push(...builder.references);\n context.entitiesWithNameResolver.push(...builder.entitiesWithNameResolver);\n // Remove the marker symbol and process the clean object\n const { [REF_ANNOTATIONS_MARKER_SYMBOL]: _, ...cleanValue } = value;\n // Process the clean object recursively\n return Object.fromEntries(Object.entries(cleanValue).map(([key, childValue]) => [\n key,\n extractDefinitionRefsRecursive(childValue, context, [...path, key]),\n ]));\n }\n // Run recursively for arrays first (arrays are also objects)\n if (Array.isArray(value)) {\n return value.map((element, i) => extractDefinitionRefsRecursive(element, context, [...path, i]));\n }\n // Run recursively for regular objects\n if (typeof value === 'object' && value !== null) {\n return Object.fromEntries(Object.entries(value).map(([key, childValue]) => [\n key,\n extractDefinitionRefsRecursive(childValue, context, [...path, key]),\n ]));\n }\n // Return primitive values as-is\n return value;\n}\nexport function extractDefinitionRefs(value) {\n const refContext = {\n context: {\n pathMap: new Map(),\n },\n references: [],\n entitiesWithNameResolver: [],\n };\n const cleanData = extractDefinitionRefsRecursive(value, refContext, []);\n // Simple sanity check to make sure we don't have duplicate IDs\n const idSet = new Set();\n for (const entity of refContext.entitiesWithNameResolver) {\n if (idSet.has(entity.id)) {\n throw new Error(`Duplicate ID found: ${entity.id}`);\n }\n idSet.add(entity.id);\n }\n return {\n data: cleanData,\n references: refContext.references,\n entitiesWithNameResolver: refContext.entitiesWithNameResolver,\n };\n}\n//# sourceMappingURL=extract-definition-refs.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 { createDefinitionSchemaParserContext } from '#src/schema/creator/index.js';\nimport { extractDefinitionRefs } from './extract-definition-refs.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 parseSchemaWithTransformedReferences(schemaCreator, input, schemaCreatorOptions, options) {\n const schemaContext = createDefinitionSchemaParserContext({\n ...schemaCreatorOptions,\n transformReferences: true,\n });\n const schema = schemaCreator(schemaContext);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- using the type T which can be any zod schema\n const value = schema.parse(input);\n const refPayload = extractDefinitionRefs(value);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- using the type T which can be any zod schema\n return resolveZodRefPayloadNames(refPayload, 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 { parseSchemaWithTransformedReferences } from './parse-schema-with-references.js';\nfunction referenceToNameParentId(name, parentId) {\n return JSON.stringify({ name, parentId });\n}\n/**\n * Deserialize a schema with references using the new transform-based approach.\n * This function converts human-readable names back to entity IDs.\n *\n * @template T - The schema creator type\n * @param schemaCreator - The schema creator function\n * @param input - The input data with names instead of IDs\n * @param options - Options for the schema creator (excluding transformReferences)\n * @returns The resolved payload with IDs instead of names\n */\nexport function deserializeSchemaWithTransformedReferences(schemaCreator, input, options) {\n const payload = parseSchemaWithTransformedReferences(schemaCreator, input, options, {\n skipReferenceNameResolution: true,\n });\n // Use the same resolution logic as the original function\n return resolveReferencesToIds(payload);\n}\n/**\n * Internal function to resolve entity names to IDs in the payload.\n * This is shared logic between the old and new approaches.\n *\n * @param payload - The parsed payload with entities and references\n * @returns The payload with references resolved to IDs\n */\nfunction resolveReferencesToIds(payload) {\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 { parseSchemaWithTransformedReferences } 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(schemaCreator, value, schemaCreatorOptions) {\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 = parseSchemaWithTransformedReferences(schemaCreator, valueToEdit, schemaCreatorOptions, {\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_UNDEFINED': {\n // Check if reference is inside an array\n if (ref.path.length > 0) {\n const parentPath = ref.path.slice(0, -1);\n const parent = get(valueToEdit, parentPath);\n if (Array.isArray(parent)) {\n throw new TypeError(`SET_UNDEFINED cannot be used for references inside arrays at path ${ref.path.join('.')}. Use DELETE instead to remove the array element.`);\n }\n }\n set(valueToEdit, ref.path, undefined);\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 { parseSchemaWithTransformedReferences } 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(schemaCreator, value, schemaCreatorOptions) {\n const payload = parseSchemaWithTransformedReferences(schemaCreator, value, schemaCreatorOptions);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- typed as def.InferOutput<T>\n return serializeSchemaFromRefPayload(payload);\n}\n//# sourceMappingURL=serialize-schema.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 { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { authRoleEntityType } from '../auth/index.js';\nimport { modelForeignRelationEntityType, modelLocalRelationEntityType, modelScalarFieldEntityType, } from './types.js';\nconst createRoleArray = definitionSchema((ctx) => ctx.withDefault(z.array(ctx.withRef({\n type: authRoleEntityType,\n onDelete: 'DELETE',\n})), []));\nexport const createModelGraphqlSchema = definitionSchema((ctx) => z.object({\n objectType: ctx.withDefault(z.object({\n enabled: ctx.withDefault(z.boolean(), false),\n fields: ctx.withDefault(z.array(ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n })), []),\n localRelations: ctx.withDefault(z.array(ctx.withRef({\n type: modelLocalRelationEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n })), []),\n foreignRelations: ctx.withDefault(z.array(ctx.withRef({\n type: modelForeignRelationEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n })), []),\n }), {}),\n queries: ctx.withDefault(z.object({\n get: ctx.withDefault(z.object({\n enabled: ctx.withDefault(z.boolean(), false),\n roles: createRoleArray(ctx),\n }), {}),\n list: ctx.withDefault(z.object({\n enabled: ctx.withDefault(z.boolean(), false),\n roles: createRoleArray(ctx),\n }), {}),\n }), {}),\n mutations: ctx.withDefault(z.object({\n create: ctx.withDefault(z.object({\n enabled: ctx.withDefault(z.boolean(), false),\n roles: createRoleArray(ctx),\n }), {}),\n update: ctx.withDefault(z.object({\n enabled: ctx.withDefault(z.boolean(), false),\n roles: createRoleArray(ctx),\n }), {}),\n delete: ctx.withDefault(z.object({\n enabled: ctx.withDefault(z.boolean(), false),\n roles: createRoleArray(ctx),\n }), {}),\n }), {}),\n}));\n//# sourceMappingURL=graphql.js.map","import { z } from 'zod';\nexport const baseTransformerFields = {\n id: z.string(),\n type: z.string().min(1),\n};\nexport const baseTransformerSchema = z.object(baseTransformerFields);\nexport function createModelTransformerType(payload) {\n return payload;\n}\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { createDefinitionEntityNameResolver } 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((ctx) => ctx.withEnt(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((ctx) => ctx.withRefBuilder(ctx.withEnt(z.object({\n ...baseTransformerFields,\n foreignRelationRef: ctx.withRef({\n type: modelForeignRelationEntityType,\n onDelete: 'DELETE_PARENT',\n parentPath: { context: 'model' },\n }),\n type: z.literal('embeddedRelation'),\n embeddedFieldNames: z.array(ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'embeddedModel' },\n })),\n embeddedTransformerNames: z\n .array(ctx.withRef({\n type: modelTransformerEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'embeddedModel' },\n }))\n .optional(),\n modelRef: ctx.withRef({\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}), (builder) => {\n builder.addPathToContext('modelRef', modelEntityType, 'embeddedModel');\n}));\nexport const BUILT_IN_TRANSFORMERS = [\n createModelTransformerType({\n name: 'password',\n createSchema: createPasswordTransformerSchema,\n getName: () => 'Password',\n }),\n createModelTransformerType({\n name: 'embeddedRelation',\n createSchema: 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 { 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) => baseTransformerSchema.passthrough().transform((data, parseCtx) => {\n const { type } = data;\n const transformer = ctx.plugins\n .getPluginSpec(modelTransformerSpec)\n .getModelTransformer(type);\n return transformer\n .createSchema(ctx)\n .and(baseTransformerSchema)\n .parse(data, {\n path: parseCtx.path,\n });\n}));\n//# sourceMappingURL=transformers.js.map","import { z } from 'zod';\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((ctx) => ctx.withEnt(z.object({\n id: z.string(),\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 id: z.string(),\n name: z.string().min(1),\n featureRef: ctx.withRef({\n type: featureEntityType,\n onDelete: 'RESTRICT',\n }),\n values: z.array(createEnumValueSchema(ctx)),\n isExposed: z.boolean(),\n}));\nexport const createEnumSchema = definitionSchema((ctx) => ctx.withEnt(createEnumBaseSchema(ctx), {\n type: modelEnumEntityType,\n addContext: 'enum',\n}));\n//# sourceMappingURL=enums.js.map","import { z } from 'zod';\nimport { createDefinitionEntityNameResolver } 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((ctx) => ctx\n .withEnt(z.object({\n id: z.string(),\n name: VALIDATORS.CAMEL_CASE_STRING,\n type: z.enum(SCALAR_FIELD_TYPES),\n isOptional: z.boolean().default(false),\n options: ctx.withRefBuilder(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: ctx\n .withRef({\n type: modelEnumEntityType,\n onDelete: 'RESTRICT',\n })\n .optional(),\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((ctx) => ctx.withRefBuilder(z.object({\n id: z.string(),\n foreignId: z\n .string()\n .default(() => modelForeignRelationEntityType.generateNewId()),\n name: VALIDATORS.CAMEL_CASE_STRING,\n references: z.array(z.object({\n localRef: ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n foreignRef: ctx.withRef({\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((ctx) => ctx.withEnt(z.object({\n id: z.string(),\n fields: z.array(z.object({\n fieldRef: ctx.withRef({\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(ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n transformerNames: z\n .array(ctx.withRef({\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(ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n transformerNames: z\n .array(ctx.withRef({\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: z.string(),\n name: VALIDATORS.PASCAL_CASE_STRING,\n featureRef: ctx.withRef({\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(ctx.withRef({\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: ctx.withDefault(createModelGraphqlSchema(ctx).optional(), {}),\n}));\nexport const createModelSchema = definitionSchema((ctx) => ctx.withEnt(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});\nexport const adminCrudSectionColumnEntityType = createEntityType('admin-crud-section-column', {\n parentType: adminSectionEntityType,\n});\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { featureEntityType } from '#src/schema/features/index.js';\nimport { adminSectionEntityType } from './types.js';\nexport const createBaseAdminSectionValidators = definitionSchema((ctx) => z.object({\n id: z.string().default(adminSectionEntityType.generateNewId()),\n name: z.string().min(1),\n featureRef: ctx.withRef({\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 baseAdminCrudActionSchema = z.object({\n id: z\n .string()\n .min(1)\n .default(() => adminCrudActionEntityType.generateNewId()),\n type: z.string().min(1),\n position: z.enum(['inline', 'dropdown']).default('dropdown'),\n});\nexport function createAdminCrudActionType(payload) {\n return payload;\n}\nexport const adminCrudActionEntityType = createEntityType('admin-crud-action', {\n parentType: adminSectionEntityType,\n});\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { baseAdminCrudActionSchema, createAdminCrudActionType, } from './types.js';\nexport const createAdminCrudEditActionSchema = definitionSchema(() => baseAdminCrudActionSchema.extend({\n type: z.literal('edit'),\n}));\nconst adminCrudEditActionType = createAdminCrudActionType({\n name: 'edit',\n createSchema: createAdminCrudEditActionSchema,\n});\nexport const createAdminCrudDeleteActionSchema = definitionSchema(() => baseAdminCrudActionSchema.extend({\n type: z.literal('delete'),\n}));\nconst adminCrudDeleteActionType = createAdminCrudActionType({\n name: 'delete',\n createSchema: createAdminCrudDeleteActionSchema,\n});\nexport const BUILT_IN_ADMIN_CRUD_ACTIONS = [\n adminCrudEditActionType,\n adminCrudDeleteActionType,\n];\n//# sourceMappingURL=built-in-actions.js.map","import { createPluginSpec } from '#src/plugins/spec/types.js';\nimport { BUILT_IN_ADMIN_CRUD_ACTIONS } from './built-in-actions.js';\nexport function createAdminCrudActionImplementation() {\n const adminCrudActions = new Map(BUILT_IN_ADMIN_CRUD_ACTIONS.map((action) => [action.name, action]));\n return {\n registerAdminCrudAction(action) {\n if (adminCrudActions.has(action.name)) {\n throw new Error(`Admin CRUD action with name ${action.name} is already registered`);\n }\n adminCrudActions.set(action.name, action);\n },\n getAdminCrudActions() {\n return adminCrudActions;\n },\n getAdminCrudAction(name) {\n const action = adminCrudActions.get(name);\n if (!action) {\n throw new Error(`Unable to find action with name ${name}`);\n }\n return action;\n },\n };\n}\n/**\n * Spec for adding admin CRUD actions\n */\nexport const adminCrudActionSpec = createPluginSpec('core/admin-crud-action', {\n defaultInitializer: createAdminCrudActionImplementation,\n});\n//# sourceMappingURL=admin-action-spec.js.map","import { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { adminCrudActionSpec } from './admin-action-spec.js';\nimport { adminCrudActionEntityType, baseAdminCrudActionSchema, } from './types.js';\nexport const createAdminCrudActionSchema = definitionSchema((ctx) => ctx\n .withEnt(baseAdminCrudActionSchema.passthrough(), {\n type: adminCrudActionEntityType,\n parentPath: {\n context: 'admin-section',\n },\n getNameResolver: (value) => value.type,\n})\n .transform((data, parseCtx) => {\n const { type } = data;\n const crudAction = ctx.plugins\n .getPluginSpec(adminCrudActionSpec)\n .getAdminCrudAction(type);\n return crudAction\n .createSchema(ctx)\n .and(baseAdminCrudActionSchema)\n .parse(data, {\n path: parseCtx.path,\n });\n}));\n//# sourceMappingURL=admin-crud-action.js.map","import { z } from 'zod';\nimport { createEntityType } from '#src/references/types.js';\nimport { adminSectionEntityType } from '../types.js';\nexport const baseAdminCrudColumnSchema = z.object({\n id: z\n .string()\n .min(1)\n .default(() => adminCrudColumnEntityType.generateNewId()),\n type: z.string().min(1),\n label: z.string().min(1),\n});\nexport function createAdminCrudColumnType(payload) {\n return payload;\n}\nexport const adminCrudColumnEntityType = createEntityType('admin-crud-column', {\n parentType: adminSectionEntityType,\n});\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { modelLocalRelationEntityType, modelScalarFieldEntityType, } from '#src/schema/models/index.js';\nimport { baseAdminCrudColumnSchema, createAdminCrudColumnType, } from './types.js';\n// Text Column\nexport const createAdminCrudTextColumnSchema = definitionSchema((ctx) => baseAdminCrudColumnSchema.extend({\n type: z.literal('text'),\n modelFieldRef: ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n}));\nconst adminCrudTextColumnType = createAdminCrudColumnType({\n name: 'text',\n createSchema: createAdminCrudTextColumnSchema,\n});\n// Foreign Column\nexport const createAdminCrudForeignColumnSchema = definitionSchema((ctx) => baseAdminCrudColumnSchema.extend({\n type: z.literal('foreign'),\n localRelationRef: ctx.withRef({\n type: modelLocalRelationEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n labelExpression: z.string().min(1),\n valueExpression: z.string().min(1),\n}));\nconst adminCrudForeignColumnType = createAdminCrudColumnType({\n name: 'foreign',\n createSchema: createAdminCrudForeignColumnSchema,\n});\nexport const BUILT_IN_ADMIN_CRUD_COLUMNS = [\n adminCrudTextColumnType,\n adminCrudForeignColumnType,\n];\n//# sourceMappingURL=built-in-columns.js.map","import { createPluginSpec } from '#src/plugins/spec/types.js';\nimport { BUILT_IN_ADMIN_CRUD_COLUMNS } from './built-in-columns.js';\nexport function createAdminCrudColumnImplementation() {\n const adminCrudColumns = new Map(BUILT_IN_ADMIN_CRUD_COLUMNS.map((column) => [column.name, column]));\n return {\n registerAdminCrudColumn(column) {\n if (adminCrudColumns.has(column.name)) {\n throw new Error(`Admin CRUD column with name ${column.name} is already registered`);\n }\n adminCrudColumns.set(column.name, column);\n },\n getAdminCrudColumns() {\n return adminCrudColumns;\n },\n getAdminCrudColumn(name) {\n const column = adminCrudColumns.get(name);\n if (!column) {\n throw new Error(`Unable to find column with name ${name}`);\n }\n return column;\n },\n };\n}\n/**\n * Spec for adding admin CRUD columns\n */\nexport const adminCrudColumnSpec = createPluginSpec('core/admin-crud-column', {\n defaultInitializer: createAdminCrudColumnImplementation,\n});\n//# sourceMappingURL=admin-column-spec.js.map","import { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { adminCrudColumnSpec } from './admin-column-spec.js';\nimport { adminCrudColumnEntityType, baseAdminCrudColumnSchema, } from './types.js';\nexport const createAdminCrudColumnSchema = definitionSchema((ctx) => ctx\n .withEnt(baseAdminCrudColumnSchema.passthrough(), {\n type: adminCrudColumnEntityType,\n parentPath: {\n context: 'admin-section',\n },\n getNameResolver: (value) => value.type,\n})\n .transform((data, parseCtx) => {\n const { type } = data;\n const crudColumn = ctx.plugins\n .getPluginSpec(adminCrudColumnSpec)\n .getAdminCrudColumn(type);\n return crudColumn\n .createSchema(ctx)\n .and(baseAdminCrudColumnSchema)\n .parse(data, {\n path: parseCtx.path,\n });\n}));\n//# sourceMappingURL=admin-crud-column.js.map","import { z } from 'zod';\nimport { createEntityType } from '#src/references/types.js';\nimport { adminSectionEntityType } from '../types.js';\nexport const baseAdminCrudInputSchema = z.object({\n id: z\n .string()\n .min(1)\n .default(() => adminCrudInputEntityType.generateNewId()),\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});\nexport const adminCrudInputEntityType = createEntityType('admin-crud-input', {\n parentType: adminSectionEntityType,\n});\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { modelForeignRelationEntityType, modelLocalRelationEntityType, modelScalarFieldEntityType, } from '#src/schema/models/index.js';\nimport { adminCrudEmbeddedFormEntityType, baseAdminCrudInputSchema, createAdminCrudInputType, } from './types.js';\nexport const createAdminCrudTextInputSchema = definitionSchema((ctx) => baseAdminCrudInputSchema.extend({\n type: z.literal('text'),\n label: z.string().min(1),\n modelFieldRef: ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n validation: z.string().optional(),\n}));\nconst adminCrudTextInputType = createAdminCrudInputType({\n name: 'text',\n createSchema: createAdminCrudTextInputSchema,\n});\nexport const createAdminCrudForeignInputSchema = definitionSchema((ctx) => baseAdminCrudInputSchema.extend({\n type: z.literal('foreign'),\n label: z.string().min(1),\n localRelationRef: ctx.withRef({\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 createSchema: createAdminCrudForeignInputSchema,\n});\nexport const createAdminCrudEnumInputSchema = definitionSchema((ctx) => baseAdminCrudInputSchema.extend({\n type: z.literal('enum'),\n label: z.string().min(1),\n modelFieldRef: ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n}));\nconst adminCrudEnumInputType = createAdminCrudInputType({\n name: 'enum',\n createSchema: createAdminCrudEnumInputSchema,\n});\nexport const createAdminCrudEmbeddedInputSchema = definitionSchema((ctx) => baseAdminCrudInputSchema.extend({\n type: z.literal('embedded'),\n label: z.string().min(1),\n modelRelationRef: ctx.withRef({\n type: modelForeignRelationEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n embeddedFormRef: ctx.withRef({\n type: adminCrudEmbeddedFormEntityType,\n parentPath: { context: 'admin-section' },\n onDelete: 'RESTRICT',\n }),\n}));\nexport const adminCrudEmbeddedInputType = createAdminCrudInputType({\n name: 'embedded',\n createSchema: createAdminCrudEmbeddedInputSchema,\n});\nexport const createAdminCrudEmbeddedLocalInputSchema = definitionSchema((ctx) => baseAdminCrudInputSchema.extend({\n type: z.literal('embeddedLocal'),\n label: z.string().min(1),\n localRelationRef: ctx.withRef({\n type: modelLocalRelationEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n embeddedFormRef: ctx.withRef({\n type: adminCrudEmbeddedFormEntityType,\n parentPath: { context: 'admin-section' },\n onDelete: 'RESTRICT',\n }),\n}));\nexport const adminCrudEmbeddedLocalInputType = createAdminCrudInputType({\n name: 'embeddedLocal',\n createSchema: createAdminCrudEmbeddedLocalInputSchema,\n});\nexport const createAdminCrudPasswordInputSchema = definitionSchema(() => baseAdminCrudInputSchema.extend({\n type: z.literal('password'),\n label: z.string().min(1),\n}));\nconst adminCrudPasswordInputType = createAdminCrudInputType({\n name: 'password',\n createSchema: 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 { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { adminCrudInputSpec } from './admin-input-spec.js';\nimport { adminCrudInputEntityType, baseAdminCrudInputSchema } from './types.js';\nexport const createAdminCrudInputSchema = definitionSchema((ctx) => ctx\n .withEnt(baseAdminCrudInputSchema.passthrough(), {\n type: adminCrudInputEntityType,\n parentPath: {\n context: 'admin-section',\n },\n getNameResolver: (value) => value.id ?? '',\n})\n .transform((data, parseCtx) => {\n const { type } = data;\n const crudInput = ctx.plugins\n .getPluginSpec(adminCrudInputSpec)\n .getAdminCrudInput(type);\n return crudInput\n .createSchema(ctx)\n .and(baseAdminCrudInputSchema)\n .parse(data, {\n path: parseCtx.path,\n });\n}));\n//# sourceMappingURL=admin-crud-input.js.map","import { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { modelEntityType, modelScalarFieldEntityType, } from '#src/schema/models/index.js';\nimport { createBaseAdminSectionValidators } from './base.js';\nimport { createAdminCrudActionSchema } from './crud-actions/admin-crud-action.js';\nimport { createAdminCrudColumnSchema } from './crud-columns/admin-crud-column.js';\nimport { createAdminCrudInputSchema } from './crud-form/admin-crud-input.js';\nimport { adminCrudEmbeddedFormEntityType } from './crud-form/types.js';\n// Embedded Crud\nexport const createAdminCrudEmbeddedObjectSchema = definitionSchema((ctx) => z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n modelRef: ctx.withRef({\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: ctx.withRef({\n type: modelEntityType,\n onDelete: 'RESTRICT',\n }),\n includeIdField: z.boolean().optional(),\n type: z.literal('list'),\n table: z.object({\n columns: z.array(createAdminCrudColumnSchema(ctx)),\n }),\n form: z.object({\n fields: z.array(createAdminCrudInputSchema(ctx)),\n }),\n}));\nexport const createAdminCrudEmbeddedFormSchema = definitionSchema((ctx) => ctx.withRefBuilder(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) => ctx.withRefBuilder(createBaseAdminSectionValidators(ctx).and(z.object({\n type: z.literal('crud'),\n modelRef: ctx.withRef({\n type: modelEntityType,\n onDelete: 'RESTRICT',\n }),\n /* The field that will be used to display the name of the entity in the form */\n nameFieldRef: ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: {\n context: 'model',\n },\n }),\n disableCreate: ctx.withDefault(z.boolean(), false),\n table: z.object({\n columns: z.array(createAdminCrudColumnSchema(ctx)),\n actions: ctx.withDefault(z.array(createAdminCrudActionSchema(ctx)), [\n { type: 'edit', position: 'inline' },\n { type: 'delete', position: 'dropdown' },\n ]),\n }),\n form: z.object({\n fields: z.array(createAdminCrudInputSchema(ctx)),\n }),\n embeddedForms: z\n .array(createAdminCrudEmbeddedFormSchema(ctx))\n .optional(),\n})), (builder) => {\n builder.addPathToContext('modelRef', modelEntityType, 'model');\n}));\n//# sourceMappingURL=crud.js.map","import { z } from 'zod';\nimport { authRoleEntityType } from '#src/schema/auth/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { createAdminCrudSectionSchema } from './sections/crud.js';\nimport { adminSectionEntityType } from './sections/types.js';\nexport const createWebAdminSectionSchema = definitionSchema((ctx) => ctx.withRefBuilder(createAdminCrudSectionSchema(ctx), (builder) => {\n builder.addEntity({\n type: adminSectionEntityType,\n parentPath: { context: 'app' },\n addContext: 'admin-section',\n });\n}));\nexport const createAdminAppSchema = definitionSchema((ctx) => ctx.withDefault(z.object({\n enabled: z.boolean(),\n pathPrefix: z.string().default('/admin'),\n allowedRoles: ctx.withDefault(z.array(ctx.withRef({\n type: authRoleEntityType,\n onDelete: 'DELETE',\n })), []),\n sections: ctx.withDefault(z.array(createWebAdminSectionSchema(ctx)), []),\n}), { enabled: false, pathPrefix: '/admin' }));\n//# sourceMappingURL=admin.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';\nimport { createAdminAppSchema } from './admin/admin.js';\nexport const createWebAppSchema = definitionSchema((ctx) => z.object({\n ...baseAppValidators,\n type: z.literal('web'),\n includeAuth: ctx.withDefault(z.boolean(), false),\n title: z.string().default(''),\n description: z.string().default(''),\n includeUploadComponents: ctx.withDefault(z.boolean(), false),\n enableSubscriptions: ctx.withDefault(z.boolean(), false),\n adminApp: createAdminAppSchema(ctx),\n}));\nexport const webAppEntryType = createAppEntryType('web');\n//# sourceMappingURL=web-app.js.map","import { z } from 'zod';\nimport { pluginConfigSpec } from '#src/plugins/index.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(),\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((ctx) => ctx\n .withEnt(basePluginDefinitionSchema.passthrough(), {\n type: pluginEntityType,\n})\n .transform((data, parseCtx) => {\n const pluginKey = pluginEntityType.keyFromId(data.id);\n const createConfigSchema = ctx.plugins\n .getPluginSpec(pluginConfigSpec)\n .getSchemaCreator(pluginKey);\n let pluginDefinitionSchema = basePluginDefinitionSchema;\n if (createConfigSchema) {\n pluginDefinitionSchema = pluginDefinitionSchema.extend({\n config: createConfigSchema(ctx),\n });\n }\n return pluginDefinitionSchema.parse(data, {\n path: parseCtx.path,\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(60_000)\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 { 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) => ctx.withRefBuilder(z.discriminatedUnion('type', [\n createBackendAppSchema(ctx),\n createWebAppSchema(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 { getPluginMetadataByKeyOrThrow, pluginConfigSpec, } from '#src/plugins/index.js';\nimport { pluginEntityType } from '#src/schema/index.js';\nfunction byKey(projectDefinition, key) {\n const pluginEntityId = pluginEntityType.idFromKey(key);\n const plugin = projectDefinition.plugins?.find((m) => m.id === pluginEntityId);\n return plugin;\n}\nfunction byKeyOrThrow(projectDefinition, id) {\n const plugin = byKey(projectDefinition, id);\n if (!plugin) {\n throw new Error(`Could not find plugin with ID ${id}`);\n }\n return plugin;\n}\nfunction configByKey(projectDefinition, key) {\n const def = byKey(projectDefinition, key);\n return def?.config;\n}\nfunction configByKeyOrThrow(projectDefinition, key) {\n const def = byKeyOrThrow(projectDefinition, key);\n return def.config;\n}\nfunction setPluginConfig(projectDefinition, plugin, pluginConfig, pluginImplementationStore) {\n const plugins = projectDefinition.plugins ?? [];\n const pluginEntityId = pluginEntityType.idFromKey(plugin.key);\n const pluginConfigService = pluginImplementationStore.getPluginSpec(pluginConfigSpec);\n const lastMigrationVersion = pluginConfigService.getLastMigrationVersion(plugin.key);\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}\n/**\n * Disables a plugin and all plugins that it manages recursively.\n *\n * @param projectDefinition The project definition to disable the plugin in\n * @param pluginKey The ID of the plugin to disable\n * @param context The schema parser context to use\n */\nfunction disablePlugin(projectDefinition, pluginKey, context) {\n // Get plugin metadata to be disabled\n const pluginMetadata = getPluginMetadataByKeyOrThrow(context.pluginStore, pluginKey);\n // Make sure we disable any plugins that are managed by this plugin\n const managedPlugins = projectDefinition.plugins?.filter((p) => {\n const managedPlugin = getPluginMetadataByKeyOrThrow(context.pluginStore, pluginEntityType.keyFromId(p.id));\n return managedPlugin.managedBy === pluginMetadata.fullyQualifiedName;\n });\n if (managedPlugins) {\n for (const p of managedPlugins)\n disablePlugin(projectDefinition, p.id, context);\n }\n projectDefinition.plugins = projectDefinition.plugins?.filter((p) => p.id !== pluginEntityType.idFromKey(pluginKey));\n}\nexport const PluginUtils = {\n byKey,\n byKeyOrThrow,\n configByKey,\n setPluginConfig,\n configByKeyOrThrow,\n disablePlugin,\n};\n//# sourceMappingURL=plugin-utils.js.map","import { z } from 'zod';\nimport { initializePlugins } from '#src/plugins/imports/loader.js';\nimport { pluginConfigSpec } from '#src/plugins/index.js';\nimport { parseSchemaWithTransformedReferences } from '#src/references/parse-schema-with-references.js';\nimport { adminCrudActionSpec, adminCrudColumnSpec, adminCrudInputSpec, createDefinitionSchemaParserContext, modelTransformerSpec, pluginEntityType, } 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 = [\n pluginConfigSpec,\n modelTransformerSpec,\n adminCrudInputSpec,\n adminCrudActionSpec,\n adminCrudColumnSpec,\n];\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 key: plugin.metadata.key,\n name: pluginName,\n pluginModules: plugin.modules,\n };\n });\n return initializePlugins(pluginsWithModules, specImplementations);\n}\n/**\n * Creates a plugin implementation store with the given plugins added to the project definition.\n *\n * @param pluginStore The plugin store to use\n * @param plugins The plugins to add to the project definition\n * @param projectDefinition The project definition to use\n * @returns The plugin implementation store\n */\nexport function createPluginImplementationStoreWithNewPlugins(pluginStore, plugins, projectDefinition) {\n const newProjectDefinition = {\n ...projectDefinition,\n plugins: [\n ...(projectDefinition.plugins ?? []),\n ...plugins\n .filter((p) => !projectDefinition.plugins?.some((p2) => p2.id === pluginEntityType.idFromKey(p.key)))\n .map((p) => ({\n id: pluginEntityType.idFromKey(p.key),\n version: p.version,\n name: p.name,\n packageName: p.packageName,\n })),\n ],\n };\n return createPluginImplementationStore(pluginStore, newProjectDefinition);\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 const definitionContext = createDefinitionSchemaParserContext({\n plugins: pluginImplementationStore,\n });\n return createProjectDefinitionSchema(definitionContext);\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 { pluginStore } = context;\n const pluginImplementationStore = createPluginImplementationStore(pluginStore, projectDefinition);\n const definition = parseSchemaWithTransformedReferences(createProjectDefinitionSchema, projectDefinition, { plugins: pluginImplementationStore });\n return { definition, pluginStore: pluginImplementationStore };\n}\n//# sourceMappingURL=parser.js.map","import { stringifyPrettyStable } from '@baseplate-dev/utils';\nimport { produce } from 'immer';\nimport { createPluginImplementationStore, parseProjectDefinitionWithReferences, } from '#src/parser/parser.js';\nimport { deserializeSchemaWithTransformedReferences, fixRefDeletions, serializeSchema, } from '#src/references/index.js';\nimport { createProjectDefinitionSchema } from '#src/schema/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 refPayload;\n definition;\n references;\n entities;\n parserContext;\n pluginStore;\n constructor(config, parserContext, pluginStore) {\n this.refPayload = config;\n this.definition = config.data;\n this.references = config.references;\n this.entities = config.entities;\n this.parserContext = parserContext;\n this.pluginStore = pluginStore;\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 return fixRefDeletions(createProjectDefinitionSchema, newDefinition, {\n plugins: this.pluginStore,\n });\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 const serializedContents = serializeSchema(createProjectDefinitionSchema, this.definition, {\n defaultMode: 'strip',\n plugins: this.pluginStore,\n });\n return stringifyPrettyStable(serializedContents);\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 plugins = createPluginImplementationStore(context.pluginStore, config);\n return new ProjectDefinitionContainer(deserializeSchemaWithTransformedReferences(createProjectDefinitionSchema, config, { plugins }), context, plugins);\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 { createSchemaMigration } from './types.js';\nexport const migration015NullParentRefs = createSchemaMigration({\n version: 15,\n name: 'nullParentRefs',\n description: 'Convert null parentRefs to undefined in features',\n migrate: (config) => {\n if (!config.features) {\n return config;\n }\n const features = config.features.map((feature) => ({\n ...feature,\n parentRef: feature.parentRef ?? undefined,\n }));\n return {\n ...config,\n features,\n };\n },\n});\n//# sourceMappingURL=migration-015-null-parent-refs.js.map","import { createSchemaMigration } from './types.js';\nexport const migration016WebAdminConfig = createSchemaMigration({\n version: 16,\n name: 'webAdminApp',\n description: 'Convert admin apps to web apps with adminApp and add adminApp to existing web apps',\n migrate: (config) => {\n if (!config.apps) {\n return config;\n }\n const apps = config.apps.map((app) => {\n // Convert admin apps to web apps with adminConfig enabled\n if (app.type === 'admin') {\n const { sections, allowedRoles, ...restApp } = app;\n return {\n ...restApp,\n type: 'web',\n adminApp: {\n enabled: true,\n pathPrefix: '/admin',\n sections: sections ?? [],\n allowedRoles: allowedRoles ?? undefined,\n },\n };\n }\n // Add adminApp to web apps that don't already have it\n if (app.type === 'web' && !('adminApp' in app)) {\n return {\n ...app,\n adminApp: {\n enabled: false,\n pathPrefix: '/admin',\n },\n };\n }\n return app;\n });\n return {\n ...config,\n apps,\n };\n },\n});\n//# sourceMappingURL=migration-016-web-admin-config.js.map","import { createSchemaMigration } from './types.js';\nexport const migration017RenameAuthPlugin = createSchemaMigration({\n version: 17,\n name: 'renameAuthPlugin',\n description: 'Rename plugin plugin-auth_auth to plugin-auth_local-auth and auto-activate auth manager plugin',\n migrate: (config) => {\n if (!config.plugins) {\n return config;\n }\n let plugins = [...config.plugins];\n let renamedPlugin = null;\n // Step 1: Rename plugin-auth_auth to plugin-auth_local-auth\n plugins = plugins.map((plugin) => {\n if (plugin.id === 'plugin:baseplate-dev_plugin-auth_auth') {\n renamedPlugin = {\n ...plugin,\n name: 'local-auth',\n id: 'plugin:baseplate-dev_plugin-auth_local-auth',\n };\n return renamedPlugin;\n }\n return plugin;\n });\n // Step 2: Check for any auth implementation plugins\n const authImplementationPlugins = plugins.filter((plugin) => plugin.id === 'plugin:baseplate-dev_plugin-auth_local-auth' ||\n plugin.id === 'plugin:baseplate-dev_plugin-auth_auth0' ||\n plugin.id === 'plugin:baseplate-dev_plugin-auth_placeholder-auth');\n // Step 3: If any implementation plugins exist, create main auth plugin with ported config\n if (authImplementationPlugins.length > 0) {\n // Determine the primary implementation plugin (prioritize local-auth > auth0 > placeholder)\n const primaryImplementationPlugin = authImplementationPlugins.find((p) => p.id === 'plugin:baseplate-dev_plugin-auth_local-auth') ??\n authImplementationPlugins.find((p) => p.id === 'plugin:baseplate-dev_plugin-auth_auth0') ??\n authImplementationPlugins.find((p) => p.id === 'plugin:baseplate-dev_plugin-auth_placeholder-auth');\n if (primaryImplementationPlugin) {\n // Extract implementation key from plugin ID\n const implementationPluginKey = primaryImplementationPlugin.id.replace('plugin:', '');\n // Port configuration from the implementation plugin\n const implementationConfig = (primaryImplementationPlugin.config ??\n {});\n // Create main auth plugin with ported configuration\n plugins.push({\n id: 'plugin:baseplate-dev_plugin-auth_auth',\n name: 'auth',\n packageName: '@baseplate-dev/plugin-auth',\n version: '1.0.0',\n config: {\n implementationPluginKey,\n authFeatureRef: implementationConfig.authFeatureRef,\n roles: implementationConfig.roles,\n },\n });\n }\n }\n return {\n ...config,\n plugins,\n };\n },\n});\n//# sourceMappingURL=migration-017-rename-auth-plugin.js.map","import { createSchemaMigration } from './types.js';\nexport const migration018CrudNameFieldRef = createSchemaMigration({\n version: 18,\n name: 'crudNameFieldRef',\n description: 'Add nameFieldRef to CRUD sections, defaulting to name, title, id, or first field',\n migrate: (config) => {\n if (!config.apps || !config.models) {\n return config;\n }\n const apps = config.apps.map((app) => {\n // Only process apps with adminApp and sections\n if (!app.adminApp?.sections) {\n return app;\n }\n const sections = app.adminApp.sections.map((section) => {\n // Only process CRUD sections without nameFieldRef\n if (section.type !== 'crud' || section.nameFieldRef) {\n return section;\n }\n // Find the model for this section\n const model = config.models?.find((m) => m.name === section.modelRef);\n if (!model?.model.fields || model.model.fields.length === 0) {\n throw new Error(`Model ${section.modelRef} has no fields`);\n }\n // Find field by priority: name, title, id, then first field\n let selectedField = model.model.fields.find((f) => f.name === 'name');\n selectedField ??= model.model.fields.find((f) => f.name === 'title');\n selectedField ??= model.model.fields.find((f) => f.name === 'id');\n selectedField ??= model.model.fields[0];\n return {\n ...section,\n nameFieldRef: selectedField.name,\n };\n });\n return {\n ...app,\n adminApp: {\n ...app.adminApp,\n sections,\n },\n };\n });\n return {\n ...config,\n apps,\n };\n },\n});\n//# sourceMappingURL=migration-018-crud-name-field-ref.js.map","import { createSchemaMigration } from './types.js';\nfunction migrateColumn(oldColumn) {\n const { display, id, ...rest } = oldColumn;\n return {\n id: id?.replace('admin-crud-section-column', 'admin-crud-column'),\n ...rest,\n type: display.type,\n ...(display.modelFieldRef && { modelFieldRef: display.modelFieldRef }),\n ...(display.localRelationRef && {\n localRelationRef: display.localRelationRef,\n }),\n ...(display.labelExpression && {\n labelExpression: display.labelExpression,\n }),\n ...(display.valueExpression && {\n valueExpression: display.valueExpression,\n }),\n };\n}\nfunction migrateColumns(columns) {\n if (!columns || columns.length === 0) {\n return [];\n }\n return columns.map(migrateColumn);\n}\nexport const migration019ColumnTypeBased = createSchemaMigration({\n version: 19,\n name: 'columnTypeBased',\n description: 'Migrate admin CRUD columns from display-based to type-based structure',\n migrate: (config) => {\n if (!config.apps) {\n return config;\n }\n const apps = config.apps.map((app) => {\n // Only process apps with adminApp and sections\n if (!app.adminApp?.sections) {\n return app;\n }\n const sections = app.adminApp.sections.map((section) => {\n const updatedSection = { ...section };\n // Migrate main table columns\n if (section.table?.columns) {\n updatedSection.table = {\n ...section.table,\n columns: migrateColumns(section.table.columns),\n };\n }\n // Migrate embedded form table columns\n if (section.embeddedForms) {\n updatedSection.embeddedForms = section.embeddedForms.map((form) => {\n if (form.table?.columns) {\n return {\n ...form,\n table: {\n ...form.table,\n columns: migrateColumns(form.table.columns),\n },\n };\n }\n return form;\n });\n }\n return updatedSection;\n });\n return {\n ...app,\n adminApp: {\n ...app.adminApp,\n sections,\n },\n };\n });\n return {\n ...config,\n apps,\n };\n },\n});\n//# sourceMappingURL=migration-019-column-type-based.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';\nimport { migration015NullParentRefs } from './migration-015-null-parent-refs.js';\nimport { migration016WebAdminConfig } from './migration-016-web-admin-config.js';\nimport { migration017RenameAuthPlugin } from './migration-017-rename-auth-plugin.js';\nimport { migration018CrudNameFieldRef } from './migration-018-crud-name-field-ref.js';\nimport { migration019ColumnTypeBased } from './migration-019-column-type-based.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 migration015NullParentRefs,\n migration016WebAdminConfig,\n migration017RenameAuthPlugin,\n migration018CrudNameFieldRef,\n migration019ColumnTypeBased,\n];\nexport function isMigrateableProjectDefinition(projectDefinition) {\n return (typeof projectDefinition === 'object' &&\n !!projectDefinition &&\n 'schemaVersion' in projectDefinition);\n}\nexport class SchemaMigrationError extends Error {\n migrationName;\n cause;\n constructor(migrationName, cause) {\n super(`Schema migration ${migrationName} failed: ${cause instanceof Error ? cause.message : String(cause)}`);\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 } from '#src/plugins/index.js';\nimport { deserializeSchemaWithTransformedReferences } 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 resolvedRefPayload = deserializeSchemaWithTransformedReferences(createProjectDefinitionSchema, createTestProjectDefinitionInput(input), { plugins: pluginImplementationStore });\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","pickBy","obj","shouldPick","keys","value","createAdminCrudActionCompilerImplementation","actions","action","name","builtInActions","builtInAction","b","adminCrudActionCompilerSpec","createPluginSpec","createAdminCrudColumnCompiler","input","createAdminCrudColumnCompilerImplementation","columns","column","type","builtInColumns","builtInColumn","adminCrudColumnCompilerSpec","createAdminCrudInputCompilerImplementation","inputs","builtInInputs","builtInInput","adminCrudInputCompilerSpec","stripEmptyGeneratorChildren","children","stripUndefinedValues","undefinedIfEmpty","undefinedIfFalsy","PluginImplementationStore","implementations","spec","implementation","toposortOrdered","importShared","extractPlatformModulesFromPlugins","plugins","plugin","m","getOrderedPluginModuleInitializationSteps","pluginModules","initialSpecImplementations","pluginModulesById","p","pluginModuleIdByExport","mapValues","module","id","exportName","existingPlugin","edges","resolvedDep","x","nodes","initializeOrderedPluginModules","orderedPluginModules","specImplementations","pluginKey","dependencies","dep","context","exports","exportedImplementation","initializePlugins","orderedModuleIds","createPlatformPluginExport","config","getPluginMetadataByKey","pluginStore","getPluginMetadataByKeyOrThrow","metadata","getManagedPluginsForPlugin","z","versionSchema","pluginSpecSupportSchema","pluginSpecDependencySchema","pluginMetadataSchema","pluginEntityType","createEntityType","sortAndValidateMigrations","migrations","sortedMigrations","a","createPluginConfigImplementation","schemas","migrationsMap","schemaCreator","pluginConfigSpec","runPluginMigrations","projectDefinition","pluginImplementationStore","pluginConfigService","produce","draft","pluginDefinition","pluginMigrations","currentSchemaVersion","lastPluginMigration","migration","migrationResult","error","authConfigSpec","authModelConfigSpec","createWebConfigImplementation","components","ConfigComponent","webConfigSpec","safeMerge","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","path","segment","computeRelativePath","fromPath","toPath","fromSegments","toSegments","numParentDirs","byId","app","getBackendApp","backendApps","getAppDirectory","appConfig","getBackendRelativePath","backendApp","AppUtils","appEntityType","createAppEntryType","CASE_VALIDATORS","baseAppValidators","baseAppSchema","createBackendAppSchema","definitionSchema","backendAppEntryType","authRoleEntityType","stripRefMarkers","DefinitionReferenceMarker","childValue","createDefinitionEntityNameResolver","entityNameResolver","DefinitionRefBuilder","pathPrefix","data","expectedEntityType","pathContext","reference","refPathWithoutPrefix","refValue","get","fullPath","entity","idPath","nameResolver","entityBase","extractDefinitionRefsRecursive","builder","REF_ANNOTATIONS_MARKER_SYMBOL","annotations","pathInfo","_","cleanValue","element","extractDefinitionRefs","refContext","cleanData","idSet","toposort","resolveZodRefPayloadNames","payload","skipReferenceNameResolution","allowInvalidReferences","entitiesWithNameResolver","references","entitiesById","resolvedEntitiesById","orderedEntities","entityIds","resolveIdToName","rest","resolvedIds","idOrIds","parseSchemaWithTransformedReferences","schemaCreatorOptions","options","schemaContext","createDefinitionSchemaParserContext","refPayload","referenceToNameParentId","parentId","deserializeSchemaWithTransformedReferences","resolveReferencesToIds","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","parent","objectsToDeleteInArray","parseResult","referencesMissingEntity","objectsToDeleteByPath","o","objects","sortedObjects","sortBy","serializeSchemaFromRefPayload","draftData","entityId","serializeSchema","SCALAR_FIELD_TYPES","oklchColor","themeColorSchema","paletteSchema","palettesSchema","createThemeSchema","VALIDATORS","createRoleArray","ctx","createModelGraphqlSchema","modelScalarFieldEntityType","modelLocalRelationEntityType","modelForeignRelationEntityType","baseTransformerFields","baseTransformerSchema","createModelTransformerType","createPasswordTransformerSchema","modelTransformerEntityType","createEmbeddedRelationTransformerSchema","modelEntityType","entityNames","BUILT_IN_TRANSFORMERS","definitionContainer","definition","createModelTransformerImplementation","modelTransformerSpec","createTransformerSchema","parseCtx","createEnumValueSchema","modelEnumValueEntityType","createEnumBaseSchema","featureEntityType","createEnumSchema","modelEnumEntityType","createModelScalarFieldSchema","val","arg","defaultValue","REFERENTIAL_ACTIONS","createModelRelationFieldSchema","createModelUniqueConstraintSchema","modelUniqueConstraintEntityType","f","createModelServiceSchema","createModelBaseSchema","createModelSchema","adminSectionEntityType","adminCrudSectionColumnEntityType","createBaseAdminSectionValidators","baseAdminCrudActionSchema","adminCrudActionEntityType","createAdminCrudActionType","createAdminCrudEditActionSchema","adminCrudEditActionType","createAdminCrudDeleteActionSchema","adminCrudDeleteActionType","BUILT_IN_ADMIN_CRUD_ACTIONS","createAdminCrudActionImplementation","adminCrudActions","adminCrudActionSpec","createAdminCrudActionSchema","baseAdminCrudColumnSchema","adminCrudColumnEntityType","createAdminCrudColumnType","createAdminCrudTextColumnSchema","adminCrudTextColumnType","createAdminCrudForeignColumnSchema","adminCrudForeignColumnType","BUILT_IN_ADMIN_CRUD_COLUMNS","createAdminCrudColumnImplementation","adminCrudColumns","adminCrudColumnSpec","createAdminCrudColumnSchema","baseAdminCrudInputSchema","adminCrudInputEntityType","createAdminCrudInputType","adminCrudEmbeddedFormEntityType","createAdminCrudTextInputSchema","adminCrudTextInputType","createAdminCrudForeignInputSchema","adminCrudForeignInputType","createAdminCrudEnumInputSchema","adminCrudEnumInputType","createAdminCrudEmbeddedInputSchema","adminCrudEmbeddedInputType","createAdminCrudEmbeddedLocalInputSchema","adminCrudEmbeddedLocalInputType","createAdminCrudPasswordInputSchema","adminCrudPasswordInputType","BUILT_IN_ADMIN_CRUD_INPUTS","createAdminCrudInputImplementation","adminCrudInputs","adminCrudInputSpec","createAdminCrudInputSchema","createAdminCrudEmbeddedObjectSchema","createAdminCrudEmbeddedListSchema","createAdminCrudEmbeddedFormSchema","createAdminCrudSectionSchema","createWebAdminSectionSchema","createAdminAppSchema","createWebAppSchema","webAppEntryType","basePluginDefinitionSchema","createPluginWithConfigSchema","createConfigSchema","pluginDefinitionSchema","createPluginsSchema","createTemplateExtractorSchema","generalSettingsSchema","portOffset","createSettingsSchema","createAppSchema","createProjectDefinitionSchema","createFeaturesSchema","byIdOrThrow","enumConfig","EnumUtils","isScalarUnique","model","fieldId","primaryKeyFieldRefs","uniqueConstraints","c","areScalarsUnique","fieldIds","sortedFieldIds","isEqual","getRelationLocalFields","relation","field","isRelationOptional","isRelationOneToOne","localFieldIds","getModelValidator","modelField","getModelFieldValidation","modelId","preProcess","ModelUtils","nullishSuffix","validator","ModelFieldUtils","getTransformer","getTransformName","ModelTransformerUtils","byKey","pluginEntityId","byKeyOrThrow","configByKey","configByKeyOrThrow","setPluginConfig","pluginConfig","lastMigrationVersion","disablePlugin","pluginMetadata","managedPlugins","PluginUtils","COMMON_SPEC_IMPLEMENTATIONS","createPluginImplementationStore","availablePlugins","builtinSpecImplementations","pluginData","initialImplementations","pluginsWithModules","pluginName","createPluginImplementationStoreWithNewPlugins","newProjectDefinition","p2","createProjectDefinitionSchemaWithContext","definitionContext","parseProjectDefinitionWithContext","parseProjectDefinitionWithReferences","stringifyPrettyStable","ProjectDefinitionContainer","parserContext","setter","newDefinition","serializedContents","parsedDefinition","migration005PrimaryUniqueRefs","oldModel","omit","migration006IndividualServiceControllers","build","create","update","deleteOp","isCreateEnabled","isUpdateEnabled","isDeleteEnabled","stripUndefinedChildren","undefinedIfEmptyObject","migration007ModelGraphql","schema","buildObjectType","exposedFields","exposedLocalRelations","exposedForeignRelations","buildQuery","buildMutations","authorize","AUTH_DEFAULT_ROLES","migration008AnonymousPublicRole","role","transformJsonPath","transformFn","pathParts","navigateAndTransform","current","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","migration015NullParentRefs","features","feature","migration016WebAdminConfig","apps","sections","allowedRoles","restApp","migration017RenameAuthPlugin","renamedPlugin","authImplementationPlugins","primaryImplementationPlugin","implementationPluginKey","implementationConfig","migration018CrudNameFieldRef","section","selectedField","migrateColumn","oldColumn","display","migrateColumns","migration019ColumnTypeBased","updatedSection","form","SCHEMA_MIGRATIONS","isMigrateableProjectDefinition","SchemaMigrationError","migrationName","cause","runSchemaMigrations","schemaVersion","unappliedMigrations","migratedDefinition","getLatestMigrationVersion","createTestProjectDefinition","createTestProjectDefinitionInput","createTestProjectDefinitionContainer","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]}
1
+ {"version":3,"file":"project-builder-lib-fZlnH9Ds.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/object/pickBy.mjs","../../../../project-builder-lib/dist/compiler/admin-crud-action-spec.js","../../../../project-builder-lib/dist/compiler/admin-crud-column-compiler-spec.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/imports/utils.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/spec/auth-config-spec.js","../../../../project-builder-lib/dist/plugins/spec/auth-model-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/schema/apps/types.js","../../../../project-builder-lib/dist/schema/apps/base.js","../../../../project-builder-lib/dist/schema/apps/backend/index.js","../../../../project-builder-lib/dist/schema/auth/index.js","../../../../project-builder-lib/dist/references/strip-ref-markers.js","../../../../project-builder-lib/dist/references/definition-ref-builder.js","../../../../project-builder-lib/dist/references/extract-definition-refs.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/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/web/admin/sections/types.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/base.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-actions/types.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-actions/built-in-actions.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-actions/admin-action-spec.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-actions/admin-crud-action.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-columns/types.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-columns/built-in-columns.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-columns/admin-column-spec.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-columns/admin-crud-column.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-form/types.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-form/built-in-input.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-form/admin-input-spec.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud-form/admin-crud-input.js","../../../../project-builder-lib/dist/schema/apps/web/admin/sections/crud.js","../../../../project-builder-lib/dist/schema/apps/web/admin/admin.js","../../../../project-builder-lib/dist/schema/apps/web/web-app.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/migration-015-null-parent-refs.js","../../../../project-builder-lib/dist/migrations/migration-016-web-admin-config.js","../../../../project-builder-lib/dist/migrations/migration-017-rename-auth-plugin.js","../../../../project-builder-lib/dist/migrations/migration-018-crud-name-field-ref.js","../../../../project-builder-lib/dist/migrations/migration-019-column-type-based.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 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","import { createPluginSpec } from '#src/plugins/spec/types.js';\nexport function createAdminCrudActionCompilerImplementation() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const actions = new Map();\n return {\n registerCompiler(action) {\n if (actions.has(action.name)) {\n throw new Error(`Admin CRUD action with name ${action.name} is already registered`);\n }\n actions.set(action.name, action);\n },\n getCompiler(name, builtInActions = []) {\n const builtInAction = builtInActions.find((b) => b.name === name);\n if (builtInAction) {\n return builtInAction;\n }\n const action = actions.get(name);\n if (!action) {\n throw new Error(`Unable to find action with name ${name}`);\n }\n return action;\n },\n };\n}\n/**\n * Spec for adding config component for plugin\n */\nexport const adminCrudActionCompilerSpec = createPluginSpec('core/admin-crud-action-compiler', { defaultInitializer: createAdminCrudActionCompilerImplementation });\n//# sourceMappingURL=admin-crud-action-spec.js.map","import { createPluginSpec } from '#src/plugins/spec/types.js';\nexport function createAdminCrudColumnCompiler(input) {\n return input;\n}\nexport function createAdminCrudColumnCompilerImplementation() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const columns = new Map();\n return {\n registerCompiler(column) {\n if (columns.has(column.name)) {\n throw new Error(`Admin CRUD column with name ${column.name} is already registered`);\n }\n columns.set(column.name, column);\n },\n getCompiler(type, builtInColumns = []) {\n const builtInColumn = builtInColumns.find((b) => b.name === type);\n if (builtInColumn) {\n return builtInColumn;\n }\n const column = columns.get(type);\n if (!column) {\n throw new Error(`Unable to find column with type ${type}`);\n }\n return column;\n },\n getColumnCompilers() {\n return columns;\n },\n };\n}\n/**\n * Spec for adding column compilers\n */\nexport const adminCrudColumnCompilerSpec = createPluginSpec('core/admin-crud-column-compiler', { defaultInitializer: createAdminCrudColumnCompilerImplementation });\n//# sourceMappingURL=admin-crud-column-compiler-spec.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 implementations;\n constructor(implementations) {\n this.implementations = implementations;\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.key}/${m.key}`,\n name: `${plugin.name}/${m.key}`,\n pluginKey: plugin.key,\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, pluginKey } 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 = { pluginKey };\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","/**\n * Gets a plugin metadata object by its key.\n *\n * @param pluginStore The plugin store to use\n * @param key The key of the plugin to get\n * @returns The plugin metadata object or undefined if the plugin is not found\n */\nexport function getPluginMetadataByKey(pluginStore, key) {\n return pluginStore.availablePlugins.find((p) => p.metadata.key === key)\n ?.metadata;\n}\n/**\n * Gets a plugin metadata object by its key.\n *\n * @param pluginStore The plugin store to use\n * @param key The key of the plugin to get\n * @returns The plugin metadata object\n * @throws An error if the plugin is not found\n */\nexport function getPluginMetadataByKeyOrThrow(pluginStore, key) {\n const metadata = getPluginMetadataByKey(pluginStore, key);\n if (!metadata) {\n throw new Error(`Could not find plugin with key ${key}`);\n }\n return metadata;\n}\nexport function getManagedPluginsForPlugin(pluginStore, pluginKey) {\n const plugin = getPluginMetadataByKeyOrThrow(pluginStore, pluginKey);\n return pluginStore.availablePlugins\n .filter((p) => p.metadata.managedBy === plugin.fullyQualifiedName)\n .map((p) => p.metadata);\n}\n//# sourceMappingURL=utils.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 (plugin.json)\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 fully qualified name of the plugin that manages this plugin,\n * e.g. \"@baseplate-dev/plugin-auth:auth0\" would be managed by the \"@baseplate-dev/plugin-auth:auth\" plugin.\n *\n * Managed plugins do not appear in the plugin list but are managed by the base plugin. If the base\n * plugin is disabled, the managed plugins will also be disabled.\n */\n managedBy: z.string().optional(),\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 * Whether the plugin should be hidden in the project builder UI\n *\n * (It can be used once in the definition but cannot be added)\n */\n hidden: z.boolean().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 registerSchemaCreator(pluginKey, schemaCreator) {\n if (schemas.has(pluginKey)) {\n throw new Error(`Schema for plugin ${pluginKey} is already registered`);\n }\n schemas.set(pluginKey, schemaCreator);\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 getSchemaCreator(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 } 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 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 const migrationResult = migration.migrate(pluginDefinition.config, draft);\n if (migrationResult.updatedConfig !== undefined) {\n pluginDefinition.config = migrationResult.updatedConfig;\n }\n if (migrationResult.updateProjectDefinition) {\n migrationResult.updateProjectDefinition(draft);\n }\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 { 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';\n/**\n * Spec for adding user model config component for plugin\n */\nexport const authModelConfigSpec = createPluginSpec('core/auth-model-config', {});\n//# sourceMappingURL=auth-model-config-spec.js.map","import { createPluginSpec } from './types.js';\nexport function createWebConfigImplementation() {\n const components = new Map();\n return {\n registerWebConfigComponent(pluginKey, ConfigComponent) {\n if (components.has(pluginKey)) {\n throw new Error(`Web config component for plugin ${pluginKey} is already registered`);\n }\n components.set(pluginKey, ConfigComponent);\n },\n getWebConfigComponent(pluginKey) {\n return components.get(pluginKey);\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}\n/**\n * Given an app config, get the relative directory of the app\n *\n * @param appConfig The app config\n * @returns The directory of the app\n */\nfunction getAppDirectory(appConfig) {\n return appConfig.packageLocation\n ? appConfig.packageLocation\n : `packages/${appConfig.name}`;\n}\nexport function getBackendRelativePath(appConfig, backendApp) {\n const backendRelativePath = computeRelativePath(getAppDirectory(appConfig), getAppDirectory(backendApp));\n return backendRelativePath;\n}\nexport const AppUtils = {\n byId,\n getBackendApp,\n getBackendRelativePath,\n getAppDirectory,\n};\n//# sourceMappingURL=app-utils.js.map","import { createEntityType } from '#src/references/types.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","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 { createEntityType } from '#src/references/types.js';\nexport const authRoleEntityType = createEntityType('role');\n//# sourceMappingURL=index.js.map","import { DefinitionReferenceMarker } from './markers.js';\n/**\n * Strips the DefinitionReferenceMarker from the value recursively.\n * @param value - The value to strip the DefinitionReferenceMarker from.\n * @returns The value without the DefinitionReferenceMarker.\n */\nexport function stripRefMarkers(value) {\n if (value instanceof DefinitionReferenceMarker) {\n return value.value;\n }\n if (Array.isArray(value)) {\n return value.map(stripRefMarkers);\n }\n if (typeof value === 'object' && value !== null) {\n return Object.fromEntries(Object.entries(value).map(([key, childValue]) => [\n key,\n stripRefMarkers(childValue),\n ]));\n }\n return value;\n}\n//# sourceMappingURL=strip-ref-markers.js.map","import { get } from 'es-toolkit/compat';\nimport { stripRefMarkers } from './strip-ref-markers.js';\n/**\n * Creates a definition entity name resolver.\n * @param entityNameResolver - The entity name resolver.\n * @returns The definition entity name resolver.\n */\nexport function createDefinitionEntityNameResolver(entityNameResolver) {\n return entityNameResolver;\n}\n/**\n * DefinitionRefBuilder is responsible for constructing reference paths, and registering\n * references and entities as defined in a Zod schema.\n *\n * The builder uses a prefix (usually the current parsing path) and context (a\n * shared map for resolving relative references) to build complete reference paths.\n *\n * @template TInput - The type of the input data being parsed.\n */\nexport class DefinitionRefBuilder {\n references;\n entitiesWithNameResolver;\n pathPrefix;\n context;\n pathMap;\n data;\n /**\n * Creates a new builder instance.\n * @param pathPrefix - The starting path for all references.\n * @param context - Shared context including a path map and deserialize flag.\n * @param data - The data being parsed.\n */\n constructor(pathPrefix, context, data) {\n this.references = [];\n this.entitiesWithNameResolver = [];\n this.pathPrefix = pathPrefix;\n this.context = context;\n this.pathMap = new Map();\n this.data = data;\n }\n /**\n * Converts a dot-separated string path into an array of keys.\n * @param path - A string (e.g. \"a.b.0.c\") representing the path.\n * @returns An array of keys (numbers for numeric strings, otherwise strings).\n */\n _constructPathWithoutPrefix(path) {\n if (!path)\n return [];\n const pathComponents = path\n .split('.')\n .map((key) => (/^[0-9]+$/.test(key) ? Number.parseInt(key, 10) : key));\n return pathComponents;\n }\n /**\n * Prepends the builder's path prefix to the provided path.\n * @param path - The dot-separated path string.\n * @returns The complete reference path as an array.\n */\n _constructPath(path) {\n if (!path)\n return this.pathPrefix;\n return [...this.pathPrefix, ...this._constructPathWithoutPrefix(path)];\n }\n /**\n * Constructs a reference path that may be defined directly as a string or indirectly\n * via a context object. If a context object is provided, the function looks up the\n * actual path from the builder's context.\n *\n * @param path - Either a dot-separated string path or an object with a context key.\n * @param expectedEntityType - The entity type expected for this context.\n * @returns The resolved reference path.\n * @throws If the context cannot be found or its type does not match.\n */\n _constructPathWithContext(path, expectedEntityType) {\n if (typeof path === 'string') {\n return this._constructPath(path);\n }\n // Lookup the context for the given key.\n const pathContext = this.context.pathMap.get(path.context);\n if (!pathContext) {\n throw new Error(`Could not find context for ${path.context} from ${this.pathPrefix.join('.')}`);\n }\n if (pathContext.type !== expectedEntityType) {\n throw new Error(`Attempted to retrieve context for ${path.context} from ${this.pathPrefix.join('.')} expecting ${expectedEntityType.name}, but found ${pathContext.type.name}`);\n }\n return pathContext.path;\n }\n /**\n * Registers a reference based on the provided input definition.\n *\n * Flow:\n * 1. Validate that the parent path is provided if required (and vice versa).\n * 2. Compute the reference path; if the path is empty, use the entire data.\n * 3. If the referenced value is null or undefined, skip adding the reference.\n * 4. Otherwise, add the reference and, if requested, register its context.\n *\n * @param reference - The reference definition.\n * @throws If parent path usage is incorrect.\n */\n addReference(reference) {\n if (!reference.type.parentType && reference.parentPath) {\n throw new Error(`Parent path does nothing since reference does not have parent`);\n }\n if (reference.type.parentType && !reference.parentPath) {\n throw new Error(`Parent path required if reference type has parent type`);\n }\n // Compute the path without prefix once.\n const refPathWithoutPrefix = this._constructPathWithoutPrefix(reference.path);\n // If the path is empty, use the entire data; otherwise, retrieve the value.\n const refValue = refPathWithoutPrefix.length === 0\n ? this.data\n : get(this.data, refPathWithoutPrefix);\n if (refValue === undefined || refValue === null)\n return;\n const fullPath = this._constructPath(reference.path);\n this.references.push({\n type: reference.type,\n path: fullPath,\n parentPath: reference.parentPath &&\n reference.type.parentType &&\n this._constructPathWithContext(reference.parentPath, reference.type.parentType),\n onDelete: reference.onDelete,\n });\n // Optionally, add this path to the shared context.\n if (reference.addContext) {\n this._addPathToContext(fullPath, reference.type, reference.addContext);\n }\n }\n /**\n * Registers an entity based on the provided definition.\n *\n * Flow:\n * 1. Validate that not both a name and a name reference path are provided.\n * 2. Compute the full entity path.\n * 3. Resolve the entity ID:\n * - Use the provided idPath if available; otherwise, default to appending 'id'\n * to the entity path.\n * - If no id is found, generate a new one.\n * 4. Resolve the entity name:\n * - Use the provided resolveName if available; otherwise, default to using the\n * name path.\n * 5. Register the entity in either the direct entities list or the name-ref list.\n * 6. Optionally, add the entity’s id path to the shared context.\n *\n * @param entity - The entity definition.\n * @throws If both name and nameRefPath are provided or if no name is resolved.\n */\n addEntity(entity) {\n // Build the full path for the entity.\n const path = this._constructPath(entity.path);\n // Resolve the id path: if provided use it; otherwise, assume the id is at \"entity.path.id\"\n const idPath = entity.idPath\n ? this._constructPathWithoutPrefix(entity.idPath)\n : [...this._constructPathWithoutPrefix(entity.path), 'id'];\n const id = get(this.data, idPath);\n if (!id) {\n throw new Error(`No id found for entity ${entity.type.name}`);\n }\n if (!entity.type.isId(id)) {\n throw new Error(`Invalid id: ${id} for entity ${entity.type.name}`);\n }\n // Resolve the name: if getNameResolver is provided, use it to build the name resolver; otherwise,\n // use the default name resolver.\n const getNameResolver = entity.getNameResolver ??\n ((value) => get(value, 'name'));\n const nameResolver = getNameResolver(stripRefMarkers(this.data));\n if (!nameResolver) {\n throw new Error(`No name resolver found for entity ${entity.type.name} at ${path.join('.')}`);\n }\n // Base entity definition shared between regular entities and those with a name reference.\n const entityBase = {\n id,\n type: entity.type,\n path,\n idPath: [...this.pathPrefix, ...idPath],\n parentPath: entity.parentPath &&\n entity.type.parentType &&\n this._constructPathWithContext(entity.parentPath, entity.type.parentType),\n };\n this.entitiesWithNameResolver.push({\n ...entityBase,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- needed to allow more specific generic typed to be put in here\n nameResolver: typeof nameResolver === 'string'\n ? { resolveName: () => nameResolver }\n : nameResolver,\n });\n // Optionally add the id path to the context.\n if (entity.addContext) {\n this._addPathToContext([...this.pathPrefix, ...idPath], entity.type, entity.addContext);\n }\n }\n /**\n * Registers a given path into the builder's context map.\n * @param path - The full reference path.\n * @param type - The entity type associated with the path.\n * @param context - A unique key to identify this context.\n * @throws If the context key is already registered.\n */\n _addPathToContext(path, type, context) {\n // For now, allow overriding contexts to maintain compatibility\n this.pathMap.set(context, { path, type });\n // Also register in the shared context for other builders to access\n this.context.pathMap.set(context, { path, type });\n }\n /**\n * Convenience method that builds a full path from a dot-separated string and\n * adds it to the context.\n * @param path - The dot-separated string path.\n * @param type - The entity type.\n * @param context - The context key.\n */\n addPathToContext(path, type, context) {\n this._addPathToContext(this._constructPath(path), type, context);\n }\n}\n//# sourceMappingURL=definition-ref-builder.js.map","import { DefinitionRefBuilder } from './definition-ref-builder.js';\nimport { DefinitionReferenceMarker, REF_ANNOTATIONS_MARKER_SYMBOL, } from './markers.js';\nexport function extractDefinitionRefsRecursive(value, context, path) {\n const builder = new DefinitionRefBuilder(path, context.context, value);\n if (value instanceof DefinitionReferenceMarker) {\n builder.addReference(value.reference);\n context.references.push(...builder.references);\n context.entitiesWithNameResolver.push(...builder.entitiesWithNameResolver);\n return value.value;\n }\n if (typeof value === 'object' &&\n value !== null &&\n REF_ANNOTATIONS_MARKER_SYMBOL in value) {\n const annotations = value[REF_ANNOTATIONS_MARKER_SYMBOL];\n for (const entity of annotations.entities) {\n builder.addEntity(entity);\n }\n for (const reference of annotations.references) {\n builder.addReference(reference);\n }\n for (const pathInfo of annotations.contextPaths) {\n builder.addPathToContext(pathInfo.path, pathInfo.type, pathInfo.context);\n }\n context.references.push(...builder.references);\n context.entitiesWithNameResolver.push(...builder.entitiesWithNameResolver);\n // Remove the marker symbol and process the clean object\n const { [REF_ANNOTATIONS_MARKER_SYMBOL]: _, ...cleanValue } = value;\n // Process the clean object recursively\n return Object.fromEntries(Object.entries(cleanValue).map(([key, childValue]) => [\n key,\n extractDefinitionRefsRecursive(childValue, context, [...path, key]),\n ]));\n }\n // Run recursively for arrays first (arrays are also objects)\n if (Array.isArray(value)) {\n return value.map((element, i) => extractDefinitionRefsRecursive(element, context, [...path, i]));\n }\n // Run recursively for regular objects\n if (typeof value === 'object' && value !== null) {\n return Object.fromEntries(Object.entries(value).map(([key, childValue]) => [\n key,\n extractDefinitionRefsRecursive(childValue, context, [...path, key]),\n ]));\n }\n // Return primitive values as-is\n return value;\n}\nexport function extractDefinitionRefs(value) {\n const refContext = {\n context: {\n pathMap: new Map(),\n },\n references: [],\n entitiesWithNameResolver: [],\n };\n const cleanData = extractDefinitionRefsRecursive(value, refContext, []);\n // Simple sanity check to make sure we don't have duplicate IDs\n const idSet = new Set();\n for (const entity of refContext.entitiesWithNameResolver) {\n if (idSet.has(entity.id)) {\n throw new Error(`Duplicate ID found: ${entity.id}`);\n }\n idSet.add(entity.id);\n }\n return {\n data: cleanData,\n references: refContext.references,\n entitiesWithNameResolver: refContext.entitiesWithNameResolver,\n };\n}\n//# sourceMappingURL=extract-definition-refs.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 { createDefinitionSchemaParserContext } from '#src/schema/creator/index.js';\nimport { extractDefinitionRefs } from './extract-definition-refs.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 parseSchemaWithTransformedReferences(schemaCreator, input, schemaCreatorOptions, options) {\n const schemaContext = createDefinitionSchemaParserContext({\n ...schemaCreatorOptions,\n transformReferences: true,\n });\n const schema = schemaCreator(schemaContext);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- using the type T which can be any zod schema\n const value = schema.parse(input);\n const refPayload = extractDefinitionRefs(value);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- using the type T which can be any zod schema\n return resolveZodRefPayloadNames(refPayload, 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 { parseSchemaWithTransformedReferences } from './parse-schema-with-references.js';\nfunction referenceToNameParentId(name, parentId) {\n return JSON.stringify({ name, parentId });\n}\n/**\n * Deserialize a schema with references using the new transform-based approach.\n * This function converts human-readable names back to entity IDs.\n *\n * @template T - The schema creator type\n * @param schemaCreator - The schema creator function\n * @param input - The input data with names instead of IDs\n * @param options - Options for the schema creator (excluding transformReferences)\n * @returns The resolved payload with IDs instead of names\n */\nexport function deserializeSchemaWithTransformedReferences(schemaCreator, input, options) {\n const payload = parseSchemaWithTransformedReferences(schemaCreator, input, options, {\n skipReferenceNameResolution: true,\n });\n // Use the same resolution logic as the original function\n return resolveReferencesToIds(payload);\n}\n/**\n * Internal function to resolve entity names to IDs in the payload.\n * This is shared logic between the old and new approaches.\n *\n * @param payload - The parsed payload with entities and references\n * @returns The payload with references resolved to IDs\n */\nfunction resolveReferencesToIds(payload) {\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 { parseSchemaWithTransformedReferences } 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(schemaCreator, value, schemaCreatorOptions) {\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 = parseSchemaWithTransformedReferences(schemaCreator, valueToEdit, schemaCreatorOptions, {\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_UNDEFINED': {\n // Check if reference is inside an array\n if (ref.path.length > 0) {\n const parentPath = ref.path.slice(0, -1);\n const parent = get(valueToEdit, parentPath);\n if (Array.isArray(parent)) {\n throw new TypeError(`SET_UNDEFINED cannot be used for references inside arrays at path ${ref.path.join('.')}. Use DELETE instead to remove the array element.`);\n }\n }\n set(valueToEdit, ref.path, undefined);\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 { parseSchemaWithTransformedReferences } 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(schemaCreator, value, schemaCreatorOptions) {\n const payload = parseSchemaWithTransformedReferences(schemaCreator, value, schemaCreatorOptions);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- typed as def.InferOutput<T>\n return serializeSchemaFromRefPayload(payload);\n}\n//# sourceMappingURL=serialize-schema.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 { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { authRoleEntityType } from '../auth/index.js';\nimport { modelForeignRelationEntityType, modelLocalRelationEntityType, modelScalarFieldEntityType, } from './types.js';\nconst createRoleArray = definitionSchema((ctx) => ctx.withDefault(z.array(ctx.withRef({\n type: authRoleEntityType,\n onDelete: 'DELETE',\n})), []));\nexport const createModelGraphqlSchema = definitionSchema((ctx) => z.object({\n objectType: ctx.withDefault(z.object({\n enabled: ctx.withDefault(z.boolean(), false),\n fields: ctx.withDefault(z.array(ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n })), []),\n localRelations: ctx.withDefault(z.array(ctx.withRef({\n type: modelLocalRelationEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n })), []),\n foreignRelations: ctx.withDefault(z.array(ctx.withRef({\n type: modelForeignRelationEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n })), []),\n }), {}),\n queries: ctx.withDefault(z.object({\n get: ctx.withDefault(z.object({\n enabled: ctx.withDefault(z.boolean(), false),\n roles: createRoleArray(ctx),\n }), {}),\n list: ctx.withDefault(z.object({\n enabled: ctx.withDefault(z.boolean(), false),\n roles: createRoleArray(ctx),\n }), {}),\n }), {}),\n mutations: ctx.withDefault(z.object({\n create: ctx.withDefault(z.object({\n enabled: ctx.withDefault(z.boolean(), false),\n roles: createRoleArray(ctx),\n }), {}),\n update: ctx.withDefault(z.object({\n enabled: ctx.withDefault(z.boolean(), false),\n roles: createRoleArray(ctx),\n }), {}),\n delete: ctx.withDefault(z.object({\n enabled: ctx.withDefault(z.boolean(), false),\n roles: createRoleArray(ctx),\n }), {}),\n }), {}),\n}));\n//# sourceMappingURL=graphql.js.map","import { z } from 'zod';\nexport const baseTransformerFields = {\n id: z.string(),\n type: z.string().min(1),\n};\nexport const baseTransformerSchema = z.object(baseTransformerFields);\nexport function createModelTransformerType(payload) {\n return payload;\n}\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { createDefinitionEntityNameResolver } 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((ctx) => ctx.withEnt(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((ctx) => ctx.withRefBuilder(ctx.withEnt(z.object({\n ...baseTransformerFields,\n foreignRelationRef: ctx.withRef({\n type: modelForeignRelationEntityType,\n onDelete: 'DELETE_PARENT',\n parentPath: { context: 'model' },\n }),\n type: z.literal('embeddedRelation'),\n embeddedFieldNames: z.array(ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'embeddedModel' },\n })),\n embeddedTransformerNames: z\n .array(ctx.withRef({\n type: modelTransformerEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'embeddedModel' },\n }))\n .optional(),\n modelRef: ctx.withRef({\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}), (builder) => {\n builder.addPathToContext('modelRef', modelEntityType, 'embeddedModel');\n}));\nexport const BUILT_IN_TRANSFORMERS = [\n createModelTransformerType({\n name: 'password',\n createSchema: createPasswordTransformerSchema,\n getName: () => 'Password',\n }),\n createModelTransformerType({\n name: 'embeddedRelation',\n createSchema: 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 { 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) => baseTransformerSchema.passthrough().transform((data, parseCtx) => {\n const { type } = data;\n const transformer = ctx.plugins\n .getPluginSpec(modelTransformerSpec)\n .getModelTransformer(type);\n return transformer\n .createSchema(ctx)\n .and(baseTransformerSchema)\n .parse(data, {\n path: parseCtx.path,\n });\n}));\n//# sourceMappingURL=transformers.js.map","import { z } from 'zod';\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((ctx) => ctx.withEnt(z.object({\n id: z.string(),\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 id: z.string(),\n name: z.string().min(1),\n featureRef: ctx.withRef({\n type: featureEntityType,\n onDelete: 'RESTRICT',\n }),\n values: z.array(createEnumValueSchema(ctx)),\n isExposed: z.boolean(),\n}));\nexport const createEnumSchema = definitionSchema((ctx) => ctx.withEnt(createEnumBaseSchema(ctx), {\n type: modelEnumEntityType,\n addContext: 'enum',\n}));\n//# sourceMappingURL=enums.js.map","import { z } from 'zod';\nimport { createDefinitionEntityNameResolver } 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((ctx) => ctx\n .withEnt(z.object({\n id: z.string(),\n name: VALIDATORS.CAMEL_CASE_STRING,\n type: z.enum(SCALAR_FIELD_TYPES),\n isOptional: z.boolean().default(false),\n options: ctx.withRefBuilder(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: ctx\n .withRef({\n type: modelEnumEntityType,\n onDelete: 'RESTRICT',\n })\n .optional(),\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((ctx) => ctx.withRefBuilder(z.object({\n id: z.string(),\n foreignId: z\n .string()\n .default(() => modelForeignRelationEntityType.generateNewId()),\n name: VALIDATORS.CAMEL_CASE_STRING,\n references: z.array(z.object({\n localRef: ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n foreignRef: ctx.withRef({\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((ctx) => ctx.withEnt(z.object({\n id: z.string(),\n fields: z.array(z.object({\n fieldRef: ctx.withRef({\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(ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n transformerNames: z\n .array(ctx.withRef({\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(ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'DELETE',\n parentPath: { context: 'model' },\n }))\n .optional(),\n transformerNames: z\n .array(ctx.withRef({\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: z.string(),\n name: VALIDATORS.PASCAL_CASE_STRING,\n featureRef: ctx.withRef({\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(ctx.withRef({\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: ctx.withDefault(createModelGraphqlSchema(ctx).optional(), {}),\n}));\nexport const createModelSchema = definitionSchema((ctx) => ctx.withEnt(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});\nexport const adminCrudSectionColumnEntityType = createEntityType('admin-crud-section-column', {\n parentType: adminSectionEntityType,\n});\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { featureEntityType } from '#src/schema/features/index.js';\nimport { adminSectionEntityType } from './types.js';\nexport const createBaseAdminSectionValidators = definitionSchema((ctx) => z.object({\n id: z.string().default(adminSectionEntityType.generateNewId()),\n name: z.string().min(1),\n featureRef: ctx.withRef({\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 baseAdminCrudActionSchema = z.object({\n id: z\n .string()\n .min(1)\n .default(() => adminCrudActionEntityType.generateNewId()),\n type: z.string().min(1),\n position: z.enum(['inline', 'dropdown']).default('dropdown'),\n});\nexport function createAdminCrudActionType(payload) {\n return payload;\n}\nexport const adminCrudActionEntityType = createEntityType('admin-crud-action', {\n parentType: adminSectionEntityType,\n});\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { baseAdminCrudActionSchema, createAdminCrudActionType, } from './types.js';\nexport const createAdminCrudEditActionSchema = definitionSchema(() => baseAdminCrudActionSchema.extend({\n type: z.literal('edit'),\n}));\nconst adminCrudEditActionType = createAdminCrudActionType({\n name: 'edit',\n createSchema: createAdminCrudEditActionSchema,\n});\nexport const createAdminCrudDeleteActionSchema = definitionSchema(() => baseAdminCrudActionSchema.extend({\n type: z.literal('delete'),\n}));\nconst adminCrudDeleteActionType = createAdminCrudActionType({\n name: 'delete',\n createSchema: createAdminCrudDeleteActionSchema,\n});\nexport const BUILT_IN_ADMIN_CRUD_ACTIONS = [\n adminCrudEditActionType,\n adminCrudDeleteActionType,\n];\n//# sourceMappingURL=built-in-actions.js.map","import { createPluginSpec } from '#src/plugins/spec/types.js';\nimport { BUILT_IN_ADMIN_CRUD_ACTIONS } from './built-in-actions.js';\nexport function createAdminCrudActionImplementation() {\n const adminCrudActions = new Map(BUILT_IN_ADMIN_CRUD_ACTIONS.map((action) => [action.name, action]));\n return {\n registerAdminCrudAction(action) {\n if (adminCrudActions.has(action.name)) {\n throw new Error(`Admin CRUD action with name ${action.name} is already registered`);\n }\n adminCrudActions.set(action.name, action);\n },\n getAdminCrudActions() {\n return adminCrudActions;\n },\n getAdminCrudAction(name) {\n const action = adminCrudActions.get(name);\n if (!action) {\n throw new Error(`Unable to find action with name ${name}`);\n }\n return action;\n },\n };\n}\n/**\n * Spec for adding admin CRUD actions\n */\nexport const adminCrudActionSpec = createPluginSpec('core/admin-crud-action', {\n defaultInitializer: createAdminCrudActionImplementation,\n});\n//# sourceMappingURL=admin-action-spec.js.map","import { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { adminCrudActionSpec } from './admin-action-spec.js';\nimport { adminCrudActionEntityType, baseAdminCrudActionSchema, } from './types.js';\nexport const createAdminCrudActionSchema = definitionSchema((ctx) => ctx\n .withEnt(baseAdminCrudActionSchema.passthrough(), {\n type: adminCrudActionEntityType,\n parentPath: {\n context: 'admin-section',\n },\n getNameResolver: (value) => value.type,\n})\n .transform((data, parseCtx) => {\n const { type } = data;\n const crudAction = ctx.plugins\n .getPluginSpec(adminCrudActionSpec)\n .getAdminCrudAction(type);\n return crudAction\n .createSchema(ctx)\n .and(baseAdminCrudActionSchema)\n .parse(data, {\n path: parseCtx.path,\n });\n}));\n//# sourceMappingURL=admin-crud-action.js.map","import { z } from 'zod';\nimport { createEntityType } from '#src/references/types.js';\nimport { adminSectionEntityType } from '../types.js';\nexport const baseAdminCrudColumnSchema = z.object({\n id: z\n .string()\n .min(1)\n .default(() => adminCrudColumnEntityType.generateNewId()),\n type: z.string().min(1),\n label: z.string().min(1),\n});\nexport function createAdminCrudColumnType(payload) {\n return payload;\n}\nexport const adminCrudColumnEntityType = createEntityType('admin-crud-column', {\n parentType: adminSectionEntityType,\n});\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { modelLocalRelationEntityType, modelScalarFieldEntityType, } from '#src/schema/models/index.js';\nimport { baseAdminCrudColumnSchema, createAdminCrudColumnType, } from './types.js';\n// Text Column\nexport const createAdminCrudTextColumnSchema = definitionSchema((ctx) => baseAdminCrudColumnSchema.extend({\n type: z.literal('text'),\n modelFieldRef: ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n}));\nconst adminCrudTextColumnType = createAdminCrudColumnType({\n name: 'text',\n createSchema: createAdminCrudTextColumnSchema,\n});\n// Foreign Column\nexport const createAdminCrudForeignColumnSchema = definitionSchema((ctx) => baseAdminCrudColumnSchema.extend({\n type: z.literal('foreign'),\n localRelationRef: ctx.withRef({\n type: modelLocalRelationEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n labelExpression: z.string().min(1),\n valueExpression: z.string().min(1),\n}));\nconst adminCrudForeignColumnType = createAdminCrudColumnType({\n name: 'foreign',\n createSchema: createAdminCrudForeignColumnSchema,\n});\nexport const BUILT_IN_ADMIN_CRUD_COLUMNS = [\n adminCrudTextColumnType,\n adminCrudForeignColumnType,\n];\n//# sourceMappingURL=built-in-columns.js.map","import { createPluginSpec } from '#src/plugins/spec/types.js';\nimport { BUILT_IN_ADMIN_CRUD_COLUMNS } from './built-in-columns.js';\nexport function createAdminCrudColumnImplementation() {\n const adminCrudColumns = new Map(BUILT_IN_ADMIN_CRUD_COLUMNS.map((column) => [column.name, column]));\n return {\n registerAdminCrudColumn(column) {\n if (adminCrudColumns.has(column.name)) {\n throw new Error(`Admin CRUD column with name ${column.name} is already registered`);\n }\n adminCrudColumns.set(column.name, column);\n },\n getAdminCrudColumns() {\n return adminCrudColumns;\n },\n getAdminCrudColumn(name) {\n const column = adminCrudColumns.get(name);\n if (!column) {\n throw new Error(`Unable to find column with name ${name}`);\n }\n return column;\n },\n };\n}\n/**\n * Spec for adding admin CRUD columns\n */\nexport const adminCrudColumnSpec = createPluginSpec('core/admin-crud-column', {\n defaultInitializer: createAdminCrudColumnImplementation,\n});\n//# sourceMappingURL=admin-column-spec.js.map","import { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { adminCrudColumnSpec } from './admin-column-spec.js';\nimport { adminCrudColumnEntityType, baseAdminCrudColumnSchema, } from './types.js';\nexport const createAdminCrudColumnSchema = definitionSchema((ctx) => ctx\n .withEnt(baseAdminCrudColumnSchema.passthrough(), {\n type: adminCrudColumnEntityType,\n parentPath: {\n context: 'admin-section',\n },\n getNameResolver: (value) => value.type,\n})\n .transform((data, parseCtx) => {\n const { type } = data;\n const crudColumn = ctx.plugins\n .getPluginSpec(adminCrudColumnSpec)\n .getAdminCrudColumn(type);\n return crudColumn\n .createSchema(ctx)\n .and(baseAdminCrudColumnSchema)\n .parse(data, {\n path: parseCtx.path,\n });\n}));\n//# sourceMappingURL=admin-crud-column.js.map","import { z } from 'zod';\nimport { createEntityType } from '#src/references/types.js';\nimport { adminSectionEntityType } from '../types.js';\nexport const baseAdminCrudInputSchema = z.object({\n id: z\n .string()\n .min(1)\n .default(() => adminCrudInputEntityType.generateNewId()),\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});\nexport const adminCrudInputEntityType = createEntityType('admin-crud-input', {\n parentType: adminSectionEntityType,\n});\n//# sourceMappingURL=types.js.map","import { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { modelForeignRelationEntityType, modelLocalRelationEntityType, modelScalarFieldEntityType, } from '#src/schema/models/index.js';\nimport { adminCrudEmbeddedFormEntityType, baseAdminCrudInputSchema, createAdminCrudInputType, } from './types.js';\nexport const createAdminCrudTextInputSchema = definitionSchema((ctx) => baseAdminCrudInputSchema.extend({\n type: z.literal('text'),\n label: z.string().min(1),\n modelFieldRef: ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n validation: z.string().optional(),\n}));\nconst adminCrudTextInputType = createAdminCrudInputType({\n name: 'text',\n createSchema: createAdminCrudTextInputSchema,\n});\nexport const createAdminCrudForeignInputSchema = definitionSchema((ctx) => baseAdminCrudInputSchema.extend({\n type: z.literal('foreign'),\n label: z.string().min(1),\n localRelationRef: ctx.withRef({\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 createSchema: createAdminCrudForeignInputSchema,\n});\nexport const createAdminCrudEnumInputSchema = definitionSchema((ctx) => baseAdminCrudInputSchema.extend({\n type: z.literal('enum'),\n label: z.string().min(1),\n modelFieldRef: ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n}));\nconst adminCrudEnumInputType = createAdminCrudInputType({\n name: 'enum',\n createSchema: createAdminCrudEnumInputSchema,\n});\nexport const createAdminCrudEmbeddedInputSchema = definitionSchema((ctx) => baseAdminCrudInputSchema.extend({\n type: z.literal('embedded'),\n label: z.string().min(1),\n modelRelationRef: ctx.withRef({\n type: modelForeignRelationEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n embeddedFormRef: ctx.withRef({\n type: adminCrudEmbeddedFormEntityType,\n parentPath: { context: 'admin-section' },\n onDelete: 'RESTRICT',\n }),\n}));\nexport const adminCrudEmbeddedInputType = createAdminCrudInputType({\n name: 'embedded',\n createSchema: createAdminCrudEmbeddedInputSchema,\n});\nexport const createAdminCrudEmbeddedLocalInputSchema = definitionSchema((ctx) => baseAdminCrudInputSchema.extend({\n type: z.literal('embeddedLocal'),\n label: z.string().min(1),\n localRelationRef: ctx.withRef({\n type: modelLocalRelationEntityType,\n onDelete: 'RESTRICT',\n parentPath: { context: 'model' },\n }),\n embeddedFormRef: ctx.withRef({\n type: adminCrudEmbeddedFormEntityType,\n parentPath: { context: 'admin-section' },\n onDelete: 'RESTRICT',\n }),\n}));\nexport const adminCrudEmbeddedLocalInputType = createAdminCrudInputType({\n name: 'embeddedLocal',\n createSchema: createAdminCrudEmbeddedLocalInputSchema,\n});\nexport const createAdminCrudPasswordInputSchema = definitionSchema(() => baseAdminCrudInputSchema.extend({\n type: z.literal('password'),\n label: z.string().min(1),\n}));\nconst adminCrudPasswordInputType = createAdminCrudInputType({\n name: 'password',\n createSchema: 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 { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { adminCrudInputSpec } from './admin-input-spec.js';\nimport { adminCrudInputEntityType, baseAdminCrudInputSchema } from './types.js';\nexport const createAdminCrudInputSchema = definitionSchema((ctx) => ctx\n .withEnt(baseAdminCrudInputSchema.passthrough(), {\n type: adminCrudInputEntityType,\n parentPath: {\n context: 'admin-section',\n },\n getNameResolver: (value) => value.id ?? '',\n})\n .transform((data, parseCtx) => {\n const { type } = data;\n const crudInput = ctx.plugins\n .getPluginSpec(adminCrudInputSpec)\n .getAdminCrudInput(type);\n return crudInput\n .createSchema(ctx)\n .and(baseAdminCrudInputSchema)\n .parse(data, {\n path: parseCtx.path,\n });\n}));\n//# sourceMappingURL=admin-crud-input.js.map","import { z } from 'zod';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { modelEntityType, modelScalarFieldEntityType, } from '#src/schema/models/index.js';\nimport { createBaseAdminSectionValidators } from './base.js';\nimport { createAdminCrudActionSchema } from './crud-actions/admin-crud-action.js';\nimport { createAdminCrudColumnSchema } from './crud-columns/admin-crud-column.js';\nimport { createAdminCrudInputSchema } from './crud-form/admin-crud-input.js';\nimport { adminCrudEmbeddedFormEntityType } from './crud-form/types.js';\n// Embedded Crud\nexport const createAdminCrudEmbeddedObjectSchema = definitionSchema((ctx) => z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n modelRef: ctx.withRef({\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: ctx.withRef({\n type: modelEntityType,\n onDelete: 'RESTRICT',\n }),\n includeIdField: z.boolean().optional(),\n type: z.literal('list'),\n table: z.object({\n columns: z.array(createAdminCrudColumnSchema(ctx)),\n }),\n form: z.object({\n fields: z.array(createAdminCrudInputSchema(ctx)),\n }),\n}));\nexport const createAdminCrudEmbeddedFormSchema = definitionSchema((ctx) => ctx.withRefBuilder(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) => ctx.withRefBuilder(createBaseAdminSectionValidators(ctx).and(z.object({\n type: z.literal('crud'),\n modelRef: ctx.withRef({\n type: modelEntityType,\n onDelete: 'RESTRICT',\n }),\n /* The field that will be used to display the name of the entity in the form */\n nameFieldRef: ctx.withRef({\n type: modelScalarFieldEntityType,\n onDelete: 'RESTRICT',\n parentPath: {\n context: 'model',\n },\n }),\n disableCreate: ctx.withDefault(z.boolean(), false),\n table: z.object({\n columns: z.array(createAdminCrudColumnSchema(ctx)),\n actions: ctx.withDefault(z.array(createAdminCrudActionSchema(ctx)), [\n { type: 'edit', position: 'inline' },\n { type: 'delete', position: 'dropdown' },\n ]),\n }),\n form: z.object({\n fields: z.array(createAdminCrudInputSchema(ctx)),\n }),\n embeddedForms: z\n .array(createAdminCrudEmbeddedFormSchema(ctx))\n .optional(),\n})), (builder) => {\n builder.addPathToContext('modelRef', modelEntityType, 'model');\n}));\n//# sourceMappingURL=crud.js.map","import { z } from 'zod';\nimport { authRoleEntityType } from '#src/schema/auth/index.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nimport { createAdminCrudSectionSchema } from './sections/crud.js';\nimport { adminSectionEntityType } from './sections/types.js';\nexport const createWebAdminSectionSchema = definitionSchema((ctx) => ctx.withRefBuilder(createAdminCrudSectionSchema(ctx), (builder) => {\n builder.addEntity({\n type: adminSectionEntityType,\n parentPath: { context: 'app' },\n addContext: 'admin-section',\n });\n}));\nexport const createAdminAppSchema = definitionSchema((ctx) => ctx.withDefault(z.object({\n enabled: z.boolean(),\n pathPrefix: z.string().default('/admin'),\n allowedRoles: ctx.withDefault(z.array(ctx.withRef({\n type: authRoleEntityType,\n onDelete: 'DELETE',\n })), []),\n sections: ctx.withDefault(z.array(createWebAdminSectionSchema(ctx)), []),\n}), { enabled: false, pathPrefix: '/admin' }));\n//# sourceMappingURL=admin.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';\nimport { createAdminAppSchema } from './admin/admin.js';\nexport const createWebAppSchema = definitionSchema((ctx) => z.object({\n ...baseAppValidators,\n type: z.literal('web'),\n includeAuth: ctx.withDefault(z.boolean(), false),\n title: z.string().default(''),\n description: z.string().default(''),\n includeUploadComponents: ctx.withDefault(z.boolean(), false),\n enableSubscriptions: ctx.withDefault(z.boolean(), false),\n adminApp: createAdminAppSchema(ctx),\n}));\nexport const webAppEntryType = createAppEntryType('web');\n//# sourceMappingURL=web-app.js.map","import { z } from 'zod';\nimport { pluginConfigSpec } from '#src/plugins/index.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(),\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((ctx) => ctx\n .withEnt(basePluginDefinitionSchema.passthrough(), {\n type: pluginEntityType,\n})\n .transform((data, parseCtx) => {\n const pluginKey = pluginEntityType.keyFromId(data.id);\n const createConfigSchema = ctx.plugins\n .getPluginSpec(pluginConfigSpec)\n .getSchemaCreator(pluginKey);\n let pluginDefinitionSchema = basePluginDefinitionSchema;\n if (createConfigSchema) {\n pluginDefinitionSchema = pluginDefinitionSchema.extend({\n config: createConfigSchema(ctx),\n });\n }\n return pluginDefinitionSchema.parse(data, {\n path: parseCtx.path,\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(60_000)\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 { 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) => ctx.withRefBuilder(z.discriminatedUnion('type', [\n createBackendAppSchema(ctx),\n createWebAppSchema(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 { getPluginMetadataByKeyOrThrow, pluginConfigSpec, } from '#src/plugins/index.js';\nimport { pluginEntityType } from '#src/schema/index.js';\nfunction byKey(projectDefinition, key) {\n const pluginEntityId = pluginEntityType.idFromKey(key);\n const plugin = projectDefinition.plugins?.find((m) => m.id === pluginEntityId);\n return plugin;\n}\nfunction byKeyOrThrow(projectDefinition, id) {\n const plugin = byKey(projectDefinition, id);\n if (!plugin) {\n throw new Error(`Could not find plugin with ID ${id}`);\n }\n return plugin;\n}\nfunction configByKey(projectDefinition, key) {\n const def = byKey(projectDefinition, key);\n return def?.config;\n}\nfunction configByKeyOrThrow(projectDefinition, key) {\n const def = byKeyOrThrow(projectDefinition, key);\n return def.config;\n}\nfunction setPluginConfig(projectDefinition, plugin, pluginConfig, pluginImplementationStore) {\n const plugins = projectDefinition.plugins ?? [];\n const pluginEntityId = pluginEntityType.idFromKey(plugin.key);\n const pluginConfigService = pluginImplementationStore.getPluginSpec(pluginConfigSpec);\n const lastMigrationVersion = pluginConfigService.getLastMigrationVersion(plugin.key);\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}\n/**\n * Disables a plugin and all plugins that it manages recursively.\n *\n * @param projectDefinition The project definition to disable the plugin in\n * @param pluginKey The ID of the plugin to disable\n * @param context The schema parser context to use\n */\nfunction disablePlugin(projectDefinition, pluginKey, context) {\n // Get plugin metadata to be disabled\n const pluginMetadata = getPluginMetadataByKeyOrThrow(context.pluginStore, pluginKey);\n // Make sure we disable any plugins that are managed by this plugin\n const managedPlugins = projectDefinition.plugins?.filter((p) => {\n const managedPlugin = getPluginMetadataByKeyOrThrow(context.pluginStore, pluginEntityType.keyFromId(p.id));\n return managedPlugin.managedBy === pluginMetadata.fullyQualifiedName;\n });\n if (managedPlugins) {\n for (const p of managedPlugins)\n disablePlugin(projectDefinition, p.id, context);\n }\n projectDefinition.plugins = projectDefinition.plugins?.filter((p) => p.id !== pluginEntityType.idFromKey(pluginKey));\n}\nexport const PluginUtils = {\n byKey,\n byKeyOrThrow,\n configByKey,\n setPluginConfig,\n configByKeyOrThrow,\n disablePlugin,\n};\n//# sourceMappingURL=plugin-utils.js.map","import { z } from 'zod';\nimport { initializePlugins } from '#src/plugins/imports/loader.js';\nimport { pluginConfigSpec } from '#src/plugins/index.js';\nimport { parseSchemaWithTransformedReferences } from '#src/references/parse-schema-with-references.js';\nimport { adminCrudActionSpec, adminCrudColumnSpec, adminCrudInputSpec, createDefinitionSchemaParserContext, modelTransformerSpec, pluginEntityType, } 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 = [\n pluginConfigSpec,\n modelTransformerSpec,\n adminCrudInputSpec,\n adminCrudActionSpec,\n adminCrudColumnSpec,\n];\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 key: plugin.metadata.key,\n name: pluginName,\n pluginModules: plugin.modules,\n };\n });\n return initializePlugins(pluginsWithModules, specImplementations);\n}\n/**\n * Creates a plugin implementation store with the given plugins added to the project definition.\n *\n * @param pluginStore The plugin store to use\n * @param plugins The plugins to add to the project definition\n * @param projectDefinition The project definition to use\n * @returns The plugin implementation store\n */\nexport function createPluginImplementationStoreWithNewPlugins(pluginStore, plugins, projectDefinition) {\n const newProjectDefinition = {\n ...projectDefinition,\n plugins: [\n ...(projectDefinition.plugins ?? []),\n ...plugins\n .filter((p) => !projectDefinition.plugins?.some((p2) => p2.id === pluginEntityType.idFromKey(p.key)))\n .map((p) => ({\n id: pluginEntityType.idFromKey(p.key),\n version: p.version,\n name: p.name,\n packageName: p.packageName,\n })),\n ],\n };\n return createPluginImplementationStore(pluginStore, newProjectDefinition);\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 const definitionContext = createDefinitionSchemaParserContext({\n plugins: pluginImplementationStore,\n });\n return createProjectDefinitionSchema(definitionContext);\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 { pluginStore } = context;\n const pluginImplementationStore = createPluginImplementationStore(pluginStore, projectDefinition);\n const definition = parseSchemaWithTransformedReferences(createProjectDefinitionSchema, projectDefinition, { plugins: pluginImplementationStore });\n return { definition, pluginStore: pluginImplementationStore };\n}\n//# sourceMappingURL=parser.js.map","import { stringifyPrettyStable } from '@baseplate-dev/utils';\nimport { produce } from 'immer';\nimport { createPluginImplementationStore, parseProjectDefinitionWithReferences, } from '#src/parser/parser.js';\nimport { deserializeSchemaWithTransformedReferences, fixRefDeletions, serializeSchema, } from '#src/references/index.js';\nimport { createProjectDefinitionSchema } from '#src/schema/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 refPayload;\n definition;\n references;\n entities;\n parserContext;\n pluginStore;\n constructor(config, parserContext, pluginStore) {\n this.refPayload = config;\n this.definition = config.data;\n this.references = config.references;\n this.entities = config.entities;\n this.parserContext = parserContext;\n this.pluginStore = pluginStore;\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 return fixRefDeletions(createProjectDefinitionSchema, newDefinition, {\n plugins: this.pluginStore,\n });\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 const serializedContents = serializeSchema(createProjectDefinitionSchema, this.definition, {\n defaultMode: 'strip',\n plugins: this.pluginStore,\n });\n return stringifyPrettyStable(serializedContents);\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 plugins = createPluginImplementationStore(context.pluginStore, config);\n return new ProjectDefinitionContainer(deserializeSchemaWithTransformedReferences(createProjectDefinitionSchema, config, { plugins }), context, plugins);\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 { createSchemaMigration } from './types.js';\nexport const migration015NullParentRefs = createSchemaMigration({\n version: 15,\n name: 'nullParentRefs',\n description: 'Convert null parentRefs to undefined in features',\n migrate: (config) => {\n if (!config.features) {\n return config;\n }\n const features = config.features.map((feature) => ({\n ...feature,\n parentRef: feature.parentRef ?? undefined,\n }));\n return {\n ...config,\n features,\n };\n },\n});\n//# sourceMappingURL=migration-015-null-parent-refs.js.map","import { createSchemaMigration } from './types.js';\nexport const migration016WebAdminConfig = createSchemaMigration({\n version: 16,\n name: 'webAdminApp',\n description: 'Convert admin apps to web apps with adminApp and add adminApp to existing web apps',\n migrate: (config) => {\n if (!config.apps) {\n return config;\n }\n const apps = config.apps.map((app) => {\n // Convert admin apps to web apps with adminConfig enabled\n if (app.type === 'admin') {\n const { sections, allowedRoles, ...restApp } = app;\n return {\n ...restApp,\n type: 'web',\n adminApp: {\n enabled: true,\n pathPrefix: '/admin',\n sections: sections ?? [],\n allowedRoles: allowedRoles ?? undefined,\n },\n };\n }\n // Add adminApp to web apps that don't already have it\n if (app.type === 'web' && !('adminApp' in app)) {\n return {\n ...app,\n adminApp: {\n enabled: false,\n pathPrefix: '/admin',\n },\n };\n }\n return app;\n });\n return {\n ...config,\n apps,\n };\n },\n});\n//# sourceMappingURL=migration-016-web-admin-config.js.map","import { createSchemaMigration } from './types.js';\nexport const migration017RenameAuthPlugin = createSchemaMigration({\n version: 17,\n name: 'renameAuthPlugin',\n description: 'Rename plugin plugin-auth_auth to plugin-auth_local-auth and auto-activate auth manager plugin',\n migrate: (config) => {\n if (!config.plugins) {\n return config;\n }\n let plugins = [...config.plugins];\n let renamedPlugin = null;\n // Step 1: Rename plugin-auth_auth to plugin-auth_local-auth\n plugins = plugins.map((plugin) => {\n if (plugin.id === 'plugin:baseplate-dev_plugin-auth_auth') {\n renamedPlugin = {\n ...plugin,\n name: 'local-auth',\n id: 'plugin:baseplate-dev_plugin-auth_local-auth',\n };\n return renamedPlugin;\n }\n return plugin;\n });\n // Step 2: Check for any auth implementation plugins\n const authImplementationPlugins = plugins.filter((plugin) => plugin.id === 'plugin:baseplate-dev_plugin-auth_local-auth' ||\n plugin.id === 'plugin:baseplate-dev_plugin-auth_auth0' ||\n plugin.id === 'plugin:baseplate-dev_plugin-auth_placeholder-auth');\n // Step 3: If any implementation plugins exist, create main auth plugin with ported config\n if (authImplementationPlugins.length > 0) {\n // Determine the primary implementation plugin (prioritize local-auth > auth0 > placeholder)\n const primaryImplementationPlugin = authImplementationPlugins.find((p) => p.id === 'plugin:baseplate-dev_plugin-auth_local-auth') ??\n authImplementationPlugins.find((p) => p.id === 'plugin:baseplate-dev_plugin-auth_auth0') ??\n authImplementationPlugins.find((p) => p.id === 'plugin:baseplate-dev_plugin-auth_placeholder-auth');\n if (primaryImplementationPlugin) {\n // Extract implementation key from plugin ID\n const implementationPluginKey = primaryImplementationPlugin.id.replace('plugin:', '');\n // Port configuration from the implementation plugin\n const implementationConfig = (primaryImplementationPlugin.config ??\n {});\n // Create main auth plugin with ported configuration\n plugins.push({\n id: 'plugin:baseplate-dev_plugin-auth_auth',\n name: 'auth',\n packageName: '@baseplate-dev/plugin-auth',\n version: '1.0.0',\n config: {\n implementationPluginKey,\n authFeatureRef: implementationConfig.authFeatureRef,\n roles: implementationConfig.roles,\n },\n });\n }\n }\n return {\n ...config,\n plugins,\n };\n },\n});\n//# sourceMappingURL=migration-017-rename-auth-plugin.js.map","import { createSchemaMigration } from './types.js';\nexport const migration018CrudNameFieldRef = createSchemaMigration({\n version: 18,\n name: 'crudNameFieldRef',\n description: 'Add nameFieldRef to CRUD sections, defaulting to name, title, id, or first field',\n migrate: (config) => {\n if (!config.apps || !config.models) {\n return config;\n }\n const apps = config.apps.map((app) => {\n // Only process apps with adminApp and sections\n if (!app.adminApp?.sections) {\n return app;\n }\n const sections = app.adminApp.sections.map((section) => {\n // Only process CRUD sections without nameFieldRef\n if (section.type !== 'crud' || section.nameFieldRef) {\n return section;\n }\n // Find the model for this section\n const model = config.models?.find((m) => m.name === section.modelRef);\n if (!model?.model.fields || model.model.fields.length === 0) {\n throw new Error(`Model ${section.modelRef} has no fields`);\n }\n // Find field by priority: name, title, id, then first field\n let selectedField = model.model.fields.find((f) => f.name === 'name');\n selectedField ??= model.model.fields.find((f) => f.name === 'title');\n selectedField ??= model.model.fields.find((f) => f.name === 'id');\n selectedField ??= model.model.fields[0];\n return {\n ...section,\n nameFieldRef: selectedField.name,\n };\n });\n return {\n ...app,\n adminApp: {\n ...app.adminApp,\n sections,\n },\n };\n });\n return {\n ...config,\n apps,\n };\n },\n});\n//# sourceMappingURL=migration-018-crud-name-field-ref.js.map","import { createSchemaMigration } from './types.js';\nfunction migrateColumn(oldColumn) {\n const { display, id, ...rest } = oldColumn;\n return {\n id: id?.replace('admin-crud-section-column', 'admin-crud-column'),\n ...rest,\n type: display.type,\n ...(display.modelFieldRef && { modelFieldRef: display.modelFieldRef }),\n ...(display.localRelationRef && {\n localRelationRef: display.localRelationRef,\n }),\n ...(display.labelExpression && {\n labelExpression: display.labelExpression,\n }),\n ...(display.valueExpression && {\n valueExpression: display.valueExpression,\n }),\n };\n}\nfunction migrateColumns(columns) {\n if (!columns || columns.length === 0) {\n return [];\n }\n return columns.map(migrateColumn);\n}\nexport const migration019ColumnTypeBased = createSchemaMigration({\n version: 19,\n name: 'columnTypeBased',\n description: 'Migrate admin CRUD columns from display-based to type-based structure',\n migrate: (config) => {\n if (!config.apps) {\n return config;\n }\n const apps = config.apps.map((app) => {\n // Only process apps with adminApp and sections\n if (!app.adminApp?.sections) {\n return app;\n }\n const sections = app.adminApp.sections.map((section) => {\n const updatedSection = { ...section };\n // Migrate main table columns\n if (section.table?.columns) {\n updatedSection.table = {\n ...section.table,\n columns: migrateColumns(section.table.columns),\n };\n }\n // Migrate embedded form table columns\n if (section.embeddedForms) {\n updatedSection.embeddedForms = section.embeddedForms.map((form) => {\n if (form.table?.columns) {\n return {\n ...form,\n table: {\n ...form.table,\n columns: migrateColumns(form.table.columns),\n },\n };\n }\n return form;\n });\n }\n return updatedSection;\n });\n return {\n ...app,\n adminApp: {\n ...app.adminApp,\n sections,\n },\n };\n });\n return {\n ...config,\n apps,\n };\n },\n});\n//# sourceMappingURL=migration-019-column-type-based.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';\nimport { migration015NullParentRefs } from './migration-015-null-parent-refs.js';\nimport { migration016WebAdminConfig } from './migration-016-web-admin-config.js';\nimport { migration017RenameAuthPlugin } from './migration-017-rename-auth-plugin.js';\nimport { migration018CrudNameFieldRef } from './migration-018-crud-name-field-ref.js';\nimport { migration019ColumnTypeBased } from './migration-019-column-type-based.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 migration015NullParentRefs,\n migration016WebAdminConfig,\n migration017RenameAuthPlugin,\n migration018CrudNameFieldRef,\n migration019ColumnTypeBased,\n];\nexport function isMigrateableProjectDefinition(projectDefinition) {\n return (typeof projectDefinition === 'object' &&\n !!projectDefinition &&\n 'schemaVersion' in projectDefinition);\n}\nexport class SchemaMigrationError extends Error {\n migrationName;\n cause;\n constructor(migrationName, cause) {\n super(`Schema migration ${migrationName} failed: ${cause instanceof Error ? cause.message : String(cause)}`);\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 } from '#src/plugins/index.js';\nimport { deserializeSchemaWithTransformedReferences } 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 resolvedRefPayload = deserializeSchemaWithTransformedReferences(createProjectDefinitionSchema, createTestProjectDefinitionInput(input), { plugins: pluginImplementationStore });\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","pickBy","obj","shouldPick","keys","value","createAdminCrudActionCompilerImplementation","actions","action","name","builtInActions","builtInAction","b","adminCrudActionCompilerSpec","createPluginSpec","createAdminCrudColumnCompiler","input","createAdminCrudColumnCompilerImplementation","columns","column","type","builtInColumns","builtInColumn","adminCrudColumnCompilerSpec","createAdminCrudInputCompilerImplementation","inputs","builtInInputs","builtInInput","adminCrudInputCompilerSpec","stripEmptyGeneratorChildren","children","stripUndefinedValues","undefinedIfEmpty","undefinedIfFalsy","PluginImplementationStore","implementations","spec","implementation","toposortOrdered","importShared","extractPlatformModulesFromPlugins","plugins","plugin","m","getOrderedPluginModuleInitializationSteps","pluginModules","initialSpecImplementations","pluginModulesById","p","pluginModuleIdByExport","mapValues","module","id","exportName","existingPlugin","edges","resolvedDep","x","nodes","initializeOrderedPluginModules","orderedPluginModules","specImplementations","pluginKey","dependencies","dep","context","exports","exportedImplementation","initializePlugins","orderedModuleIds","createPlatformPluginExport","config","getPluginMetadataByKey","pluginStore","getPluginMetadataByKeyOrThrow","metadata","getManagedPluginsForPlugin","z","versionSchema","pluginSpecSupportSchema","pluginSpecDependencySchema","pluginMetadataSchema","pluginEntityType","createEntityType","sortAndValidateMigrations","migrations","sortedMigrations","a","createPluginConfigImplementation","schemas","migrationsMap","schemaCreator","pluginConfigSpec","runPluginMigrations","projectDefinition","pluginImplementationStore","pluginConfigService","produce","draft","pluginDefinition","pluginMigrations","currentSchemaVersion","lastPluginMigration","migration","migrationResult","error","authConfigSpec","authModelConfigSpec","createWebConfigImplementation","components","ConfigComponent","webConfigSpec","safeMerge","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","path","segment","computeRelativePath","fromPath","toPath","fromSegments","toSegments","numParentDirs","byId","app","getBackendApp","backendApps","getAppDirectory","appConfig","getBackendRelativePath","backendApp","AppUtils","appEntityType","createAppEntryType","CASE_VALIDATORS","baseAppValidators","baseAppSchema","createBackendAppSchema","definitionSchema","backendAppEntryType","authRoleEntityType","stripRefMarkers","DefinitionReferenceMarker","childValue","createDefinitionEntityNameResolver","entityNameResolver","DefinitionRefBuilder","pathPrefix","data","expectedEntityType","pathContext","reference","refPathWithoutPrefix","refValue","get","fullPath","entity","idPath","nameResolver","entityBase","extractDefinitionRefsRecursive","builder","REF_ANNOTATIONS_MARKER_SYMBOL","annotations","pathInfo","_","cleanValue","element","extractDefinitionRefs","refContext","cleanData","idSet","toposort","resolveZodRefPayloadNames","payload","skipReferenceNameResolution","allowInvalidReferences","entitiesWithNameResolver","references","entitiesById","resolvedEntitiesById","orderedEntities","entityIds","resolveIdToName","rest","resolvedIds","idOrIds","parseSchemaWithTransformedReferences","schemaCreatorOptions","options","schemaContext","createDefinitionSchemaParserContext","refPayload","referenceToNameParentId","parentId","deserializeSchemaWithTransformedReferences","resolveReferencesToIds","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","parent","objectsToDeleteInArray","parseResult","referencesMissingEntity","objectsToDeleteByPath","o","objects","sortedObjects","sortBy","serializeSchemaFromRefPayload","draftData","entityId","serializeSchema","SCALAR_FIELD_TYPES","oklchColor","themeColorSchema","paletteSchema","palettesSchema","createThemeSchema","VALIDATORS","createRoleArray","ctx","createModelGraphqlSchema","modelScalarFieldEntityType","modelLocalRelationEntityType","modelForeignRelationEntityType","baseTransformerFields","baseTransformerSchema","createModelTransformerType","createPasswordTransformerSchema","modelTransformerEntityType","createEmbeddedRelationTransformerSchema","modelEntityType","entityNames","BUILT_IN_TRANSFORMERS","definitionContainer","definition","createModelTransformerImplementation","modelTransformerSpec","createTransformerSchema","parseCtx","createEnumValueSchema","modelEnumValueEntityType","createEnumBaseSchema","featureEntityType","createEnumSchema","modelEnumEntityType","createModelScalarFieldSchema","val","arg","defaultValue","REFERENTIAL_ACTIONS","createModelRelationFieldSchema","createModelUniqueConstraintSchema","modelUniqueConstraintEntityType","f","createModelServiceSchema","createModelBaseSchema","createModelSchema","adminSectionEntityType","adminCrudSectionColumnEntityType","createBaseAdminSectionValidators","baseAdminCrudActionSchema","adminCrudActionEntityType","createAdminCrudActionType","createAdminCrudEditActionSchema","adminCrudEditActionType","createAdminCrudDeleteActionSchema","adminCrudDeleteActionType","BUILT_IN_ADMIN_CRUD_ACTIONS","createAdminCrudActionImplementation","adminCrudActions","adminCrudActionSpec","createAdminCrudActionSchema","baseAdminCrudColumnSchema","adminCrudColumnEntityType","createAdminCrudColumnType","createAdminCrudTextColumnSchema","adminCrudTextColumnType","createAdminCrudForeignColumnSchema","adminCrudForeignColumnType","BUILT_IN_ADMIN_CRUD_COLUMNS","createAdminCrudColumnImplementation","adminCrudColumns","adminCrudColumnSpec","createAdminCrudColumnSchema","baseAdminCrudInputSchema","adminCrudInputEntityType","createAdminCrudInputType","adminCrudEmbeddedFormEntityType","createAdminCrudTextInputSchema","adminCrudTextInputType","createAdminCrudForeignInputSchema","adminCrudForeignInputType","createAdminCrudEnumInputSchema","adminCrudEnumInputType","createAdminCrudEmbeddedInputSchema","adminCrudEmbeddedInputType","createAdminCrudEmbeddedLocalInputSchema","adminCrudEmbeddedLocalInputType","createAdminCrudPasswordInputSchema","adminCrudPasswordInputType","BUILT_IN_ADMIN_CRUD_INPUTS","createAdminCrudInputImplementation","adminCrudInputs","adminCrudInputSpec","createAdminCrudInputSchema","createAdminCrudEmbeddedObjectSchema","createAdminCrudEmbeddedListSchema","createAdminCrudEmbeddedFormSchema","createAdminCrudSectionSchema","createWebAdminSectionSchema","createAdminAppSchema","createWebAppSchema","webAppEntryType","basePluginDefinitionSchema","createPluginWithConfigSchema","createConfigSchema","pluginDefinitionSchema","createPluginsSchema","createTemplateExtractorSchema","generalSettingsSchema","portOffset","createSettingsSchema","createAppSchema","createProjectDefinitionSchema","createFeaturesSchema","byIdOrThrow","enumConfig","EnumUtils","isScalarUnique","model","fieldId","primaryKeyFieldRefs","uniqueConstraints","c","areScalarsUnique","fieldIds","sortedFieldIds","isEqual","getRelationLocalFields","relation","field","isRelationOptional","isRelationOneToOne","localFieldIds","getModelValidator","modelField","getModelFieldValidation","modelId","preProcess","ModelUtils","nullishSuffix","validator","ModelFieldUtils","getTransformer","getTransformName","ModelTransformerUtils","byKey","pluginEntityId","byKeyOrThrow","configByKey","configByKeyOrThrow","setPluginConfig","pluginConfig","lastMigrationVersion","disablePlugin","pluginMetadata","managedPlugins","PluginUtils","COMMON_SPEC_IMPLEMENTATIONS","createPluginImplementationStore","availablePlugins","builtinSpecImplementations","pluginData","initialImplementations","pluginsWithModules","pluginName","createPluginImplementationStoreWithNewPlugins","newProjectDefinition","p2","createProjectDefinitionSchemaWithContext","definitionContext","parseProjectDefinitionWithContext","parseProjectDefinitionWithReferences","stringifyPrettyStable","ProjectDefinitionContainer","parserContext","setter","newDefinition","serializedContents","parsedDefinition","migration005PrimaryUniqueRefs","oldModel","omit","migration006IndividualServiceControllers","build","create","update","deleteOp","isCreateEnabled","isUpdateEnabled","isDeleteEnabled","stripUndefinedChildren","undefinedIfEmptyObject","migration007ModelGraphql","schema","buildObjectType","exposedFields","exposedLocalRelations","exposedForeignRelations","buildQuery","buildMutations","authorize","AUTH_DEFAULT_ROLES","migration008AnonymousPublicRole","role","transformJsonPath","transformFn","pathParts","navigateAndTransform","current","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","migration015NullParentRefs","features","feature","migration016WebAdminConfig","apps","sections","allowedRoles","restApp","migration017RenameAuthPlugin","renamedPlugin","authImplementationPlugins","primaryImplementationPlugin","implementationPluginKey","implementationConfig","migration018CrudNameFieldRef","section","selectedField","migrateColumn","oldColumn","display","migrateColumns","migration019ColumnTypeBased","updatedSection","form","SCHEMA_MIGRATIONS","isMigrateableProjectDefinition","SchemaMigrationError","migrationName","cause","runSchemaMigrations","schemaVersion","unappliedMigrations","migratedDefinition","getLatestMigrationVersion","createTestProjectDefinition","createTestProjectDefinitionInput","createTestProjectDefinitionContainer","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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O,eACP,MAAO,cACX,EACaC,GAAiB,CAC1B,IAAK,CACD,GAAM,2BACN,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,2BACf,EACI,OAAQ,CACJ,GAAM,2BACN,IAAO,4BACP,IAAO,4BACP,IAAO,2BACP,IAAO,2BACP,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,2BACP,IAAO,4BACP,IAAO,2BACf,EACI,MAAO,CACH,GAAM,4BACN,IAAO,4BACP,IAAO,2BACP,IAAO,4BACP,IAAO,4BACP,IAAO,2BACP,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,2BACf,EACI,OAAQ,CACJ,GAAM,6BACN,IAAO,6BACP,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,4BACP,IAAO,2BACf,EACI,KAAM,CACF,GAAM,6BACN,IAAO,6BACP,IAAO,6BACP,IAAO,6BACP,IAAO,4BACP,IAAO,4BACP,IAAO,2BACP,IAAO,6BACP,IAAO,6BACP,IAAO,6BACP,IAAO,4BACf,EACI,MAAO,CACH,GAAM,6BACN,IAAO,6BACP,IAAO,6BACP,IAAO,4BACP,IAAO,6BACP,IAAO,6BACP,IAAO,6BACP,IAAO,6BACP,IAAO,6BACP,IAAO,6BACP,IAAO,4BACf,EACI,QAAS,CACL,GAAM,6BACN,IAAO,4BACP,IAAO,4BACP,IAAO,6BACP,IAAO,6BACP,IAAO,2BACP,IAAO,6BACP,IAAO,6BACP,IAAO,6BACP,IAAO,4BACP,IAAO,4BACf,EACI,KAAM,CACF,GAAM,4BACN,IAAO,6BACP,IAAO,4BACP,IAAO,6BACP,IAAO,6BACP,IAAO,4BACP,IAAO,2BACP,IAAO,6BACP,IAAO,6BACP,IAAO,6BACP,IAAO,4BACf,EACI,KAAM,CACF,GAAM,6BACN,IAAO,6BACP,IAAO,4BACP,IAAO,6BACP,IAAO,4BACP,IAAO,6BACP,I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","x_google_ignoreList":[0,1,2,3,4]}