@baseplate-dev/project-builder-lib 0.6.3 → 0.6.5

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 (290) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/compiler/admin-crud-action-compiler.js +1 -1
  3. package/dist/compiler/admin-crud-action-compiler.js.map +1 -1
  4. package/dist/compiler/admin-crud-column-compiler-spec.js +1 -1
  5. package/dist/compiler/admin-crud-column-compiler-spec.js.map +1 -1
  6. package/dist/compiler/admin-crud-input-spec.js +1 -1
  7. package/dist/compiler/admin-crud-input-spec.js.map +1 -1
  8. package/dist/compiler/app-compiler-spec.js +1 -1
  9. package/dist/compiler/app-compiler-spec.js.map +1 -1
  10. package/dist/compiler/index.d.ts +1 -0
  11. package/dist/compiler/index.d.ts.map +1 -1
  12. package/dist/compiler/index.js +1 -0
  13. package/dist/compiler/index.js.map +1 -1
  14. package/dist/compiler/model-transformer-compiler-spec.js +1 -1
  15. package/dist/compiler/model-transformer-compiler-spec.js.map +1 -1
  16. package/dist/compiler/root-compiler-spec.d.ts +25 -0
  17. package/dist/compiler/root-compiler-spec.d.ts.map +1 -0
  18. package/dist/compiler/root-compiler-spec.js +23 -0
  19. package/dist/compiler/root-compiler-spec.js.map +1 -0
  20. package/dist/constants/theme-colors.d.ts +0 -48
  21. package/dist/constants/theme-colors.d.ts.map +1 -1
  22. package/dist/constants/theme-colors.js +0 -32
  23. package/dist/constants/theme-colors.js.map +1 -1
  24. package/dist/definition/feature/feature-utils.d.ts +9 -3
  25. package/dist/definition/feature/feature-utils.d.ts.map +1 -1
  26. package/dist/definition/feature/feature-utils.js +30 -2
  27. package/dist/definition/feature/feature-utils.js.map +1 -1
  28. package/dist/definition/plugins/plugin-utils.d.ts +15 -0
  29. package/dist/definition/plugins/plugin-utils.d.ts.map +1 -1
  30. package/dist/definition/plugins/plugin-utils.js +50 -1
  31. package/dist/definition/plugins/plugin-utils.js.map +1 -1
  32. package/dist/definition/project-definition-container.d.ts.map +1 -1
  33. package/dist/definition/project-definition-container.js +3 -1
  34. package/dist/definition/project-definition-container.js.map +1 -1
  35. package/dist/{schema/models → expression-parsers}/authorizer/authorizer-expression-acorn-parser.d.ts +2 -0
  36. package/dist/expression-parsers/authorizer/authorizer-expression-acorn-parser.d.ts.map +1 -0
  37. package/dist/{schema/models → expression-parsers}/authorizer/authorizer-expression-acorn-parser.js +107 -52
  38. package/dist/expression-parsers/authorizer/authorizer-expression-acorn-parser.js.map +1 -0
  39. package/dist/{schema/models → expression-parsers}/authorizer/authorizer-expression-ast.d.ts +69 -1
  40. package/dist/expression-parsers/authorizer/authorizer-expression-ast.d.ts.map +1 -0
  41. package/dist/{schema/models → expression-parsers}/authorizer/authorizer-expression-ast.js +2 -0
  42. package/dist/expression-parsers/authorizer/authorizer-expression-ast.js.map +1 -0
  43. package/dist/{schema/models → expression-parsers}/authorizer/authorizer-expression-parser.d.ts +13 -14
  44. package/dist/expression-parsers/authorizer/authorizer-expression-parser.d.ts.map +1 -0
  45. package/dist/expression-parsers/authorizer/authorizer-expression-parser.js +292 -0
  46. package/dist/expression-parsers/authorizer/authorizer-expression-parser.js.map +1 -0
  47. package/dist/{schema/models → expression-parsers}/authorizer/authorizer-expression-validator.d.ts +37 -17
  48. package/dist/expression-parsers/authorizer/authorizer-expression-validator.d.ts.map +1 -0
  49. package/dist/expression-parsers/authorizer/authorizer-expression-validator.js +379 -0
  50. package/dist/expression-parsers/authorizer/authorizer-expression-validator.js.map +1 -0
  51. package/dist/expression-parsers/authorizer/authorizer-expression-visitor.d.ts +54 -0
  52. package/dist/expression-parsers/authorizer/authorizer-expression-visitor.d.ts.map +1 -0
  53. package/dist/expression-parsers/authorizer/authorizer-expression-visitor.js +52 -0
  54. package/dist/expression-parsers/authorizer/authorizer-expression-visitor.js.map +1 -0
  55. package/dist/expression-parsers/authorizer/index.d.ts +6 -0
  56. package/dist/expression-parsers/authorizer/index.d.ts.map +1 -0
  57. package/dist/expression-parsers/authorizer/index.js +6 -0
  58. package/dist/expression-parsers/authorizer/index.js.map +1 -0
  59. package/dist/expression-parsers/register-core-module.d.ts +6 -0
  60. package/dist/expression-parsers/register-core-module.d.ts.map +1 -0
  61. package/dist/expression-parsers/register-core-module.js +29 -0
  62. package/dist/expression-parsers/register-core-module.js.map +1 -0
  63. package/dist/index.d.ts +1 -0
  64. package/dist/index.js +1 -0
  65. package/dist/migrations/index.d.ts.map +1 -1
  66. package/dist/migrations/index.js +6 -0
  67. package/dist/migrations/index.js.map +1 -1
  68. package/dist/migrations/migration-029-admin-role-and-auto-assigned.d.ts +25 -0
  69. package/dist/migrations/migration-029-admin-role-and-auto-assigned.d.ts.map +1 -0
  70. package/dist/migrations/migration-029-admin-role-and-auto-assigned.js +72 -0
  71. package/dist/migrations/migration-029-admin-role-and-auto-assigned.js.map +1 -0
  72. package/dist/migrations/migration-030-remove-theme-hover-colors.d.ts +17 -0
  73. package/dist/migrations/migration-030-remove-theme-hover-colors.d.ts.map +1 -0
  74. package/dist/migrations/migration-030-remove-theme-hover-colors.js +41 -0
  75. package/dist/migrations/migration-030-remove-theme-hover-colors.js.map +1 -0
  76. package/dist/migrations/migration-031-uuid-default-generation.d.ts +24 -0
  77. package/dist/migrations/migration-031-uuid-default-generation.d.ts.map +1 -0
  78. package/dist/migrations/migration-031-uuid-default-generation.js +40 -0
  79. package/dist/migrations/migration-031-uuid-default-generation.js.map +1 -0
  80. package/dist/migrations/transform-json-path.d.ts.map +1 -1
  81. package/dist/migrations/transform-json-path.js +2 -3
  82. package/dist/migrations/transform-json-path.js.map +1 -1
  83. package/dist/parser/collect-definition-issues.d.ts.map +1 -1
  84. package/dist/parser/collect-definition-issues.js +10 -2
  85. package/dist/parser/collect-definition-issues.js.map +1 -1
  86. package/dist/parser/collect-expression-issues.d.ts +17 -9
  87. package/dist/parser/collect-expression-issues.d.ts.map +1 -1
  88. package/dist/parser/collect-expression-issues.js +21 -15
  89. package/dist/parser/collect-expression-issues.js.map +1 -1
  90. package/dist/parser/definition-issue-checkers/plugin-dependency-checker.d.ts +11 -0
  91. package/dist/parser/definition-issue-checkers/plugin-dependency-checker.d.ts.map +1 -0
  92. package/dist/parser/definition-issue-checkers/plugin-dependency-checker.js +41 -0
  93. package/dist/parser/definition-issue-checkers/plugin-dependency-checker.js.map +1 -0
  94. package/dist/parser/definition-issue-checkers/plugin-implementation-checker.d.ts +16 -0
  95. package/dist/parser/definition-issue-checkers/plugin-implementation-checker.d.ts.map +1 -0
  96. package/dist/parser/definition-issue-checkers/plugin-implementation-checker.js +69 -0
  97. package/dist/parser/definition-issue-checkers/plugin-implementation-checker.js.map +1 -0
  98. package/dist/parser/definition-issue-utils.d.ts +28 -1
  99. package/dist/parser/definition-issue-utils.d.ts.map +1 -1
  100. package/dist/parser/definition-issue-utils.js +59 -0
  101. package/dist/parser/definition-issue-utils.js.map +1 -1
  102. package/dist/parser/find-orphaned-union-items.d.ts +30 -0
  103. package/dist/parser/find-orphaned-union-items.d.ts.map +1 -0
  104. package/dist/parser/find-orphaned-union-items.js +47 -0
  105. package/dist/parser/find-orphaned-union-items.js.map +1 -0
  106. package/dist/parser/index.d.ts +3 -1
  107. package/dist/parser/index.d.ts.map +1 -1
  108. package/dist/parser/index.js +3 -1
  109. package/dist/parser/index.js.map +1 -1
  110. package/dist/parser/parser.d.ts.map +1 -1
  111. package/dist/parser/parser.js +3 -0
  112. package/dist/parser/parser.js.map +1 -1
  113. package/dist/parser/transform-data-with-schema.js +1 -1
  114. package/dist/parser/transform-data-with-schema.js.map +1 -1
  115. package/dist/plugins/imports/index.d.ts +1 -0
  116. package/dist/plugins/imports/index.d.ts.map +1 -1
  117. package/dist/plugins/imports/index.js +1 -0
  118. package/dist/plugins/imports/index.js.map +1 -1
  119. package/dist/plugins/imports/validate-plugin-dependencies.d.ts +42 -0
  120. package/dist/plugins/imports/validate-plugin-dependencies.d.ts.map +1 -0
  121. package/dist/plugins/imports/validate-plugin-dependencies.js +80 -0
  122. package/dist/plugins/imports/validate-plugin-dependencies.js.map +1 -0
  123. package/dist/plugins/metadata/types.d.ts +13 -0
  124. package/dist/plugins/metadata/types.d.ts.map +1 -1
  125. package/dist/plugins/metadata/types.js +15 -0
  126. package/dist/plugins/metadata/types.js.map +1 -1
  127. package/dist/plugins/spec/auth-config-spec.d.ts +1 -0
  128. package/dist/plugins/spec/auth-config-spec.d.ts.map +1 -1
  129. package/dist/plugins/spec/auth-config-spec.js.map +1 -1
  130. package/dist/references/definition-ref-builder.d.ts +2 -0
  131. package/dist/references/definition-ref-builder.d.ts.map +1 -1
  132. package/dist/references/definition-ref-registry.d.ts +2 -0
  133. package/dist/references/definition-ref-registry.d.ts.map +1 -1
  134. package/dist/references/definition-ref-registry.js.map +1 -1
  135. package/dist/references/expression-parser-ref.d.ts +51 -0
  136. package/dist/references/expression-parser-ref.d.ts.map +1 -0
  137. package/dist/references/expression-parser-ref.js +14 -0
  138. package/dist/references/expression-parser-ref.js.map +1 -0
  139. package/dist/references/expression-parser-spec.d.ts +29 -0
  140. package/dist/references/expression-parser-spec.d.ts.map +1 -0
  141. package/dist/references/expression-parser-spec.js +29 -0
  142. package/dist/references/expression-parser-spec.js.map +1 -0
  143. package/dist/references/expression-types.d.ts +20 -22
  144. package/dist/references/expression-types.d.ts.map +1 -1
  145. package/dist/references/expression-types.js +1 -2
  146. package/dist/references/expression-types.js.map +1 -1
  147. package/dist/references/extend-parser-context-with-refs.d.ts +7 -2
  148. package/dist/references/extend-parser-context-with-refs.d.ts.map +1 -1
  149. package/dist/references/extend-parser-context-with-refs.js +42 -12
  150. package/dist/references/extend-parser-context-with-refs.js.map +1 -1
  151. package/dist/references/extract-definition-refs.js +1 -1
  152. package/dist/references/extract-definition-refs.js.map +1 -1
  153. package/dist/references/fix-definition-refs.d.ts +22 -0
  154. package/dist/references/fix-definition-refs.d.ts.map +1 -0
  155. package/dist/references/fix-definition-refs.js +29 -0
  156. package/dist/references/fix-definition-refs.js.map +1 -0
  157. package/dist/references/fix-expression-renames.d.ts +20 -0
  158. package/dist/references/fix-expression-renames.d.ts.map +1 -0
  159. package/dist/references/fix-expression-renames.js +87 -0
  160. package/dist/references/fix-expression-renames.js.map +1 -0
  161. package/dist/references/index.d.ts +4 -0
  162. package/dist/references/index.d.ts.map +1 -1
  163. package/dist/references/index.js +4 -0
  164. package/dist/references/index.js.map +1 -1
  165. package/dist/references/parse-schema-with-references.d.ts +2 -1
  166. package/dist/references/parse-schema-with-references.d.ts.map +1 -1
  167. package/dist/references/parse-schema-with-references.js.map +1 -1
  168. package/dist/schema/apps/web/admin/sections/crud.d.ts.map +1 -1
  169. package/dist/schema/apps/web/admin/sections/crud.js +3 -2
  170. package/dist/schema/apps/web/admin/sections/crud.js.map +1 -1
  171. package/dist/schema/creator/definition-issue-checkers.d.ts +15 -0
  172. package/dist/schema/creator/definition-issue-checkers.d.ts.map +1 -1
  173. package/dist/schema/creator/definition-issue-checkers.js +33 -0
  174. package/dist/schema/creator/definition-issue-checkers.js.map +1 -1
  175. package/dist/schema/creator/schema-creator.js +1 -1
  176. package/dist/schema/creator/schema-creator.js.map +1 -1
  177. package/dist/schema/features/feature.js +1 -1
  178. package/dist/schema/features/feature.js.map +1 -1
  179. package/dist/schema/libraries/library.d.ts.map +1 -1
  180. package/dist/schema/libraries/library.js +1 -0
  181. package/dist/schema/libraries/library.js.map +1 -1
  182. package/dist/schema/models/authorizer/authorizer-expression-ref.d.ts +11 -0
  183. package/dist/schema/models/authorizer/authorizer-expression-ref.d.ts.map +1 -0
  184. package/dist/schema/models/authorizer/authorizer-expression-ref.js +10 -0
  185. package/dist/schema/models/authorizer/authorizer-expression-ref.js.map +1 -0
  186. package/dist/schema/models/authorizer/authorizer.js +2 -2
  187. package/dist/schema/models/authorizer/authorizer.js.map +1 -1
  188. package/dist/schema/models/authorizer/index.d.ts +1 -4
  189. package/dist/schema/models/authorizer/index.d.ts.map +1 -1
  190. package/dist/schema/models/authorizer/index.js +1 -4
  191. package/dist/schema/models/authorizer/index.js.map +1 -1
  192. package/dist/schema/models/enums.d.ts +12 -0
  193. package/dist/schema/models/enums.d.ts.map +1 -1
  194. package/dist/schema/models/enums.js +5 -2
  195. package/dist/schema/models/enums.js.map +1 -1
  196. package/dist/schema/models/graphql.js +3 -3
  197. package/dist/schema/models/graphql.js.map +1 -1
  198. package/dist/schema/models/models.d.ts +24 -36
  199. package/dist/schema/models/models.d.ts.map +1 -1
  200. package/dist/schema/models/models.js +7 -5
  201. package/dist/schema/models/models.js.map +1 -1
  202. package/dist/schema/plugins/definition.d.ts.map +1 -1
  203. package/dist/schema/plugins/definition.js +2 -0
  204. package/dist/schema/plugins/definition.js.map +1 -1
  205. package/dist/schema/project-definition.d.ts +14 -22
  206. package/dist/schema/project-definition.d.ts.map +1 -1
  207. package/dist/schema/project-definition.js +5 -1
  208. package/dist/schema/project-definition.js.map +1 -1
  209. package/dist/schema/settings/settings.d.ts +2 -10
  210. package/dist/schema/settings/settings.d.ts.map +1 -1
  211. package/dist/schema/settings/theme.d.ts +3 -15
  212. package/dist/schema/settings/theme.d.ts.map +1 -1
  213. package/dist/schema/utils/validation.d.ts.map +1 -1
  214. package/dist/schema/utils/validation.js +16 -3
  215. package/dist/schema/utils/validation.js.map +1 -1
  216. package/dist/specs/packages/library-type-spec.d.ts +4 -0
  217. package/dist/specs/packages/library-type-spec.d.ts.map +1 -1
  218. package/dist/specs/packages/library-type-spec.js +2 -2
  219. package/dist/specs/packages/library-type-spec.js.map +1 -1
  220. package/dist/testing/definition-helpers.test-helper.js +2 -2
  221. package/dist/testing/definition-helpers.test-helper.js.map +1 -1
  222. package/dist/testing/expression-stub-parser.test-helper.d.ts +2 -4
  223. package/dist/testing/expression-stub-parser.test-helper.d.ts.map +1 -1
  224. package/dist/testing/expression-stub-parser.test-helper.js +2 -10
  225. package/dist/testing/expression-stub-parser.test-helper.js.map +1 -1
  226. package/dist/testing/expression-warning-parser.test-helper.d.ts +2 -4
  227. package/dist/testing/expression-warning-parser.test-helper.d.ts.map +1 -1
  228. package/dist/testing/expression-warning-parser.test-helper.js +2 -8
  229. package/dist/testing/expression-warning-parser.test-helper.js.map +1 -1
  230. package/dist/testing/index.d.ts +1 -0
  231. package/dist/testing/index.d.ts.map +1 -1
  232. package/dist/testing/index.js +1 -0
  233. package/dist/testing/index.js.map +1 -1
  234. package/dist/testing/parser-context.test-helper.d.ts.map +1 -1
  235. package/dist/testing/parser-context.test-helper.js +2 -1
  236. package/dist/testing/parser-context.test-helper.js.map +1 -1
  237. package/dist/testing/plugin-store.test-helper.d.ts +11 -0
  238. package/dist/testing/plugin-store.test-helper.d.ts.map +1 -0
  239. package/dist/testing/plugin-store.test-helper.js +32 -0
  240. package/dist/testing/plugin-store.test-helper.js.map +1 -0
  241. package/dist/testing/project-definition-container.test-helper.d.ts.map +1 -1
  242. package/dist/testing/project-definition-container.test-helper.js +2 -1
  243. package/dist/testing/project-definition-container.test-helper.js.map +1 -1
  244. package/dist/tools/index.d.ts +2 -0
  245. package/dist/tools/index.d.ts.map +1 -1
  246. package/dist/tools/index.js +2 -0
  247. package/dist/tools/index.js.map +1 -1
  248. package/dist/tools/sort-entity-arrays.d.ts +15 -0
  249. package/dist/tools/sort-entity-arrays.d.ts.map +1 -0
  250. package/dist/tools/sort-entity-arrays.js +31 -0
  251. package/dist/tools/sort-entity-arrays.js.map +1 -0
  252. package/dist/utils/color-conversions.d.ts +12 -0
  253. package/dist/utils/color-conversions.d.ts.map +1 -1
  254. package/dist/utils/color-conversions.js +17 -1
  255. package/dist/utils/color-conversions.js.map +1 -1
  256. package/dist/utils/color-names.d.ts.map +1 -1
  257. package/dist/utils/color-names.js +6 -5
  258. package/dist/utils/color-names.js.map +1 -1
  259. package/dist/utils/definition-diff/definition-diff.js +2 -2
  260. package/dist/utils/definition-diff/definition-diff.js.map +1 -1
  261. package/dist/utils/theme.d.ts +1 -0
  262. package/dist/utils/theme.d.ts.map +1 -1
  263. package/dist/utils/theme.js +18 -10
  264. package/dist/utils/theme.js.map +1 -1
  265. package/dist/web/components/definition-diff-alert.js +2 -2
  266. package/dist/web/components/definition-diff-alert.js.map +1 -1
  267. package/dist/web/components/feature-combobox-field.d.ts.map +1 -1
  268. package/dist/web/components/feature-combobox-field.js +5 -3
  269. package/dist/web/components/feature-combobox-field.js.map +1 -1
  270. package/dist/web/specs/admin-crud-action-web-spec.js +1 -1
  271. package/dist/web/specs/admin-crud-action-web-spec.js.map +1 -1
  272. package/dist/web/specs/admin-crud-column-web-spec.js +1 -1
  273. package/dist/web/specs/admin-crud-column-web-spec.js.map +1 -1
  274. package/dist/web/specs/admin-crud-input-web-spec.js +1 -1
  275. package/dist/web/specs/admin-crud-input-web-spec.js.map +1 -1
  276. package/dist/web/specs/model-transformer-web-spec.d.ts +19 -2
  277. package/dist/web/specs/model-transformer-web-spec.d.ts.map +1 -1
  278. package/dist/web/specs/model-transformer-web-spec.js +1 -1
  279. package/dist/web/specs/model-transformer-web-spec.js.map +1 -1
  280. package/package.json +8 -8
  281. package/dist/schema/models/authorizer/authorizer-expression-acorn-parser.d.ts.map +0 -1
  282. package/dist/schema/models/authorizer/authorizer-expression-acorn-parser.js.map +0 -1
  283. package/dist/schema/models/authorizer/authorizer-expression-ast.d.ts.map +0 -1
  284. package/dist/schema/models/authorizer/authorizer-expression-ast.js.map +0 -1
  285. package/dist/schema/models/authorizer/authorizer-expression-parser.d.ts.map +0 -1
  286. package/dist/schema/models/authorizer/authorizer-expression-parser.js +0 -145
  287. package/dist/schema/models/authorizer/authorizer-expression-parser.js.map +0 -1
  288. package/dist/schema/models/authorizer/authorizer-expression-validator.d.ts.map +0 -1
  289. package/dist/schema/models/authorizer/authorizer-expression-validator.js +0 -284
  290. package/dist/schema/models/authorizer/authorizer-expression-validator.js.map +0 -1
