@party-stack/ontology 0.2.0 → 0.4.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 (278) hide show
  1. package/lib/OntologyConfig.d.ts +3 -2
  2. package/lib/OntologyConfig.d.ts.map +1 -1
  3. package/lib/cli/generate.d.ts.map +1 -1
  4. package/lib/cli/generate.js +65 -47
  5. package/lib/cli/generate.js.map +1 -1
  6. package/lib/cli/index.js +7 -4
  7. package/lib/cli/index.js.map +1 -1
  8. package/lib/cli/pull.d.ts.map +1 -1
  9. package/lib/cli/pull.js +10 -4
  10. package/lib/cli/pull.js.map +1 -1
  11. package/lib/examples/blog.d.ts +214 -17
  12. package/lib/examples/blog.d.ts.map +1 -1
  13. package/lib/examples/blog.js +20 -0
  14. package/lib/examples/blog.js.map +1 -1
  15. package/lib/examples/blog.live-queries.d.ts.map +1 -1
  16. package/lib/examples/blog.live-queries.js +4 -2
  17. package/lib/examples/blog.live-queries.js.map +1 -1
  18. package/lib/examples/generated/live.d.ts +2 -2
  19. package/lib/examples/generated/live.d.ts.map +1 -1
  20. package/lib/examples/generated/live.js +2 -3
  21. package/lib/examples/generated/live.js.map +1 -1
  22. package/lib/examples/generated/types.d.ts +13 -2
  23. package/lib/examples/generated/types.d.ts.map +1 -1
  24. package/lib/generate/builders.d.ts +9 -0
  25. package/lib/generate/builders.d.ts.map +1 -0
  26. package/lib/generate/builders.js +60 -0
  27. package/lib/generate/builders.js.map +1 -0
  28. package/lib/generate/builders.test.d.ts +2 -0
  29. package/lib/generate/builders.test.d.ts.map +1 -0
  30. package/lib/generate/builders.test.js +49 -0
  31. package/lib/generate/builders.test.js.map +1 -0
  32. package/lib/generate/index.d.ts +5 -0
  33. package/lib/generate/index.d.ts.map +1 -0
  34. package/lib/generate/index.js +5 -0
  35. package/lib/generate/index.js.map +1 -0
  36. package/lib/generate/live.d.ts.map +1 -1
  37. package/lib/generate/live.js +13 -8
  38. package/lib/generate/live.js.map +1 -1
  39. package/lib/generate/ontology.d.ts.map +1 -1
  40. package/lib/generate/ontology.js +29 -8
  41. package/lib/generate/ontology.js.map +1 -1
  42. package/lib/generate/types.d.ts +11 -1
  43. package/lib/generate/types.d.ts.map +1 -1
  44. package/lib/generate/types.js +178 -99
  45. package/lib/generate/types.js.map +1 -1
  46. package/lib/generate/types.test.js +118 -8
  47. package/lib/generate/types.test.js.map +1 -1
  48. package/lib/generate/utils/buildJsDocs.d.ts +7 -0
  49. package/lib/generate/utils/buildJsDocs.d.ts.map +1 -0
  50. package/lib/generate/utils/buildJsDocs.js +12 -0
  51. package/lib/generate/utils/buildJsDocs.js.map +1 -0
  52. package/lib/index.d.ts +4 -2
  53. package/lib/index.d.ts.map +1 -1
  54. package/lib/index.js +2 -1
  55. package/lib/index.js.map +1 -1
  56. package/lib/infer.d.ts +231 -0
  57. package/lib/infer.d.ts.map +1 -0
  58. package/lib/infer.js +10 -0
  59. package/lib/infer.js.map +1 -0
  60. package/lib/infer.test.d.ts +2 -0
  61. package/lib/infer.test.d.ts.map +1 -0
  62. package/lib/infer.test.js +116 -0
  63. package/lib/infer.test.js.map +1 -0
  64. package/lib/ir/generated/builders.d.ts +184 -184
  65. package/lib/ir/generated/builders.d.ts.map +1 -1
  66. package/lib/ir/generated/builders.js +25 -76
  67. package/lib/ir/generated/builders.js.map +1 -1
  68. package/lib/ir/generated/types.d.ts +37 -8
  69. package/lib/ir/generated/types.d.ts.map +1 -1
  70. package/lib/ir/schema.d.ts +1498 -5
  71. package/lib/ir/schema.d.ts.map +1 -1
  72. package/lib/ir/schema.js +521 -90
  73. package/lib/ir/schema.js.map +1 -1
  74. package/lib/ir/validate.d.ts.map +1 -1
  75. package/lib/ir/validate.js +31 -0
  76. package/lib/ir/validate.js.map +1 -1
  77. package/lib/ir/validate.test.js +53 -3
  78. package/lib/ir/validate.test.js.map +1 -1
  79. package/lib/json/index.d.ts +14 -0
  80. package/lib/json/index.d.ts.map +1 -0
  81. package/lib/json/index.js +158 -0
  82. package/lib/json/index.js.map +1 -0
  83. package/lib/json/index.test.d.ts +2 -0
  84. package/lib/json/index.test.d.ts.map +1 -0
  85. package/lib/json/index.test.js +123 -0
  86. package/lib/json/index.test.js.map +1 -0
  87. package/lib/live/LiveOntology.d.ts +44 -13
  88. package/lib/live/LiveOntology.d.ts.map +1 -1
  89. package/lib/live/LiveOntology.js +64 -37
  90. package/lib/live/LiveOntology.js.map +1 -1
  91. package/lib/live/LiveOntology.test.d.ts +2 -0
  92. package/lib/live/LiveOntology.test.d.ts.map +1 -0
  93. package/lib/live/LiveOntology.test.js +154 -0
  94. package/lib/live/LiveOntology.test.js.map +1 -0
  95. package/lib/live/OntologyBackendAdapter.d.ts +53 -0
  96. package/lib/live/OntologyBackendAdapter.d.ts.map +1 -0
  97. package/lib/live/OntologyBackendAdapter.js +2 -0
  98. package/lib/live/OntologyBackendAdapter.js.map +1 -0
  99. package/lib/live/actions/createLiveOntologyAction.d.ts +20 -0
  100. package/lib/live/actions/createLiveOntologyAction.d.ts.map +1 -0
  101. package/lib/live/actions/createLiveOntologyAction.js +22 -0
  102. package/lib/live/actions/createLiveOntologyAction.js.map +1 -0
  103. package/lib/live/actions/createLiveOntologyActions.d.ts +23 -0
  104. package/lib/live/actions/createLiveOntologyActions.d.ts.map +1 -0
  105. package/lib/live/actions/createLiveOntologyActions.js +129 -0
  106. package/lib/live/actions/createLiveOntologyActions.js.map +1 -0
  107. package/lib/live/actions/prepareActionParameters.d.ts +16 -0
  108. package/lib/live/actions/prepareActionParameters.d.ts.map +1 -0
  109. package/lib/live/actions/prepareActionParameters.js +251 -0
  110. package/lib/live/actions/prepareActionParameters.js.map +1 -0
  111. package/lib/live/actions/prepareActionParameters.test.d.ts +2 -0
  112. package/lib/live/actions/prepareActionParameters.test.d.ts.map +1 -0
  113. package/lib/live/actions/prepareActionParameters.test.js +165 -0
  114. package/lib/live/actions/prepareActionParameters.test.js.map +1 -0
  115. package/lib/live/attachments/attachmentSources.d.ts +7 -0
  116. package/lib/live/attachments/attachmentSources.d.ts.map +1 -0
  117. package/lib/live/attachments/attachmentSources.js +80 -0
  118. package/lib/live/attachments/attachmentSources.js.map +1 -0
  119. package/lib/live/attachments/createLiveOntologyAttachments.d.ts +38 -0
  120. package/lib/live/attachments/createLiveOntologyAttachments.d.ts.map +1 -0
  121. package/lib/live/attachments/createLiveOntologyAttachments.js +59 -0
  122. package/lib/live/attachments/createLiveOntologyAttachments.js.map +1 -0
  123. package/lib/live/attachments/createLiveOntologyAttachments.test.d.ts +2 -0
  124. package/lib/live/attachments/createLiveOntologyAttachments.test.d.ts.map +1 -0
  125. package/lib/live/attachments/createLiveOntologyAttachments.test.js +244 -0
  126. package/lib/live/attachments/createLiveOntologyAttachments.test.js.map +1 -0
  127. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.d.ts +3 -0
  128. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.d.ts.map +1 -0
  129. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.js +5 -0
  130. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.js.map +1 -0
  131. package/lib/live/expression.d.ts +16 -3
  132. package/lib/live/expression.d.ts.map +1 -1
  133. package/lib/live/expression.js +55 -47
  134. package/lib/live/expression.js.map +1 -1
  135. package/lib/live/expression.test.d.ts +2 -0
  136. package/lib/live/expression.test.d.ts.map +1 -0
  137. package/lib/live/expression.test.js +76 -0
  138. package/lib/live/expression.test.js.map +1 -0
  139. package/lib/live/index.d.ts +4 -1
  140. package/lib/live/index.d.ts.map +1 -1
  141. package/lib/live/index.js +4 -1
  142. package/lib/live/index.js.map +1 -1
  143. package/lib/live/mutators/OntologyEdits.d.ts +11 -0
  144. package/lib/live/mutators/OntologyEdits.d.ts.map +1 -0
  145. package/lib/live/mutators/OntologyEdits.js +66 -0
  146. package/lib/live/mutators/OntologyEdits.js.map +1 -0
  147. package/lib/live/mutators/createMutatorTx.d.ts +9 -0
  148. package/lib/live/mutators/createMutatorTx.d.ts.map +1 -0
  149. package/lib/live/mutators/createMutatorTx.js +67 -0
  150. package/lib/live/mutators/createMutatorTx.js.map +1 -0
  151. package/lib/live/mutators/createMutatorTx.test.d.ts +2 -0
  152. package/lib/live/mutators/createMutatorTx.test.d.ts.map +1 -0
  153. package/lib/live/mutators/createMutatorTx.test.js +90 -0
  154. package/lib/live/mutators/createMutatorTx.test.js.map +1 -0
  155. package/lib/live/mutators/runOptimisticAction.d.ts +15 -0
  156. package/lib/live/mutators/runOptimisticAction.d.ts.map +1 -0
  157. package/lib/live/mutators/runOptimisticAction.js +29 -0
  158. package/lib/live/mutators/runOptimisticAction.js.map +1 -0
  159. package/lib/live/mutators/types.d.ts +24 -0
  160. package/lib/live/mutators/types.d.ts.map +1 -0
  161. package/lib/live/mutators/types.js +2 -0
  162. package/lib/live/mutators/types.js.map +1 -0
  163. package/lib/live/objects/OntologyObject.d.ts +2 -0
  164. package/lib/live/objects/OntologyObject.d.ts.map +1 -0
  165. package/lib/live/objects/OntologyObject.js +2 -0
  166. package/lib/live/objects/OntologyObject.js.map +1 -0
  167. package/lib/live/objects/createLiveOntologyObjectCollection.d.ts +14 -0
  168. package/lib/live/objects/createLiveOntologyObjectCollection.d.ts.map +1 -0
  169. package/lib/live/objects/createLiveOntologyObjectCollection.js +59 -0
  170. package/lib/live/objects/createLiveOntologyObjectCollection.js.map +1 -0
  171. package/lib/live/objects/createLiveOntologyObjectCollection.test.d.ts +2 -0
  172. package/lib/live/objects/createLiveOntologyObjectCollection.test.d.ts.map +1 -0
  173. package/lib/live/objects/createLiveOntologyObjectCollection.test.js +176 -0
  174. package/lib/live/objects/createLiveOntologyObjectCollection.test.js.map +1 -0
  175. package/lib/live/objects/ontologyObjectCollectionId.d.ts +2 -0
  176. package/lib/live/objects/ontologyObjectCollectionId.d.ts.map +1 -0
  177. package/lib/live/objects/ontologyObjectCollectionId.js +4 -0
  178. package/lib/live/objects/ontologyObjectCollectionId.js.map +1 -0
  179. package/lib/live/outbox/createOntologyOutbox.d.ts +19 -0
  180. package/lib/live/outbox/createOntologyOutbox.d.ts.map +1 -0
  181. package/lib/live/outbox/createOntologyOutbox.js +321 -0
  182. package/lib/live/outbox/createOntologyOutbox.js.map +1 -0
  183. package/lib/live/outbox/createOntologyOutbox.test.d.ts +2 -0
  184. package/lib/live/outbox/createOntologyOutbox.test.d.ts.map +1 -0
  185. package/lib/live/outbox/createOntologyOutbox.test.js +914 -0
  186. package/lib/live/outbox/createOntologyOutbox.test.js.map +1 -0
  187. package/lib/live/outbox/leaderExecutor.d.ts +16 -0
  188. package/lib/live/outbox/leaderExecutor.d.ts.map +1 -0
  189. package/lib/live/outbox/leaderExecutor.js +143 -0
  190. package/lib/live/outbox/leaderExecutor.js.map +1 -0
  191. package/lib/live/outbox/outboxService.d.ts +5 -0
  192. package/lib/live/outbox/outboxService.d.ts.map +1 -0
  193. package/lib/live/outbox/outboxService.js +73 -0
  194. package/lib/live/outbox/outboxService.js.map +1 -0
  195. package/lib/live/outbox/outboxValues.d.ts +7 -0
  196. package/lib/live/outbox/outboxValues.d.ts.map +1 -0
  197. package/lib/live/outbox/outboxValues.js +76 -0
  198. package/lib/live/outbox/outboxValues.js.map +1 -0
  199. package/lib/live/outbox/projectionManager.d.ts +29 -0
  200. package/lib/live/outbox/projectionManager.d.ts.map +1 -0
  201. package/lib/live/outbox/projectionManager.js +155 -0
  202. package/lib/live/outbox/projectionManager.js.map +1 -0
  203. package/lib/live/outbox/repository.d.ts +29 -0
  204. package/lib/live/outbox/repository.d.ts.map +1 -0
  205. package/lib/live/outbox/repository.js +245 -0
  206. package/lib/live/outbox/repository.js.map +1 -0
  207. package/lib/live/outbox/service.d.ts +59 -0
  208. package/lib/live/outbox/service.d.ts.map +1 -0
  209. package/lib/live/outbox/service.js +2 -0
  210. package/lib/live/outbox/service.js.map +1 -0
  211. package/lib/live/outbox/types.d.ts +45 -0
  212. package/lib/live/outbox/types.d.ts.map +1 -0
  213. package/lib/live/outbox/types.js +7 -0
  214. package/lib/live/outbox/types.js.map +1 -0
  215. package/lib/meta/generated/live.d.ts +5 -0
  216. package/lib/meta/generated/live.d.ts.map +1 -0
  217. package/lib/{ontology → meta}/generated/live.js +2 -3
  218. package/lib/meta/generated/live.js.map +1 -0
  219. package/lib/{ontology → meta}/generated/types.d.ts +37 -8
  220. package/lib/meta/generated/types.d.ts.map +1 -0
  221. package/lib/meta/generated/types.js.map +1 -0
  222. package/lib/{ontology → meta}/ontology.d.ts +1 -0
  223. package/lib/meta/ontology.d.ts.map +1 -0
  224. package/lib/{ontology → meta}/ontology.js +7 -0
  225. package/lib/meta/ontology.js.map +1 -0
  226. package/lib/meta/pull.d.ts +2 -1
  227. package/lib/meta/pull.d.ts.map +1 -1
  228. package/lib/meta/pull.js +20 -5
  229. package/lib/meta/pull.js.map +1 -1
  230. package/lib/utils/index.d.ts +3 -0
  231. package/lib/utils/index.d.ts.map +1 -0
  232. package/lib/utils/index.js +2 -0
  233. package/lib/utils/index.js.map +1 -0
  234. package/lib/utils/provide.d.ts +2 -0
  235. package/lib/utils/provide.d.ts.map +1 -0
  236. package/lib/utils/provide.js +11 -0
  237. package/lib/utils/provide.js.map +1 -0
  238. package/lib/utils/targets.d.ts +35 -0
  239. package/lib/utils/targets.d.ts.map +1 -0
  240. package/lib/utils/targets.js +2 -0
  241. package/lib/utils/targets.js.map +1 -0
  242. package/lib/utils/typeNames.d.ts +26 -0
  243. package/lib/utils/typeNames.d.ts.map +1 -0
  244. package/lib/utils/typeNames.js +2 -0
  245. package/lib/utils/typeNames.js.map +1 -0
  246. package/lib/utils/types.d.ts +10 -0
  247. package/lib/utils/types.d.ts.map +1 -0
  248. package/lib/utils/types.js +48 -0
  249. package/lib/utils/types.js.map +1 -0
  250. package/lib/utils/types.test.d.ts +2 -0
  251. package/lib/utils/types.test.d.ts.map +1 -0
  252. package/lib/utils/types.test.js +157 -0
  253. package/lib/utils/types.test.js.map +1 -0
  254. package/lib/utils/values.d.ts +32 -0
  255. package/lib/utils/values.d.ts.map +1 -0
  256. package/lib/utils/values.js +2 -0
  257. package/lib/utils/values.js.map +1 -0
  258. package/package.json +21 -7
  259. package/lib/ir/generated/validators.d.ts +0 -49
  260. package/lib/ir/generated/validators.d.ts.map +0 -1
  261. package/lib/ir/generated/validators.js +0 -171
  262. package/lib/ir/generated/validators.js.map +0 -1
  263. package/lib/live/OntologyAdapter.d.ts +0 -12
  264. package/lib/live/OntologyAdapter.d.ts.map +0 -1
  265. package/lib/live/OntologyAdapter.js +0 -2
  266. package/lib/live/OntologyAdapter.js.map +0 -1
  267. package/lib/live/applyActionLogic.d.ts +0 -10
  268. package/lib/live/applyActionLogic.d.ts.map +0 -1
  269. package/lib/live/applyActionLogic.js +0 -59
  270. package/lib/live/applyActionLogic.js.map +0 -1
  271. package/lib/ontology/generated/live.d.ts +0 -5
  272. package/lib/ontology/generated/live.d.ts.map +0 -1
  273. package/lib/ontology/generated/live.js.map +0 -1
  274. package/lib/ontology/generated/types.d.ts.map +0 -1
  275. package/lib/ontology/generated/types.js.map +0 -1
  276. package/lib/ontology/ontology.d.ts.map +0 -1
  277. package/lib/ontology/ontology.js.map +0 -1
  278. /package/lib/{ontology → meta}/generated/types.js +0 -0
