@baseplate-dev/project-builder-lib 0.5.1 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +473 -0
- package/dist/definition/model/model-field-utils.js +4 -4
- package/dist/definition/model/model-field-utils.js.map +1 -1
- package/dist/definition/model/model-utils.js +3 -3
- package/dist/definition/model/model-utils.js.map +1 -1
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +3 -1
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/migration-007-model-graphql.js +1 -1
- package/dist/migrations/migration-007-model-graphql.js.map +1 -1
- package/dist/migrations/migration-020-move-redis-to-infrastructure.js +1 -1
- package/dist/migrations/migration-020-move-redis-to-infrastructure.js.map +1 -1
- package/dist/migrations/migration-021-migrate-bullmq-to-plugin.js +1 -1
- package/dist/migrations/migration-021-migrate-bullmq-to-plugin.js.map +1 -1
- package/dist/migrations/migration-023-assign-app-ports.d.ts +34 -0
- package/dist/migrations/migration-023-assign-app-ports.d.ts.map +1 -0
- package/dist/migrations/migration-023-assign-app-ports.js +49 -0
- package/dist/migrations/migration-023-assign-app-ports.js.map +1 -0
- package/dist/plugins/spec/config-spec.js +2 -2
- package/dist/plugins/spec/config-spec.js.map +1 -1
- package/dist/references/collect-refs.d.ts +5 -1
- package/dist/references/collect-refs.d.ts.map +1 -1
- package/dist/references/collect-refs.js +20 -1
- package/dist/references/collect-refs.js.map +1 -1
- package/dist/references/definition-ref-builder.d.ts.map +1 -1
- package/dist/references/expression-types.d.ts +152 -0
- package/dist/references/expression-types.d.ts.map +1 -0
- package/dist/references/expression-types.js +46 -0
- package/dist/references/expression-types.js.map +1 -0
- package/dist/references/extend-parser-context-with-refs.d.ts +13 -0
- package/dist/references/extend-parser-context-with-refs.d.ts.map +1 -1
- package/dist/references/extend-parser-context-with-refs.js +39 -1
- package/dist/references/extend-parser-context-with-refs.js.map +1 -1
- package/dist/references/extract-definition-refs.d.ts +6 -3
- package/dist/references/extract-definition-refs.d.ts.map +1 -1
- package/dist/references/extract-definition-refs.js +25 -4
- package/dist/references/extract-definition-refs.js.map +1 -1
- package/dist/references/index.d.ts +1 -0
- package/dist/references/index.d.ts.map +1 -1
- package/dist/references/index.js +1 -0
- package/dist/references/index.js.map +1 -1
- package/dist/references/markers.d.ts +23 -0
- package/dist/references/markers.d.ts.map +1 -1
- package/dist/references/markers.js +16 -0
- package/dist/references/markers.js.map +1 -1
- package/dist/references/resolve-zod-ref-payload-names.d.ts.map +1 -1
- package/dist/references/resolve-zod-ref-payload-names.js +1 -0
- package/dist/references/resolve-zod-ref-payload-names.js.map +1 -1
- package/dist/references/strip-ref-markers.d.ts +3 -3
- package/dist/references/strip-ref-markers.d.ts.map +1 -1
- package/dist/references/strip-ref-markers.js +7 -4
- package/dist/references/strip-ref-markers.js.map +1 -1
- package/dist/references/types.d.ts +5 -0
- package/dist/references/types.d.ts.map +1 -1
- package/dist/references/types.js.map +1 -1
- package/dist/schema/apps/backend/index.d.ts +2 -0
- package/dist/schema/apps/backend/index.d.ts.map +1 -1
- package/dist/schema/apps/backend/index.js +1 -0
- package/dist/schema/apps/backend/index.js.map +1 -1
- package/dist/schema/apps/base.d.ts +2 -0
- package/dist/schema/apps/base.d.ts.map +1 -1
- package/dist/schema/apps/base.js +1 -0
- package/dist/schema/apps/base.js.map +1 -1
- package/dist/schema/apps/web/admin/sections/crud-actions/types.d.ts.map +1 -1
- package/dist/schema/apps/web/web-app.d.ts +2 -0
- package/dist/schema/apps/web/web-app.d.ts.map +1 -1
- package/dist/schema/apps/web/web-app.js +1 -0
- package/dist/schema/apps/web/web-app.js.map +1 -1
- package/dist/schema/creator/types.d.ts +6 -1
- package/dist/schema/creator/types.d.ts.map +1 -1
- package/dist/schema/models/authorizer/authorizer-expression-acorn-parser.d.ts +30 -0
- package/dist/schema/models/authorizer/authorizer-expression-acorn-parser.d.ts.map +1 -0
- package/dist/schema/models/authorizer/authorizer-expression-acorn-parser.js +291 -0
- package/dist/schema/models/authorizer/authorizer-expression-acorn-parser.js.map +1 -0
- package/dist/schema/models/authorizer/authorizer-expression-ast.d.ts +159 -0
- package/dist/schema/models/authorizer/authorizer-expression-ast.d.ts.map +1 -0
- package/dist/schema/models/authorizer/authorizer-expression-ast.js +31 -0
- package/dist/schema/models/authorizer/authorizer-expression-ast.js.map +1 -0
- package/dist/schema/models/authorizer/authorizer-expression-parser.d.ts +77 -0
- package/dist/schema/models/authorizer/authorizer-expression-parser.d.ts.map +1 -0
- package/dist/schema/models/authorizer/authorizer-expression-parser.js +147 -0
- package/dist/schema/models/authorizer/authorizer-expression-parser.js.map +1 -0
- package/dist/schema/models/authorizer/authorizer-expression-validator.d.ts +51 -0
- package/dist/schema/models/authorizer/authorizer-expression-validator.d.ts.map +1 -0
- package/dist/schema/models/authorizer/authorizer-expression-validator.js +125 -0
- package/dist/schema/models/authorizer/authorizer-expression-validator.js.map +1 -0
- package/dist/schema/models/authorizer/authorizer.d.ts +59 -0
- package/dist/schema/models/authorizer/authorizer.d.ts.map +1 -0
- package/dist/schema/models/authorizer/authorizer.js +56 -0
- package/dist/schema/models/authorizer/authorizer.js.map +1 -0
- package/dist/schema/models/authorizer/index.d.ts +7 -0
- package/dist/schema/models/authorizer/index.d.ts.map +1 -0
- package/dist/schema/models/authorizer/index.js +7 -0
- package/dist/schema/models/authorizer/index.js.map +1 -0
- package/dist/schema/models/authorizer/types.d.ts +6 -0
- package/dist/schema/models/authorizer/types.d.ts.map +1 -0
- package/dist/schema/models/authorizer/types.js +8 -0
- package/dist/schema/models/authorizer/types.js.map +1 -0
- package/dist/schema/models/index.d.ts +2 -860
- package/dist/schema/models/index.d.ts.map +1 -1
- package/dist/schema/models/index.js +2 -222
- package/dist/schema/models/index.js.map +1 -1
- package/dist/schema/models/models.d.ts +914 -0
- package/dist/schema/models/models.d.ts.map +1 -0
- package/dist/schema/models/models.js +225 -0
- package/dist/schema/models/models.js.map +1 -0
- package/dist/schema/project-definition.d.ts +46 -2
- package/dist/schema/project-definition.d.ts.map +1 -1
- package/dist/schema/settings/settings.d.ts +2 -2
- package/dist/schema/settings/theme.d.ts +3 -3
- package/dist/tools/model-merger/model-merger.js +1 -1
- package/dist/tools/model-merger/model-merger.js.map +1 -1
- package/dist/utils/color-conversions.js +1 -1
- package/dist/utils/color-conversions.js.map +1 -1
- package/dist/web/components/feature-combobox-field.d.ts.map +1 -1
- package/dist/web/components/feature-combobox-field.js +1 -1
- package/dist/web/components/feature-combobox-field.js.map +1 -1
- package/dist/web/components/model-combobox-field.d.ts.map +1 -1
- package/dist/web/components/model-combobox-field.js +1 -1
- package/dist/web/components/model-combobox-field.js.map +1 -1
- package/dist/web/components/model-merger-result-alert.js +1 -1
- package/package.json +11 -9
|
@@ -18,7 +18,7 @@ export const migration021MigrateBullmqToPlugin = createSchemaMigration({
|
|
|
18
18
|
// Remove enableBullQueue from all apps
|
|
19
19
|
const apps = config.apps?.map((app) => {
|
|
20
20
|
if (app.type === 'backend' && 'enableBullQueue' in app) {
|
|
21
|
-
const { enableBullQueue:
|
|
21
|
+
const { enableBullQueue: _enableBullQueue, ...rest } = app;
|
|
22
22
|
return rest;
|
|
23
23
|
}
|
|
24
24
|
return app;
|
|
@@ -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,
|
|
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].
|
|
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?.
|
|
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,
|
|
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,
|
|
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":"
|
|
1
|
+
{"version":3,"file":"collect-refs.js","sourceRoot":"","sources":["../../src/references/collect-refs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition-ref-builder.d.ts","sourceRoot":"","sources":["../../src/references/definition-ref-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,MAAM,WAAW,4BAA4B,CAC3C,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,MAAM,CAC3D,MAAM,EACN,MAAM,GAAG,MAAM,EAAE,CAClB;IAED;;;OAGG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B;;;;OAIG;IACH,WAAW,EAAE,CAAC,WAAW,EAAE,UAAU,KAAK,MAAM,CAAC;CAClD;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAChD,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAEpD,kBAAkB,EAAE,4BAA4B,CAAC,UAAU,CAAC,GAC3D,4BAA4B,CAAC,UAAU,CAAC,CAE1C;AAED;;;;;;;GAOG;AACH,UAAU,yBAAyB,CACjC,MAAM,EACN,WAAW,SAAS,oBAAoB,EACxC,OAAO,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS;IAE1D,kCAAkC;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,uIAAuI;IACvI,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kKAAkK;IAClK,eAAe,CAAC,EAAE,CAChB,KAAK,EAAE,MAAM,KAEV,4BAA4B,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAChD,6GAA6G;IAC7G,QAAQ,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;CACxC;AAED;;GAEG;AACH,UAAU,+BAA+B,CACvC,MAAM,EACN,WAAW,SAAS,oBAAoB,EACxC,OAAO,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,CAC1D,SAAQ,yBAAyB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC;IAC/D,6DAA6D;IAC7D,UAAU,EAAE,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CACpE;AAED;;GAEG;AACH,UAAU,kCAAkC,CAC1C,MAAM,EACN,WAAW,SAAS,oBAAoB,EACxC,OAAO,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,CAC1D,SAAQ,yBAAyB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC;IAC/D,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,qBAAqB,CAC/B,MAAM,EACN,WAAW,SAAS,oBAAoB,EACxC,OAAO,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,IACxD,WAAW,CAAC,YAAY,CAAC,SAAS,SAAS,GAC3C,kCAAkC,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,GAChE,+BAA+B,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAElE;;;;GAIG;AACH,UAAU,4BAA4B,
|
|
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;
|
|
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":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
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,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
|
|
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.
|
|
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;
|
|
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"}
|