@@ -0,0 +1,25 @@
1
+ interface PluginConfig {
2
+ id: string;
3
+ name: string;
4
+ config?: {
5
+ initialUserRoles?: unknown;
6
+ userAdminRoles?: unknown;
7
+ additionalUserAdminRoles?: unknown;
8
+ [key: string]: unknown;
9
+ };
10
+ [key: string]: unknown;
11
+ }
12
+ interface OldConfig {
13
+ plugins?: PluginConfig[];
14
+ [key: string]: unknown;
15
+ }
16
+ /**
17
+ * Migration to:
18
+ * 1. Add `autoAssigned` flag to existing roles (true for public/user/system, false for others)
19
+ * 2. Add built-in `admin` role if not already present
20
+ * 3. Rename `userAdminRoles` → `additionalUserAdminRoles` in local-auth and better-auth plugin configs
21
+ * 4. Remove `initialUserRoles` from plugin configs
22
+ */
23
+ export declare const migration029AdminRoleAndAutoAssigned: import("./types.js").SchemaMigration<OldConfig, OldConfig>;
24
+ export {};
25
+ //# sourceMappingURL=migration-029-admin-role-and-auto-assigned.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-029-admin-role-and-auto-assigned.d.ts","sourceRoot":"","sources":["../../src/migrations/migration-029-admin-role-and-auto-assigned.ts"],"names":[],"mappings":"AAUA,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QACP,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAOD,UAAU,SAAS;IACjB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD;;;;;;GAMG;AACH,eAAO,MAAM,oCAAoC,4DA0E/C,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { createSchemaMigration } from './types.js';
2
+ const AUTH_PLUGIN_NAME = 'auth';
3
+ const LOCAL_AUTH_PLUGIN_ID = 'plugin:baseplate-dev_plugin-auth_local-auth';
4
+ const BETTER_AUTH_PLUGIN_ID = 'plugin:baseplate-dev_plugin-auth_better-auth';
5
+ /**
6
+ * Migration to:
7
+ * 1. Add `autoAssigned` flag to existing roles (true for public/user/system, false for others)
8
+ * 2. Add built-in `admin` role if not already present
9
+ * 3. Rename `userAdminRoles` → `additionalUserAdminRoles` in local-auth and better-auth plugin configs
10
+ * 4. Remove `initialUserRoles` from plugin configs
11
+ */
12
+ export const migration029AdminRoleAndAutoAssigned = createSchemaMigration({
13
+ version: 29,
14
+ name: 'adminRoleAndAutoAssigned',
15
+ description: 'Add built-in admin role, autoAssigned flag, rename userAdminRoles to additionalUserAdminRoles',
16
+ migrate: (config) => {
17
+ const plugins = config.plugins ? [...config.plugins] : [];
18
+ // Find the auth plugin and update roles
19
+ const authPlugin = plugins.find((p) => p.name === AUTH_PLUGIN_NAME);
20
+ if (authPlugin?.config) {
21
+ const authConfig = authPlugin.config;
22
+ if (authConfig.roles) {
23
+ const autoAssignedRoles = new Set(['public', 'user', 'system']);
24
+ // Add autoAssigned flag to existing roles
25
+ authConfig.roles = authConfig.roles.map((role) => ({
26
+ ...role,
27
+ autoAssigned: autoAssignedRoles.has(role.name),
28
+ }));
29
+ // Add admin role if not already present
30
+ if (authConfig.roles.some((r) => r.name === 'admin')) {
31
+ // If admin exists but isn't builtIn, make it builtIn
32
+ authConfig.roles = authConfig.roles.map((role) => role.name === 'admin'
33
+ ? { ...role, builtIn: true, autoAssigned: false }
34
+ : role);
35
+ }
36
+ else {
37
+ authConfig.roles.push({
38
+ id: `auth-role:${crypto.randomUUID()}`,
39
+ name: 'admin',
40
+ comment: 'Administrator with full access',
41
+ builtIn: true,
42
+ autoAssigned: false,
43
+ });
44
+ }
45
+ }
46
+ }
47
+ // Update local-auth and better-auth plugin configs
48
+ for (const plugin of plugins) {
49
+ if (plugin.id !== LOCAL_AUTH_PLUGIN_ID &&
50
+ plugin.id !== BETTER_AUTH_PLUGIN_ID) {
51
+ continue;
52
+ }
53
+ if (!plugin.config) {
54
+ continue;
55
+ }
56
+ // Rename userAdminRoles → additionalUserAdminRoles
57
+ if ('userAdminRoles' in plugin.config) {
58
+ plugin.config.additionalUserAdminRoles = plugin.config.userAdminRoles;
59
+ delete plugin.config.userAdminRoles;
60
+ }
61
+ // Remove initialUserRoles
62
+ if ('initialUserRoles' in plugin.config) {
63
+ delete plugin.config.initialUserRoles;
64
+ }
65
+ }
66
+ return {
67
+ ...config,
68
+ plugins,
69
+ };
70
+ },
71
+ });
72
+ //# sourceMappingURL=migration-029-admin-role-and-auto-assigned.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-029-admin-role-and-auto-assigned.js","sourceRoot":"","sources":["../../src/migrations/migration-029-admin-role-and-auto-assigned.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ type ThemeColors = Record<string, unknown>;
2
+ interface OldConfig {
3
+ settings?: {
4
+ theme?: {
5
+ colors?: {
6
+ light?: ThemeColors;
7
+ dark?: ThemeColors;
8
+ };
9
+ [key: string]: unknown;
10
+ };
11
+ [key: string]: unknown;
12
+ };
13
+ [key: string]: unknown;
14
+ }
15
+ export declare const migration030RemoveThemeHoverColors: import("./types.js").SchemaMigration<OldConfig, OldConfig>;
16
+ export {};
17
+ //# sourceMappingURL=migration-030-remove-theme-hover-colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-030-remove-theme-hover-colors.d.ts","sourceRoot":"","sources":["../../src/migrations/migration-030-remove-theme-hover-colors.ts"],"names":[],"mappings":"AAWA,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C,UAAU,SAAS;IACjB,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE;gBACP,KAAK,CAAC,EAAE,WAAW,CAAC;gBACpB,IAAI,CAAC,EAAE,WAAW,CAAC;aACpB,CAAC;YACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,CAAC;QACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD,eAAO,MAAM,kCAAkC,4DAiC7C,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { omit } from 'es-toolkit';
2
+ import { createSchemaMigration } from './types.js';
3
+ const REMOVED_THEME_COLOR_KEYS = [
4
+ 'primaryHover',
5
+ 'secondaryHover',
6
+ 'destructiveHover',
7
+ 'linkVisited',
8
+ ];
9
+ function stripRemovedKeys(colors) {
10
+ return omit(colors, REMOVED_THEME_COLOR_KEYS);
11
+ }
12
+ export const migration030RemoveThemeHoverColors = createSchemaMigration({
13
+ version: 30,
14
+ name: 'removeThemeHoverColors',
15
+ description: 'Remove primaryHover, secondaryHover, destructiveHover, and linkVisited from theme colors (now computed via color-mix)',
16
+ migrate: (config) => {
17
+ const theme = config.settings?.theme;
18
+ if (!theme?.colors) {
19
+ return config;
20
+ }
21
+ return {
22
+ ...config,
23
+ settings: {
24
+ ...config.settings,
25
+ theme: {
26
+ ...theme,
27
+ colors: {
28
+ ...theme.colors,
29
+ ...(theme.colors.light
30
+ ? { light: stripRemovedKeys(theme.colors.light) }
31
+ : {}),
32
+ ...(theme.colors.dark
33
+ ? { dark: stripRemovedKeys(theme.colors.dark) }
34
+ : {}),
35
+ },
36
+ },
37
+ },
38
+ };
39
+ },
40
+ });
41
+ //# sourceMappingURL=migration-030-remove-theme-hover-colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-030-remove-theme-hover-colors.js","sourceRoot":"","sources":["../../src/migrations/migration-030-remove-theme-hover-colors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,wBAAwB,GAAG;IAC/B,cAAc;IACd,gBAAgB;IAChB,kBAAkB;IAClB,aAAa;CACL,CAAC;AAkBX,SAAS,gBAAgB,CAAC,MAAmB;IAC3C,OAAO,IAAI,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,MAAM,kCAAkC,GAAG,qBAAqB,CAGrE;IACA,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,uHAAuH;IACzH,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO;YACL,GAAG,MAAM;YACT,QAAQ,EAAE;gBACR,GAAG,MAAM,CAAC,QAAQ;gBAClB,KAAK,EAAE;oBACL,GAAG,KAAK;oBACR,MAAM,EAAE;wBACN,GAAG,KAAK,CAAC,MAAM;wBACf,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;4BACpB,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;4BACjD,CAAC,CAAC,EAAE,CAAC;wBACP,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI;4BACnB,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;4BAC/C,CAAC,CAAC,EAAE,CAAC;qBACR;iBACF;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ interface UuidFieldOptions {
2
+ genUuid?: boolean;
3
+ default?: string;
4
+ defaultGeneration?: 'none' | 'uuidv4' | 'uuidv7';
5
+ }
6
+ interface ScalarField {
7
+ type: string;
8
+ options?: UuidFieldOptions;
9
+ [key: string]: unknown;
10
+ }
11
+ interface Model {
12
+ model?: {
13
+ fields?: ScalarField[];
14
+ [key: string]: unknown;
15
+ };
16
+ [key: string]: unknown;
17
+ }
18
+ interface OldConfig {
19
+ models?: Model[];
20
+ [key: string]: unknown;
21
+ }
22
+ export declare const migration031UuidDefaultGeneration: import("./types.js").SchemaMigration<OldConfig, OldConfig>;
23
+ export {};
24
+ //# sourceMappingURL=migration-031-uuid-default-generation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-031-uuid-default-generation.d.ts","sourceRoot":"","sources":["../../src/migrations/migration-031-uuid-default-generation.ts"],"names":[],"mappings":"AAEA,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAClD;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,KAAK;IACb,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;QACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAkBD,eAAO,MAAM,iCAAiC,4DA8B5C,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { createSchemaMigration } from './types.js';
2
+ function migrateUuidField(field) {
3
+ if (field.type !== 'uuid' || !field.options) {
4
+ return field;
5
+ }
6
+ const { genUuid, default: _default, ...restOptions } = field.options;
7
+ return {
8
+ ...field,
9
+ options: {
10
+ ...restOptions,
11
+ defaultGeneration: genUuid ? 'uuidv4' : 'none',
12
+ },
13
+ };
14
+ }
15
+ export const migration031UuidDefaultGeneration = createSchemaMigration({
16
+ version: 31,
17
+ name: 'uuidDefaultGeneration',
18
+ description: 'Replace genUuid boolean with defaultGeneration enum (none | uuidv4 | uuidv7) on UUID fields',
19
+ migrate: (config) => {
20
+ if (!config.models) {
21
+ return config;
22
+ }
23
+ return {
24
+ ...config,
25
+ models: config.models.map((model) => {
26
+ if (!model.model?.fields) {
27
+ return model;
28
+ }
29
+ return {
30
+ ...model,
31
+ model: {
32
+ ...model.model,
33
+ fields: model.model.fields.map(migrateUuidField),
34
+ },
35
+ };
36
+ }),
37
+ };
38
+ },
39
+ });
40
+ //# sourceMappingURL=migration-031-uuid-default-generation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-031-uuid-default-generation.js","sourceRoot":"","sources":["../../src/migrations/migration-031-uuid-default-generation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AA2BnD,SAAS,gBAAgB,CAAC,KAAkB;IAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAErE,OAAO;QACL,GAAG,KAAK;QACR,OAAO,EAAE;YACP,GAAG,WAAW;YACd,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;SAC/C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,iCAAiC,GAAG,qBAAqB,CAGpE;IACA,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,6FAA6F;IAC/F,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO;YACL,GAAG,MAAM;YACT,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBAClC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;oBACzB,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,OAAO;oBACL,GAAG,KAAK;oBACR,KAAK,EAAE;wBACL,GAAG,KAAK,CAAC,KAAK;wBACd,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;qBACjD;iBACF,CAAC;YACJ,CAAC,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"transform-json-path.d.ts","sourceRoot":"","sources":["../../src/migrations/transform-json-path.ts"],"names":[],"mappings":"AAEA,KAAK,WAAW,CAAC,IAAI,GAAG,OAAO,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;AAErE;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,EAEZ,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,GAC5B,OAAO,CAwDT;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,WAAW,CAUb"}
1
+ {"version":3,"file":"transform-json-path.d.ts","sourceRoot":"","sources":["../../src/migrations/transform-json-path.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,CAAC,IAAI,GAAG,OAAO,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;AAErE;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,EAEZ,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,GAC5B,OAAO,CAwDT;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,WAAW,CAUb"}
@@ -1,4 +1,3 @@
1
- import { cloneDeep } from 'es-toolkit';
2
1
  /**
3
2
  * Transform a value at a specific path in a JSON object.
4
3
  *
@@ -8,7 +7,7 @@ import { cloneDeep } from 'es-toolkit';
8
7
  * @returns The transformed JSON object.
9
8
  */
10
9
  export function transformJsonPath(data, path,
11
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- make it easier to use any transform functions
10
+ // oxlint-disable-next-line typescript/no-explicit-any -- make it easier to use any transform functions
12
11
  transformFn) {
13
12
  // Split the path into parts
14
13
  const pathParts = path.split('.');
@@ -16,7 +15,7 @@ transformFn) {
16
15
  const navigateAndTransform = (current, parts) => {
17
16
  if (parts.length === 0) {
18
17
  // If at the end of the path, apply the transformation function
19
- return transformFn(cloneDeep(current));
18
+ return transformFn(structuredClone(current));
20
19
  }
21
20
  const [currentPart, ...remainingParts] = parts;
22
21
  if (currentPart === '*') {
@@ -1 +1 @@
1
- {"version":3,"file":"transform-json-path.js","sourceRoot":"","sources":["../../src/migrations/transform-json-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAa,EACb,IAAY;AACZ,+GAA+G;AAC/G,WAA6B;IAE7B,4BAA4B;IAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAElC,wDAAwD;IACxD,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,KAAe,EAAW,EAAE;QAC1E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,+DAA+D;YAC/D,OAAO,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,CAAC,WAAW,EAAE,GAAG,cAAc,CAAC,GAAG,KAAK,CAAC;QAE/C,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;YACxB,yCAAyC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,SAAS,CAAC,wBAAwB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,iDAAiD;YACjD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,MAAM,IAAI,SAAS,CACjB,yBAAyB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,OAAO,OAAO,EAAE,CACtE,CAAC;YACJ,CAAC;YACD,kBAAkB;YAClB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;gBACzB,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;oBAC5C,GAAG;oBACH,oBAAoB,CAAC,KAAK,EAAE,cAAc,CAAC;iBAC5C,CAAC,CACH,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,EAAE,CAAC;gBAC9B,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,OAAO;gBACL,GAAG,OAAO;gBACV,CAAC,WAAW,CAAC,EAAE,oBAAoB,CAChC,OAAmC,CAAC,WAAW,CAAC,EACjD,cAAc,CACf;aACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,kDAAkD;IAClD,OAAO,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,OAA+B;IAE/B,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,SAAS,CAAC,2BAA2B,OAAO,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CACzE,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"transform-json-path.js","sourceRoot":"","sources":["../../src/migrations/transform-json-path.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAa,EACb,IAAY;AACZ,uGAAuG;AACvG,WAA6B;IAE7B,4BAA4B;IAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAElC,wDAAwD;IACxD,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,KAAe,EAAW,EAAE;QAC1E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,+DAA+D;YAC/D,OAAO,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,CAAC,WAAW,EAAE,GAAG,cAAc,CAAC,GAAG,KAAK,CAAC;QAE/C,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;YACxB,yCAAyC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,SAAS,CAAC,wBAAwB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,iDAAiD;YACjD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,MAAM,IAAI,SAAS,CACjB,yBAAyB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,OAAO,OAAO,EAAE,CACtE,CAAC;YACJ,CAAC;YACD,kBAAkB;YAClB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;gBACzB,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;oBAC5C,GAAG;oBACH,oBAAoB,CAAC,KAAK,EAAE,cAAc,CAAC;iBAC5C,CAAC,CACH,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,EAAE,CAAC;gBAC9B,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,OAAO;gBACL,GAAG,OAAO;gBACV,CAAC,WAAW,CAAC,EAAE,oBAAoB,CAChC,OAAmC,CAAC,WAAW,CAAC,EACjD,cAAc,CACf;aACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,kDAAkD;IAClD,OAAO,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,OAA+B;IAE/B,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,SAAS,CAAC,2BAA2B,OAAO,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CACzE,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"collect-definition-issues.d.ts","sourceRoot":"","sources":["../../src/parser/collect-definition-issues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAElG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAmBrF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,iDAAiD;IACjD,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,eAAe,EAAE,GACxB,iBAAiB,CAWnB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EACjB,IAAI,EAAE,OAAO,GACZ,eAAe,EAAE,CA0BnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,0BAA0B,GACpC,eAAe,EAAE,CA4BnB"}
1
+ {"version":3,"file":"collect-definition-issues.d.ts","sourceRoot":"","sources":["../../src/parser/collect-definition-issues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAElG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAuBrF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,iDAAiD;IACjD,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,eAAe,EAAE,GACxB,iBAAiB,CAWnB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EACjB,IAAI,EAAE,OAAO,GACZ,eAAe,EAAE,CA0BnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,0BAA0B,GACpC,eAAe,EAAE,CA4BnB"}
@@ -2,6 +2,8 @@ import { definitionIssueCheckerSpec } from '#src/schema/creator/definition-issue
2
2
  import { definitionFieldIssueRegistry } from '#src/schema/creator/definition-issue-registry.js';
3
3
  import { collectExpressionIssues } from './collect-expression-issues.js';
4
4
  import { checkMutationRoles } from './definition-issue-checkers/mutation-roles-checker.js';
5
+ import { checkPluginDependencies } from './definition-issue-checkers/plugin-dependency-checker.js';
6
+ import { checkPluginImplementations } from './definition-issue-checkers/plugin-implementation-checker.js';
5
7
  import { checkRelationTypeMismatch } from './definition-issue-checkers/relation-type-mismatch-checker.js';
6
8
  import { walkDataWithSchema } from './walk-data-with-schema.js';
7
9
  /**
@@ -11,6 +13,8 @@ import { walkDataWithSchema } from './walk-data-with-schema.js';
11
13
  const BUILT_IN_CHECKERS = [
12
14
  checkRelationTypeMismatch,
13
15
  checkMutationRoles,
16
+ checkPluginDependencies,
17
+ checkPluginImplementations,
14
18
  ];
15
19
  /**
16
20
  * Splits issues into errors (block save) and warnings (block sync only).
@@ -86,8 +90,12 @@ export function collectDefinitionIssues(container) {
86
90
  const result = checker(container);
87
91
  issues.push(...result);
88
92
  }
89
- // Collect expression validation issues
90
- const expressionIssues = collectExpressionIssues(schema, definition, pluginStore);
93
+ // Collect expression validation issues (uses container's pre-resolved expressions)
94
+ const expressionIssues = collectExpressionIssues({
95
+ definition,
96
+ pluginStore,
97
+ expressions: container.refPayload.expressions,
98
+ });
91
99
  issues.push(...expressionIssues);
92
100
  return issues;
93
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"collect-definition-issues.js","sourceRoot":"","sources":["../../src/parser/collect-definition-issues.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collect-definition-issues.js","sourceRoot":"","sources":["../../src/parser/collect-definition-issues.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,25 @@
1
- import type { z } from 'zod';
2
1
  import type { PluginSpecStore } from '#src/plugins/index.js';
2
+ import type { DefinitionExpression } from '#src/references/expression-types.js';
3
3
  import type { DefinitionIssue } from '#src/schema/creator/definition-issue-types.js';
4
+ import type { ProjectDefinition } from '#src/schema/project-definition.js';
4
5
  /**
5
- * Collects validation issues from expression parsers registered on the schema.
6
+ * Input for expression issue collection.
7
+ * Satisfied by ProjectDefinitionContainer and by lightweight test fixtures.
8
+ */
9
+ export interface CollectExpressionIssuesInput {
10
+ definition: ProjectDefinition;
11
+ pluginStore: PluginSpecStore;
12
+ expressions: readonly DefinitionExpression[];
13
+ }
14
+ /**
15
+ * Collects validation issues from expression parsers in the definition.
6
16
  *
7
- * Walks the schema+data to find expression annotations, resolves their slots,
8
- * then calls each parser's `validate()` method. Warnings are mapped to
9
- * `DefinitionIssue` objects with warning severity.
17
+ * Uses pre-resolved expressions to avoid redundant schema walks.
18
+ * Each parser's `validate()` method is called with the expression value and
19
+ * resolved slots. Warnings are mapped to `DefinitionIssue` objects.
10
20
  *
11
- * @param schema - The Zod schema to walk
12
- * @param data - The parsed definition data
13
- * @param pluginStore - The plugin spec store for validation context
21
+ * @param input - The definition, plugin store, and pre-resolved expressions
14
22
  * @returns Array of definition issues from expression validation
15
23
  */
16
- export declare function collectExpressionIssues(schema: z.ZodType, data: unknown, pluginStore: PluginSpecStore): DefinitionIssue[];
24
+ export declare function collectExpressionIssues(input: CollectExpressionIssuesInput): DefinitionIssue[];
17
25
  //# sourceMappingURL=collect-expression-issues.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collect-expression-issues.d.ts","sourceRoot":"","sources":["../../src/parser/collect-expression-issues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAIrF;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,CAAC,CAAC,OAAO,EACjB,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,eAAe,GAC3B,eAAe,EAAE,CA4BnB"}
1
+ {"version":3,"file":"collect-expression-issues.d.ts","sourceRoot":"","sources":["../../src/parser/collect-expression-issues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,iBAAiB,CAAC;IAC9B,WAAW,EAAE,eAAe,CAAC;IAC7B,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC9C;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,4BAA4B,GAClC,eAAe,EAAE,CAoCnB"}
@@ -1,28 +1,34 @@
1
- import { extractDefinitionRefs } from '#src/references/extract-definition-refs.js';
2
1
  /**
3
- * Collects validation issues from expression parsers registered on the schema.
2
+ * Collects validation issues from expression parsers in the definition.
4
3
  *
5
- * Walks the schema+data to find expression annotations, resolves their slots,
6
- * then calls each parser's `validate()` method. Warnings are mapped to
7
- * `DefinitionIssue` objects with warning severity.
4
+ * Uses pre-resolved expressions to avoid redundant schema walks.
5
+ * Each parser's `validate()` method is called with the expression value and
6
+ * resolved slots. Warnings are mapped to `DefinitionIssue` objects.
8
7
  *
9
- * @param schema - The Zod schema to walk
10
- * @param data - The parsed definition data
11
- * @param pluginStore - The plugin spec store for validation context
8
+ * @param input - The definition, plugin store, and pre-resolved expressions
12
9
  * @returns Array of definition issues from expression validation
13
10
  */
14
- export function collectExpressionIssues(schema, data, pluginStore) {
15
- const refPayload = extractDefinitionRefs(schema, data);
11
+ export function collectExpressionIssues(input) {
12
+ const { definition, pluginStore, expressions } = input;
16
13
  const context = {
17
- definition: data,
14
+ definition,
18
15
  pluginStore,
19
16
  };
20
17
  const issues = [];
21
- for (const expression of refPayload.expressions) {
22
- const warnings = expression.parser.validate(expression.value, data, context, expression.resolvedSlots);
23
- for (const warning of warnings) {
18
+ for (const expression of expressions) {
19
+ try {
20
+ const warnings = expression.parser.validate(expression.value, definition, context, expression.resolvedSlots);
21
+ for (const warning of warnings) {
22
+ issues.push({
23
+ message: warning.message,
24
+ path: expression.path,
25
+ severity: 'warning',
26
+ });
27
+ }
28
+ }
29
+ catch (error) {
24
30
  issues.push({
25
- message: warning.message,
31
+ message: `Expression parser "${expression.parser.name}" threw an error: ${error instanceof Error ? error.message : String(error)}`,
26
32
  path: expression.path,
27
33
  severity: 'warning',
28
34
  });
@@ -1 +1 @@
1
- {"version":3,"file":"collect-expression-issues.js","sourceRoot":"","sources":["../../src/parser/collect-expression-issues.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAiB,EACjB,IAAa,EACb,WAA4B;IAE5B,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAgC;QAC3C,UAAU,EAAE,IAAI;QAChB,WAAW;KACZ,CAAC;IAEF,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CACzC,UAAU,CAAC,KAAK,EAChB,IAAI,EACJ,OAAO,EACP,UAAU,CAAC,aAAa,CACzB,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,QAAQ,EAAE,SAAS;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"collect-expression-issues.js","sourceRoot":"","sources":["../../src/parser/collect-expression-issues.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAmC;IAEnC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAEvD,MAAM,OAAO,GAAgC;QAC3C,UAAU;QACV,WAAW;KACZ,CAAC;IAEF,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CACzC,UAAU,CAAC,KAAK,EAChB,UAAU,EACV,OAAO,EACP,UAAU,CAAC,aAAa,CACzB,CAAC;YAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC;oBACV,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,QAAQ,EAAE,SAAS;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,sBAAsB,UAAU,CAAC,MAAM,CAAC,IAAI,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAClI,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,QAAQ,EAAE,SAAS;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ProjectDefinitionContainer } from '#src/definition/project-definition-container.js';
2
+ import type { DefinitionIssue } from '#src/schema/creator/definition-issue-types.js';
3
+ /**
4
+ * Checks that all enabled plugins have their required plugin dependencies met.
5
+ *
6
+ * For each enabled plugin, resolves its metadata and checks `pluginDependencies`.
7
+ * Required (non-optional) dependencies that are not enabled produce error-severity
8
+ * issues (blocking save) with an auto-fix that enables the missing plugin.
9
+ */
10
+ export declare function checkPluginDependencies(container: ProjectDefinitionContainer): DefinitionIssue[];
11
+ //# sourceMappingURL=plugin-dependency-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-dependency-checker.d.ts","sourceRoot":"","sources":["../../../src/parser/definition-issue-checkers/plugin-dependency-checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAYrF;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,0BAA0B,GACpC,eAAe,EAAE,CAkCnB"}
@@ -0,0 +1,41 @@
1
+ import { PluginUtils } from '#src/definition/plugins/plugin-utils.js';
2
+ import { getPluginMetadataByKey } from '#src/plugins/imports/utils.js';
3
+ import { buildEnabledPluginFqnSet, getUnmetPluginDependencies, } from '#src/plugins/imports/validate-plugin-dependencies.js';
4
+ import { pluginEntityType } from '#src/schema/plugins/entity-types.js';
5
+ import { createEntityIssue } from '../definition-issue-utils.js';
6
+ /**
7
+ * Checks that all enabled plugins have their required plugin dependencies met.
8
+ *
9
+ * For each enabled plugin, resolves its metadata and checks `pluginDependencies`.
10
+ * Required (non-optional) dependencies that are not enabled produce error-severity
11
+ * issues (blocking save) with an auto-fix that enables the missing plugin.
12
+ */
13
+ export function checkPluginDependencies(container) {
14
+ const { definition, parserContext } = container;
15
+ const { pluginStore } = parserContext;
16
+ const enabledPlugins = definition.plugins ?? [];
17
+ const issues = [];
18
+ const enabledFqns = buildEnabledPluginFqnSet(pluginStore, enabledPlugins);
19
+ for (const plugin of enabledPlugins) {
20
+ const key = pluginEntityType.keyFromId(plugin.id);
21
+ const metadata = getPluginMetadataByKey(pluginStore, key);
22
+ if (!metadata?.pluginDependencies) {
23
+ continue;
24
+ }
25
+ const unmetDeps = getUnmetPluginDependencies(pluginStore, key, enabledFqns);
26
+ for (const depMetadata of unmetDeps) {
27
+ issues.push(createEntityIssue(container, plugin.id, [], {
28
+ message: `Plugin '${metadata.displayName}' requires '${depMetadata.displayName}' to be enabled`,
29
+ severity: 'error',
30
+ fix: {
31
+ label: `Enable ${depMetadata.displayName}`,
32
+ applySetter: (draft) => {
33
+ PluginUtils.setPluginConfig(draft, depMetadata, {}, container);
34
+ },
35
+ },
36
+ }));
37
+ }
38
+ }
39
+ return issues;
40
+ }
41
+ //# sourceMappingURL=plugin-dependency-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-dependency-checker.js","sourceRoot":"","sources":["../../../src/parser/definition-issue-checkers/plugin-dependency-checker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EACL,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAAqC;IAErC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAChD,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC;IACtC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;IAChD,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,MAAM,WAAW,GAAG,wBAAwB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAE1E,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,0BAA0B,CAAC,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;QAE5E,KAAK,MAAM,WAAW,IAAI,SAAS,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CACT,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;gBAC1C,OAAO,EAAE,WAAW,QAAQ,CAAC,WAAW,eAAe,WAAW,CAAC,WAAW,iBAAiB;gBAC/F,QAAQ,EAAE,OAAO;gBACjB,GAAG,EAAE;oBACH,KAAK,EAAE,UAAU,WAAW,CAAC,WAAW,EAAE;oBAC1C,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;wBACrB,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;oBACjE,CAAC;iBACF;aACF,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { ProjectDefinitionContainer } from '#src/definition/project-definition-container.js';
2
+ import type { DefinitionIssue } from '#src/schema/creator/definition-issue-types.js';
3
+ /**
4
+ * Checks that base plugins with managed implementations have a valid
5
+ * implementation plugin selected and enabled.
6
+ *
7
+ * A "base plugin" is one that has managed plugins (e.g., auth manages
8
+ * better-auth and local-auth). These base plugins store their selected
9
+ * implementation in `config.implementationPluginKey`.
10
+ *
11
+ * Produces warning-severity issues (blocks sync, allows save) because
12
+ * the initial enable flow requires saving before the implementation
13
+ * can be configured.
14
+ */
15
+ export declare function checkPluginImplementations(container: ProjectDefinitionContainer): DefinitionIssue[];
16
+ //# sourceMappingURL=plugin-implementation-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-implementation-checker.d.ts","sourceRoot":"","sources":["../../../src/parser/definition-issue-checkers/plugin-implementation-checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAWrF;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,0BAA0B,GACpC,eAAe,EAAE,CAsEnB"}
@@ -0,0 +1,69 @@
1
+ import { PluginUtils } from '#src/definition/plugins/plugin-utils.js';
2
+ import { getManagedPluginsForPlugin, getPluginMetadataByKey, } from '#src/plugins/imports/utils.js';
3
+ import { pluginEntityType } from '#src/schema/plugins/entity-types.js';
4
+ import { createEntityIssue } from '../definition-issue-utils.js';
5
+ /**
6
+ * Checks that base plugins with managed implementations have a valid
7
+ * implementation plugin selected and enabled.
8
+ *
9
+ * A "base plugin" is one that has managed plugins (e.g., auth manages
10
+ * better-auth and local-auth). These base plugins store their selected
11
+ * implementation in `config.implementationPluginKey`.
12
+ *
13
+ * Produces warning-severity issues (blocks sync, allows save) because
14
+ * the initial enable flow requires saving before the implementation
15
+ * can be configured.
16
+ */
17
+ export function checkPluginImplementations(container) {
18
+ const { definition, parserContext } = container;
19
+ const { pluginStore } = parserContext;
20
+ const enabledPlugins = definition.plugins ?? [];
21
+ const issues = [];
22
+ for (const plugin of enabledPlugins) {
23
+ const key = pluginEntityType.keyFromId(plugin.id);
24
+ const metadata = getPluginMetadataByKey(pluginStore, key);
25
+ if (!metadata) {
26
+ continue;
27
+ }
28
+ // Only check base plugins that have managed plugins (implementations)
29
+ const managedPlugins = getManagedPluginsForPlugin(pluginStore, key);
30
+ if (managedPlugins.length === 0) {
31
+ continue;
32
+ }
33
+ // Duck-type check for implementationPluginKey in config
34
+ const { config } = plugin;
35
+ if (typeof config !== 'object' ||
36
+ config === null ||
37
+ !('implementationPluginKey' in config)) {
38
+ continue;
39
+ }
40
+ const implKey = config.implementationPluginKey;
41
+ if (typeof implKey !== 'string' || implKey === '') {
42
+ issues.push(createEntityIssue(container, plugin.id, [], {
43
+ message: `Plugin '${metadata.displayName}' requires an implementation to be selected`,
44
+ severity: 'warning',
45
+ }));
46
+ continue;
47
+ }
48
+ // Check if the selected implementation is enabled
49
+ const implPlugin = PluginUtils.byKey(definition, implKey);
50
+ if (!implPlugin) {
51
+ const implMetadata = getPluginMetadataByKey(pluginStore, implKey);
52
+ const implDisplayName = implMetadata?.displayName ?? implKey;
53
+ issues.push(createEntityIssue(container, plugin.id, [], {
54
+ message: `Plugin '${metadata.displayName}' has implementation '${implDisplayName}' selected but it is not enabled`,
55
+ severity: 'warning',
56
+ fix: implMetadata
57
+ ? {
58
+ label: `Enable ${implDisplayName}`,
59
+ applySetter: (draft) => {
60
+ PluginUtils.setPluginConfig(draft, implMetadata, {}, container);
61
+ },
62
+ }
63
+ : undefined,
64
+ }));
65
+ }
66
+ }
67
+ return issues;
68
+ }
69
+ //# sourceMappingURL=plugin-implementation-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-implementation-checker.js","sourceRoot":"","sources":["../../../src/parser/definition-issue-checkers/plugin-implementation-checker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,0BAA0B,CACxC,SAAqC;IAErC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAChD,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC;IACtC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;IAChD,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,SAAS;QACX,CAAC;QAED,sEAAsE;QACtE,MAAM,cAAc,GAAG,0BAA0B,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACpE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QAED,wDAAwD;QACxD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAC1B,IACE,OAAO,MAAM,KAAK,QAAQ;YAC1B,MAAM,KAAK,IAAI;YACf,CAAC,CAAC,yBAAyB,IAAI,MAAM,CAAC,EACtC,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAI,MAAkC,CAAC,uBAAuB,CAAC;QAE5E,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CACT,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;gBAC1C,OAAO,EAAE,WAAW,QAAQ,CAAC,WAAW,6CAA6C;gBACrF,QAAQ,EAAE,SAAS;aACpB,CAAC,CACH,CAAC;YACF,SAAS;QACX,CAAC;QAED,kDAAkD;QAClD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,YAAY,GAAG,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAClE,MAAM,eAAe,GAAG,YAAY,EAAE,WAAW,IAAI,OAAO,CAAC;YAE7D,MAAM,CAAC,IAAI,CACT,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;gBAC1C,OAAO,EAAE,WAAW,QAAQ,CAAC,WAAW,yBAAyB,eAAe,kCAAkC;gBAClH,QAAQ,EAAE,SAAS;gBACnB,GAAG,EAAE,YAAY;oBACf,CAAC,CAAC;wBACE,KAAK,EAAE,UAAU,eAAe,EAAE;wBAClC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;4BACrB,WAAW,CAAC,eAAe,CACzB,KAAK,EACL,YAAY,EACZ,EAAE,EACF,SAAS,CACV,CAAC;wBACJ,CAAC;qBACF;oBACH,CAAC,CAAC,SAAS;aACd,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}