package/lib/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from "./ir/index.js";
2
+ export * from "./infer.js";
2
3
  export * from "./live/index.js";
3
4
  export * from "./OntologyConfig.js";
4
5
  export * from "./meta/pull.js";
5
- export { createMetaLiveOntology } from "./ontology/generated/live.js";
6
+ export { createMetaLiveOntology } from "./meta/generated/live.js";
6
7
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAQ/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,gBAAgB,CAAC;AAS/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
package/lib/infer.d.ts ADDED
@@ -0,0 +1,231 @@
1
+ import type { NamedTypeDef, OntologyIR, TypeDef } from "./ir/generated/types.js";
2
+ import type { OntologyDefinition } from "./live/LiveOntology.js";
3
+ import type { ActionTypeName, ActionTypes, ArrayElement, NamedTypes, ObjectTypeName, ObjectTypes, QueryFunctionTypeName, QueryFunctionTypes } from "./utils/typeNames.js";
4
+ import type { attachment, date, double, float, geopoint, integer, Result, timestamp } from "./utils/values.js";
5
+ export type ReadonlyDeep<T> = T extends (...args: never[]) => unknown ? T : T extends readonly (infer Element)[] ? readonly ReadonlyDeep<Element>[] : T extends object ? {
6
+ readonly [K in keyof T]: ReadonlyDeep<T[K]>;
7
+ } : T;
8
+ export type MutableDeep<T> = T extends (...args: never[]) => unknown ? T : T extends readonly (infer Element)[] ? Array<MutableDeep<Element>> : T extends object ? {
9
+ -readonly [K in keyof T]: MutableDeep<T[K]>;
10
+ } : T;
11
+ type FlattenObject<T> = {
12
+ [K in keyof T]: T[K];
13
+ } & {};
14
+ type TypeKind<Type> = Type extends {
15
+ readonly kind: infer Kind extends string;
16
+ } ? Kind : never;
17
+ type TypeValue<Type> = Type extends {
18
+ readonly value: infer Value;
19
+ } ? Value : never;
20
+ type NamedTypeByName<Ontology, Name extends PropertyKey> = Extract<NamedTypes<Ontology>, {
21
+ readonly name: Name;
22
+ }>;
23
+ type ObjectTypeByName<Ontology, Name extends PropertyKey> = Extract<ObjectTypes<Ontology>, {
24
+ readonly name: Name;
25
+ }>;
26
+ type ActionTypeByName<Ontology, Name extends PropertyKey> = Extract<ActionTypes<Ontology>, {
27
+ readonly name: Name;
28
+ }>;
29
+ type QueryFunctionTypeByName<Ontology, Name extends PropertyKey> = Extract<QueryFunctionTypes<Ontology>, {
30
+ readonly name: Name;
31
+ }>;
32
+ type ObjectTypeProperties<ObjectType> = ObjectType extends {
33
+ readonly properties: infer Properties;
34
+ } ? Properties : never;
35
+ type InferString<Value> = Value extends {
36
+ readonly constraint?: infer Constraint;
37
+ } ? NonNullable<Constraint> extends {
38
+ readonly kind: "enum";
39
+ readonly value: {
40
+ readonly options: infer Options;
41
+ };
42
+ } ? ArrayElement<Options> extends {
43
+ readonly value: infer OptionValue extends string;
44
+ } ? OptionValue : never : string : string;
45
+ type StructField<Fields> = ArrayElement<Fields>;
46
+ type FieldName<Field> = Field extends {
47
+ readonly name: infer Name extends PropertyKey;
48
+ } ? Name : never;
49
+ type FieldByName<Fields, Name extends PropertyKey> = Extract<StructField<Fields>, {
50
+ readonly name: Name;
51
+ }>;
52
+ type FieldType<Fields, Name extends PropertyKey> = FieldByName<Fields, Name> extends {
53
+ readonly type: infer Type;
54
+ } ? Type : never;
55
+ type RequiredFieldNames<Fields> = StructField<Fields> extends infer Field ? Field extends {
56
+ readonly type: infer Type;
57
+ } ? Type extends {
58
+ readonly kind: "optional";
59
+ } ? never : FieldName<Field> : never : never;
60
+ type OptionalFieldNames<Fields> = StructField<Fields> extends infer Field ? Field extends {
61
+ readonly type: infer Type;
62
+ } ? Type extends {
63
+ readonly kind: "optional";
64
+ } ? FieldName<Field> : never : never : never;
65
+ type InferStructFields<Fields, Ontology> = StructField<Fields> extends never ? Record<never, never> : FlattenObject<{
66
+ [Name in RequiredFieldNames<Fields>]: InferType<FieldType<Fields, Name>, Ontology>;
67
+ } & {
68
+ [Name in OptionalFieldNames<Fields>]?: TypeValue<FieldType<Fields, Name>> extends {
69
+ readonly type: infer Inner;
70
+ } ? InferType<Inner, Ontology> : never;
71
+ }>;
72
+ type InferUnionVariant<Variant, Ontology> = Variant extends {
73
+ readonly name: infer Name extends string;
74
+ readonly type: infer Type;
75
+ } ? {
76
+ kind: Name;
77
+ value: InferType<Type, Ontology>;
78
+ } : never;
79
+ type ObjectPrimaryKey<ObjectType> = ObjectType extends {
80
+ readonly primaryKey: infer PrimaryKey extends PropertyKey;
81
+ } ? PrimaryKey : never;
82
+ type InferObjectReference<Value, Ontology> = Value extends {
83
+ readonly objectType: infer Name extends PropertyKey;
84
+ } ? InferType<FieldType<ObjectTypeProperties<ObjectTypeByName<Ontology, Name>>, ObjectPrimaryKey<ObjectTypeByName<Ontology, Name>>>, Ontology> : never;
85
+ type InferByKind<Type, Ontology> = {
86
+ string: InferString<TypeValue<Type>>;
87
+ boolean: boolean;
88
+ integer: integer;
89
+ float: float;
90
+ double: double;
91
+ date: date;
92
+ timestamp: timestamp;
93
+ geopoint: geopoint;
94
+ attachment: attachment;
95
+ objectReference: InferObjectReference<TypeValue<Type>, Ontology>;
96
+ unknown: unknown;
97
+ list: TypeValue<Type> extends {
98
+ readonly elementType: infer ElementType;
99
+ } ? Array<InferType<ElementType, Ontology>> : never;
100
+ map: TypeValue<Type> extends {
101
+ readonly valueType: infer ValueType;
102
+ } ? Record<string, InferType<ValueType, Ontology>> : never;
103
+ struct: TypeValue<Type> extends {
104
+ readonly fields: infer Fields;
105
+ } ? InferStructFields<Fields, Ontology> : never;
106
+ union: TypeValue<Type> extends {
107
+ readonly variants: infer Variants;
108
+ } ? InferUnionVariant<ArrayElement<Variants>, Ontology> : never;
109
+ optional: TypeValue<Type> extends {
110
+ readonly type: infer Inner;
111
+ } ? InferType<Inner, Ontology> | undefined : never;
112
+ result: TypeValue<Type> extends {
113
+ readonly okType: infer OkType;
114
+ readonly errType: infer ErrType;
115
+ } ? Result<InferType<OkType, Ontology>, InferType<ErrType, Ontology>> : never;
116
+ ref: TypeValue<Type> extends {
117
+ readonly name: infer Name extends PropertyKey;
118
+ } ? InferNamedTypeByName<Ontology, Name> : never;
119
+ };
120
+ export type InferType<Type, Ontology = never> = TypeKind<Type> extends keyof InferByKind<Type, Ontology> ? InferByKind<Type, Ontology>[TypeKind<Type>] : never;
121
+ type InferNamedTypeByName<Ontology, Name extends PropertyKey> = NamedTypeByName<Ontology, Name> extends {
122
+ readonly type: infer Type;
123
+ } ? InferType<Type, Ontology> : ObjectTypeByName<Ontology, Name> extends {
124
+ readonly properties: infer Properties;
125
+ } ? InferStructFields<Properties, Ontology> : never;
126
+ export type InferNamedType<Type, Ontology = never> = Type extends {
127
+ readonly type: infer TypeDef;
128
+ } ? InferType<TypeDef, Ontology> : never;
129
+ type InferObjectType<ObjectType, Ontology> = ObjectType extends {
130
+ readonly properties: infer Properties;
131
+ } ? InferStructFields<Properties, Ontology> : never;
132
+ type ActionParameters<ActionType> = ActionType extends {
133
+ readonly parameters: infer Parameters;
134
+ } ? Parameters : never;
135
+ type ActionParameter<Parameters> = ArrayElement<Parameters>;
136
+ type ActionParameterName<Parameter> = Parameter extends {
137
+ readonly name: infer Name extends PropertyKey;
138
+ } ? Name : never;
139
+ type ActionParameterByName<Parameters, Name extends PropertyKey> = Extract<ActionParameter<Parameters>, {
140
+ readonly name: Name;
141
+ }>;
142
+ type ActionParameterType<Parameters, Name extends PropertyKey> = ActionParameterByName<Parameters, Name> extends {
143
+ readonly type: infer Type;
144
+ } ? Type : never;
145
+ type RequiredActionParameterNames<Parameters> = ActionParameter<Parameters> extends infer Parameter ? Parameter extends {
146
+ readonly type: infer Type;
147
+ } ? Type extends {
148
+ readonly kind: "optional";
149
+ } ? never : Parameter extends {
150
+ readonly defaultValue: unknown;
151
+ } ? never : ActionParameterName<Parameter> : never : never;
152
+ type OptionalActionParameterNames<Parameters> = ActionParameter<Parameters> extends infer Parameter ? Parameter extends {
153
+ readonly type: infer Type;
154
+ } ? Type extends {
155
+ readonly kind: "optional";
156
+ } ? ActionParameterName<Parameter> : Parameter extends {
157
+ readonly defaultValue: unknown;
158
+ } ? ActionParameterName<Parameter> : never : never : never;
159
+ type InferActionParameter<Parameters, Name extends PropertyKey, Ontology> = ActionParameterType<Parameters, Name> extends infer Type ? Type extends {
160
+ readonly kind: "optional";
161
+ readonly value: {
162
+ readonly type: infer Inner;
163
+ };
164
+ } ? InferType<Inner, Ontology> | null : InferType<Type, Ontology> : never;
165
+ type InferActionParameters<Parameters, Ontology> = ActionParameter<Parameters> extends never ? Record<never, never> : FlattenObject<{
166
+ [Name in RequiredActionParameterNames<Parameters>]: InferActionParameter<Parameters, Name, Ontology>;
167
+ } & {
168
+ [Name in OptionalActionParameterNames<Parameters>]?: InferActionParameter<Parameters, Name, Ontology>;
169
+ }>;
170
+ type QueryParameters<QueryFunctionType> = QueryFunctionType extends {
171
+ readonly parameters: infer Parameters;
172
+ } ? Parameters : never;
173
+ type QueryReturnType<QueryFunctionType> = QueryFunctionType extends {
174
+ readonly returnType: infer ReturnType;
175
+ } ? ReturnType : never;
176
+ type QueryParameter<Parameters> = ArrayElement<Parameters>;
177
+ type QueryParameterName<Parameter> = Parameter extends {
178
+ readonly name: infer Name extends PropertyKey;
179
+ } ? Name : never;
180
+ type QueryParameterByName<Parameters, Name extends PropertyKey> = Extract<QueryParameter<Parameters>, {
181
+ readonly name: Name;
182
+ }>;
183
+ type QueryParameterType<Parameters, Name extends PropertyKey> = QueryParameterByName<Parameters, Name> extends {
184
+ readonly type: infer Type;
185
+ } ? Type : never;
186
+ type RequiredQueryParameterNames<Parameters> = QueryParameter<Parameters> extends infer Parameter ? Parameter extends {
187
+ readonly type: infer Type;
188
+ } ? Type extends {
189
+ readonly kind: "optional";
190
+ } ? never : QueryParameterName<Parameter> : never : never;
191
+ type OptionalQueryParameterNames<Parameters> = QueryParameter<Parameters> extends infer Parameter ? Parameter extends {
192
+ readonly type: infer Type;
193
+ } ? Type extends {
194
+ readonly kind: "optional";
195
+ } ? QueryParameterName<Parameter> : never : never : never;
196
+ type InferQueryParameter<Parameters, Name extends PropertyKey, Ontology> = QueryParameterType<Parameters, Name> extends infer Type ? Type extends {
197
+ readonly kind: "optional";
198
+ readonly value: {
199
+ readonly type: infer Inner;
200
+ };
201
+ } ? InferType<Inner, Ontology> : InferType<Type, Ontology> : never;
202
+ type InferQueryParameters<Parameters, Ontology> = QueryParameter<Parameters> extends never ? Record<never, never> : FlattenObject<{
203
+ [Name in RequiredQueryParameterNames<Parameters>]: InferQueryParameter<Parameters, Name, Ontology>;
204
+ } & {
205
+ [Name in OptionalQueryParameterNames<Parameters>]?: InferQueryParameter<Parameters, Name, Ontology>;
206
+ }>;
207
+ export type InferOntology<Ontology> = {
208
+ objectTypes: {
209
+ [Name in ObjectTypeName<Ontology>]: InferObjectType<ObjectTypeByName<Ontology, Name>, Ontology>;
210
+ };
211
+ actionTypes: {
212
+ [Name in ActionTypeName<Ontology>]: {
213
+ parameters: InferActionParameters<ActionParameters<ActionTypeByName<Ontology, Name>>, Ontology>;
214
+ };
215
+ };
216
+ queryFunctionTypes: {
217
+ [Name in QueryFunctionTypeName<Ontology>]: {
218
+ parameters: InferQueryParameters<QueryParameters<QueryFunctionTypeByName<Ontology, Name>>, Ontology>;
219
+ returnType: InferType<QueryReturnType<QueryFunctionTypeByName<Ontology, Name>>, Ontology>;
220
+ };
221
+ };
222
+ } & OntologyDefinition;
223
+ export type ConstOntologyIR = ReadonlyDeep<OntologyIR>;
224
+ export type ConstTypeDef = ReadonlyDeep<TypeDef>;
225
+ export type ConstNamedTypeDef = ReadonlyDeep<NamedTypeDef>;
226
+ export type Infer<Input extends ConstOntologyIR | ConstNamedTypeDef | ConstTypeDef, Ontology extends ConstOntologyIR = Extract<Input, ConstOntologyIR>> = Input extends ConstOntologyIR ? InferOntology<Input> : Input extends ConstNamedTypeDef ? InferNamedType<Input, Ontology> : Input extends ConstTypeDef ? InferType<Input, Ontology> : never;
227
+ export declare function defineOntology<const Ontology extends ConstOntologyIR>(ontology: Ontology): MutableDeep<Ontology>;
228
+ export declare function defineType<const Type extends ConstTypeDef>(type: Type): MutableDeep<Type>;
229
+ export declare function defineNamedType<const Type extends ConstNamedTypeDef>(type: Type): MutableDeep<Type>;
230
+ export {};
231
+ //# sourceMappingURL=infer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infer.d.ts","sourceRoot":"","sources":["../src/infer.ts"],"names":[],"mappings":"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"}
package/lib/infer.js ADDED
@@ -0,0 +1,10 @@
1
+ export function defineOntology(ontology) {
2
+ return ontology;
3
+ }
4
+ export function defineType(type) {
5
+ return type;
6
+ }
7
+ export function defineNamedType(type) {
8
+ return type;
9
+ }
10
+ //# sourceMappingURL=infer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infer.js","sourceRoot":"","sources":["../src/infer.ts"],"names":[],"mappings":"AAyWA,MAAM,UAAU,cAAc,CAC1B,QAAkB;IAElB,OAAO,QAAiC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,UAAU,CAAkC,IAAU;IAClE,OAAO,IAAyB,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,eAAe,CAAuC,IAAU;IAC5E,OAAO,IAAyB,CAAC;AACrC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=infer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infer.test.d.ts","sourceRoot":"","sources":["../src/infer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,116 @@
1
+ import { describe, expect, expectTypeOf, it } from "vitest";
2
+ import { defineNamedType, defineOntology, defineType } from "./infer.js";
3
+ import { o } from "./ir/generated/builders.js";
4
+ describe("Infer", () => {
5
+ const addressType = defineNamedType({
6
+ name: "Address",
7
+ type: o.struct({
8
+ fields: [
9
+ { name: "city", displayName: "City", type: o.string({}) },
10
+ {
11
+ name: "line2",
12
+ displayName: "Line 2",
13
+ type: o.optional({ type: o.string({}) }),
14
+ },
15
+ ],
16
+ }),
17
+ });
18
+ const ontology = defineOntology({
19
+ types: [addressType],
20
+ objectTypes: [
21
+ {
22
+ name: "User",
23
+ displayName: "User",
24
+ pluralDisplayName: "Users",
25
+ primaryKey: "userId",
26
+ properties: [
27
+ { name: "userId", displayName: "User ID", type: o.string({}) },
28
+ {
29
+ name: "status",
30
+ displayName: "Status",
31
+ type: o.string({
32
+ constraint: o.StringConstraint.enum({
33
+ options: [{ value: "active" }, { value: "disabled" }],
34
+ }),
35
+ }),
36
+ },
37
+ { name: "avatar", displayName: "Avatar", type: o.optional({ type: o.attachment({}) }) },
38
+ { name: "address", displayName: "Address", type: o.ref({ name: "Address" }) },
39
+ ],
40
+ },
41
+ {
42
+ name: "Task",
43
+ displayName: "Task",
44
+ pluralDisplayName: "Tasks",
45
+ primaryKey: "taskId",
46
+ properties: [
47
+ { name: "taskId", displayName: "Task ID", type: o.string({}) },
48
+ {
49
+ name: "ownerId",
50
+ displayName: "Owner ID",
51
+ type: o.objectReference({ objectType: "User" }),
52
+ },
53
+ ],
54
+ },
55
+ ],
56
+ linkTypes: [],
57
+ actionTypes: [
58
+ {
59
+ name: "createTask",
60
+ displayName: "Create Task",
61
+ parameters: [
62
+ {
63
+ name: "owner",
64
+ displayName: "Owner",
65
+ type: o.objectReference({ objectType: "User" }),
66
+ },
67
+ { name: "title", displayName: "Title", type: o.string({}) },
68
+ {
69
+ name: "notes",
70
+ displayName: "Notes",
71
+ type: o.optional({ type: o.string({}) }),
72
+ },
73
+ {
74
+ name: "createdAt",
75
+ displayName: "Created At",
76
+ type: o.timestamp({}),
77
+ defaultValue: o.Expression.functionCall(o.FunctionCallExpression.now({})),
78
+ },
79
+ ],
80
+ logic: [],
81
+ },
82
+ ],
83
+ queryFunctionTypes: [
84
+ {
85
+ name: "searchTasks",
86
+ displayName: "Search Tasks",
87
+ parameters: [
88
+ { name: "query", displayName: "Query", type: o.string({}) },
89
+ {
90
+ name: "limit",
91
+ displayName: "Limit",
92
+ type: o.optional({ type: o.integer({}) }),
93
+ },
94
+ ],
95
+ returnType: o.list({ elementType: o.objectReference({ objectType: "Task" }) }),
96
+ },
97
+ ],
98
+ });
99
+ it("infers an OntologyDefinition from an ontology IR value", () => {
100
+ expect(ontology).toBeDefined();
101
+ expectTypeOf().toEqualTypeOf();
102
+ expectTypeOf().toEqualTypeOf();
103
+ expectTypeOf().toEqualTypeOf();
104
+ expectTypeOf().toEqualTypeOf();
105
+ expectTypeOf().toEqualTypeOf();
106
+ });
107
+ it("infers individual named type definitions against an ontology", () => {
108
+ expectTypeOf().toEqualTypeOf();
109
+ });
110
+ it("infers individual type definitions against an ontology", () => {
111
+ const userReference = defineType(o.objectReference({ objectType: "User" }));
112
+ expect(userReference).toBeDefined();
113
+ expectTypeOf().toEqualTypeOf();
114
+ });
115
+ });
116
+ //# sourceMappingURL=infer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infer.test.js","sourceRoot":"","sources":["../src/infer.test.ts"],"names":[],"mappings":"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"}