@party-stack/ontology 0.1.0

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 (102) hide show
  1. package/LICENSE +21 -0
  2. package/lib/LiveOntology.d.ts +22 -0
  3. package/lib/LiveOntology.d.ts.map +1 -0
  4. package/lib/LiveOntology.js +25 -0
  5. package/lib/LiveOntology.js.map +1 -0
  6. package/lib/OntologyAdapter.d.ts +8 -0
  7. package/lib/OntologyAdapter.d.ts.map +1 -0
  8. package/lib/OntologyAdapter.js +2 -0
  9. package/lib/OntologyAdapter.js.map +1 -0
  10. package/lib/OntologyConfig.d.ts +10 -0
  11. package/lib/OntologyConfig.d.ts.map +1 -0
  12. package/lib/OntologyConfig.js +2 -0
  13. package/lib/OntologyConfig.js.map +1 -0
  14. package/lib/cli/generate.d.ts +9 -0
  15. package/lib/cli/generate.d.ts.map +1 -0
  16. package/lib/cli/generate.js +111 -0
  17. package/lib/cli/generate.js.map +1 -0
  18. package/lib/cli/index.d.ts +3 -0
  19. package/lib/cli/index.d.ts.map +1 -0
  20. package/lib/cli/index.js +70 -0
  21. package/lib/cli/index.js.map +1 -0
  22. package/lib/cli/pull.d.ts +7 -0
  23. package/lib/cli/pull.d.ts.map +1 -0
  24. package/lib/cli/pull.js +56 -0
  25. package/lib/cli/pull.js.map +1 -0
  26. package/lib/examples/blog.d.ts +127 -0
  27. package/lib/examples/blog.d.ts.map +1 -0
  28. package/lib/examples/blog.js +224 -0
  29. package/lib/examples/blog.js.map +1 -0
  30. package/lib/examples/blog.live-queries.d.ts +4 -0
  31. package/lib/examples/blog.live-queries.d.ts.map +1 -0
  32. package/lib/examples/blog.live-queries.js +44 -0
  33. package/lib/examples/blog.live-queries.js.map +1 -0
  34. package/lib/examples/generated/live.d.ts +5 -0
  35. package/lib/examples/generated/live.d.ts.map +1 -0
  36. package/lib/examples/generated/live.js +10 -0
  37. package/lib/examples/generated/live.js.map +1 -0
  38. package/lib/examples/generated/types.d.ts +48 -0
  39. package/lib/examples/generated/types.d.ts.map +1 -0
  40. package/lib/examples/generated/types.js +3 -0
  41. package/lib/examples/generated/types.js.map +1 -0
  42. package/lib/generate/live.d.ts +10 -0
  43. package/lib/generate/live.d.ts.map +1 -0
  44. package/lib/generate/live.js +36 -0
  45. package/lib/generate/live.js.map +1 -0
  46. package/lib/generate/ontology.d.ts +6 -0
  47. package/lib/generate/ontology.d.ts.map +1 -0
  48. package/lib/generate/ontology.js +246 -0
  49. package/lib/generate/ontology.js.map +1 -0
  50. package/lib/generate/types.d.ts +6 -0
  51. package/lib/generate/types.d.ts.map +1 -0
  52. package/lib/generate/types.js +61 -0
  53. package/lib/generate/types.js.map +1 -0
  54. package/lib/index.d.ts +8 -0
  55. package/lib/index.d.ts.map +1 -0
  56. package/lib/index.js +7 -0
  57. package/lib/index.js.map +1 -0
  58. package/lib/ir/generated/builders.d.ts +224 -0
  59. package/lib/ir/generated/builders.d.ts.map +1 -0
  60. package/lib/ir/generated/builders.js +89 -0
  61. package/lib/ir/generated/builders.js.map +1 -0
  62. package/lib/ir/generated/types.d.ts +179 -0
  63. package/lib/ir/generated/types.d.ts.map +1 -0
  64. package/lib/ir/generated/types.js +3 -0
  65. package/lib/ir/generated/types.js.map +1 -0
  66. package/lib/ir/generated/validators.d.ts +33 -0
  67. package/lib/ir/generated/validators.d.ts.map +1 -0
  68. package/lib/ir/generated/validators.js +109 -0
  69. package/lib/ir/generated/validators.js.map +1 -0
  70. package/lib/ir/index.d.ts +4 -0
  71. package/lib/ir/index.d.ts.map +1 -0
  72. package/lib/ir/index.js +4 -0
  73. package/lib/ir/index.js.map +1 -0
  74. package/lib/ir/schema.d.ts +33 -0
  75. package/lib/ir/schema.d.ts.map +1 -0
  76. package/lib/ir/schema.js +194 -0
  77. package/lib/ir/schema.js.map +1 -0
  78. package/lib/ir/validate.d.ts +14 -0
  79. package/lib/ir/validate.d.ts.map +1 -0
  80. package/lib/ir/validate.js +182 -0
  81. package/lib/ir/validate.js.map +1 -0
  82. package/lib/ir/validate.test.d.ts +2 -0
  83. package/lib/ir/validate.test.d.ts.map +1 -0
  84. package/lib/ir/validate.test.js +317 -0
  85. package/lib/ir/validate.test.js.map +1 -0
  86. package/lib/meta/pull.d.ts +5 -0
  87. package/lib/meta/pull.d.ts.map +1 -0
  88. package/lib/meta/pull.js +43 -0
  89. package/lib/meta/pull.js.map +1 -0
  90. package/lib/ontology/generated/live.d.ts +5 -0
  91. package/lib/ontology/generated/live.d.ts.map +1 -0
  92. package/lib/ontology/generated/live.js +10 -0
  93. package/lib/ontology/generated/live.js.map +1 -0
  94. package/lib/ontology/generated/types.d.ts +177 -0
  95. package/lib/ontology/generated/types.d.ts.map +1 -0
  96. package/lib/ontology/generated/types.js +3 -0
  97. package/lib/ontology/generated/types.js.map +1 -0
  98. package/lib/ontology/ontology.d.ts +21 -0
  99. package/lib/ontology/ontology.d.ts.map +1 -0
  100. package/lib/ontology/ontology.js +65 -0
  101. package/lib/ontology/ontology.js.map +1 -0
  102. package/package.json +47 -0
