@ontologie/schema 0.1.0-preview.1

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 (70) hide show
  1. package/README.md +149 -0
  2. package/dist/compiler/compile.d.ts +36 -0
  3. package/dist/compiler/compile.d.ts.map +1 -0
  4. package/dist/compiler/compile.js +295 -0
  5. package/dist/compiler/compile.js.map +1 -0
  6. package/dist/compiler/resolve.d.ts +14 -0
  7. package/dist/compiler/resolve.d.ts.map +1 -0
  8. package/dist/compiler/resolve.js +132 -0
  9. package/dist/compiler/resolve.js.map +1 -0
  10. package/dist/compiler/validate.d.ts +15 -0
  11. package/dist/compiler/validate.d.ts.map +1 -0
  12. package/dist/compiler/validate.js +188 -0
  13. package/dist/compiler/validate.js.map +1 -0
  14. package/dist/diff/diff.d.ts +20 -0
  15. package/dist/diff/diff.d.ts.map +1 -0
  16. package/dist/diff/diff.js +393 -0
  17. package/dist/diff/diff.js.map +1 -0
  18. package/dist/diff/format.d.ts +21 -0
  19. package/dist/diff/format.d.ts.map +1 -0
  20. package/dist/diff/format.js +88 -0
  21. package/dist/diff/format.js.map +1 -0
  22. package/dist/dsl/action.d.ts +148 -0
  23. package/dist/dsl/action.d.ts.map +1 -0
  24. package/dist/dsl/action.js +330 -0
  25. package/dist/dsl/action.js.map +1 -0
  26. package/dist/dsl/interface.d.ts +32 -0
  27. package/dist/dsl/interface.d.ts.map +1 -0
  28. package/dist/dsl/interface.js +77 -0
  29. package/dist/dsl/interface.js.map +1 -0
  30. package/dist/dsl/link.d.ts +34 -0
  31. package/dist/dsl/link.d.ts.map +1 -0
  32. package/dist/dsl/link.js +95 -0
  33. package/dist/dsl/link.js.map +1 -0
  34. package/dist/dsl/object-type.d.ts +35 -0
  35. package/dist/dsl/object-type.d.ts.map +1 -0
  36. package/dist/dsl/object-type.js +102 -0
  37. package/dist/dsl/object-type.js.map +1 -0
  38. package/dist/dsl/property.d.ts +43 -0
  39. package/dist/dsl/property.d.ts.map +1 -0
  40. package/dist/dsl/property.js +125 -0
  41. package/dist/dsl/property.js.map +1 -0
  42. package/dist/index.d.ts +47 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +63 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/lock/lockfile.d.ts +31 -0
  47. package/dist/lock/lockfile.d.ts.map +1 -0
  48. package/dist/lock/lockfile.js +86 -0
  49. package/dist/lock/lockfile.js.map +1 -0
  50. package/dist/model-assurance.d.ts +27 -0
  51. package/dist/model-assurance.d.ts.map +1 -0
  52. package/dist/model-assurance.js +194 -0
  53. package/dist/model-assurance.js.map +1 -0
  54. package/dist/pull/emit-schema.d.ts +24 -0
  55. package/dist/pull/emit-schema.d.ts.map +1 -0
  56. package/dist/pull/emit-schema.js +476 -0
  57. package/dist/pull/emit-schema.js.map +1 -0
  58. package/dist/push/execute.d.ts +34 -0
  59. package/dist/push/execute.d.ts.map +1 -0
  60. package/dist/push/execute.js +119 -0
  61. package/dist/push/execute.js.map +1 -0
  62. package/dist/push/plan.d.ts +37 -0
  63. package/dist/push/plan.d.ts.map +1 -0
  64. package/dist/push/plan.js +484 -0
  65. package/dist/push/plan.js.map +1 -0
  66. package/dist/types.d.ts +330 -0
  67. package/dist/types.d.ts.map +1 -0
  68. package/dist/types.js +5 -0
  69. package/dist/types.js.map +1 -0
  70. package/package.json +45 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/dsl/action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * defineInterface() — shared property groups that ObjectTypes can implement
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * const Auditable = defineInterface('Auditable', {
7
+ * createdAt: date().required(),
8
+ * updatedAt: date().required(),
9
+ * createdBy: string().required(),
10
+ * });
11
+ *
12
+ * const Contract = objectType('Contract', {
13
+ * name: string().required(),
14
+ * }).implements(Auditable);
15
+ * ```
16
+ */
17
+ import type { InterfaceDefinition, PropertyDefinition } from '../types.js';
18
+ declare class InterfaceBuilder {
19
+ private readonly def;
20
+ constructor(apiName: string, fields: Record<string, PropertyDefinition>, overrides?: Partial<InterfaceDefinition>);
21
+ displayName(name: string): InterfaceBuilder;
22
+ description(text: string): InterfaceBuilder;
23
+ build(): InterfaceDefinition;
24
+ }
25
+ export type InterfaceBuilderLike = InterfaceBuilder & InterfaceDefinition;
26
+ export declare function defineInterface(apiName: string, fields: Record<string, PropertyDefinition>): InterfaceBuilderLike;
27
+ /**
28
+ * Materialize an InterfaceBuilderLike into a clean InterfaceDefinition.
29
+ */
30
+ export declare function materializeInterface(i: InterfaceDefinition | InterfaceBuilderLike): InterfaceDefinition;
31
+ export {};
32
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/dsl/interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE3E,cAAM,gBAAgB;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAsB;gBAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IASjH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAI3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAI3C,KAAK,IAAI,mBAAmB;CAG7B;AAED,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;AA2B1E,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,oBAAoB,CAEjH;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,mBAAmB,GAAG,oBAAoB,GAAG,mBAAmB,CAKvG"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * defineInterface() — shared property groups that ObjectTypes can implement
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * const Auditable = defineInterface('Auditable', {
7
+ * createdAt: date().required(),
8
+ * updatedAt: date().required(),
9
+ * createdBy: string().required(),
10
+ * });
11
+ *
12
+ * const Contract = objectType('Contract', {
13
+ * name: string().required(),
14
+ * }).implements(Auditable);
15
+ * ```
16
+ */
17
+ class InterfaceBuilder {
18
+ def;
19
+ constructor(apiName, fields, overrides) {
20
+ this.def = {
21
+ _kind: 'interface',
22
+ apiName,
23
+ fields,
24
+ ...overrides,
25
+ };
26
+ }
27
+ displayName(name) {
28
+ return new InterfaceBuilder(this.def.apiName, this.def.fields, { ...this.def, displayName: name });
29
+ }
30
+ description(text) {
31
+ return new InterfaceBuilder(this.def.apiName, this.def.fields, { ...this.def, description: text });
32
+ }
33
+ build() {
34
+ return this.def;
35
+ }
36
+ }
37
+ /**
38
+ * Define an interface — a shared set of properties that can be implemented by multiple ObjectTypes.
39
+ */
40
+ function wrapInterfaceProxy(builder) {
41
+ return new Proxy(builder, {
42
+ get(target, prop, receiver) {
43
+ if (prop === '_kind')
44
+ return 'interface';
45
+ if (prop === 'apiName')
46
+ return target.def.apiName;
47
+ if (prop === 'fields')
48
+ return target.def.fields;
49
+ const builderVal = Reflect.get(target, prop, receiver);
50
+ if (typeof builderVal === 'function') {
51
+ return (...args) => {
52
+ const result = builderVal.apply(target, args);
53
+ if (result instanceof InterfaceBuilder) {
54
+ return wrapInterfaceProxy(result);
55
+ }
56
+ return result;
57
+ };
58
+ }
59
+ if (builderVal !== undefined)
60
+ return builderVal;
61
+ return target.def[prop];
62
+ },
63
+ });
64
+ }
65
+ export function defineInterface(apiName, fields) {
66
+ return wrapInterfaceProxy(new InterfaceBuilder(apiName, fields));
67
+ }
68
+ /**
69
+ * Materialize an InterfaceBuilderLike into a clean InterfaceDefinition.
70
+ */
71
+ export function materializeInterface(i) {
72
+ if ('build' in i && typeof i.build === 'function') {
73
+ return i.build();
74
+ }
75
+ return i;
76
+ }
77
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/dsl/interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,MAAM,gBAAgB;IACH,GAAG,CAAsB;IAE1C,YAAY,OAAe,EAAE,MAA0C,EAAE,SAAwC;QAC/G,IAAI,CAAC,GAAG,GAAG;YACT,KAAK,EAAE,WAAW;YAClB,OAAO;YACP,MAAM;YACN,GAAG,SAAS;SACb,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACrG,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACrG,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;CACF;AAID;;GAEG;AACH,SAAS,kBAAkB,CAAC,OAAyB;IACnD,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;QACxB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,IAAI,KAAK,OAAO;gBAAE,OAAO,WAAW,CAAC;YACzC,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAQ,MAAc,CAAC,GAAG,CAAC,OAAO,CAAC;YAC3D,IAAI,IAAI,KAAK,QAAQ;gBAAE,OAAQ,MAAc,CAAC,GAAG,CAAC,MAAM,CAAC;YACzD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YACvD,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;gBACrC,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;oBAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBAC9C,IAAI,MAAM,YAAY,gBAAgB,EAAE,CAAC;wBACvC,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;oBACpC,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC,CAAC;YACJ,CAAC;YACD,IAAI,UAAU,KAAK,SAAS;gBAAE,OAAO,UAAU,CAAC;YAChD,OAAQ,MAAc,CAAC,GAAG,CAAC,IAAc,CAAC,CAAC;QAC7C,CAAC;KACF,CAAoC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,MAA0C;IACzF,OAAO,kBAAkB,CAAC,IAAI,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,CAA6C;IAChF,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAClD,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Link builders — define relationships between object types
3
+ *
4
+ * Uses lazy `() => Type` references to support circular dependencies.
5
+ */
6
+ import type { LinkDefinition, ObjectTypeDefinition } from '../types.js';
7
+ type LinkBuilderLike = LinkBuilder & LinkDefinition;
8
+ type PublicCardinality = 'many_to_one' | 'one_to_many' | 'many_to_many' | 'one_to_one';
9
+ declare class LinkBuilder {
10
+ private readonly def;
11
+ constructor(target: () => ObjectTypeDefinition, cardinality: 'N:1' | '1:N' | 'N:N' | '1:1', overrides?: Partial<LinkDefinition>);
12
+ inverseName(name: string): LinkBuilder;
13
+ label(text: string): LinkBuilder;
14
+ description(text: string): LinkBuilder;
15
+ required(): LinkBuilder;
16
+ cardinality(value: PublicCardinality): LinkBuilder;
17
+ /** Finalize to LinkDefinition */
18
+ build(): LinkDefinition;
19
+ }
20
+ declare function namedLink(_source: string, target: string): LinkBuilderLike;
21
+ export declare const link: typeof namedLink & {
22
+ /** Many-to-one link (N:1). This object has one target. */
23
+ toOne(target: () => ObjectTypeDefinition): LinkBuilderLike;
24
+ /** One-to-many link (1:N). This object has many targets. */
25
+ toMany(target: () => ObjectTypeDefinition): LinkBuilderLike;
26
+ /** Many-to-many link (N:N). Both sides can have multiple targets. */
27
+ toManyToMany(target: () => ObjectTypeDefinition): LinkBuilderLike;
28
+ };
29
+ /**
30
+ * Materialize a LinkBuilderLike (or plain LinkDefinition) into a clean LinkDefinition.
31
+ */
32
+ export declare function materializeLink(l: LinkDefinition | LinkBuilderLike): LinkDefinition;
33
+ export {};
34
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/dsl/link.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExE,KAAK,eAAe,GAAG,WAAW,GAAG,cAAc,CAAC;AACpD,KAAK,iBAAiB,GAAG,aAAa,GAAG,aAAa,GAAG,cAAc,GAAG,YAAY,CAAC;AAoCvF,cAAM,WAAW;IACf,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiB;gBAEzB,MAAM,EAAE,MAAM,oBAAoB,EAAE,WAAW,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAS/H,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAItC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAIhC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAItC,QAAQ,IAAI,WAAW;IAIvB,WAAW,CAAC,KAAK,EAAE,iBAAiB,GAAG,WAAW;IAIlD,iCAAiC;IACjC,KAAK,IAAI,cAAc;CAGxB;AAED,iBAAS,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAEnE;AAED,eAAO,MAAM,IAAI;IACf,0DAA0D;kBAC5C,MAAM,oBAAoB,GAAG,eAAe;IAI1D,4DAA4D;mBAC7C,MAAM,oBAAoB,GAAG,eAAe;IAI3D,qEAAqE;yBAChD,MAAM,oBAAoB,GAAG,eAAe;CAGjE,CAAC;AAEH;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,cAAc,GAAG,eAAe,GAAG,cAAc,CAKnF"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Link builders — define relationships between object types
3
+ *
4
+ * Uses lazy `() => Type` references to support circular dependencies.
5
+ */
6
+ function normalizeCardinality(value) {
7
+ switch (value) {
8
+ case 'many_to_one': return 'N:1';
9
+ case 'one_to_many': return '1:N';
10
+ case 'many_to_many': return 'N:N';
11
+ case 'one_to_one': return '1:1';
12
+ }
13
+ }
14
+ function placeholderObjectType(apiName) {
15
+ return { _kind: 'objectType', apiName, fields: {} };
16
+ }
17
+ function wrapLinkProxy(builder) {
18
+ return new Proxy(builder, {
19
+ get(target, prop, receiver) {
20
+ if (prop === '_kind')
21
+ return 'link';
22
+ // Builder methods first — wrap return values to maintain proxy chain
23
+ const builderVal = Reflect.get(target, prop, receiver);
24
+ if (typeof builderVal === 'function') {
25
+ return (...args) => {
26
+ const result = builderVal.apply(target, args);
27
+ if (result instanceof LinkBuilder) {
28
+ return wrapLinkProxy(result);
29
+ }
30
+ return result;
31
+ };
32
+ }
33
+ if (builderVal !== undefined)
34
+ return builderVal;
35
+ return target.def[prop];
36
+ },
37
+ });
38
+ }
39
+ class LinkBuilder {
40
+ def;
41
+ constructor(target, cardinality, overrides) {
42
+ this.def = {
43
+ _kind: 'link',
44
+ target,
45
+ cardinality,
46
+ ...overrides,
47
+ };
48
+ }
49
+ inverseName(name) {
50
+ return new LinkBuilder(this.def.target, this.def.cardinality, { ...this.def, inverseName: name });
51
+ }
52
+ label(text) {
53
+ return new LinkBuilder(this.def.target, this.def.cardinality, { ...this.def, label: text });
54
+ }
55
+ description(text) {
56
+ return new LinkBuilder(this.def.target, this.def.cardinality, { ...this.def, description: text });
57
+ }
58
+ required() {
59
+ return this;
60
+ }
61
+ cardinality(value) {
62
+ return new LinkBuilder(this.def.target, normalizeCardinality(value), { ...this.def, cardinality: normalizeCardinality(value) });
63
+ }
64
+ /** Finalize to LinkDefinition */
65
+ build() {
66
+ return this.def;
67
+ }
68
+ }
69
+ function namedLink(_source, target) {
70
+ return wrapLinkProxy(new LinkBuilder(() => placeholderObjectType(target), 'N:1'));
71
+ }
72
+ export const link = Object.assign(namedLink, {
73
+ /** Many-to-one link (N:1). This object has one target. */
74
+ toOne(target) {
75
+ return wrapLinkProxy(new LinkBuilder(target, 'N:1'));
76
+ },
77
+ /** One-to-many link (1:N). This object has many targets. */
78
+ toMany(target) {
79
+ return wrapLinkProxy(new LinkBuilder(target, '1:N'));
80
+ },
81
+ /** Many-to-many link (N:N). Both sides can have multiple targets. */
82
+ toManyToMany(target) {
83
+ return wrapLinkProxy(new LinkBuilder(target, 'N:N'));
84
+ },
85
+ });
86
+ /**
87
+ * Materialize a LinkBuilderLike (or plain LinkDefinition) into a clean LinkDefinition.
88
+ */
89
+ export function materializeLink(l) {
90
+ if ('build' in l && typeof l.build === 'function') {
91
+ return l.build();
92
+ }
93
+ return l;
94
+ }
95
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/dsl/link.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * objectType() — define an ontology object type with properties and links
3
+ */
4
+ import type { ObjectTypeDefinition, PropertyDefinition, LinkDefinition, InterfaceDefinition } from '../types.js';
5
+ import type { ModelSourceRef, ModelTerm } from '../types.js';
6
+ type FieldInput = PropertyDefinition | LinkDefinition;
7
+ type ObjectTypeBuilderLike = ObjectTypeBuilder & ObjectTypeDefinition;
8
+ declare class ObjectTypeBuilder {
9
+ private readonly def;
10
+ constructor(apiName: string, fields: Record<string, FieldInput>, overrides?: Partial<ObjectTypeDefinition>);
11
+ displayName(name: string): ObjectTypeBuilder;
12
+ description(text: string): ObjectTypeBuilder;
13
+ primaryKey(fieldName: string): ObjectTypeBuilder;
14
+ implements(...ifaces: InterfaceDefinition[]): ObjectTypeBuilder;
15
+ metadata(meta: Record<string, unknown>): ObjectTypeBuilder;
16
+ sourceRef(...refs: ModelSourceRef[]): ObjectTypeBuilder;
17
+ term(...terms: ModelTerm[]): ObjectTypeBuilder;
18
+ build(): ObjectTypeDefinition;
19
+ }
20
+ /**
21
+ * Define an object type with a set of property and link fields.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * const Employee = objectType('Employee', {
26
+ * name: string().required(),
27
+ * email: string().email(),
28
+ * company: link.toOne(() => Company),
29
+ * });
30
+ * ```
31
+ */
32
+ export declare function objectType(apiName: string, fields: Record<string, FieldInput>): ObjectTypeBuilderLike;
33
+ export declare function materializeObjectType(t: ObjectTypeDefinition | ObjectTypeBuilderLike): ObjectTypeDefinition;
34
+ export {};
35
+ //# sourceMappingURL=object-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-type.d.ts","sourceRoot":"","sources":["../../src/dsl/object-type.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7D,KAAK,UAAU,GAAG,kBAAkB,GAAG,cAAc,CAAC;AAEtD,KAAK,qBAAqB,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;AA0BtE,cAAM,iBAAiB;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuB;gBAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAS1G,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;IAI5C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;IAI5C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB;IAIhD,UAAU,CAAC,GAAG,MAAM,EAAE,mBAAmB,EAAE,GAAG,iBAAiB;IAQ/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB;IAO1D,SAAS,CAAC,GAAG,IAAI,EAAE,cAAc,EAAE,GAAG,iBAAiB;IAOvD,IAAI,CAAC,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,iBAAiB;IAO9C,KAAK,IAAI,oBAAoB;CAG9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,qBAAqB,CAErG;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,oBAAoB,GAAG,qBAAqB,GAAG,oBAAoB,CAK3G"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * objectType() — define an ontology object type with properties and links
3
+ */
4
+ import { mergeModelAssuranceMetadata } from '../model-assurance.js';
5
+ function wrapProxy(builder) {
6
+ return new Proxy(builder, {
7
+ get(target, prop, receiver) {
8
+ if (prop === '_kind')
9
+ return 'objectType';
10
+ if (prop === 'apiName')
11
+ return target.def.apiName;
12
+ if (prop === 'fields')
13
+ return target.def.fields;
14
+ if (prop === 'metadata')
15
+ return target.def.metadata;
16
+ // Builder methods first — wrap return values to maintain proxy chain
17
+ const builderVal = Reflect.get(target, prop, receiver);
18
+ if (typeof builderVal === 'function') {
19
+ return (...args) => {
20
+ const result = builderVal.apply(target, args);
21
+ if (result instanceof ObjectTypeBuilder) {
22
+ return wrapProxy(result);
23
+ }
24
+ return result;
25
+ };
26
+ }
27
+ if (builderVal !== undefined)
28
+ return builderVal;
29
+ return target.def[prop];
30
+ },
31
+ });
32
+ }
33
+ class ObjectTypeBuilder {
34
+ def;
35
+ constructor(apiName, fields, overrides) {
36
+ this.def = {
37
+ _kind: 'objectType',
38
+ apiName,
39
+ fields,
40
+ ...overrides,
41
+ };
42
+ }
43
+ displayName(name) {
44
+ return new ObjectTypeBuilder(this.def.apiName, this.def.fields, { ...this.def, displayName: name });
45
+ }
46
+ description(text) {
47
+ return new ObjectTypeBuilder(this.def.apiName, this.def.fields, { ...this.def, description: text });
48
+ }
49
+ primaryKey(fieldName) {
50
+ return new ObjectTypeBuilder(this.def.apiName, this.def.fields, { ...this.def, primaryKey: fieldName });
51
+ }
52
+ implements(...ifaces) {
53
+ const existing = this.def.interfaces ?? [];
54
+ return new ObjectTypeBuilder(this.def.apiName, this.def.fields, {
55
+ ...this.def,
56
+ interfaces: [...existing, ...ifaces],
57
+ });
58
+ }
59
+ metadata(meta) {
60
+ return new ObjectTypeBuilder(this.def.apiName, this.def.fields, {
61
+ ...this.def,
62
+ metadata: { ...(this.def.metadata ?? {}), ...meta },
63
+ });
64
+ }
65
+ sourceRef(...refs) {
66
+ return new ObjectTypeBuilder(this.def.apiName, this.def.fields, {
67
+ ...this.def,
68
+ metadata: mergeModelAssuranceMetadata(this.def.metadata, { sourceRefs: refs }),
69
+ });
70
+ }
71
+ term(...terms) {
72
+ return new ObjectTypeBuilder(this.def.apiName, this.def.fields, {
73
+ ...this.def,
74
+ metadata: mergeModelAssuranceMetadata(this.def.metadata, { terms }),
75
+ });
76
+ }
77
+ build() {
78
+ return this.def;
79
+ }
80
+ }
81
+ /**
82
+ * Define an object type with a set of property and link fields.
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * const Employee = objectType('Employee', {
87
+ * name: string().required(),
88
+ * email: string().email(),
89
+ * company: link.toOne(() => Company),
90
+ * });
91
+ * ```
92
+ */
93
+ export function objectType(apiName, fields) {
94
+ return wrapProxy(new ObjectTypeBuilder(apiName, fields));
95
+ }
96
+ export function materializeObjectType(t) {
97
+ if ('build' in t && typeof t.build === 'function') {
98
+ return t.build();
99
+ }
100
+ return t;
101
+ }
102
+ //# sourceMappingURL=object-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-type.js","sourceRoot":"","sources":["../../src/dsl/object-type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Property builders — chainable, immutable DSL for defining object type properties
3
+ */
4
+ import type { DataType, PropertyDefinition } from '../types.js';
5
+ export type PropertyBuilderLike = PropertyBuilder & PropertyDefinition;
6
+ declare class PropertyBuilder {
7
+ private readonly def;
8
+ constructor(dataType: DataType, overrides?: Partial<PropertyDefinition>);
9
+ required(): PropertyBuilder;
10
+ optional(): PropertyBuilder;
11
+ indexed(): PropertyBuilder;
12
+ unique(): PropertyBuilder;
13
+ default(value: unknown): PropertyBuilder;
14
+ description(text: string): PropertyBuilder;
15
+ email(): PropertyBuilder;
16
+ datetime(): PropertyBuilder;
17
+ semantic(type: string): PropertyBuilder;
18
+ sensitive(): PropertyBuilder;
19
+ enum(values: readonly string[]): PropertyBuilder;
20
+ enumName(name: string): PropertyBuilder;
21
+ min(value: number): PropertyBuilder;
22
+ max(value: number): PropertyBuilder;
23
+ /** Restrict which actions can mutate this property. */
24
+ mutableBy(actions: readonly string[]): PropertyBuilder;
25
+ /** Finalize to PropertyDefinition */
26
+ build(): PropertyDefinition;
27
+ }
28
+ export declare function string(): PropertyBuilderLike;
29
+ export declare function number(): PropertyBuilderLike;
30
+ export declare function boolean(): PropertyBuilderLike;
31
+ export declare function date(): PropertyBuilderLike;
32
+ export declare function object(): PropertyBuilderLike;
33
+ export declare function array(): PropertyBuilderLike;
34
+ export declare function json(): PropertyBuilderLike;
35
+ /** Money property — number with currency semantics. Preserves currency context in round-trips. */
36
+ export declare function money(): PropertyBuilderLike;
37
+ /**
38
+ * Materialize a PropertyBuilderLike (or plain PropertyDefinition) into a clean PropertyDefinition.
39
+ * Used internally by the compiler.
40
+ */
41
+ export declare function materializeProperty(p: PropertyDefinition | PropertyBuilderLike): PropertyDefinition;
42
+ export {};
43
+ //# sourceMappingURL=property.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property.d.ts","sourceRoot":"","sources":["../../src/dsl/property.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIhE,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,kBAAkB,CAAC;AAyBvE,cAAM,eAAe;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;gBAE7B,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAWvE,QAAQ,IAAI,eAAe;IAI3B,QAAQ,IAAI,eAAe;IAI3B,OAAO,IAAI,eAAe;IAI1B,MAAM,IAAI,eAAe;IAIzB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe;IAIxC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAI1C,KAAK,IAAI,eAAe;IAIxB,QAAQ,IAAI,eAAe;IAI3B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAIvC,SAAS,IAAI,eAAe;IAI5B,IAAI,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,eAAe;IAOhD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAQvC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;IAOnC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;IAOnC,uDAAuD;IACvD,SAAS,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,eAAe;IAItD,qCAAqC;IACrC,KAAK,IAAI,kBAAkB;CAG5B;AAID,wBAAgB,MAAM,IAAI,mBAAmB,CAA6D;AAC1G,wBAAgB,MAAM,IAAI,mBAAmB,CAA6D;AAC1G,wBAAgB,OAAO,IAAI,mBAAmB,CAA8D;AAC5G,wBAAgB,IAAI,IAAI,mBAAmB,CAA2D;AACtG,wBAAgB,MAAM,IAAI,mBAAmB,CAA6D;AAC1G,wBAAgB,KAAK,IAAI,mBAAmB,CAA4D;AACxG,wBAAgB,IAAI,IAAI,mBAAmB,CAAqB;AAChE,kGAAkG;AAClG,wBAAgB,KAAK,IAAI,mBAAmB,CAAwF;AAEpI;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,kBAAkB,GAAG,mBAAmB,GAAG,kBAAkB,CAKnG"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Property builders — chainable, immutable DSL for defining object type properties
3
+ */
4
+ function wrapPropertyProxy(builder) {
5
+ return new Proxy(builder, {
6
+ get(target, prop, receiver) {
7
+ if (prop === '_kind')
8
+ return 'property';
9
+ if (prop === 'dataType')
10
+ return target.def.dataType;
11
+ // Builder methods first — wrap return values to maintain proxy chain
12
+ const builderVal = Reflect.get(target, prop, receiver);
13
+ if (typeof builderVal === 'function') {
14
+ return (...args) => {
15
+ const result = builderVal.apply(target, args);
16
+ if (result instanceof PropertyBuilder) {
17
+ return wrapPropertyProxy(result);
18
+ }
19
+ return result;
20
+ };
21
+ }
22
+ if (builderVal !== undefined)
23
+ return builderVal;
24
+ // Fall through to the underlying def
25
+ return target.def[prop];
26
+ },
27
+ });
28
+ }
29
+ class PropertyBuilder {
30
+ def;
31
+ constructor(dataType, overrides) {
32
+ this.def = {
33
+ _kind: 'property',
34
+ dataType,
35
+ required: false,
36
+ indexed: false,
37
+ unique: false,
38
+ ...overrides,
39
+ };
40
+ }
41
+ required() {
42
+ return new PropertyBuilder(this.def.dataType, { ...this.def, required: true });
43
+ }
44
+ optional() {
45
+ return new PropertyBuilder(this.def.dataType, { ...this.def, required: false });
46
+ }
47
+ indexed() {
48
+ return new PropertyBuilder(this.def.dataType, { ...this.def, indexed: true });
49
+ }
50
+ unique() {
51
+ return new PropertyBuilder(this.def.dataType, { ...this.def, unique: true, indexed: true });
52
+ }
53
+ default(value) {
54
+ return new PropertyBuilder(this.def.dataType, { ...this.def, defaultValue: value });
55
+ }
56
+ description(text) {
57
+ return new PropertyBuilder(this.def.dataType, { ...this.def, description: text });
58
+ }
59
+ email() {
60
+ return new PropertyBuilder(this.def.dataType, { ...this.def, semanticType: 'email' });
61
+ }
62
+ datetime() {
63
+ return new PropertyBuilder(this.def.dataType, { ...this.def, semanticType: 'datetime' });
64
+ }
65
+ semantic(type) {
66
+ return new PropertyBuilder(this.def.dataType, { ...this.def, semanticType: type });
67
+ }
68
+ sensitive() {
69
+ return new PropertyBuilder(this.def.dataType, { ...this.def, sensitive: true });
70
+ }
71
+ enum(values) {
72
+ return new PropertyBuilder(this.def.dataType, {
73
+ ...this.def,
74
+ constraints: { ...this.def.constraints, enum: values },
75
+ });
76
+ }
77
+ enumName(name) {
78
+ return new PropertyBuilder(this.def.dataType, {
79
+ ...this.def,
80
+ constraints: { ...this.def.constraints, enumName: name },
81
+ semanticType: `enum:${name}`,
82
+ });
83
+ }
84
+ min(value) {
85
+ return new PropertyBuilder(this.def.dataType, {
86
+ ...this.def,
87
+ constraints: { ...this.def.constraints, min: value },
88
+ });
89
+ }
90
+ max(value) {
91
+ return new PropertyBuilder(this.def.dataType, {
92
+ ...this.def,
93
+ constraints: { ...this.def.constraints, max: value },
94
+ });
95
+ }
96
+ /** Restrict which actions can mutate this property. */
97
+ mutableBy(actions) {
98
+ return new PropertyBuilder(this.def.dataType, { ...this.def, mutableBy: actions });
99
+ }
100
+ /** Finalize to PropertyDefinition */
101
+ build() {
102
+ return this.def;
103
+ }
104
+ }
105
+ // --- Public API ---
106
+ export function string() { return wrapPropertyProxy(new PropertyBuilder('string')); }
107
+ export function number() { return wrapPropertyProxy(new PropertyBuilder('number')); }
108
+ export function boolean() { return wrapPropertyProxy(new PropertyBuilder('boolean')); }
109
+ export function date() { return wrapPropertyProxy(new PropertyBuilder('date')); }
110
+ export function object() { return wrapPropertyProxy(new PropertyBuilder('object')); }
111
+ export function array() { return wrapPropertyProxy(new PropertyBuilder('array')); }
112
+ export function json() { return object(); }
113
+ /** Money property — number with currency semantics. Preserves currency context in round-trips. */
114
+ export function money() { return wrapPropertyProxy(new PropertyBuilder('number', { semanticType: 'money' })); }
115
+ /**
116
+ * Materialize a PropertyBuilderLike (or plain PropertyDefinition) into a clean PropertyDefinition.
117
+ * Used internally by the compiler.
118
+ */
119
+ export function materializeProperty(p) {
120
+ if ('build' in p && typeof p.build === 'function') {
121
+ return p.build();
122
+ }
123
+ return p;
124
+ }
125
+ //# sourceMappingURL=property.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property.js","sourceRoot":"","sources":["../../src/dsl/property.ts"],"names":[],"mappings":"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"}