@baseplate-dev/project-builder-lib 0.5.1 → 0.5.2

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 (121) hide show
  1. package/CHANGELOG.md +464 -0
  2. package/dist/definition/model/model-field-utils.js +4 -4
  3. package/dist/definition/model/model-field-utils.js.map +1 -1
  4. package/dist/definition/model/model-utils.js +3 -3
  5. package/dist/definition/model/model-utils.js.map +1 -1
  6. package/dist/migrations/index.d.ts.map +1 -1
  7. package/dist/migrations/index.js +3 -1
  8. package/dist/migrations/index.js.map +1 -1
  9. package/dist/migrations/migration-007-model-graphql.js +1 -1
  10. package/dist/migrations/migration-007-model-graphql.js.map +1 -1
  11. package/dist/migrations/migration-020-move-redis-to-infrastructure.js +1 -1
  12. package/dist/migrations/migration-020-move-redis-to-infrastructure.js.map +1 -1
  13. package/dist/migrations/migration-021-migrate-bullmq-to-plugin.js +1 -1
  14. package/dist/migrations/migration-021-migrate-bullmq-to-plugin.js.map +1 -1
  15. package/dist/migrations/migration-023-assign-app-ports.d.ts +34 -0
  16. package/dist/migrations/migration-023-assign-app-ports.d.ts.map +1 -0
  17. package/dist/migrations/migration-023-assign-app-ports.js +49 -0
  18. package/dist/migrations/migration-023-assign-app-ports.js.map +1 -0
  19. package/dist/plugins/spec/config-spec.js +2 -2
  20. package/dist/plugins/spec/config-spec.js.map +1 -1
  21. package/dist/references/collect-refs.d.ts +5 -1
  22. package/dist/references/collect-refs.d.ts.map +1 -1
  23. package/dist/references/collect-refs.js +20 -1
  24. package/dist/references/collect-refs.js.map +1 -1
  25. package/dist/references/definition-ref-builder.d.ts.map +1 -1
  26. package/dist/references/expression-types.d.ts +152 -0
  27. package/dist/references/expression-types.d.ts.map +1 -0
  28. package/dist/references/expression-types.js +46 -0
  29. package/dist/references/expression-types.js.map +1 -0
  30. package/dist/references/extend-parser-context-with-refs.d.ts +13 -0
  31. package/dist/references/extend-parser-context-with-refs.d.ts.map +1 -1
  32. package/dist/references/extend-parser-context-with-refs.js +39 -1
  33. package/dist/references/extend-parser-context-with-refs.js.map +1 -1
  34. package/dist/references/extract-definition-refs.d.ts +6 -3
  35. package/dist/references/extract-definition-refs.d.ts.map +1 -1
  36. package/dist/references/extract-definition-refs.js +25 -4
  37. package/dist/references/extract-definition-refs.js.map +1 -1
  38. package/dist/references/index.d.ts +1 -0
  39. package/dist/references/index.d.ts.map +1 -1
  40. package/dist/references/index.js +1 -0
  41. package/dist/references/index.js.map +1 -1
  42. package/dist/references/markers.d.ts +23 -0
  43. package/dist/references/markers.d.ts.map +1 -1
  44. package/dist/references/markers.js +16 -0
  45. package/dist/references/markers.js.map +1 -1
  46. package/dist/references/resolve-zod-ref-payload-names.d.ts.map +1 -1
  47. package/dist/references/resolve-zod-ref-payload-names.js +1 -0
  48. package/dist/references/resolve-zod-ref-payload-names.js.map +1 -1
  49. package/dist/references/strip-ref-markers.d.ts +3 -3
  50. package/dist/references/strip-ref-markers.d.ts.map +1 -1
  51. package/dist/references/strip-ref-markers.js +7 -4
  52. package/dist/references/strip-ref-markers.js.map +1 -1
  53. package/dist/references/types.d.ts +5 -0
  54. package/dist/references/types.d.ts.map +1 -1
  55. package/dist/references/types.js.map +1 -1
  56. package/dist/schema/apps/backend/index.d.ts +2 -0
  57. package/dist/schema/apps/backend/index.d.ts.map +1 -1
  58. package/dist/schema/apps/backend/index.js +1 -0
  59. package/dist/schema/apps/backend/index.js.map +1 -1
  60. package/dist/schema/apps/base.d.ts +2 -0
  61. package/dist/schema/apps/base.d.ts.map +1 -1
  62. package/dist/schema/apps/base.js +1 -0
  63. package/dist/schema/apps/base.js.map +1 -1
  64. package/dist/schema/apps/web/admin/sections/crud-actions/types.d.ts.map +1 -1
  65. package/dist/schema/apps/web/web-app.d.ts +2 -0
  66. package/dist/schema/apps/web/web-app.d.ts.map +1 -1
  67. package/dist/schema/apps/web/web-app.js +1 -0
  68. package/dist/schema/apps/web/web-app.js.map +1 -1
  69. package/dist/schema/creator/types.d.ts +6 -1
  70. package/dist/schema/creator/types.d.ts.map +1 -1
  71. package/dist/schema/models/authorizer/authorizer-expression-acorn-parser.d.ts +30 -0
  72. package/dist/schema/models/authorizer/authorizer-expression-acorn-parser.d.ts.map +1 -0
  73. package/dist/schema/models/authorizer/authorizer-expression-acorn-parser.js +291 -0
  74. package/dist/schema/models/authorizer/authorizer-expression-acorn-parser.js.map +1 -0
  75. package/dist/schema/models/authorizer/authorizer-expression-ast.d.ts +159 -0
  76. package/dist/schema/models/authorizer/authorizer-expression-ast.d.ts.map +1 -0
  77. package/dist/schema/models/authorizer/authorizer-expression-ast.js +31 -0
  78. package/dist/schema/models/authorizer/authorizer-expression-ast.js.map +1 -0
  79. package/dist/schema/models/authorizer/authorizer-expression-parser.d.ts +77 -0
  80. package/dist/schema/models/authorizer/authorizer-expression-parser.d.ts.map +1 -0
  81. package/dist/schema/models/authorizer/authorizer-expression-parser.js +147 -0
  82. package/dist/schema/models/authorizer/authorizer-expression-parser.js.map +1 -0
  83. package/dist/schema/models/authorizer/authorizer-expression-validator.d.ts +51 -0
  84. package/dist/schema/models/authorizer/authorizer-expression-validator.d.ts.map +1 -0
  85. package/dist/schema/models/authorizer/authorizer-expression-validator.js +125 -0
  86. package/dist/schema/models/authorizer/authorizer-expression-validator.js.map +1 -0
  87. package/dist/schema/models/authorizer/authorizer.d.ts +59 -0
  88. package/dist/schema/models/authorizer/authorizer.d.ts.map +1 -0
  89. package/dist/schema/models/authorizer/authorizer.js +56 -0
  90. package/dist/schema/models/authorizer/authorizer.js.map +1 -0
  91. package/dist/schema/models/authorizer/index.d.ts +7 -0
  92. package/dist/schema/models/authorizer/index.d.ts.map +1 -0
  93. package/dist/schema/models/authorizer/index.js +7 -0
  94. package/dist/schema/models/authorizer/index.js.map +1 -0
  95. package/dist/schema/models/authorizer/types.d.ts +6 -0
  96. package/dist/schema/models/authorizer/types.d.ts.map +1 -0
  97. package/dist/schema/models/authorizer/types.js +8 -0
  98. package/dist/schema/models/authorizer/types.js.map +1 -0
  99. package/dist/schema/models/index.d.ts +2 -860
  100. package/dist/schema/models/index.d.ts.map +1 -1
  101. package/dist/schema/models/index.js +2 -222
  102. package/dist/schema/models/index.js.map +1 -1
  103. package/dist/schema/models/models.d.ts +914 -0
  104. package/dist/schema/models/models.d.ts.map +1 -0
  105. package/dist/schema/models/models.js +225 -0
  106. package/dist/schema/models/models.js.map +1 -0
  107. package/dist/schema/project-definition.d.ts +46 -2
  108. package/dist/schema/project-definition.d.ts.map +1 -1
  109. package/dist/schema/settings/settings.d.ts +2 -2
  110. package/dist/schema/settings/theme.d.ts +3 -3
  111. package/dist/tools/model-merger/model-merger.js +1 -1
  112. package/dist/tools/model-merger/model-merger.js.map +1 -1
  113. package/dist/utils/color-conversions.js +1 -1
  114. package/dist/utils/color-conversions.js.map +1 -1
  115. package/dist/web/components/feature-combobox-field.d.ts.map +1 -1
  116. package/dist/web/components/feature-combobox-field.js +1 -1
  117. package/dist/web/components/feature-combobox-field.js.map +1 -1
  118. package/dist/web/components/model-combobox-field.d.ts.map +1 -1
  119. package/dist/web/components/model-combobox-field.js +1 -1
  120. package/dist/web/components/model-combobox-field.js.map +1 -1
  121. package/package.json +10 -9
