@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,224 @@
1
+ /**
2
+ * Example: Blog ontology with Authors, Posts, and Comments.
3
+ *
4
+ * Demonstrates:
5
+ * - Object types with primary keys and typed properties
6
+ * - Value types (reusable structured types)
7
+ * - Link types with cardinality
8
+ * - Attachment properties (e.g. author avatar)
9
+ * - String enum constraints (e.g. post status)
10
+ * - Optional properties and timestamps
11
+ */
12
+ import { o } from "../ir/generated/builders.js";
13
+ export default {
14
+ types: [
15
+ {
16
+ name: "Address",
17
+ description: "A mailing address.",
18
+ type: o.struct({
19
+ fields: [
20
+ { name: "line1", displayName: "Line 1", type: o.string({}) },
21
+ {
22
+ name: "line2",
23
+ displayName: "Line 2",
24
+ type: o.optional({ type: o.string({}) }),
25
+ },
26
+ { name: "city", displayName: "City", type: o.string({}) },
27
+ { name: "state", displayName: "State", type: o.string({}) },
28
+ { name: "zip", displayName: "ZIP", type: o.string({}) },
29
+ ],
30
+ }),
31
+ },
32
+ ],
33
+ objectTypes: [
34
+ {
35
+ name: "Author",
36
+ displayName: "Author",
37
+ pluralDisplayName: "Authors",
38
+ description: "A blog author.",
39
+ primaryKey: "authorId",
40
+ properties: [
41
+ {
42
+ name: "authorId",
43
+ displayName: "Author ID",
44
+ type: o.string({}),
45
+ },
46
+ {
47
+ name: "name",
48
+ displayName: "Name",
49
+ type: o.string({}),
50
+ },
51
+ {
52
+ name: "email",
53
+ displayName: "Email",
54
+ type: o.string({}),
55
+ },
56
+ {
57
+ name: "bio",
58
+ displayName: "Bio",
59
+ type: o.optional({ type: o.string({}) }),
60
+ },
61
+ {
62
+ name: "avatar",
63
+ displayName: "Avatar",
64
+ description: "The author's profile picture.",
65
+ type: o.optional({ type: o.attachment({}) }),
66
+ },
67
+ {
68
+ name: "address",
69
+ displayName: "Address",
70
+ type: o.optional({ type: o.ref({ name: "Address" }) }),
71
+ },
72
+ {
73
+ name: "createdAt",
74
+ displayName: "Created At",
75
+ type: o.timestamp({}),
76
+ },
77
+ ],
78
+ },
79
+ {
80
+ name: "Post",
81
+ displayName: "Blog Post",
82
+ pluralDisplayName: "Posts",
83
+ description: "A blog post.",
84
+ primaryKey: "postId",
85
+ properties: [
86
+ {
87
+ name: "postId",
88
+ displayName: "Post ID",
89
+ type: o.string({}),
90
+ },
91
+ {
92
+ name: "title",
93
+ displayName: "Title",
94
+ type: o.string({}),
95
+ },
96
+ {
97
+ name: "body",
98
+ displayName: "Body",
99
+ type: o.string({}),
100
+ },
101
+ {
102
+ name: "authorId",
103
+ displayName: "Author ID",
104
+ type: o.string({}),
105
+ },
106
+ {
107
+ name: "status",
108
+ displayName: "Status",
109
+ type: o.string({
110
+ constraint: o.StringConstraint.enum({
111
+ options: [
112
+ { value: "draft", label: "Draft" },
113
+ { value: "published", label: "Published" },
114
+ { value: "archived", label: "Archived" },
115
+ ],
116
+ }),
117
+ }),
118
+ },
119
+ {
120
+ name: "coverImage",
121
+ displayName: "Cover Image",
122
+ type: o.optional({ type: o.attachment({}) }),
123
+ },
124
+ {
125
+ name: "tags",
126
+ displayName: "Tags",
127
+ type: o.list({ elementType: o.string({}) }),
128
+ },
129
+ {
130
+ name: "createdAt",
131
+ displayName: "Created At",
132
+ type: o.timestamp({}),
133
+ },
134
+ {
135
+ name: "publishedAt",
136
+ displayName: "Published At",
137
+ type: o.optional({ type: o.timestamp({}) }),
138
+ },
139
+ ],
140
+ },
141
+ {
142
+ name: "Comment",
143
+ displayName: "Comment",
144
+ pluralDisplayName: "Comments",
145
+ description: "A comment on a blog post.",
146
+ primaryKey: "commentId",
147
+ properties: [
148
+ {
149
+ name: "commentId",
150
+ displayName: "Comment ID",
151
+ type: o.string({}),
152
+ },
153
+ {
154
+ name: "body",
155
+ displayName: "Body",
156
+ type: o.string({}),
157
+ },
158
+ {
159
+ name: "postId",
160
+ displayName: "Post ID",
161
+ type: o.string({}),
162
+ },
163
+ {
164
+ name: "authorId",
165
+ displayName: "Author ID",
166
+ type: o.string({}),
167
+ },
168
+ {
169
+ name: "createdAt",
170
+ displayName: "Created At",
171
+ type: o.timestamp({}),
172
+ },
173
+ ],
174
+ },
175
+ ],
176
+ linkTypes: [
177
+ {
178
+ id: "Post:author",
179
+ source: {
180
+ objectType: "Post",
181
+ name: "posts",
182
+ displayName: "Posts",
183
+ },
184
+ target: {
185
+ objectType: "Author",
186
+ name: "author",
187
+ displayName: "Author",
188
+ },
189
+ foreignKey: "authorId",
190
+ cardinality: "many",
191
+ },
192
+ {
193
+ id: "Comment:post",
194
+ source: {
195
+ objectType: "Comment",
196
+ name: "comments",
197
+ displayName: "Comments",
198
+ },
199
+ target: {
200
+ objectType: "Post",
201
+ name: "post",
202
+ displayName: "Post",
203
+ },
204
+ foreignKey: "postId",
205
+ cardinality: "many",
206
+ },
207
+ {
208
+ id: "Comment:author",
209
+ source: {
210
+ objectType: "Comment",
211
+ name: "comment",
212
+ displayName: "Comment",
213
+ },
214
+ target: {
215
+ objectType: "Author",
216
+ name: "author",
217
+ displayName: "Author",
218
+ },
219
+ foreignKey: "authorId",
220
+ cardinality: "one",
221
+ },
222
+ ],
223
+ };
224
+ //# sourceMappingURL=blog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blog.js","sourceRoot":"","sources":["../../src/examples/blog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,6BAA6B,CAAC;AAGhD,eAAe;IACX,KAAK,EAAE;QACH;YACI,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,oBAAoB;YACjC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBACX,MAAM,EAAE;oBACJ,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;oBAC5D;wBACI,IAAI,EAAE,OAAO;wBACb,WAAW,EAAE,QAAQ;wBACrB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;qBAC3C;oBACD,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;oBACzD,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;oBAC3D,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;iBAC1D;aACJ,CAAC;SACL;KACJ;IAED,WAAW,EAAE;QACT;YACI,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,QAAQ;YACrB,iBAAiB,EAAE,SAAS;YAC5B,WAAW,EAAE,gBAAgB;YAC7B,UAAU,EAAE,UAAU;YACtB,UAAU,EAAE;gBACR;oBACI,IAAI,EAAE,UAAU;oBAChB,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;iBACrB;gBACD;oBACI,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,MAAM;oBACnB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;iBACrB;gBACD;oBACI,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,OAAO;oBACpB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;iBACrB;gBACD;oBACI,IAAI,EAAE,KAAK;oBACX,WAAW,EAAE,KAAK;oBAClB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;iBAC3C;gBACD;oBACI,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,QAAQ;oBACrB,WAAW,EAAE,+BAA+B;oBAC5C,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;iBAC/C;gBACD;oBACI,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,SAAS;oBACtB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;iBACzD;gBACD;oBACI,IAAI,EAAE,WAAW;oBACjB,WAAW,EAAE,YAAY;oBACzB,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;iBACxB;aACJ;SACJ;QACD;YACI,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,WAAW;YACxB,iBAAiB,EAAE,OAAO;YAC1B,WAAW,EAAE,cAAc;YAC3B,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE;gBACR;oBACI,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,SAAS;oBACtB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;iBACrB;gBACD;oBACI,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,OAAO;oBACpB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;iBACrB;gBACD;oBACI,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,MAAM;oBACnB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;iBACrB;gBACD;oBACI,IAAI,EAAE,UAAU;oBAChB,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;iBACrB;gBACD;oBACI,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,QAAQ;oBACrB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;wBACX,UAAU,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC;4BAChC,OAAO,EAAE;gCACL,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;gCAClC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;gCAC1C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;6BAC3C;yBACJ,CAAC;qBACL,CAAC;iBACL;gBACD;oBACI,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,aAAa;oBAC1B,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;iBAC/C;gBACD;oBACI,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,MAAM;oBACnB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;iBAC9C;gBACD;oBACI,IAAI,EAAE,WAAW;oBACjB,WAAW,EAAE,YAAY;oBACzB,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;iBACxB;gBACD;oBACI,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,cAAc;oBAC3B,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;iBAC9C;aACJ;SACJ;QACD;YACI,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,SAAS;YACtB,iBAAiB,EAAE,UAAU;YAC7B,WAAW,EAAE,2BAA2B;YACxC,UAAU,EAAE,WAAW;YACvB,UAAU,EAAE;gBACR;oBACI,IAAI,EAAE,WAAW;oBACjB,WAAW,EAAE,YAAY;oBACzB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;iBACrB;gBACD;oBACI,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,MAAM;oBACnB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;iBACrB;gBACD;oBACI,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,SAAS;oBACtB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;iBACrB;gBACD;oBACI,IAAI,EAAE,UAAU;oBAChB,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;iBACrB;gBACD;oBACI,IAAI,EAAE,WAAW;oBACjB,WAAW,EAAE,YAAY;oBACzB,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;iBACxB;aACJ;SACJ;KACJ;IAED,SAAS,EAAE;QACP;YACI,EAAE,EAAE,aAAa;YACjB,MAAM,EAAE;gBACJ,UAAU,EAAE,MAAM;gBAClB,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,OAAO;aACvB;YACD,MAAM,EAAE;gBACJ,UAAU,EAAE,QAAQ;gBACpB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,QAAQ;aACxB;YACD,UAAU,EAAE,UAAU;YACtB,WAAW,EAAE,MAAM;SACtB;QACD;YACI,EAAE,EAAE,cAAc;YAClB,MAAM,EAAE;gBACJ,UAAU,EAAE,SAAS;gBACrB,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,UAAU;aAC1B;YACD,MAAM,EAAE;gBACJ,UAAU,EAAE,MAAM;gBAClB,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,MAAM;aACtB;YACD,UAAU,EAAE,QAAQ;YACpB,WAAW,EAAE,MAAM;SACtB;QACD;YACI,EAAE,EAAE,gBAAgB;YACpB,MAAM,EAAE;gBACJ,UAAU,EAAE,SAAS;gBACrB,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,SAAS;aACzB;YACD,MAAM,EAAE;gBACJ,UAAU,EAAE,QAAQ;gBACpB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,QAAQ;aACxB;YACD,UAAU,EAAE,UAAU;YACtB,WAAW,EAAE,KAAK;SACrB;KACJ;CACiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const postCollection: import("../LiveOntology.js").OntologyCollection<import("./generated/types.js").Post>;
2
+ export declare const authorCollection: import("../LiveOntology.js").OntologyCollection<import("./generated/types.js").Author>;
3
+ export declare const commentCollection: import("../LiveOntology.js").OntologyCollection<import("./generated/types.js").Comment>;
4
+ //# sourceMappingURL=blog.live-queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blog.live-queries.d.ts","sourceRoot":"","sources":["../../src/examples/blog.live-queries.ts"],"names":[],"mappings":"AAmDA,eAAO,MAAM,cAAc,sFAAO,CAAC;AACnC,eAAO,MAAM,gBAAgB,wFAAS,CAAC;AACvC,eAAO,MAAM,iBAAiB,yFAAU,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Example live queries using generated ontology object sources.
3
+ */
4
+ import { Query, concat, createCollection, eq, liveQueryCollectionOptions } from "@tanstack/db";
5
+ import { createBlogLiveOntology } from "./generated/live.js";
6
+ const blog = createBlogLiveOntology(adapter);
7
+ const { Post, Author, Comment } = blog.objects;
8
+ const postList = createCollection(liveQueryCollectionOptions({
9
+ query: new Query().from({ Post }).select(({ Post }) => ({
10
+ postId: Post.postId,
11
+ title: Post.title,
12
+ status: Post.status,
13
+ })),
14
+ }));
15
+ const postListWithAuthor = createCollection(liveQueryCollectionOptions({
16
+ query: new Query()
17
+ .from({ Post })
18
+ .leftJoin({ Author }, ({ Post, Author }) => eq(Post.authorId, Author.authorId))
19
+ .select(({ Post, Author }) => ({
20
+ postId: Post.postId,
21
+ title: Post.title,
22
+ authorName: Author?.name,
23
+ })),
24
+ }));
25
+ const commentFeed = createCollection(liveQueryCollectionOptions({
26
+ query: new Query()
27
+ .from({ Comment })
28
+ .leftJoin({ Post }, ({ Comment, Post }) => eq(Comment.postId, Post.postId))
29
+ .leftJoin({ Author }, ({ Comment, Author }) => eq(Comment.authorId, Author.authorId))
30
+ .where(({ Post }) => eq(Post?.status, "published"))
31
+ .select(({ Comment, Post, Author }) => ({
32
+ commentId: Comment.commentId,
33
+ body: Comment.body,
34
+ postTitle: Post?.title,
35
+ authorDisplay: concat(Author?.name, " <", Author?.email, ">"),
36
+ })),
37
+ }));
38
+ export const postCollection = Post;
39
+ export const authorCollection = Author;
40
+ export const commentCollection = Comment;
41
+ void postList;
42
+ void postListWithAuthor;
43
+ void commentFeed;
44
+ //# sourceMappingURL=blog.live-queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blog.live-queries.js","sourceRoot":"","sources":["../../src/examples/blog.live-queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAK7D,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAC7C,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAE/C,MAAM,QAAQ,GAAG,gBAAgB,CAC7B,0BAA0B,CAAC;IACvB,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;KACtB,CAAC,CAAC;CACN,CAAC,CACL,CAAC;AAEF,MAAM,kBAAkB,GAAG,gBAAgB,CACvC,0BAA0B,CAAC;IACvB,KAAK,EAAE,IAAI,KAAK,EAAE;SACb,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;SACd,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;SAC9E,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU,EAAE,MAAM,EAAE,IAAI;KAC3B,CAAC,CAAC;CACV,CAAC,CACL,CAAC;AAEF,MAAM,WAAW,GAAG,gBAAgB,CAChC,0BAA0B,CAAC;IACvB,KAAK,EAAE,IAAI,KAAK,EAAE;SACb,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;SACjB,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SAC1E,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;SACpF,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;SAClD,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,IAAI,EAAE,KAAK;QACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC;KAChE,CAAC,CAAC;CACV,CAAC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAEzC,KAAK,QAAQ,CAAC;AACd,KAAK,kBAAkB,CAAC;AACxB,KAAK,WAAW,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type LiveOntology } from "../../LiveOntology.js";
2
+ import type { BlogOntology } from "./types.js";
3
+ import type { OntologyAdapter } from "../../OntologyAdapter.js";
4
+ export declare function createBlogLiveOntology(adapter: OntologyAdapter): LiveOntology<BlogOntology>;
5
+ //# sourceMappingURL=live.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../../src/examples/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 "../blog.js";
4
+ export function createBlogLiveOntology(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/examples/generated/live.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C,OAAO,EAAE,kBAAkB,EAAqB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,QAAQ,MAAM,YAAY,CAAC;AAIlC,MAAM,UAAU,sBAAsB,CAAC,OAAwB;IAC3D,OAAO,kBAAkB,CAAe;QACpC,EAAE,EAAE,QAAQ;QACZ,OAAO;KACV,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,48 @@
1
+ import * as v from "@party-stack/schema/values";
2
+ /** A mailing address. */
3
+ export type Address = {
4
+ line1: string;
5
+ line2?: string;
6
+ city: string;
7
+ state: string;
8
+ zip: string;
9
+ };
10
+ /** A blog author. */
11
+ export type Author = {
12
+ authorId: string;
13
+ name: string;
14
+ email: string;
15
+ bio?: string;
16
+ /** The author's profile picture. */
17
+ avatar?: v.attachment;
18
+ address?: Address;
19
+ createdAt: v.timestamp;
20
+ };
21
+ /** A blog post. */
22
+ export type Post = {
23
+ postId: string;
24
+ title: string;
25
+ body: string;
26
+ authorId: string;
27
+ status: "draft" | "published" | "archived";
28
+ coverImage?: v.attachment;
29
+ tags: Array<string>;
30
+ createdAt: v.timestamp;
31
+ publishedAt?: v.timestamp;
32
+ };
33
+ /** A comment on a blog post. */
34
+ export type Comment = {
35
+ commentId: string;
36
+ body: string;
37
+ postId: string;
38
+ authorId: string;
39
+ createdAt: v.timestamp;
40
+ };
41
+ export type BlogOntology = {
42
+ objectTypes: {
43
+ Author: Author;
44
+ Post: Post;
45
+ Comment: Comment;
46
+ };
47
+ };
48
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/examples/generated/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAEhD,yBAAyB;AACzB,MAAM,MAAM,OAAO,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAqB;AACrB,MAAM,MAAM,MAAM,GAAG;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC;CAC1B,CAAC;AAEF,mBAAmB;AACnB,MAAM,MAAM,IAAI,GAAG;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC;IAC3C,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;IAC1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACpB,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;CAC7B,CAAC;AAEF,gCAAgC;AAChC,MAAM,MAAM,OAAO,GAAG;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,WAAW,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,IAAI,CAAC;QACX,OAAO,EAAE,OAAO,CAAC;KACpB,CAAC;CACL,CAAC"}
@@ -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/examples/generated/types.ts"],"names":[],"mappings":"AAAA,6CAA6C"}
@@ -0,0 +1,10 @@
1
+ import type { OntologyIR } from "../ir/generated/types.js";
2
+ export interface GenerateLiveOpts {
3
+ ontologyImportPath: string;
4
+ ontologyTypesImportPath: string;
5
+ ontologyRuntimeImportPath: string;
6
+ ontologyTypeName: string;
7
+ outputFactoryName: string;
8
+ }
9
+ export declare function generateLive(ir: OntologyIR, opts: GenerateLiveOpts): string;
10
+ //# sourceMappingURL=live.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../src/generate/live.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,yBAAyB,EAAE,MAAM,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAoC3E"}
@@ -0,0 +1,36 @@
1
+ import { Project } from "ts-morph";
2
+ export function generateLive(ir, opts) {
3
+ const ontologyImportName = "ontology";
4
+ const project = new Project({ useInMemoryFileSystem: true });
5
+ const sourceFile = project.createSourceFile("live.ts", "");
6
+ sourceFile.addImportDeclaration({
7
+ moduleSpecifier: opts.ontologyRuntimeImportPath,
8
+ namedImports: [{ name: "createLiveOntology" }, { name: "LiveOntology", isTypeOnly: true }],
9
+ });
10
+ sourceFile.addImportDeclaration({
11
+ moduleSpecifier: opts.ontologyImportPath,
12
+ defaultImport: ontologyImportName,
13
+ });
14
+ sourceFile.addImportDeclaration({
15
+ moduleSpecifier: opts.ontologyTypesImportPath,
16
+ namedImports: [opts.ontologyTypeName],
17
+ isTypeOnly: true,
18
+ });
19
+ sourceFile.addImportDeclaration({
20
+ moduleSpecifier: opts.ontologyRuntimeImportPath,
21
+ namedImports: ["OntologyAdapter"],
22
+ isTypeOnly: true,
23
+ });
24
+ sourceFile.addFunction({
25
+ name: opts.outputFactoryName,
26
+ isExported: true,
27
+ parameters: [{ name: "adapter", type: "OntologyAdapter" }],
28
+ returnType: `LiveOntology<${opts.ontologyTypeName}>`,
29
+ statements: `return createLiveOntology<${opts.ontologyTypeName}>({
30
+ ir: ${ontologyImportName},
31
+ adapter,
32
+ });`,
33
+ });
34
+ return sourceFile.getFullText().trim();
35
+ }
36
+ //# sourceMappingURL=live.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/generate/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAWnC,MAAM,UAAU,YAAY,CAAC,EAAc,EAAE,IAAsB;IAC/D,MAAM,kBAAkB,GAAG,UAAU,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAE3D,UAAU,CAAC,oBAAoB,CAAC;QAC5B,eAAe,EAAE,IAAI,CAAC,yBAAyB;QAC/C,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;KAC7F,CAAC,CAAC;IACH,UAAU,CAAC,oBAAoB,CAAC;QAC5B,eAAe,EAAE,IAAI,CAAC,kBAAkB;QACxC,aAAa,EAAE,kBAAkB;KACpC,CAAC,CAAC;IACH,UAAU,CAAC,oBAAoB,CAAC;QAC5B,eAAe,EAAE,IAAI,CAAC,uBAAuB;QAC7C,YAAY,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACrC,UAAU,EAAE,IAAI;KACnB,CAAC,CAAC;IACH,UAAU,CAAC,oBAAoB,CAAC;QAC5B,eAAe,EAAE,IAAI,CAAC,yBAAyB;QAC/C,YAAY,EAAE,CAAC,iBAAiB,CAAC;QACjC,UAAU,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,UAAU,CAAC,WAAW,CAAC;QACnB,IAAI,EAAE,IAAI,CAAC,iBAAiB;QAC5B,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;QAC1D,UAAU,EAAE,gBAAgB,IAAI,CAAC,gBAAgB,GAAG;QACpD,UAAU,EAAE,6BAA6B,IAAI,CAAC,gBAAgB;kBACpD,kBAAkB;;YAExB;KACP,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { OntologyIR } from "../ir/generated/types.js";
2
+ export interface GenerateOntologyOpts {
3
+ ontologyImportPath?: string;
4
+ }
5
+ export declare function generateOntology(ir: OntologyIR, opts?: GenerateOntologyOpts): string;
6
+ //# sourceMappingURL=ontology.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ontology.d.ts","sourceRoot":"","sources":["../../src/generate/ontology.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAWR,UAAU,EACb,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,oBAAoB;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAoQD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,GAAE,oBAAyB,GAAG,MAAM,CAmDxF"}