@yoyoboot/yoyo-admin-schema 10.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/action-contract.d.ts +50 -0
  2. package/dist/action-contract.d.ts.map +1 -0
  3. package/dist/action-contract.js +185 -0
  4. package/dist/action-registry.d.ts +12 -0
  5. package/dist/action-registry.d.ts.map +1 -0
  6. package/dist/action-registry.js +23 -0
  7. package/dist/compiler.d.ts +17 -0
  8. package/dist/compiler.d.ts.map +1 -0
  9. package/dist/compiler.js +1300 -0
  10. package/dist/contract-drift.d.ts +18 -0
  11. package/dist/contract-drift.d.ts.map +1 -0
  12. package/dist/contract-drift.js +32 -0
  13. package/dist/diagnostics.d.ts +19 -0
  14. package/dist/diagnostics.d.ts.map +1 -0
  15. package/dist/diagnostics.js +8 -0
  16. package/dist/extension-registry.d.ts +13 -0
  17. package/dist/extension-registry.d.ts.map +1 -0
  18. package/dist/extension-registry.js +23 -0
  19. package/dist/field-registry.d.ts +12 -0
  20. package/dist/field-registry.d.ts.map +1 -0
  21. package/dist/field-registry.js +30 -0
  22. package/dist/generated/action-contract/action-contract-keys.d.ts +3 -0
  23. package/dist/generated/action-contract/action-contract-keys.d.ts.map +1 -0
  24. package/dist/generated/action-contract/action-contract-keys.js +50 -0
  25. package/dist/generated/action-contract/index.d.ts +534 -0
  26. package/dist/generated/action-contract/index.d.ts.map +1 -0
  27. package/dist/generated/action-contract/index.js +579 -0
  28. package/dist/generated-validation-contract.d.ts +36 -0
  29. package/dist/generated-validation-contract.d.ts.map +1 -0
  30. package/dist/generated-validation-contract.js +124 -0
  31. package/dist/index.d.ts +15 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +14 -0
  34. package/dist/page-contract-linking.d.ts +36 -0
  35. package/dist/page-contract-linking.d.ts.map +1 -0
  36. package/dist/page-contract-linking.js +78 -0
  37. package/dist/project-check.d.ts +34 -0
  38. package/dist/project-check.d.ts.map +1 -0
  39. package/dist/project-check.js +151 -0
  40. package/dist/registry-diagnostics.d.ts +15 -0
  41. package/dist/registry-diagnostics.d.ts.map +1 -0
  42. package/dist/registry-diagnostics.js +41 -0
  43. package/dist/renderer-registry.d.ts +22 -0
  44. package/dist/renderer-registry.d.ts.map +1 -0
  45. package/dist/renderer-registry.js +33 -0
  46. package/dist/types.d.ts +290 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +49 -0
  49. package/package.json +30 -0