@@ -1 +1 @@
1
- {"version":3,"file":"migration-021-migrate-bullmq-to-plugin.js","sourceRoot":"","sources":["../../src/migrations/migration-021-migrate-bullmq-to-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAqCnD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,qBAAqB,CAGpE;IACA,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,mEAAmE;IACrE,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,oDAAoD;QACpD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CACpC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,eAAe,KAAK,IAAI,CAChE,CAAC;QAEF,uCAAuC;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACpC,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,iBAAiB,IAAI,GAAG,EAAE,CAAC;gBACvD,MAAM,EAAE,eAAe,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;gBAC5C,OAAO,IAAqB,CAAC;YAC/B,CAAC;YACD,OAAO,GAAoB,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,8CAA8C;QAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1D,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,aAAa,GAAG,yCAAyC,CAAC;YAChE,MAAM,cAAc,GAAG,0CAA0C,CAAC;YAElE,iCAAiC;YACjC,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;YAE1E,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,aAAa;oBACjB,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,6BAA6B;oBAC1C,OAAO,EAAE,OAAO;oBAChB,MAAM,EAAE;wBACN,uBAAuB,EAAE,mCAAmC;qBAC7D;iBACF,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,gBAAgB,CAAC,GAAG;oBAC1B,GAAG,OAAO,CAAC,gBAAgB,CAAC;oBAC5B,MAAM,EAAE;wBACN,GAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC,MAAiB;wBAC/C,uBAAuB,EAAE,mCAAmC;qBAC7D;iBACF,CAAC;YACJ,CAAC;YAED,wCAAwC;YACxC,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAC/B,CAAC;YAEF,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,cAAc;oBAClB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6BAA6B;oBAC1C,OAAO,EAAE,OAAO;oBAChB,MAAM,EAAE;wBACN,aAAa,EAAE;4BACb,eAAe,EAAE,CAAC;yBACnB;qBACF;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,GAAG,MAAM;YACT,IAAI;YACJ,OAAO;SACK,CAAC;IACjB,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"migration-021-migrate-bullmq-to-plugin.js","sourceRoot":"","sources":["../../src/migrations/migration-021-migrate-bullmq-to-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAqCnD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,qBAAqB,CAGpE;IACA,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,mEAAmE;IACrE,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,oDAAoD;QACpD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CACpC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,eAAe,KAAK,IAAI,CAChE,CAAC;QAEF,uCAAuC;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACpC,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,iBAAiB,IAAI,GAAG,EAAE,CAAC;gBACvD,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;gBAC3D,OAAO,IAAqB,CAAC;YAC/B,CAAC;YACD,OAAO,GAAoB,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,8CAA8C;QAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1D,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,aAAa,GAAG,yCAAyC,CAAC;YAChE,MAAM,cAAc,GAAG,0CAA0C,CAAC;YAElE,iCAAiC;YACjC,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;YAE1E,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,aAAa;oBACjB,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,6BAA6B;oBAC1C,OAAO,EAAE,OAAO;oBAChB,MAAM,EAAE;wBACN,uBAAuB,EAAE,mCAAmC;qBAC7D;iBACF,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,gBAAgB,CAAC,GAAG;oBAC1B,GAAG,OAAO,CAAC,gBAAgB,CAAC;oBAC5B,MAAM,EAAE;wBACN,GAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC,MAAiB;wBAC/C,uBAAuB,EAAE,mCAAmC;qBAC7D;iBACF,CAAC;YACJ,CAAC;YAED,wCAAwC;YACxC,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAC/B,CAAC;YAEF,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,cAAc;oBAClB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6BAA6B;oBAC1C,OAAO,EAAE,OAAO;oBAChB,MAAM,EAAE;wBACN,aAAa,EAAE;4BACb,eAAe,EAAE,CAAC;yBACnB;qBACF;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,GAAG,MAAM;YACT,IAAI;YACJ,OAAO;SACK,CAAC;IACjB,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ interface AppConfig {
2
+ id: string;
3
+ name: string;
4
+ type: 'backend' | 'web';
5
+ devPort?: number;
6
+ [key: string]: unknown;
7
+ }
8
+ interface Settings {
9
+ general: {
10
+ portOffset: number;
11
+ [key: string]: unknown;
12
+ };
13
+ [key: string]: unknown;
14
+ }
15
+ interface OldConfig {
16
+ apps?: AppConfig[];
17
+ settings: Settings;
18
+ [key: string]: unknown;
19
+ }
20
+ interface NewConfig {
21
+ apps?: AppConfig[];
22
+ settings: Settings;
23
+ [key: string]: unknown;
24
+ }
25
+ /**
26
+ * Migration to assign development ports to apps
27
+ *
28
+ * This migration assigns devPort to all existing apps based on their type:
29
+ * - Backend apps: portOffset + 1
30
+ * - Web apps: portOffset + 30 + alphabeticalIndex
31
+ */
32
+ export declare const migration023AssignAppPorts: import("./types.js").SchemaMigration<OldConfig, NewConfig>;
33
+ export {};
34
+ //# sourceMappingURL=migration-023-assign-app-ports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-023-assign-app-ports.d.ts","sourceRoot":"","sources":["../../src/migrations/migration-023-assign-app-ports.ts"],"names":[],"mappings":"AAIA,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,KAAK,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,QAAQ;IAChB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,SAAS;IACjB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,SAAS;IACjB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,4DAgDrC,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { compareStrings } from '@baseplate-dev/utils';
2
+ import { createSchemaMigration } from './types.js';
3
+ /**
4
+ * Migration to assign development ports to apps
5
+ *
6
+ * This migration assigns devPort to all existing apps based on their type:
7
+ * - Backend apps: portOffset + 1
8
+ * - Web apps: portOffset + 30 + alphabeticalIndex
9
+ */
10
+ export const migration023AssignAppPorts = createSchemaMigration({
11
+ version: 23,
12
+ name: 'assignAppPorts',
13
+ description: 'Assign development ports to all apps',
14
+ migrate: (config) => {
15
+ if (!config.apps) {
16
+ return config;
17
+ }
18
+ const { portOffset } = config.settings.general;
19
+ // Sort web apps alphabetically to assign ports deterministically
20
+ const webApps = config.apps
21
+ .filter((app) => app.type === 'web')
22
+ .toSorted((a, b) => compareStrings(a.name, b.name));
23
+ const updatedApps = config.apps.map((app) => {
24
+ // Skip if devPort already assigned
25
+ if (app.devPort !== undefined) {
26
+ return app;
27
+ }
28
+ // Assign devPort based on app type
29
+ switch (app.type) {
30
+ case 'backend': {
31
+ return { ...app, devPort: portOffset + 1 };
32
+ }
33
+ case 'web': {
34
+ const webAppIndex = webApps.findIndex((webApp) => webApp.id === app.id);
35
+ return { ...app, devPort: portOffset + 30 + webAppIndex };
36
+ }
37
+ default: {
38
+ // Other app types don't get devPort
39
+ return app;
40
+ }
41
+ }
42
+ });
43
+ return {
44
+ ...config,
45
+ apps: updatedApps,
46
+ };
47
+ },
48
+ });
49
+ //# sourceMappingURL=migration-023-assign-app-ports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-023-assign-app-ports.js","sourceRoot":"","sources":["../../src/migrations/migration-023-assign-app-ports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AA8BnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAAqB,CAG7D;IACA,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,sCAAsC;IACnD,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAE/C,iEAAiE;QACjE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI;aACxB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC;aACnC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1C,mCAAmC;YACnC,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,GAAG,CAAC;YACb,CAAC;YAED,mCAAmC;YACnC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;gBACjB,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC;gBAC7C,CAAC;gBACD,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CACnC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CACjC,CAAC;oBACF,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,UAAU,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;gBAC5D,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACR,oCAAoC;oBACpC,OAAO,GAAG,CAAC;gBACb,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,MAAM;YACT,IAAI,EAAE,WAAW;SAClB,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -2,7 +2,7 @@ import { mapValuesOfMap } from '@baseplate-dev/utils';
2
2
  import { createFieldMapSpec } from '../utils/create-field-map-spec.js';
3
3
  function sortAndValidateMigrations(migrations, pluginKey) {
4
4
  // make sure migrations are sorted by version and they are all unique
5
- const sortedMigrations = [...migrations].sort((a, b) => a.version - b.version);
5
+ const sortedMigrations = [...migrations].toSorted((a, b) => a.version - b.version);
6
6
  if (sortedMigrations.some((m) => m.version <= 0)) {
7
7
  throw new Error(`All migrations for plugin ${pluginKey} must have a positive version`);
8
8
  }
@@ -35,7 +35,7 @@ export const pluginConfigSpec = createFieldMapSpec('core/plugin-config', (t) =>
35
35
  getMigrations: (pluginKey) => validatedMigrations.get(pluginKey),
36
36
  getLastMigrationVersion: (pluginKey) => {
37
37
  const migrations = values.migrations.get(pluginKey);
38
- return migrations?.[migrations.length - 1]?.version;
38
+ return migrations?.at(-1)?.version;
39
39
  },
40
40
  };
41
41
  },
@@ -1 +1 @@
1
- {"version":3,"file":"config-spec.js","sourceRoot":"","sources":["../../../src/plugins/spec/config-spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAuBvE,SAAS,yBAAyB,CAChC,UAAmC,EACnC,SAAiB;IAEjB,qEAAqE;IACrE,MAAM,gBAAgB,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAChC,CAAC;IACF,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,6BAA6B,SAAS,+BAA+B,CACtE,CAAC;IACJ,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACrD,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CACb,6BAA6B,SAAS,6BAA6B,CACpE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAChD,oBAAoB,EACpB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,GAAG,EAAmC;IACjD,UAAU,EAAE,CAAC,CAAC,GAAG,EAAmC;CACrD,CAAC,EACF;IACE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;QACd,MAAM,mBAAmB,GAAG,cAAc,CACxC,MAAM,CAAC,UAAU,EACjB,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,CACxB,yBAAyB,CAAC,UAAU,EAAE,SAAS,CAAC,CACnD,CAAC;QACF,OAAO;YACL,gBAAgB,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YACtE,aAAa,EAAE,CAAC,SAAiB,EAAE,EAAE,CACnC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC;YACpC,uBAAuB,EAAE,CAAC,SAAiB,EAAE,EAAE;gBAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACpD,OAAO,UAAU,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;YACtD,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CACF,CAAC"}
1
+ {"version":3,"file":"config-spec.js","sourceRoot":"","sources":["../../../src/plugins/spec/config-spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAuBvE,SAAS,yBAAyB,CAChC,UAAmC,EACnC,SAAiB;IAEjB,qEAAqE;IACrE,MAAM,gBAAgB,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,QAAQ,CAC/C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAChC,CAAC;IACF,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,6BAA6B,SAAS,+BAA+B,CACtE,CAAC;IACJ,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACrD,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CACb,6BAA6B,SAAS,6BAA6B,CACpE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAChD,oBAAoB,EACpB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,GAAG,EAAmC;IACjD,UAAU,EAAE,CAAC,CAAC,GAAG,EAAmC;CACrD,CAAC,EACF;IACE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;QACd,MAAM,mBAAmB,GAAG,cAAc,CACxC,MAAM,CAAC,UAAU,EACjB,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,CACxB,yBAAyB,CAAC,UAAU,EAAE,SAAS,CAAC,CACnD,CAAC;QACF,OAAO;YACL,gBAAgB,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YACtE,aAAa,EAAE,CAAC,SAAiB,EAAE,EAAE,CACnC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC;YACpC,uBAAuB,EAAE,CAAC,SAAiB,EAAE,EAAE;gBAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACpD,OAAO,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;YACrC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CACF,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { DefinitionEntityAnnotation, DefinitionReferenceAnnotation, DefinitionSlotAnnotation } from './markers.js';
1
+ import type { DefinitionEntityAnnotation, DefinitionExpressionAnnotation, DefinitionReferenceAnnotation, DefinitionSlotAnnotation } from './markers.js';
2
2
  /**
3
3
  * Result of collecting refs before slot resolution.
4
4
  */
@@ -15,6 +15,10 @@ export interface CollectedRefs {
15
15
  * All slots from the definition.
16
16
  */
17
17
  slots: DefinitionSlotAnnotation[];
18
+ /**
19
+ * All expression annotations from the definition.
20
+ */
21
+ expressions: DefinitionExpressionAnnotation[];
18
22
  }
19
23
  export declare function collectRefs(value: unknown): CollectedRefs;
20
24
  //# sourceMappingURL=collect-refs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collect-refs.d.ts","sourceRoot":"","sources":["../../src/references/collect-refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAE1B,6BAA6B,EAC7B,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAQtB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC;;OAEG;IACH,UAAU,EAAE,6BAA6B,EAAE,CAAC;IAC5C;;OAEG;IACH,KAAK,EAAE,wBAAwB,EAAE,CAAC;CACnC;AA4ED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAQzD"}
1
+ {"version":3,"file":"collect-refs.d.ts","sourceRoot":"","sources":["../../src/references/collect-refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,8BAA8B,EAE9B,6BAA6B,EAC7B,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAStB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC;;OAEG;IACH,UAAU,EAAE,6BAA6B,EAAE,CAAC;IAC5C;;OAEG;IACH,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC;;OAEG;IACH,WAAW,EAAE,8BAA8B,EAAE,CAAC;CAC/C;AA8FD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CASzD"}
@@ -1,4 +1,4 @@
1
- import { DefinitionReferenceMarker, REF_ANNOTATIONS_MARKER_SYMBOL, } from './markers.js';
1
+ import { DefinitionExpressionMarker, DefinitionReferenceMarker, REF_ANNOTATIONS_MARKER_SYMBOL, } from './markers.js';
2
2
  function collectRefAnnotationsRecursive(pathPrefix, value) {
3
3
  if (value === undefined || value === null)
4
4
  return undefined;
@@ -9,12 +9,28 @@ function collectRefAnnotationsRecursive(pathPrefix, value) {
9
9
  { ...value.reference, path: [...pathPrefix, ...value.reference.path] },
10
10
  ],
11
11
  slots: [],
12
+ expressions: [],
13
+ };
14
+ }
15
+ if (value instanceof DefinitionExpressionMarker) {
16
+ return {
17
+ entities: [],
18
+ references: [],
19
+ slots: [],
20
+ expressions: [
21
+ {
22
+ ...value.expression,
23
+ value: value.value,
24
+ path: [...pathPrefix, ...value.expression.path],
25
+ },
26
+ ],
12
27
  };
13
28
  }
14
29
  const collected = {
15
30
  entities: [],
16
31
  references: [],
17
32
  slots: [],
33
+ expressions: [],
18
34
  };
19
35
  if (Array.isArray(value)) {
20
36
  for (const [i, element] of value.entries()) {
@@ -23,6 +39,7 @@ function collectRefAnnotationsRecursive(pathPrefix, value) {
23
39
  collected.entities.push(...childCollected.entities);
24
40
  collected.references.push(...childCollected.references);
25
41
  collected.slots.push(...childCollected.slots);
42
+ collected.expressions.push(...childCollected.expressions);
26
43
  }
27
44
  }
28
45
  return collected;
@@ -51,6 +68,7 @@ function collectRefAnnotationsRecursive(pathPrefix, value) {
51
68
  collected.entities.push(...childCollected.entities);
52
69
  collected.references.push(...childCollected.references);
53
70
  collected.slots.push(...childCollected.slots);
71
+ collected.expressions.push(...childCollected.expressions);
54
72
  }
55
73
  }
56
74
  return collected;
@@ -62,6 +80,7 @@ export function collectRefs(value) {
62
80
  entities: [],
63
81
  references: [],
64
82
  slots: [],
83
+ expressions: [],
65
84
  });
66
85
  }
67
86
  //# sourceMappingURL=collect-refs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"collect-refs.js","sourceRoot":"","sources":["../../src/references/collect-refs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collect-refs.js","sourceRoot":"","sources":["../../src/references/collect-refs.ts"],"names":[],"mappings":"AASA,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AAwBtB,SAAS,8BAA8B,CACrC,UAAyB,EACzB,KAAc;IAEd,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;QAC/C,OAAO;YACL,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE;gBACV,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;aACvE;YACD,KAAK,EAAE,EAAE;YACT,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,YAAY,0BAA0B,EAAE,CAAC;QAChD,OAAO;YACL,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;YACT,WAAW,EAAE;gBACX;oBACE,GAAG,KAAK,CAAC,UAAU;oBACnB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;iBAChD;aACF;SACF,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAkB;QAC/B,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,EAAE;QACT,WAAW,EAAE,EAAE;KAChB,CAAC;IACF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3C,MAAM,cAAc,GAAG,8BAA8B,CACnD,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC,EAClB,OAAO,CACR,CAAC;YACF,IAAI,cAAc,EAAE,CAAC;gBACnB,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACpD,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;gBACxD,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC9C,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,6BAA6B,IAAI,KAAK,EAAE,CAAC;YAC3C,MAAM,WAAW,GAAG,KAAK,CACvB,6BAA6B,CACF,CAAC;YAC9B,SAAS,CAAC,QAAQ,CAAC,IAAI,CACrB,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACvC,GAAG,MAAM;gBACT,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;aACtC,CAAC,CAAC,CACJ,CAAC;YACF,SAAS,CAAC,UAAU,CAAC,IAAI,CACvB,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBAC5C,GAAG,SAAS;gBACZ,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC;aACzC,CAAC,CAAC,CACJ,CAAC;YACF,SAAS,CAAC,KAAK,CAAC,IAAI,CAClB,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAClC,GAAG,IAAI;gBACP,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;aACpC,CAAC,CAAC,CACJ,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,SAAS;YACtC,MAAM,cAAc,GAAG,8BAA8B,CACnD,CAAC,GAAG,UAAU,EAAE,GAAG,CAAC,EACpB,UAAU,CACX,CAAC;YACF,IAAI,cAAc,EAAE,CAAC;gBACnB,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACpD,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;gBACxD,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC9C,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,CACL,8BAA8B,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI;QAC3C,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,EAAE;QACT,WAAW,EAAE,EAAE;KAChB,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"definition-ref-builder.d.ts","sourceRoot":"","sources":["../../src/references/definition-ref-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"definition-ref-builder.d.ts","sourceRoot":"","sources":["../../src/references/definition-ref-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ import type { z } from 'zod';
2
+ import type { RefContextSlot } from './ref-context-slot.js';
3
+ import type { DefinitionEntityType, ReferencePath } from './types.js';
4
+ /**
5
+ * A warning from validating a ref expression.
6
+ * Warnings are non-blocking - they don't prevent loading the project definition.
7
+ */
8
+ export interface RefExpressionWarning {
9
+ /** Warning message */
10
+ message: string;
11
+ /** Path within the expression where the warning occurred */
12
+ expressionPath?: string;
13
+ /** Start position in the expression for inline highlighting */
14
+ start?: number;
15
+ /** End position in the expression for inline highlighting */
16
+ end?: number;
17
+ }
18
+ /**
19
+ * A dependency found in a ref expression.
20
+ * Used for tracking which entities the expression references,
21
+ * enabling rename handling.
22
+ */
23
+ export interface RefExpressionDependency {
24
+ /** The type of entity being referenced */
25
+ entityType: DefinitionEntityType;
26
+ /** The ID of the entity being referenced */
27
+ entityId: string;
28
+ /** Position in the expression for rename updates */
29
+ start?: number;
30
+ end?: number;
31
+ }
32
+ /**
33
+ * Slot map type for expressions - maps slot keys to RefContextSlot instances.
34
+ * Similar to RefContextSlotMap but used for expression parser slots.
35
+ */
36
+ export type ExpressionSlotMap<T extends Record<string, DefinitionEntityType> = Record<string, never>> = {
37
+ [K in keyof T]: RefContextSlot<T[K]>;
38
+ };
39
+ /**
40
+ * Resolved slot paths after slot resolution.
41
+ * Maps slot keys to their resolved paths in the definition.
42
+ */
43
+ export type ResolvedExpressionSlots<T extends Record<string, DefinitionEntityType> = Record<string, never>> = {
44
+ [K in keyof T]: ReferencePath;
45
+ };
46
+ /**
47
+ * A pluggable parser for ref expressions.
48
+ *
49
+ * The parser is format-agnostic - the core references system
50
+ * doesn't know or care what format the expressions are in. The parser
51
+ * handles all parsing, validation, and rename handling.
52
+ *
53
+ * Parsers can declare required slots via the TRequiredSlots generic parameter.
54
+ * When a parser requires slots, TypeScript enforces that they are provided
55
+ * when calling `withExpression()`.
56
+ *
57
+ * @typeParam TValue - The type of the raw expression value (e.g., string for TS expressions)
58
+ * @typeParam TParseResult - The type of the parsed result (e.g., AST for TS expressions)
59
+ * @typeParam TRequiredSlots - Record of required slot names to entity types
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * // A simple parser with no required slots
64
+ * class StubParser extends RefExpressionParser<string, undefined> {
65
+ * readonly name = 'stub';
66
+ * parse(): undefined { return undefined; }
67
+ * getWarnings(): [] { return []; }
68
+ * getDependencies(): [] { return []; }
69
+ * updateForRename(value: string): string { return value; }
70
+ * }
71
+ *
72
+ * // A parser that requires a model slot
73
+ * class AuthorizerParser extends RefExpressionParser<
74
+ * string,
75
+ * TsAst,
76
+ * { model: typeof modelEntityType }
77
+ * > {
78
+ * readonly name = 'authorizer';
79
+ * // TypeScript enforces slot requirement in withExpression()
80
+ * }
81
+ * ```
82
+ */
83
+ export declare abstract class RefExpressionParser<TValue = unknown, TParseResult = unknown, TRequiredSlots extends Record<string, DefinitionEntityType> = Record<string, never>> {
84
+ /** Unique name for this parser type (used for serialization) */
85
+ abstract readonly name: string;
86
+ /**
87
+ * Zod schema for validating the expression value.
88
+ * This schema is used by `withExpression()` for input validation.
89
+ *
90
+ * @returns A Zod schema that validates the raw expression value
91
+ */
92
+ abstract readonly schema: z.ZodType<TValue>;
93
+ /**
94
+ * Parse the raw value and return the parse result.
95
+ * The result is cached on the marker for subsequent operations.
96
+ *
97
+ * @param value - The raw expression value
98
+ * @param projectDef - The project definition for context (typed as unknown to avoid circular reference)
99
+ * @returns The parsed result (type determined by parser)
100
+ */
101
+ abstract parse(value: TValue, projectDef: unknown): TParseResult;
102
+ /**
103
+ * Get validation warnings for the expression.
104
+ * Warnings are non-blocking - they don't prevent loading.
105
+ *
106
+ * @param value - The raw expression value
107
+ * @param parseResult - The cached parse result
108
+ * @param projectDef - The project definition for validation context (typed as unknown to avoid circular reference)
109
+ * @param resolvedSlots - The resolved slot paths for this expression
110
+ * @returns Array of warnings (empty if valid)
111
+ */
112
+ abstract getWarnings(value: TValue, parseResult: TParseResult, projectDef: unknown, resolvedSlots: ResolvedExpressionSlots<TRequiredSlots>): RefExpressionWarning[];
113
+ /**
114
+ * Get entity/field dependencies from the expression.
115
+ * Used for tracking what the expression references for rename handling.
116
+ *
117
+ * @param value - The raw expression value
118
+ * @param parseResult - The cached parse result
119
+ * @returns Array of dependencies
120
+ */
121
+ abstract getDependencies(value: TValue, parseResult: TParseResult): RefExpressionDependency[];
122
+ /**
123
+ * Update the expression when dependencies are renamed.
124
+ *
125
+ * @param value - The raw expression value
126
+ * @param parseResult - The cached parse result
127
+ * @param renames - Map of old entity ID to new name
128
+ * @returns The updated expression value
129
+ */
130
+ abstract updateForRename(value: TValue, parseResult: TParseResult, renames: Map<string, string>): TValue;
131
+ /**
132
+ * Phantom property for TRequiredSlots type inference.
133
+ * This is never actually used at runtime.
134
+ * @internal
135
+ */
136
+ readonly _requiredSlots?: TRequiredSlots;
137
+ }
138
+ /**
139
+ * Fully resolved expression - output from extractDefinitionRefs.
140
+ * Contains the expression value, parser instance, and resolved slot paths.
141
+ */
142
+ export interface DefinitionExpression {
143
+ /** Path to the expression in the definition */
144
+ path: ReferencePath;
145
+ /** The raw expression value */
146
+ value: unknown;
147
+ /** Reference to the parser that handles this expression */
148
+ parser: RefExpressionParser<any, any, any>;
149
+ /** Resolved slot paths (slot key → resolved path in definition) */
150
+ resolvedSlots: Record<string, ReferencePath>;
151
+ }
152
+ //# sourceMappingURL=expression-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-types.d.ts","sourceRoot":"","sources":["../../src/references/expression-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * A pluggable parser for ref expressions.
3
+ *
4
+ * The parser is format-agnostic - the core references system
5
+ * doesn't know or care what format the expressions are in. The parser
6
+ * handles all parsing, validation, and rename handling.
7
+ *
8
+ * Parsers can declare required slots via the TRequiredSlots generic parameter.
9
+ * When a parser requires slots, TypeScript enforces that they are provided
10
+ * when calling `withExpression()`.
11
+ *
12
+ * @typeParam TValue - The type of the raw expression value (e.g., string for TS expressions)
13
+ * @typeParam TParseResult - The type of the parsed result (e.g., AST for TS expressions)
14
+ * @typeParam TRequiredSlots - Record of required slot names to entity types
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // A simple parser with no required slots
19
+ * class StubParser extends RefExpressionParser<string, undefined> {
20
+ * readonly name = 'stub';
21
+ * parse(): undefined { return undefined; }
22
+ * getWarnings(): [] { return []; }
23
+ * getDependencies(): [] { return []; }
24
+ * updateForRename(value: string): string { return value; }
25
+ * }
26
+ *
27
+ * // A parser that requires a model slot
28
+ * class AuthorizerParser extends RefExpressionParser<
29
+ * string,
30
+ * TsAst,
31
+ * { model: typeof modelEntityType }
32
+ * > {
33
+ * readonly name = 'authorizer';
34
+ * // TypeScript enforces slot requirement in withExpression()
35
+ * }
36
+ * ```
37
+ */
38
+ export class RefExpressionParser {
39
+ /**
40
+ * Phantom property for TRequiredSlots type inference.
41
+ * This is never actually used at runtime.
42
+ * @internal
43
+ */
44
+ _requiredSlots;
45
+ }
46
+ //# sourceMappingURL=expression-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-types.js","sourceRoot":"","sources":["../../src/references/expression-types.ts"],"names":[],"mappings":"AAuDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,OAAgB,mBAAmB;IAyEvC;;;;OAIG;IACM,cAAc,CAAkB;CAC1C"}
@@ -3,6 +3,7 @@ import { z } from 'zod';
3
3
  import type { DefinitionEntityType } from '#src/index.js';
4
4
  import type { DefinitionSchemaCreatorOptions } from '#src/schema/index.js';
5
5
  import type { DefinitionEntityInput, DefinitionReferenceInput } from './definition-ref-builder.js';
6
+ import type { ExpressionSlotMap, RefExpressionParser } from './expression-types.js';
6
7
  import type { RefContextSlotDefinition, RefContextSlotMap } from './ref-context-slot.js';
7
8
  type ZodTypeWithOptional<T extends z.ZodType> = T extends z.ZodOptional ? z.ZodOptional<z.ZodType<z.output<T>, z.input<T>>> : T extends z.ZodDefault ? z.ZodDefault<z.ZodType<z.output<T>, z.input<T>>> : T extends z.ZodPrefault ? z.ZodPrefault<z.ZodType<z.output<T>, z.input<T>>> : z.ZodType<z.output<T>, z.input<T>>;
8
9
  export type WithRefType = <TEntityType extends DefinitionEntityType>(reference: DefinitionReferenceInput<TEntityType>) => z.ZodType<string, string>;
@@ -12,10 +13,22 @@ export type WithEntType = <TType extends z.ZodType, TEntityType extends Definiti
12
13
  * Slots provide type-safe context for parent-child entity relationships.
13
14
  */
14
15
  export type RefContextType = <TSlotDef extends RefContextSlotDefinition, TSchema extends z.ZodType>(slotDefinition: TSlotDef, schemaBuilder: (slots: RefContextSlotMap<TSlotDef>) => TSchema) => ZodTypeWithOptional<TSchema>;
16
+ /**
17
+ * Wraps a value with a ref expression parser for deferred validation.
18
+ * The parser handles all parsing, validation, and rename handling.
19
+ *
20
+ * If the parser declares required slots (via TRequiredSlots), they must be
21
+ * provided as the second argument. TypeScript enforces this at compile time.
22
+ */
23
+ export interface WithExpressionType {
24
+ <TValue, TParseResult>(parser: RefExpressionParser<TValue, TParseResult>): z.ZodType<TValue, TValue>;
25
+ <TValue, TParseResult, TRequiredSlots extends Record<string, DefinitionEntityType>>(parser: RefExpressionParser<TValue, TParseResult, TRequiredSlots>, slots: ExpressionSlotMap<TRequiredSlots>): z.ZodType<TValue, TValue>;
26
+ }
15
27
  export declare function extendParserContextWithRefs({ transformReferences, }: DefinitionSchemaCreatorOptions): {
16
28
  withRef: WithRefType;
17
29
  withEnt: WithEntType;
18
30
  refContext: RefContextType;
31
+ withExpression: WithExpressionType;
19
32
  };
20
33
  export {};
21
34
  //# sourceMappingURL=extend-parser-context-with-refs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extend-parser-context-with-refs.d.ts","sourceRoot":"","sources":["../../src/references/extend-parser-context-with-refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,KAAK,EACV,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,6BAA6B,CAAC;AAKrC,OAAO,KAAK,EAEV,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAS/B,KAAK,mBAAmB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,GACnE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GACjD,CAAC,SAAS,CAAC,CAAC,UAAU,GACpB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAChD,CAAC,SAAS,CAAC,CAAC,WAAW,GACrB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GACjD,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG,CAAC,WAAW,SAAS,oBAAoB,EACjE,SAAS,EAAE,wBAAwB,CAAC,WAAW,CAAC,KAC7C,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE/B,MAAM,MAAM,WAAW,GAAG,CACxB,KAAK,SAAS,CAAC,CAAC,OAAO,EACvB,WAAW,SAAS,oBAAoB,EACxC,OAAO,SAAS,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,SAAS,EAEnE,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,KACjE,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAEhC;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,QAAQ,SAAS,wBAAwB,EACzC,OAAO,SAAS,CAAC,CAAC,OAAO,EAEzB,cAAc,EAAE,QAAQ,EACxB,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,KAAK,OAAO,KAC3D,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAElC,wBAAgB,2BAA2B,CAAC,EAC1C,mBAAmB,GACpB,EAAE,8BAA8B,GAAG;IAClC,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,cAAc,CAAC;CAC5B,CA6JA"}
1
+ {"version":3,"file":"extend-parser-context-with-refs.d.ts","sourceRoot":"","sources":["../../src/references/extend-parser-context-with-refs.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { get } from 'es-toolkit/compat';
2
2
  import { z } from 'zod';
3
- import { DefinitionReferenceMarker, REF_ANNOTATIONS_MARKER_SYMBOL, } from './markers.js';
3
+ import { DefinitionExpressionMarker, DefinitionReferenceMarker, REF_ANNOTATIONS_MARKER_SYMBOL, } from './markers.js';
4
4
  import { createRefContextSlotMap } from './ref-context-slot.js';
5
5
  import { stripRefMarkers } from './strip-ref-markers.js';
6
6
  export function extendParserContextWithRefs({ transformReferences, }) {
@@ -126,10 +126,48 @@ export function extendParserContextWithRefs({ transformReferences, }) {
126
126
  ],
127
127
  })));
128
128
  }
129
+ /**
130
+ * Wraps a value with a ref expression parser for deferred validation.
131
+ * The parser handles all parsing, validation, and rename handling.
132
+ *
133
+ * If the parser declares required slots (via TRequiredSlots), they must be
134
+ * provided as the second argument. TypeScript enforces this at compile time.
135
+ *
136
+ * The parser's `schema` property is used for input validation.
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * // Parser without required slots
141
+ * const expressionSchema = ctx.withExpression(simpleParser);
142
+ *
143
+ * // Parser with required slots (TypeScript enforces the second argument)
144
+ * ctx.refContext(
145
+ * { modelSlot: modelEntityType },
146
+ * ({ modelSlot }) =>
147
+ * z.object({
148
+ * condition: ctx.withExpression(authorizerParser, { model: modelSlot }),
149
+ * })
150
+ * );
151
+ * ```
152
+ */
153
+ function withExpression(parser, slots) {
154
+ return parser.schema.transform((value) => {
155
+ if (transformReferences && value !== undefined) {
156
+ return new DefinitionExpressionMarker(value, {
157
+ path: [],
158
+ value,
159
+ parser,
160
+ slots,
161
+ });
162
+ }
163
+ return value;
164
+ });
165
+ }
129
166
  return {
130
167
  withRef,
131
168
  withEnt,
132
169
  refContext,
170
+ withExpression,
133
171
  };
134
172
  }
135
173
  //# sourceMappingURL=extend-parser-context-with-refs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extend-parser-context-with-refs.js","sourceRoot":"","sources":["../../src/references/extend-parser-context-with-refs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extend-parser-context-with-refs.js","sourceRoot":"","sources":["../../src/references/extend-parser-context-with-refs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuBxB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AA2DzD,MAAM,UAAU,2BAA2B,CAAC,EAC1C,mBAAmB,GACY;IAM/B,SAAS,iBAAiB,CACxB,KAAc,EACd,GAAoB,EACpB,QAE6B;QAE7B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,0BAA0B;gBACnC,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,mBAAmB,GACvB,6BAA6B,IAAI,KAAK;gBACpC,CAAC,CAAE,KAAK,CAAC,6BAA6B,CAA8B;gBACpE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YAClD,OAAO;gBACL,GAAG,KAAK;gBACR,CAAC,6BAA6B,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC;aAC/D,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS,OAAO,CACd,SAAgD;QAEhD,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACpC,IAAI,mBAAmB,IAAI,KAAK,EAAE,CAAC;gBACjC,OAAO,IAAI,yBAAyB,CAAC,KAAK,EAAE;oBAC1C,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,QAAQ,EAAE,SAAS,CAAC,QAAQ;oBAC5B,UAAU,EAAE,SAAS,CAAC,UAAU;oBAChC,QAAQ,EAAE,SAAS,CAAC,QAAQ;iBAC7B,CAAsB,CAAC;YAC1B,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,OAAO,CAKd,MAAa,EACb,MAAoE;QAEpE,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACrC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC;YACxD,IAAI,mBAAmB,EAAE,CAAC;gBACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,GAAG,CAAC,QAAQ,CAAC;wBACX,IAAI,EAAE,cAAc;wBACpB,QAAQ,EAAE,QAAQ;wBAClB,OAAO,EAAE,0BAA0B;wBACnC,KAAK,EAAE,KAAK;qBACb,CAAC,CAAC;oBACH,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,2BAA2B;gBAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,CAAY,CAAC;gBACzC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC3D,GAAG,CAAC,QAAQ,CAAC;wBACX,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,mCAAmC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,eAAe,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;wBAC7G,KAAK,EAAE,KAAK;qBACb,CAAC,CAAC;oBACH,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE;oBACzB,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;wBAC3B,OAAO,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;oBACxD,CAAC;oBACD,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACzD,GAAG,CAAC,QAAQ,CAAC;4BACX,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,8CAA8C,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;4BACzE,KAAK,EAAE,KAAK;yBACb,CAAC,CAAC;wBACH,OAAO,SAAS,CAAC;oBACnB,CAAC;oBACD,OAAO,KAAK,CAAC,IAAI,CAAC;gBACpB,CAAC,CAAC,EAAE,CAAC;gBAEL,MAAM,SAAS,GAA+B;oBAC5C,EAAE;oBACF,MAAM;oBACN,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,YAAY;oBACZ,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC;gBACF,OAAO,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;oBACrD,GAAG,WAAW;oBACd,QAAQ,EAAE,CAAC,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC;iBAC/C,CAAC,CAAC,CAAC;YACN,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAA0C,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,SAAS,UAAU,CAIjB,cAAwB,EACxB,aAA8D;QAE9D,MAAM,KAAK,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAC;QACtD,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CACnD,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC9C,GAAG,WAAW;YACd,KAAK,EAAE;gBACL,GAAG,WAAW,CAAC,KAAK;gBACpB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAoB,EAAE,EAAE,CAAC,CAAC;oBACrD,IAAI,EAAE,EAAE;oBACR,IAAI;iBACL,CAAC,CAAC;aACJ;SACF,CAAC,CAAC,CACuC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,SAAS,cAAc,CAKrB,MAAiE,EACjE,KAAyC;QAEzC,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,IAAI,mBAAmB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/C,OAAO,IAAI,0BAA0B,CAAC,KAAK,EAAE;oBAC3C,IAAI,EAAE,EAAE;oBACR,KAAK;oBACL,MAAM;oBACN,KAAK;iBACN,CAAsB,CAAC;YAC1B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAA8B,CAAC;IAClC,CAAC;IAED,OAAO;QACL,OAAO;QACP,OAAO;QACP,UAAU;QACV,cAAc;KACf,CAAC;AACJ,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import type { DefinitionEntityWithNameResolver } from './definition-ref-builder.js';
2
+ import type { DefinitionExpression } from './expression-types.js';
2
3
  import type { DefinitionReference } from './types.js';
3
4
  /**
4
- * Payload returned after parsing, containing the data, references, and entities.
5
+ * Payload returned after parsing, containing the data, references, entities, and expressions.
5
6
  *
6
7
  * @template TData - The type of the parsed data.
7
8
  */
@@ -9,15 +10,17 @@ export interface ExtractDefinitionRefsPayload<TData> {
9
10
  data: TData;
10
11
  references: DefinitionReference[];
11
12
  entitiesWithNameResolver: DefinitionEntityWithNameResolver[];
13
+ expressions: DefinitionExpression[];
12
14
  }
13
15
  /**
14
16
  * Extracts definition refs from a parsed value using functional approach.
15
17
  *
16
18
  * Flow:
17
- * 1. Collect all refs (entities, references, slots) recursively
19
+ * 1. Collect all refs (entities, references, slots, expressions) recursively
18
20
  * 2. Resolve all slot references to actual paths
19
21
  * 3. Strip ref markers from the data
20
- * 4. Validate no duplicate IDs
22
+ * 4. Resolve entity, reference, and expression parent/slot paths
23
+ * 5. Validate no duplicate IDs
21
24
  *
22
25
  * @param value - The parsed value from Zod schema
23
26
  * @returns The extracted refs with clean data
@@ -1 +1 @@
1
- {"version":3,"file":"extract-definition-refs.d.ts","sourceRoot":"","sources":["../../src/references/extract-definition-refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAEpF,OAAO,KAAK,EAAE,mBAAmB,EAAiB,MAAM,YAAY,CAAC;AAMrE;;;;GAIG;AACH,MAAM,WAAW,4BAA4B,CAAC,KAAK;IACjD,IAAI,EAAE,KAAK,CAAC;IACZ,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,wBAAwB,EAAE,gCAAgC,EAAE,CAAC;CAC9D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,KAAK,EAAE,CAAC,GACP,4BAA4B,CAAC,CAAC,CAAC,CAgEjC"}
1
+ {"version":3,"file":"extract-definition-refs.d.ts","sourceRoot":"","sources":["../../src/references/extract-definition-refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAAE,mBAAmB,EAAiB,MAAM,YAAY,CAAC;AAMrE;;;;GAIG;AACH,MAAM,WAAW,4BAA4B,CAAC,KAAK;IACjD,IAAI,EAAE,KAAK,CAAC;IACZ,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,wBAAwB,EAAE,gCAAgC,EAAE,CAAC;IAC7D,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,KAAK,EAAE,CAAC,GACP,4BAA4B,CAAC,CAAC,CAAC,CAgGjC"}