@@ -0,0 +1,317 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { o } from "./generated/builders.js";
3
+ import { validate } from "./validate.js";
4
+ function expectOk(result) {
5
+ expect(result.kind).toBe("ok");
6
+ }
7
+ function expectErr(result, count) {
8
+ expect(result.kind).toBe("err");
9
+ if (result.kind === "err" && count !== undefined) {
10
+ expect(result.errors).toHaveLength(count);
11
+ }
12
+ }
13
+ function getErrors(result) {
14
+ return result.kind === "ok" ? [] : result.errors.map((e) => e.message);
15
+ }
16
+ const emptyOntology = {
17
+ types: [],
18
+ objectTypes: [],
19
+ linkTypes: [],
20
+ };
21
+ const minimalObjectType = (overrides) => ({
22
+ name: "Employee",
23
+ displayName: "Employee",
24
+ pluralDisplayName: "Employees",
25
+ primaryKey: "employeeId",
26
+ properties: [
27
+ { name: "employeeId", displayName: "Employee ID", type: o.string({}) },
28
+ { name: "name", displayName: "Name", type: o.string({}) },
29
+ ],
30
+ ...overrides,
31
+ });
32
+ describe("Ontology Validation", () => {
33
+ it("should validate an empty ontology", () => {
34
+ expectOk(validate(emptyOntology));
35
+ });
36
+ it("should validate a simple ontology with object types", () => {
37
+ const ontology = {
38
+ ...emptyOntology,
39
+ objectTypes: [minimalObjectType()],
40
+ };
41
+ expectOk(validate(ontology));
42
+ });
43
+ describe("Primary Key Validation", () => {
44
+ it("should detect primary key that doesn't reference a property", () => {
45
+ const ontology = {
46
+ ...emptyOntology,
47
+ objectTypes: [minimalObjectType({ primaryKey: "nonExistent" })],
48
+ };
49
+ const result = validate(ontology);
50
+ expectErr(result, 1);
51
+ expect(getErrors(result)).toContain('Primary key "nonExistent" does not reference a valid property.');
52
+ });
53
+ it("should accept valid primary key reference", () => {
54
+ const ontology = {
55
+ ...emptyOntology,
56
+ objectTypes: [minimalObjectType({ primaryKey: "employeeId" })],
57
+ };
58
+ expectOk(validate(ontology));
59
+ });
60
+ });
61
+ describe("Duplicate Name Detection", () => {
62
+ it("should detect duplicate object type names", () => {
63
+ const ontology = {
64
+ ...emptyOntology,
65
+ objectTypes: [minimalObjectType(), minimalObjectType()],
66
+ };
67
+ const result = validate(ontology);
68
+ expectErr(result, 1);
69
+ expect(getErrors(result)).toContain('Duplicate object type name: "Employee".');
70
+ });
71
+ it("should detect duplicate value type names", () => {
72
+ const ontology = {
73
+ ...emptyOntology,
74
+ types: [
75
+ { name: "Address", type: o.struct({ fields: [] }) },
76
+ { name: "Address", type: o.struct({ fields: [] }) },
77
+ ],
78
+ };
79
+ const result = validate(ontology);
80
+ expectErr(result, 1);
81
+ expect(getErrors(result)).toContain('Duplicate value type name: "Address".');
82
+ });
83
+ it("should detect duplicate link type target names for one source object", () => {
84
+ const ontology = {
85
+ ...emptyOntology,
86
+ objectTypes: [minimalObjectType({ name: "A" }), minimalObjectType({ name: "B" })],
87
+ linkTypes: [
88
+ {
89
+ id: "aToB1",
90
+ source: { objectType: "A", name: "toB", displayName: "To B" },
91
+ target: { objectType: "B", name: "fromA", displayName: "From A" },
92
+ foreignKey: "employeeId",
93
+ cardinality: "many",
94
+ },
95
+ {
96
+ id: "aToB2",
97
+ source: { objectType: "A", name: "toB2", displayName: "To B Again" },
98
+ target: { objectType: "B", name: "fromA", displayName: "From A Again" },
99
+ foreignKey: "employeeId",
100
+ cardinality: "one",
101
+ },
102
+ ],
103
+ };
104
+ const result = validate(ontology);
105
+ expectErr(result, 1);
106
+ expect(getErrors(result)).toContain('Duplicate link type target name: "fromA" on "A".');
107
+ });
108
+ it("should detect duplicate property names within an object type", () => {
109
+ const ontology = {
110
+ ...emptyOntology,
111
+ objectTypes: [
112
+ {
113
+ name: "Employee",
114
+ displayName: "Employee",
115
+ pluralDisplayName: "Employees",
116
+ primaryKey: "id",
117
+ properties: [
118
+ { name: "id", displayName: "ID", type: o.string({}) },
119
+ { name: "id", displayName: "ID Duplicate", type: o.string({}) },
120
+ ],
121
+ },
122
+ ],
123
+ };
124
+ const result = validate(ontology);
125
+ expectErr(result, 1);
126
+ expect(getErrors(result)).toContain('Duplicate property name: "id".');
127
+ });
128
+ });
129
+ describe("Link Validation", () => {
130
+ it("should detect link referencing non-existent source object type", () => {
131
+ const ontology = {
132
+ ...emptyOntology,
133
+ objectTypes: [minimalObjectType()],
134
+ linkTypes: [
135
+ {
136
+ id: "badLinkSource",
137
+ source: {
138
+ objectType: "NonExistent",
139
+ name: "missingSource",
140
+ displayName: "Missing Source",
141
+ },
142
+ target: {
143
+ objectType: "Employee",
144
+ name: "employee",
145
+ displayName: "Employee",
146
+ },
147
+ foreignKey: "employeeId",
148
+ cardinality: "one",
149
+ },
150
+ ],
151
+ };
152
+ const result = validate(ontology);
153
+ expectErr(result, 1);
154
+ expect(getErrors(result)).toContain('Source object type "NonExistent" does not exist.');
155
+ });
156
+ it("should detect link referencing non-existent target object type", () => {
157
+ const ontology = {
158
+ ...emptyOntology,
159
+ objectTypes: [minimalObjectType()],
160
+ linkTypes: [
161
+ {
162
+ id: "badLinkTarget",
163
+ source: {
164
+ objectType: "Employee",
165
+ name: "missingTarget",
166
+ displayName: "Missing Target",
167
+ },
168
+ target: {
169
+ objectType: "NonExistent",
170
+ name: "unknown",
171
+ displayName: "Unknown",
172
+ },
173
+ foreignKey: "employeeId",
174
+ cardinality: "many",
175
+ },
176
+ ],
177
+ };
178
+ const result = validate(ontology);
179
+ expectErr(result, 1);
180
+ expect(getErrors(result)).toContain('Target object type "NonExistent" does not exist.');
181
+ });
182
+ it("should validate links with valid object type references", () => {
183
+ const ontology = {
184
+ ...emptyOntology,
185
+ objectTypes: [minimalObjectType({ name: "Author" }), minimalObjectType({ name: "Post" })],
186
+ linkTypes: [
187
+ {
188
+ id: "authorPosts",
189
+ source: {
190
+ objectType: "Author",
191
+ name: "posts",
192
+ displayName: "Posts",
193
+ },
194
+ target: {
195
+ objectType: "Post",
196
+ name: "author",
197
+ displayName: "Author",
198
+ },
199
+ foreignKey: "employeeId",
200
+ cardinality: "many",
201
+ },
202
+ ],
203
+ };
204
+ expectOk(validate(ontology));
205
+ });
206
+ });
207
+ describe("Ref Resolution", () => {
208
+ it("should detect unknown value type references in properties", () => {
209
+ const ontology = {
210
+ ...emptyOntology,
211
+ objectTypes: [
212
+ {
213
+ name: "Employee",
214
+ displayName: "Employee",
215
+ pluralDisplayName: "Employees",
216
+ primaryKey: "id",
217
+ properties: [
218
+ { name: "id", displayName: "ID", type: o.string({}) },
219
+ {
220
+ name: "address",
221
+ displayName: "Address",
222
+ type: o.ref({ name: "UnknownType" }),
223
+ },
224
+ ],
225
+ },
226
+ ],
227
+ };
228
+ const result = validate(ontology);
229
+ expectErr(result, 1);
230
+ expect(getErrors(result)).toContain('Unknown value type reference: "UnknownType".');
231
+ });
232
+ it("should resolve refs to declared value types", () => {
233
+ const ontology = {
234
+ ...emptyOntology,
235
+ types: [
236
+ {
237
+ name: "Address",
238
+ type: o.struct({
239
+ fields: [{ name: "city", displayName: "City", type: o.string({}) }],
240
+ }),
241
+ },
242
+ ],
243
+ objectTypes: [
244
+ {
245
+ name: "Employee",
246
+ displayName: "Employee",
247
+ pluralDisplayName: "Employees",
248
+ primaryKey: "id",
249
+ properties: [
250
+ { name: "id", displayName: "ID", type: o.string({}) },
251
+ {
252
+ name: "address",
253
+ displayName: "Address",
254
+ type: o.ref({ name: "Address" }),
255
+ },
256
+ ],
257
+ },
258
+ ],
259
+ };
260
+ expectOk(validate(ontology));
261
+ });
262
+ });
263
+ describe("Attachment Type", () => {
264
+ it("should validate properties with attachment type", () => {
265
+ const ontology = {
266
+ ...emptyOntology,
267
+ objectTypes: [
268
+ {
269
+ name: "Document",
270
+ displayName: "Document",
271
+ pluralDisplayName: "Documents",
272
+ primaryKey: "docId",
273
+ properties: [
274
+ { name: "docId", displayName: "Doc ID", type: o.string({}) },
275
+ { name: "file", displayName: "File", type: o.attachment({}) },
276
+ {
277
+ name: "thumbnail",
278
+ displayName: "Thumbnail",
279
+ type: o.optional({ type: o.attachment({}) }),
280
+ },
281
+ ],
282
+ },
283
+ ],
284
+ };
285
+ expectOk(validate(ontology));
286
+ });
287
+ });
288
+ describe("Blog Example", () => {
289
+ it("should validate the blog example ontology", async () => {
290
+ const { default: blogOntology } = await import("../examples/blog.js");
291
+ expectOk(validate(blogOntology));
292
+ });
293
+ });
294
+ describe("Ontology Ontology", () => {
295
+ it("should validate the ontology ontology (self-describing)", async () => {
296
+ const { default: ontologyOntology } = await import("../ontology/ontology.js");
297
+ expectOk(validate(ontologyOntology));
298
+ });
299
+ it("should contain ObjectType, ValueType, and LinkType as object types", async () => {
300
+ const { default: ontologyOntology } = await import("../ontology/ontology.js");
301
+ const objectTypeNames = ontologyOntology.objectTypes.map((ot) => ot.name);
302
+ expect(objectTypeNames).toContain("ObjectType");
303
+ expect(objectTypeNames).toContain("ValueType");
304
+ expect(objectTypeNames).toContain("LinkType");
305
+ });
306
+ it("should have links from LinkType to ObjectType for source and target metadata", async () => {
307
+ const { default: ontologyOntology } = await import("../ontology/ontology.js");
308
+ const sourceNames = ontologyOntology.linkTypes.map((lt) => lt.source.name);
309
+ expect(sourceNames).toContain("outgoingLinkTypes");
310
+ expect(sourceNames).toContain("incomingLinkTypes");
311
+ const targetNames = ontologyOntology.linkTypes.map((lt) => lt.target.name);
312
+ expect(targetNames).toContain("source");
313
+ expect(targetNames).toContain("target");
314
+ });
315
+ });
316
+ });
317
+ //# sourceMappingURL=validate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.test.js","sourceRoot":"","sources":["../../src/ir/validate.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { OntologyIR } from "../ir/generated/types.js";
2
+ import type { LiveOntology } from "../LiveOntology.js";
3
+ import type { MetaOntology } from "../ontology/generated/types.js";
4
+ export declare function pull(ontology: LiveOntology<MetaOntology>, objectTypeNames: string[]): Promise<OntologyIR>;
5
+ //# sourceMappingURL=pull.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/meta/pull.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,gCAAgC,CAAC;AA2BxF,wBAAsB,IAAI,CACtB,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,EACpC,eAAe,EAAE,MAAM,EAAE,GAC1B,OAAO,CAAC,UAAU,CAAC,CAgCrB"}
@@ -0,0 +1,43 @@
1
+ import { and, inArray, Query, queryOnce } from "@tanstack/db";
2
+ function getValueTypes(type) {
3
+ switch (type.kind) {
4
+ case "list":
5
+ return getValueTypes(type.value.elementType);
6
+ case "map":
7
+ return [...getValueTypes(type.value.keyType), ...getValueTypes(type.value.valueType)];
8
+ case "optional":
9
+ return getValueTypes(type.value.type);
10
+ case "result":
11
+ return [...getValueTypes(type.value.okType), ...getValueTypes(type.value.errType)];
12
+ case "struct":
13
+ return type.value.fields.flatMap((field) => getValueTypes(field.type));
14
+ case "ref":
15
+ return [type.value.name];
16
+ default:
17
+ return [];
18
+ }
19
+ }
20
+ function getObjectTypeValueTypes(objectType) {
21
+ return Array.from(new Set(objectType.properties.flatMap((p) => getValueTypes(p.type))));
22
+ }
23
+ // TODO: port this to pure queries once we can do some sort of explode operation.
24
+ export async function pull(ontology, objectTypeNames) {
25
+ const { ValueType, ObjectType, LinkType } = ontology.objects;
26
+ const objectTypesQuery = new Query()
27
+ .from({ ObjectType })
28
+ .where(({ ObjectType }) => inArray(ObjectType.name, objectTypeNames));
29
+ const objectTypes = await queryOnce(() => objectTypesQuery);
30
+ const valueTypeNames = Array.from(new Set(objectTypes.flatMap(getObjectTypeValueTypes)));
31
+ const [types, linkTypes] = await Promise.all([
32
+ queryOnce((q) => q.from({ ValueType }).where(({ ValueType }) => inArray(ValueType.name, valueTypeNames))),
33
+ queryOnce((q) => q
34
+ .from({ LinkType })
35
+ .where(({ LinkType }) => and(inArray(LinkType.source.objectType, objectTypeNames), inArray(LinkType.target.objectType, objectTypeNames)))),
36
+ ]);
37
+ return {
38
+ types,
39
+ objectTypes,
40
+ linkTypes,
41
+ };
42
+ }
43
+ //# sourceMappingURL=pull.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/meta/pull.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type LiveOntology } from "../../LiveOntology.js";
2
+ import type { MetaOntology } from "./types.js";
3
+ import type { OntologyAdapter } from "../../OntologyAdapter.js";
4
+ export declare function createMetaLiveOntology(adapter: OntologyAdapter): LiveOntology<MetaOntology>;
5
+ //# sourceMappingURL=live.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../../src/ontology/generated/live.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,YAAY,CAAC,YAAY,CAAC,CAK3F"}
@@ -0,0 +1,10 @@
1
+ // Auto-generated file - do not edit manually
2
+ import { createLiveOntology } from "../../LiveOntology.js";
3
+ import ontology from "../ontology.js";
4
+ export function createMetaLiveOntology(adapter) {
5
+ return createLiveOntology({
6
+ ir: ontology,
7
+ adapter,
8
+ });
9
+ }
10
+ //# sourceMappingURL=live.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.js","sourceRoot":"","sources":["../../../src/ontology/generated/live.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C,OAAO,EAAE,kBAAkB,EAAqB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,MAAM,UAAU,sBAAsB,CAAC,OAAwB;IAC3D,OAAO,kBAAkB,CAAe;QACpC,EAAE,EAAE,QAAQ;QACZ,OAAO;KACV,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,177 @@
1
+ import * as v from "@party-stack/schema/values";
2
+ export type Deprecation = {
3
+ message: string;
4
+ };
5
+ /** Constrains a string to a set of allowed values. */
6
+ export type StringEnumConstraint = {
7
+ options: Array<{
8
+ value: string;
9
+ label?: string;
10
+ }>;
11
+ };
12
+ /** Constrains a string to a regex. */
13
+ export type StringRegexConstraint = {
14
+ regex: string;
15
+ };
16
+ /** A constraint that can be applied to a string type. */
17
+ export type StringConstraint = v.Union<{
18
+ enum: StringEnumConstraint;
19
+ regex: StringRegexConstraint;
20
+ }>;
21
+ /** A string type with optional constraints. */
22
+ export type StringTypeDef = {
23
+ constraint?: StringConstraint;
24
+ };
25
+ /** A boolean type. */
26
+ export type BooleanTypeDef = Record<never, never>;
27
+ /** A 32-bit integer type. */
28
+ export type IntegerTypeDef = Record<never, never>;
29
+ /** A 32-bit floating point type. */
30
+ export type FloatTypeDef = Record<never, never>;
31
+ /** A 64-bit floating point type. */
32
+ export type DoubleTypeDef = Record<never, never>;
33
+ /** A date type (no time component). */
34
+ export type DateTypeDef = Record<never, never>;
35
+ /** A timestamp type (instant in time). */
36
+ export type TimestampTypeDef = Record<never, never>;
37
+ /** A geographic point (lat/lon). */
38
+ export type GeopointTypeDef = Record<never, never>;
39
+ /** A file handle. */
40
+ export type AttachmentTypeDef = Record<never, never>;
41
+ /** A list/array type. */
42
+ export type ListTypeDef = {
43
+ /** The type of elements in the list. */
44
+ elementType: TypeDef;
45
+ };
46
+ /** A map/record type. */
47
+ export type MapTypeDef = {
48
+ /** The type of keys (must be string right now). */
49
+ keyType: TypeDef;
50
+ /** The type of values. */
51
+ valueType: TypeDef;
52
+ };
53
+ /** Definition of a field in a struct. */
54
+ export type FieldDef = {
55
+ /** The field name in code. */
56
+ name: string;
57
+ /** Human-readable name. */
58
+ displayName: string;
59
+ /** The field's type. */
60
+ type: TypeDef;
61
+ /** Optional description. */
62
+ description?: string;
63
+ deprecated?: Deprecation;
64
+ };
65
+ /** A struct type with named fields. */
66
+ export type StructTypeDef = {
67
+ fields: Array<FieldDef>;
68
+ };
69
+ /** Definition of a variant in a discriminated union. */
70
+ export type VariantDef = {
71
+ /** The variant's discriminator value. */
72
+ name: string;
73
+ /** The variant's payload type. */
74
+ type: TypeDef;
75
+ };
76
+ /** A discriminated union type. */
77
+ export type UnionTypeDef = {
78
+ variants: Array<VariantDef>;
79
+ };
80
+ /** Wraps a type to make it optional. */
81
+ export type OptionalTypeDef = {
82
+ /** The wrapped type. */
83
+ type: TypeDef;
84
+ };
85
+ /** A result type (ok or error). */
86
+ export type ResultTypeDef = {
87
+ /** The type of the success value. */
88
+ okType: TypeDef;
89
+ /** The type of the error value. */
90
+ errType: TypeDef;
91
+ };
92
+ /** A reference to a named type. */
93
+ export type TypeRef = {
94
+ /** The name of the referenced type. */
95
+ name: string;
96
+ };
97
+ /** A type definition. Can be a primitive, collection, struct, union, optional, result, or reference. */
98
+ export type TypeDef = v.Union<{
99
+ string: StringTypeDef;
100
+ boolean: BooleanTypeDef;
101
+ integer: IntegerTypeDef;
102
+ float: FloatTypeDef;
103
+ double: DoubleTypeDef;
104
+ date: DateTypeDef;
105
+ timestamp: TimestampTypeDef;
106
+ geopoint: GeopointTypeDef;
107
+ attachment: AttachmentTypeDef;
108
+ list: ListTypeDef;
109
+ map: MapTypeDef;
110
+ struct: StructTypeDef;
111
+ union: UnionTypeDef;
112
+ optional: OptionalTypeDef;
113
+ result: ResultTypeDef;
114
+ ref: TypeRef;
115
+ }>;
116
+ /** A property on an Object type. */
117
+ export type PropertyDef = {
118
+ /** The property's name. */
119
+ name: string;
120
+ /** Human-readable name. */
121
+ displayName: string;
122
+ /** The property's type. */
123
+ type: TypeDef;
124
+ /** Optional description. */
125
+ description?: string;
126
+ deprecated?: Deprecation;
127
+ };
128
+ export type LinkTypeSideDef = {
129
+ objectType: string;
130
+ name: string;
131
+ displayName: string;
132
+ };
133
+ /** The cardinality of a link from the source's perspective. */
134
+ export type LinkCardinality = "one" | "many";
135
+ /** A named type definition that can be referenced by other types. */
136
+ export type ValueType = {
137
+ /** The type's name for use in code. */
138
+ name: string;
139
+ /** Optional documentation for the type. */
140
+ description?: string;
141
+ deprecated?: Deprecation;
142
+ /** The type definition. */
143
+ type: TypeDef;
144
+ };
145
+ /** An object type in the ontology. */
146
+ export type ObjectType = {
147
+ /** The object type's programmatic name. */
148
+ name: string;
149
+ /** Human-readable name. */
150
+ displayName: string;
151
+ pluralDisplayName: string;
152
+ /** The name of the property that serves as primary key. */
153
+ primaryKey: string;
154
+ /** The object type's properties. */
155
+ properties: Array<PropertyDef>;
156
+ /** Optional description. */
157
+ description?: string;
158
+ deprecated?: Deprecation;
159
+ };
160
+ /** A relationship between two object types. */
161
+ export type LinkType = {
162
+ id: string;
163
+ source: LinkTypeSideDef;
164
+ target: LinkTypeSideDef;
165
+ /** The foreign key on the source. */
166
+ foreignKey: string;
167
+ /** How many sources are linked to the target. */
168
+ cardinality: "one" | "many";
169
+ };
170
+ export type MetaOntology = {
171
+ objectTypes: {
172
+ ValueType: ValueType;
173
+ ObjectType: ObjectType;
174
+ LinkType: LinkType;
175
+ };
176
+ };
177
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ontology/generated/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // Auto-generated file - do not edit manually
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ontology/generated/types.ts"],"names":[],"mappings":"AAAA,6CAA6C"}
@@ -0,0 +1,21 @@
1
+ declare const _default: {
2
+ linkTypes: {
3
+ id: string;
4
+ source: {
5
+ objectType: string;
6
+ name: string;
7
+ displayName: string;
8
+ };
9
+ target: {
10
+ objectType: string;
11
+ name: string;
12
+ displayName: string;
13
+ };
14
+ foreignKey: string;
15
+ cardinality: "many";
16
+ }[];
17
+ types: Array<import("../ir/generated/types.js").NamedTypeDef>;
18
+ objectTypes: Array<import("../ir/generated/types.js").ObjectTypeDef>;
19
+ };
20
+ export default _default;
21
+ //# sourceMappingURL=ontology.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ontology.d.ts","sourceRoot":"","sources":["../../src/ontology/ontology.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAgCA,wBA4CuB"}