@@ -0,0 +1,18 @@
1
+ export interface YoyoContractDriftInput {
2
+ schemaFields: readonly string[];
3
+ dtoFields: readonly string[];
4
+ datasourceOperations: readonly string[];
5
+ requiredDatasourceOperations: readonly string[];
6
+ dtoMappings: Readonly<Record<string, readonly string[]>>;
7
+ capabilities: readonly string[];
8
+ referencedCapabilities: readonly string[];
9
+ registryReferences: Readonly<Record<string, readonly string[]>>;
10
+ registries: Readonly<Record<string, readonly string[]>>;
11
+ }
12
+ export interface YoyoContractDriftDiagnostic {
13
+ code: 'YDRF001' | 'YDRF002' | 'YDRF003' | 'YDRF004' | 'YDRF005';
14
+ path: string;
15
+ message: string;
16
+ }
17
+ export declare function diagnoseYoyoContractDrift(input: YoyoContractDriftInput): readonly YoyoContractDriftDiagnostic[];
18
+ //# sourceMappingURL=contract-drift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-drift.d.ts","sourceRoot":"","sources":["../src/contract-drift.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,4BAA4B,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/C,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAA;IACxD,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/B,sBAAsB,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAA;IAC/D,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAA;CACxD;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;IAC/D,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,sBAAsB,GAAG,SAAS,2BAA2B,EAAE,CA4B/G"}
@@ -0,0 +1,32 @@
1
+ export function diagnoseYoyoContractDrift(input) {
2
+ const diagnostics = [];
3
+ const dtoFields = new Set(input.dtoFields);
4
+ const operations = new Set(input.datasourceOperations);
5
+ const capabilities = new Set(input.capabilities);
6
+ for (const field of input.schemaFields) {
7
+ if (!dtoFields.has(field))
8
+ diagnostics.push({ code: 'YDRF001', path: `schemaFields.${field}`, message: `Schema field '${field}' is absent from the DTO contract.` });
9
+ }
10
+ for (const operation of input.requiredDatasourceOperations) {
11
+ if (!operations.has(operation))
12
+ diagnostics.push({ code: 'YDRF002', path: `datasourceOperations.${operation}`, message: `Datasource operation '${operation}' is required but unavailable.` });
13
+ }
14
+ for (const [operation, fields] of Object.entries(input.dtoMappings)) {
15
+ for (const field of fields) {
16
+ if (!dtoFields.has(field))
17
+ diagnostics.push({ code: 'YDRF003', path: `dtoMappings.${operation}.${field}`, message: `DTO mapping for '${operation}' references missing field '${field}'.` });
18
+ }
19
+ }
20
+ for (const capability of input.referencedCapabilities) {
21
+ if (!capabilities.has(capability))
22
+ diagnostics.push({ code: 'YDRF004', path: `capabilities.${capability}`, message: `Capability '${capability}' is unavailable.` });
23
+ }
24
+ for (const [kind, references] of Object.entries(input.registryReferences)) {
25
+ const registered = new Set(input.registries[kind] ?? []);
26
+ for (const key of references) {
27
+ if (!registered.has(key))
28
+ diagnostics.push({ code: 'YDRF005', path: `registryReferences.${kind}.${key}`, message: `Registry '${kind}' does not contain '${key}'.` });
29
+ }
30
+ }
31
+ return diagnostics;
32
+ }
@@ -0,0 +1,19 @@
1
+ export type YoyoDiagnosticSeverity = 'blocking' | 'guidance';
2
+ export interface YoyoDiagnosticSource {
3
+ path?: string;
4
+ line?: number;
5
+ column?: number;
6
+ }
7
+ export interface YoyoSchemaDiagnostic {
8
+ code: string;
9
+ path: string;
10
+ severity: YoyoDiagnosticSeverity;
11
+ message: string;
12
+ guidance?: string;
13
+ source?: YoyoDiagnosticSource;
14
+ }
15
+ export declare class YoyoSchemaValidationError extends Error {
16
+ readonly diagnostics: readonly YoyoSchemaDiagnostic[];
17
+ constructor(diagnostics: readonly YoyoSchemaDiagnostic[]);
18
+ }
19
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,UAAU,CAAA;AAE5D,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,sBAAsB,CAAA;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,oBAAoB,CAAA;CAC9B;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAA;gBAEzC,WAAW,EAAE,SAAS,oBAAoB,EAAE;CAKzD"}
@@ -0,0 +1,8 @@
1
+ export class YoyoSchemaValidationError extends Error {
2
+ diagnostics;
3
+ constructor(diagnostics) {
4
+ super(`Yoyo Admin Schema validation failed: ${diagnostics.map((item) => item.code).join(', ')}`);
5
+ this.name = 'YoyoSchemaValidationError';
6
+ this.diagnostics = diagnostics;
7
+ }
8
+ }
@@ -0,0 +1,13 @@
1
+ export declare const YOYO_EXTENSION_SLOTS: readonly ["toolbar", "cell", "row-detail", "row-overlay", "form-section", "editor"];
2
+ export type YoyoExtensionSlot = typeof YOYO_EXTENSION_SLOTS[number];
3
+ export interface YoyoExtensionDefinition {
4
+ key: string;
5
+ slot: YoyoExtensionSlot;
6
+ }
7
+ export interface YoyoExtensionRegistry {
8
+ has(key: string): boolean;
9
+ keys(): readonly string[];
10
+ resolve(key: string): YoyoExtensionDefinition;
11
+ }
12
+ export declare function createYoyoExtensionRegistry(definitions: readonly YoyoExtensionDefinition[]): YoyoExtensionRegistry;
13
+ //# sourceMappingURL=extension-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-registry.d.ts","sourceRoot":"","sources":["../src/extension-registry.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,qFAAsF,CAAA;AACvH,MAAM,MAAM,iBAAiB,GAAG,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAA;AAEnE,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,iBAAiB,CAAA;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACzB,IAAI,IAAI,SAAS,MAAM,EAAE,CAAA;IACzB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,uBAAuB,CAAA;CAC9C;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,SAAS,uBAAuB,EAAE,GAAG,qBAAqB,CAkBlH"}
@@ -0,0 +1,23 @@
1
+ export const YOYO_EXTENSION_SLOTS = ['toolbar', 'cell', 'row-detail', 'row-overlay', 'form-section', 'editor'];
2
+ export function createYoyoExtensionRegistry(definitions) {
3
+ const entries = new Map();
4
+ for (const definition of definitions) {
5
+ if (!definition.key.trim())
6
+ throw new Error('Extension registry does not accept an empty key.');
7
+ if (!YOYO_EXTENSION_SLOTS.includes(definition.slot))
8
+ throw new Error(`Extension '${definition.key}' has unsupported slot '${definition.slot}'.`);
9
+ if (entries.has(definition.key))
10
+ throw new Error(`Extension '${definition.key}' is already registered.`);
11
+ entries.set(definition.key, definition);
12
+ }
13
+ return {
14
+ has: (key) => entries.has(key),
15
+ keys: () => [...entries.keys()].sort(),
16
+ resolve: (key) => {
17
+ const definition = entries.get(key);
18
+ if (!definition)
19
+ throw new Error(`Extension '${key}' is not registered.`);
20
+ return definition;
21
+ },
22
+ };
23
+ }
@@ -0,0 +1,12 @@
1
+ export interface YoyoFieldDefinition {
2
+ key: string;
3
+ }
4
+ export interface YoyoFieldRegistry {
5
+ has(key: string): boolean;
6
+ keys(): readonly string[];
7
+ resolve(key: string): YoyoFieldDefinition;
8
+ }
9
+ export declare const yoyoV1FieldDefinitions: readonly YoyoFieldDefinition[];
10
+ export declare const yoyoV1FieldRegistry: YoyoFieldRegistry;
11
+ export declare function createYoyoFieldRegistry(definitions: readonly YoyoFieldDefinition[]): YoyoFieldRegistry;
12
+ //# sourceMappingURL=field-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-registry.d.ts","sourceRoot":"","sources":["../src/field-registry.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACzB,IAAI,IAAI,SAAS,MAAM,EAAE,CAAA;IACzB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAA;CAC1C;AAED,eAAO,MAAM,sBAAsB,EAAE,SAAS,mBAAmB,EAA4D,CAAA;AAE7H,eAAO,MAAM,mBAAmB,mBAAkD,CAAA;AAElF,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,SAAS,mBAAmB,EAAE,GAAG,iBAAiB,CA2BtG"}
@@ -0,0 +1,30 @@
1
+ import { YOYO_FIELD_KINDS } from './types.js';
2
+ export const yoyoV1FieldDefinitions = YOYO_FIELD_KINDS.map((key) => ({ key }));
3
+ export const yoyoV1FieldRegistry = createYoyoFieldRegistry(yoyoV1FieldDefinitions);
4
+ export function createYoyoFieldRegistry(definitions) {
5
+ const entries = new Map();
6
+ for (const definition of definitions) {
7
+ if (!definition.key.trim()) {
8
+ throw new Error('Field registry does not accept an empty key.');
9
+ }
10
+ if (entries.has(definition.key)) {
11
+ throw new Error(`Field '${definition.key}' is already registered.`);
12
+ }
13
+ entries.set(definition.key, definition);
14
+ }
15
+ return {
16
+ has(key) {
17
+ return entries.has(key);
18
+ },
19
+ keys() {
20
+ return [...entries.keys()].sort();
21
+ },
22
+ resolve(key) {
23
+ const definition = entries.get(key);
24
+ if (!definition) {
25
+ throw new Error(`Field '${key}' is not registered.`);
26
+ }
27
+ return definition;
28
+ },
29
+ };
30
+ }
@@ -0,0 +1,3 @@
1
+ export declare const yoyoAdminActionContractKeys: readonly ["basicData.measuringUnits.create", "basicData.measuringUnits.setEnabled", "basicData.measuringUnits.softDelete", "basicData.measuringUnits.update", "editionManagement.editions.create", "editionManagement.editions.update", "editionManagement.editions.updateFeatures", "identity.roles.batchDeleteRoles", "identity.roles.changePermissions", "identity.roles.create", "identity.roles.delete", "identity.roles.update", "identity.users.batchDeleteUsers", "identity.users.bulkReplaceUserRoles", "identity.users.createUser", "identity.users.deleteUser", "identity.users.getPermissionsForEdit", "identity.users.impersonateUser", "identity.users.relatedHistory", "identity.users.replaceUserOrganizationUnits", "identity.users.replaceUserRoles", "identity.users.resetPassword", "identity.users.resetPermissions", "identity.users.setUserActive", "identity.users.unlock", "identity.users.updatePermissions", "identity.users.updateUserProfile", "phoneBooks.persons.addPhone", "phoneBooks.persons.createPerson", "phoneBooks.persons.deletePerson", "phoneBooks.persons.removePhone", "phoneBooks.persons.updatePhone", "phoneBooks.persons.updateProfile", "tenantManagement.tenants.batchDeleteTenants", "tenantManagement.tenants.createTenant", "tenantManagement.tenants.deleteTenant", "tenantManagement.tenants.exportTenants", "tenantManagement.tenants.getTenantFeaturesForEdit", "tenantManagement.tenants.impersonateTenantUser", "tenantManagement.tenants.initializeTenantAdmin", "tenantManagement.tenants.resetTenantFeatures", "tenantManagement.tenants.setTenantActive", "tenantManagement.tenants.unlockTenantAdmin", "tenantManagement.tenants.updateTenantFeatures", "tenantManagement.tenants.updateTenantProfile"];
2
+ export type YoyoAdminActionContractKey = (typeof yoyoAdminActionContractKeys)[number];
3
+ //# sourceMappingURL=action-contract-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-contract-keys.d.ts","sourceRoot":"","sources":["../../../src/generated/action-contract/action-contract-keys.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,2BAA2B,yqDA8C9B,CAAC;AACX,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,50 @@
1
+ // <auto-generated />
2
+ // DO NOT EDIT. Run Yoyo.Admin.ActionContractExporter to regenerate.
3
+ // schemaVersion: 1.0.0; generatorVersion: 1.0.0; sourceHash: 8d353116798ae32ff11b42efe6aef5c0f619149c8ee6acb4941cdab192ea9e50
4
+ export const yoyoAdminActionContractKeys = [
5
+ "basicData.measuringUnits.create",
6
+ "basicData.measuringUnits.setEnabled",
7
+ "basicData.measuringUnits.softDelete",
8
+ "basicData.measuringUnits.update",
9
+ "editionManagement.editions.create",
10
+ "editionManagement.editions.update",
11
+ "editionManagement.editions.updateFeatures",
12
+ "identity.roles.batchDeleteRoles",
13
+ "identity.roles.changePermissions",
14
+ "identity.roles.create",
15
+ "identity.roles.delete",
16
+ "identity.roles.update",
17
+ "identity.users.batchDeleteUsers",
18
+ "identity.users.bulkReplaceUserRoles",
19
+ "identity.users.createUser",
20
+ "identity.users.deleteUser",
21
+ "identity.users.getPermissionsForEdit",
22
+ "identity.users.impersonateUser",
23
+ "identity.users.relatedHistory",
24
+ "identity.users.replaceUserOrganizationUnits",
25
+ "identity.users.replaceUserRoles",
26
+ "identity.users.resetPassword",
27
+ "identity.users.resetPermissions",
28
+ "identity.users.setUserActive",
29
+ "identity.users.unlock",
30
+ "identity.users.updatePermissions",
31
+ "identity.users.updateUserProfile",
32
+ "phoneBooks.persons.addPhone",
33
+ "phoneBooks.persons.createPerson",
34
+ "phoneBooks.persons.deletePerson",
35
+ "phoneBooks.persons.removePhone",
36
+ "phoneBooks.persons.updatePhone",
37
+ "phoneBooks.persons.updateProfile",
38
+ "tenantManagement.tenants.batchDeleteTenants",
39
+ "tenantManagement.tenants.createTenant",
40
+ "tenantManagement.tenants.deleteTenant",
41
+ "tenantManagement.tenants.exportTenants",
42
+ "tenantManagement.tenants.getTenantFeaturesForEdit",
43
+ "tenantManagement.tenants.impersonateTenantUser",
44
+ "tenantManagement.tenants.initializeTenantAdmin",
45
+ "tenantManagement.tenants.resetTenantFeatures",
46
+ "tenantManagement.tenants.setTenantActive",
47
+ "tenantManagement.tenants.unlockTenantAdmin",
48
+ "tenantManagement.tenants.updateTenantFeatures",
49
+ "tenantManagement.tenants.updateTenantProfile",
50
+ ];