@iamjulianacosta/mobx-data 1.0.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 (215) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +366 -0
  3. package/dist/CacheHandler-BTU_rYkv.js +208 -0
  4. package/dist/CacheHandler-BTU_rYkv.js.map +1 -0
  5. package/dist/CacheHandler-CXgY9IJo.cjs +2 -0
  6. package/dist/CacheHandler-CXgY9IJo.cjs.map +1 -0
  7. package/dist/EmbeddedRecordsMixin-CBvqNdgC.cjs +2 -0
  8. package/dist/EmbeddedRecordsMixin-CBvqNdgC.cjs.map +1 -0
  9. package/dist/EmbeddedRecordsMixin-VoHluHCT.js +261 -0
  10. package/dist/EmbeddedRecordsMixin-VoHluHCT.js.map +1 -0
  11. package/dist/JsonApiSerializer-CC5HXp4b.js +194 -0
  12. package/dist/JsonApiSerializer-CC5HXp4b.js.map +1 -0
  13. package/dist/JsonApiSerializer-CKB02AgP.cjs +2 -0
  14. package/dist/JsonApiSerializer-CKB02AgP.cjs.map +1 -0
  15. package/dist/MemoryAdapter-Bx1e7ndV.js +123 -0
  16. package/dist/MemoryAdapter-Bx1e7ndV.js.map +1 -0
  17. package/dist/MemoryAdapter-D1cTyydm.cjs +2 -0
  18. package/dist/MemoryAdapter-D1cTyydm.cjs.map +1 -0
  19. package/dist/ODataAdapter-C4IHK4BK.js +157 -0
  20. package/dist/ODataAdapter-C4IHK4BK.js.map +1 -0
  21. package/dist/ODataAdapter-DyyF1sdA.cjs +2 -0
  22. package/dist/ODataAdapter-DyyF1sdA.cjs.map +1 -0
  23. package/dist/RestAdapter-B4aRvs4m.js +355 -0
  24. package/dist/RestAdapter-B4aRvs4m.js.map +1 -0
  25. package/dist/RestAdapter-CJOwTsKK.cjs +2 -0
  26. package/dist/RestAdapter-CJOwTsKK.cjs.map +1 -0
  27. package/dist/SchemaService-DZwkFgZu.js +102 -0
  28. package/dist/SchemaService-DZwkFgZu.js.map +1 -0
  29. package/dist/SchemaService-Di_yjVzU.cjs +2 -0
  30. package/dist/SchemaService-Di_yjVzU.cjs.map +1 -0
  31. package/dist/Serializer-95gi5edy.cjs +2 -0
  32. package/dist/Serializer-95gi5edy.cjs.map +1 -0
  33. package/dist/Serializer-FxJbsZ50.js +139 -0
  34. package/dist/Serializer-FxJbsZ50.js.map +1 -0
  35. package/dist/Store-BdwMrbDi.cjs +2 -0
  36. package/dist/Store-BdwMrbDi.cjs.map +1 -0
  37. package/dist/Store-CZ7Z-Nme.js +912 -0
  38. package/dist/Store-CZ7Z-Nme.js.map +1 -0
  39. package/dist/adapter/Adapter.d.ts +146 -0
  40. package/dist/adapter/Adapter.d.ts.map +1 -0
  41. package/dist/adapter/MemoryAdapter.d.ts +44 -0
  42. package/dist/adapter/MemoryAdapter.d.ts.map +1 -0
  43. package/dist/adapter/RestAdapter.d.ts +57 -0
  44. package/dist/adapter/RestAdapter.d.ts.map +1 -0
  45. package/dist/adapter/index.cjs +2 -0
  46. package/dist/adapter/index.cjs.map +1 -0
  47. package/dist/adapter/index.d.ts +4 -0
  48. package/dist/adapter/index.d.ts.map +1 -0
  49. package/dist/adapter/index.js +8 -0
  50. package/dist/adapter/index.js.map +1 -0
  51. package/dist/date-Bj4O2W1F.js +107 -0
  52. package/dist/date-Bj4O2W1F.js.map +1 -0
  53. package/dist/date-CRCe-9gf.cjs +2 -0
  54. package/dist/date-CRCe-9gf.cjs.map +1 -0
  55. package/dist/decorators-HQ1KnRdh.cjs +2 -0
  56. package/dist/decorators-HQ1KnRdh.cjs.map +1 -0
  57. package/dist/decorators-Zr35qr6A.js +50 -0
  58. package/dist/decorators-Zr35qr6A.js.map +1 -0
  59. package/dist/index.cjs +2 -0
  60. package/dist/index.cjs.map +1 -0
  61. package/dist/index.d.ts +10 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +52 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/json-api/JsonApiAdapter.d.ts +38 -0
  66. package/dist/json-api/JsonApiAdapter.d.ts.map +1 -0
  67. package/dist/json-api/JsonApiSerializer.d.ts +73 -0
  68. package/dist/json-api/JsonApiSerializer.d.ts.map +1 -0
  69. package/dist/json-api/index.cjs +2 -0
  70. package/dist/json-api/index.cjs.map +1 -0
  71. package/dist/json-api/index.d.ts +3 -0
  72. package/dist/json-api/index.d.ts.map +1 -0
  73. package/dist/json-api/index.js +6 -0
  74. package/dist/json-api/index.js.map +1 -0
  75. package/dist/model/Errors.d.ts +46 -0
  76. package/dist/model/Errors.d.ts.map +1 -0
  77. package/dist/model/Model.d.ts +226 -0
  78. package/dist/model/Model.d.ts.map +1 -0
  79. package/dist/model/Snapshot.d.ts +72 -0
  80. package/dist/model/Snapshot.d.ts.map +1 -0
  81. package/dist/model/StateMachine.d.ts +45 -0
  82. package/dist/model/StateMachine.d.ts.map +1 -0
  83. package/dist/model/index.cjs +2 -0
  84. package/dist/model/index.cjs.map +1 -0
  85. package/dist/model/index.d.ts +6 -0
  86. package/dist/model/index.d.ts.map +1 -0
  87. package/dist/model/index.js +11 -0
  88. package/dist/model/index.js.map +1 -0
  89. package/dist/model/relationships.d.ts +182 -0
  90. package/dist/model/relationships.d.ts.map +1 -0
  91. package/dist/odata/ODataAdapter.d.ts +67 -0
  92. package/dist/odata/ODataAdapter.d.ts.map +1 -0
  93. package/dist/odata/index.cjs +2 -0
  94. package/dist/odata/index.cjs.map +1 -0
  95. package/dist/odata/index.d.ts +2 -0
  96. package/dist/odata/index.d.ts.map +1 -0
  97. package/dist/odata/index.js +5 -0
  98. package/dist/odata/index.js.map +1 -0
  99. package/dist/relationships-B55LBaCW.cjs +2 -0
  100. package/dist/relationships-B55LBaCW.cjs.map +1 -0
  101. package/dist/relationships-BEXANmWg.js +821 -0
  102. package/dist/relationships-BEXANmWg.js.map +1 -0
  103. package/dist/request/CacheHandler.d.ts +50 -0
  104. package/dist/request/CacheHandler.d.ts.map +1 -0
  105. package/dist/request/FetchHandler.d.ts +41 -0
  106. package/dist/request/FetchHandler.d.ts.map +1 -0
  107. package/dist/request/RequestManager.d.ts +52 -0
  108. package/dist/request/RequestManager.d.ts.map +1 -0
  109. package/dist/request/index.cjs +2 -0
  110. package/dist/request/index.cjs.map +1 -0
  111. package/dist/request/index.d.ts +5 -0
  112. package/dist/request/index.d.ts.map +1 -0
  113. package/dist/request/index.js +7 -0
  114. package/dist/request/index.js.map +1 -0
  115. package/dist/request/types.d.ts +111 -0
  116. package/dist/request/types.d.ts.map +1 -0
  117. package/dist/schema/SchemaService.d.ts +58 -0
  118. package/dist/schema/SchemaService.d.ts.map +1 -0
  119. package/dist/schema/decorators.d.ts +50 -0
  120. package/dist/schema/decorators.d.ts.map +1 -0
  121. package/dist/schema/index.cjs +2 -0
  122. package/dist/schema/index.cjs.map +1 -0
  123. package/dist/schema/index.d.ts +4 -0
  124. package/dist/schema/index.d.ts.map +1 -0
  125. package/dist/schema/index.js +13 -0
  126. package/dist/schema/index.js.map +1 -0
  127. package/dist/schema/types.d.ts +61 -0
  128. package/dist/schema/types.d.ts.map +1 -0
  129. package/dist/serializer/EmbeddedRecordsMixin.d.ts +80 -0
  130. package/dist/serializer/EmbeddedRecordsMixin.d.ts.map +1 -0
  131. package/dist/serializer/JsonSerializer.d.ts +52 -0
  132. package/dist/serializer/JsonSerializer.d.ts.map +1 -0
  133. package/dist/serializer/RestSerializer.d.ts +43 -0
  134. package/dist/serializer/RestSerializer.d.ts.map +1 -0
  135. package/dist/serializer/Serializer.d.ts +202 -0
  136. package/dist/serializer/Serializer.d.ts.map +1 -0
  137. package/dist/serializer/index.cjs +2 -0
  138. package/dist/serializer/index.cjs.map +1 -0
  139. package/dist/serializer/index.d.ts +5 -0
  140. package/dist/serializer/index.d.ts.map +1 -0
  141. package/dist/serializer/index.js +9 -0
  142. package/dist/serializer/index.js.map +1 -0
  143. package/dist/store/IdentityMap.d.ts +53 -0
  144. package/dist/store/IdentityMap.d.ts.map +1 -0
  145. package/dist/store/RecordArray.d.ts +114 -0
  146. package/dist/store/RecordArray.d.ts.map +1 -0
  147. package/dist/store/Store.d.ts +395 -0
  148. package/dist/store/Store.d.ts.map +1 -0
  149. package/dist/store/index.cjs +2 -0
  150. package/dist/store/index.cjs.map +1 -0
  151. package/dist/store/index.d.ts +5 -0
  152. package/dist/store/index.d.ts.map +1 -0
  153. package/dist/store/index.js +8 -0
  154. package/dist/store/index.js.map +1 -0
  155. package/dist/transforms/Transform.d.ts +49 -0
  156. package/dist/transforms/Transform.d.ts.map +1 -0
  157. package/dist/transforms/boolean.d.ts +26 -0
  158. package/dist/transforms/boolean.d.ts.map +1 -0
  159. package/dist/transforms/date.d.ts +22 -0
  160. package/dist/transforms/date.d.ts.map +1 -0
  161. package/dist/transforms/index.cjs +2 -0
  162. package/dist/transforms/index.cjs.map +1 -0
  163. package/dist/transforms/index.d.ts +6 -0
  164. package/dist/transforms/index.d.ts.map +1 -0
  165. package/dist/transforms/index.js +9 -0
  166. package/dist/transforms/index.js.map +1 -0
  167. package/dist/transforms/number.d.ts +17 -0
  168. package/dist/transforms/number.d.ts.map +1 -0
  169. package/dist/transforms/string.d.ts +18 -0
  170. package/dist/transforms/string.d.ts.map +1 -0
  171. package/dist/types-C9NB2gRj.js +7 -0
  172. package/dist/types-C9NB2gRj.js.map +1 -0
  173. package/dist/types-uWOXMPWW.cjs +2 -0
  174. package/dist/types-uWOXMPWW.cjs.map +1 -0
  175. package/package.json +140 -0
  176. package/src/adapter/Adapter.ts +320 -0
  177. package/src/adapter/MemoryAdapter.ts +216 -0
  178. package/src/adapter/RestAdapter.ts +248 -0
  179. package/src/adapter/index.ts +7 -0
  180. package/src/index.ts +17 -0
  181. package/src/json-api/JsonApiAdapter.ts +93 -0
  182. package/src/json-api/JsonApiSerializer.ts +245 -0
  183. package/src/json-api/index.ts +2 -0
  184. package/src/model/Errors.ts +100 -0
  185. package/src/model/Model.ts +683 -0
  186. package/src/model/Snapshot.ts +162 -0
  187. package/src/model/StateMachine.ts +149 -0
  188. package/src/model/index.ts +20 -0
  189. package/src/model/relationships.ts +484 -0
  190. package/src/odata/ODataAdapter.ts +245 -0
  191. package/src/odata/index.ts +1 -0
  192. package/src/request/CacheHandler.ts +125 -0
  193. package/src/request/FetchHandler.ts +119 -0
  194. package/src/request/RequestManager.ts +112 -0
  195. package/src/request/index.ts +4 -0
  196. package/src/request/types.ts +139 -0
  197. package/src/schema/SchemaService.ts +161 -0
  198. package/src/schema/decorators.ts +162 -0
  199. package/src/schema/index.ts +3 -0
  200. package/src/schema/types.ts +66 -0
  201. package/src/serializer/EmbeddedRecordsMixin.ts +257 -0
  202. package/src/serializer/JsonSerializer.ts +173 -0
  203. package/src/serializer/RestSerializer.ts +138 -0
  204. package/src/serializer/Serializer.ts +397 -0
  205. package/src/serializer/index.ts +15 -0
  206. package/src/store/IdentityMap.ts +110 -0
  207. package/src/store/RecordArray.ts +210 -0
  208. package/src/store/Store.ts +1391 -0
  209. package/src/store/index.ts +11 -0
  210. package/src/transforms/Transform.ts +52 -0
  211. package/src/transforms/boolean.ts +57 -0
  212. package/src/transforms/date.ts +48 -0
  213. package/src/transforms/index.ts +5 -0
  214. package/src/transforms/number.ts +42 -0
  215. package/src/transforms/string.ts +35 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Model.d.ts","sourceRoot":"","sources":["../../src/model/Model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Immutable point-in-time view of a model record.
3
+ *
4
+ * A `Snapshot` is created immediately before an adapter call so that adapter
5
+ * and serializer code reads a consistent, frozen picture of the record
6
+ * regardless of mutations that happen after the call begins.
7
+ *
8
+ * Key guarantees:
9
+ * - Attribute data is copied at construction time; later record mutations do
10
+ * not bleed into the snapshot.
11
+ * - Relationship data is captured via a `Map` copy for the same reason.
12
+ * - `changedAttributes()` compares the snapshot-time data against the
13
+ * record's original (server-received) data, not the current live state.
14
+ * - `eachAttribute` / `eachRelationship` iterate the merged schema definitions
15
+ * walked at construction from the prototype chain.
16
+ */
17
+ import 'reflect-metadata';
18
+ import { type AttributeDef, type RelationshipDef } from '@mobx-data/schema';
19
+ import type { Model } from './Model.js';
20
+ /** Shape of a serialised `belongsTo` reference as stored in a snapshot. */
21
+ export interface BelongsToReference {
22
+ id: string | null;
23
+ type: string;
24
+ }
25
+ /** Shape of a serialised `hasMany` item reference as stored in a snapshot. */
26
+ export interface HasManyReference {
27
+ id: string;
28
+ type: string;
29
+ }
30
+ export declare class Snapshot<T extends Model = Model> {
31
+ /** Server-assigned id at snapshot time, or `null` for new records. */
32
+ readonly id: string | null;
33
+ /** `modelName` of the snapshotted record. */
34
+ readonly modelName: string;
35
+ /** Reference to the live record (read-only from adapter/serializer code). */
36
+ readonly record: T;
37
+ private readonly _attributes;
38
+ private readonly _relationships;
39
+ private readonly _changedAttributes;
40
+ private readonly _attributeDefinitions;
41
+ private readonly _relationshipDefinitions;
42
+ constructor(record: T);
43
+ /** Returns the snapshot-time value for an attribute key. */
44
+ attr<K extends keyof T>(key: K): T[K];
45
+ /**
46
+ * Returns the `belongsTo` reference for `key`.
47
+ * When `{ id: true }` is passed, returns only the id string; otherwise
48
+ * returns a `BelongsToReference` `{ id, type }` object, or `null` when the
49
+ * relationship is empty.
50
+ */
51
+ belongsTo(key: string, options?: {
52
+ id: boolean;
53
+ }): BelongsToReference | string | null;
54
+ /**
55
+ * Returns the `hasMany` references for `key`.
56
+ * When `{ ids: true }` is passed, returns a plain string array of ids;
57
+ * otherwise returns an array of `HasManyReference` objects.
58
+ */
59
+ hasMany(key: string, options?: {
60
+ ids: boolean;
61
+ }): HasManyReference[] | string[];
62
+ /**
63
+ * Returns a `{ [key]: [original, current] }` map of attributes that
64
+ * differ from the server-received values at snapshot time.
65
+ */
66
+ changedAttributes(): Record<string, [unknown, unknown]>;
67
+ /** Iterates over every attribute definition, calling `callback` for each. */
68
+ eachAttribute(callback: (key: string, meta: AttributeDef) => void): void;
69
+ /** Iterates over every relationship definition, calling `callback` for each. */
70
+ eachRelationship(callback: (key: string, meta: RelationshipDef) => void): void;
71
+ }
72
+ //# sourceMappingURL=Snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Snapshot.d.ts","sourceRoot":"","sources":["../../src/model/Snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,KAAK,EAAmB,MAAM,YAAY,CAAC;AAEzD,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAyBD,qBAAa,QAAQ,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK;IAC3C,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6CAA6C;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAEnB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAC9D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqC;IACxE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA4B;IAClE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA+B;gBAE5D,MAAM,EAAE,CAAC;IAmBrB,4DAA4D;IAC5D,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAIrC;;;;;OAKG;IACH,SAAS,CACP,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,GACxB,kBAAkB,GAAG,MAAM,GAAG,IAAI;IAYrC;;;;OAIG;IACH,OAAO,CACL,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,OAAO,CAAA;KAAE,GACzB,gBAAgB,EAAE,GAAG,MAAM,EAAE;IAYhC;;;OAGG;IACH,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAIvD,6EAA6E;IAC7E,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IAMxE,gFAAgF;IAChF,gBAAgB,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;CAK/E"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Finite-state machine that tracks the lifecycle of a single model record.
3
+ *
4
+ * States are organised in a dot-separated hierarchy that mirrors Ember Data's
5
+ * record state machine. The transition table (`TABLE`) is the single source
6
+ * of truth; illegal transitions throw immediately rather than silently
7
+ * degrading into an unexpected state.
8
+ *
9
+ * State hierarchy overview:
10
+ * ```
11
+ * root.empty
12
+ * root.loading
13
+ * root.loaded
14
+ * .saved
15
+ * .created.uncommitted ← new record, not yet sent to server
16
+ * .created.inFlight ← POST in progress
17
+ * .updated.uncommitted ← dirty record, not yet sent to server
18
+ * .updated.inFlight ← PUT/PATCH in progress
19
+ * root.deleted
20
+ * .uncommitted ← deleteRecord() called locally
21
+ * .inFlight ← DELETE in progress
22
+ * .saved ← server confirmed deletion
23
+ * root.error ← adapter threw an unrecoverable error
24
+ * ```
25
+ *
26
+ * `current` is MobX-observable so computed properties that depend on
27
+ * `isNew`, `isDirty`, etc. react automatically.
28
+ */
29
+ /** All valid states the record can be in. */
30
+ export type RecordState = 'root.empty' | 'root.loading' | 'root.loaded.saved' | 'root.loaded.created.uncommitted' | 'root.loaded.created.inFlight' | 'root.loaded.updated.uncommitted' | 'root.loaded.updated.inFlight' | 'root.deleted.uncommitted' | 'root.deleted.inFlight' | 'root.deleted.saved' | 'root.error';
31
+ /** Events that trigger state transitions. */
32
+ export type RecordEvent = 'loadingData' | 'pushedData' | 'becameError' | 'didSetProperty' | 'willCommit' | 'didCommit' | 'becameInvalid' | 'deleteRecord' | 'rolledBack' | 'unloadRecord';
33
+ export declare class StateMachine {
34
+ /** The current state of the record. Observable so computed props react. */
35
+ current: RecordState;
36
+ constructor(initial?: RecordState);
37
+ /**
38
+ * Applies `event` to the current state, updates `current`, and returns the
39
+ * new state.
40
+ *
41
+ * @throws `Error` when `event` is not permitted from the current state.
42
+ */
43
+ transition(event: RecordEvent): RecordState;
44
+ }
45
+ //# sourceMappingURL=StateMachine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateMachine.d.ts","sourceRoot":"","sources":["../../src/model/StateMachine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,6CAA6C;AAC7C,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,cAAc,GACd,mBAAmB,GACnB,iCAAiC,GACjC,8BAA8B,GAC9B,iCAAiC,GACjC,8BAA8B,GAC9B,0BAA0B,GAC1B,uBAAuB,GACvB,oBAAoB,GACpB,YAAY,CAAC;AAEjB,6CAA6C;AAC7C,MAAM,MAAM,WAAW,GACnB,aAAa,GACb,YAAY,GACZ,aAAa,GACb,gBAAgB,GAChB,YAAY,GACZ,WAAW,GACX,eAAe,GACf,cAAc,GACd,YAAY,GACZ,cAAc,CAAC;AAgEnB,qBAAa,YAAY;IACvB,4EAA4E;IAC5E,OAAO,EAAE,WAAW,CAAC;gBAET,OAAO,GAAE,WAA0B;IAQ/C;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;CAU5C"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../relationships-B55LBaCW.cjs");exports.AsyncBelongsTo=e.AsyncBelongsTo;exports.AsyncHasMany=e.AsyncHasMany;Object.defineProperty(exports,"Errors",{enumerable:!0,get:()=>e.Errors});exports.ManyArray=e.ManyArray;exports.Model=e.Model;exports.Snapshot=e.Snapshot;exports.StateMachine=e.StateMachine;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export { Model, type ModelConstructorOptions, type ModelStoreLike, type PushOptions, type RelationshipRef, type SaveOptions, } from './Model.js';
2
+ export { Errors, type ErrorMessage } from './Errors.js';
3
+ export { Snapshot, type BelongsToReference, type HasManyReference, } from './Snapshot.js';
4
+ export { StateMachine, type RecordState, type RecordEvent, } from './StateMachine.js';
5
+ export { ManyArray, AsyncBelongsTo, AsyncHasMany } from './relationships.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,QAAQ,EACR,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { A as n, a as o, E as r, M as e, b as y, S as M, c } from "../relationships-BEXANmWg.js";
2
+ export {
3
+ n as AsyncBelongsTo,
4
+ o as AsyncHasMany,
5
+ r as Errors,
6
+ e as ManyArray,
7
+ y as Model,
8
+ M as Snapshot,
9
+ c as StateMachine
10
+ };
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Relationship proxy classes returned by relationship getters on Model instances.
3
+ *
4
+ * Three classes are exported:
5
+ *
6
+ * - `ManyArray<T>` — a synchronous, MobX-observable live view of a `hasMany`
7
+ * relationship. Its contents are resolved directly from the store's identity
8
+ * map on each access, so it stays in sync automatically as records are
9
+ * pushed, unloaded, or added/removed via `push` / `removeObject`.
10
+ *
11
+ * - `AsyncBelongsTo<T>` — a `PromiseLike` wrapper for a `belongsTo` that
12
+ * may need to be fetched from the server. Supports `await`, `then`, and
13
+ * MobX-observable state flags (`isLoading`, `isLoaded`, `isFulfilled`,
14
+ * `isRejected`, `value`).
15
+ *
16
+ * - `AsyncHasMany<T>` — same semantics as `AsyncBelongsTo` but resolves to a
17
+ * `ManyArray<T>` instead of a single record.
18
+ *
19
+ * Both async wrappers eagerly check the store cache on construction; if all
20
+ * referenced records are already present they transition to `fulfilled`
21
+ * without issuing any network requests.
22
+ */
23
+ import type { RelationshipDef } from '@mobx-data/schema';
24
+ import type { Model, ModelStoreLike, RelationshipRef } from './Model.js';
25
+ /** Context object shared by all relationship proxy classes. */
26
+ export interface RelationshipHost {
27
+ /** The record that owns the relationship. */
28
+ parent: Model;
29
+ /** Name of the relationship property on the owner. */
30
+ name: string;
31
+ /** Relationship definition from the schema. */
32
+ meta: RelationshipDef;
33
+ /** Store instance used to peek / find related records. */
34
+ store: RelationshipCapableStore;
35
+ }
36
+ /**
37
+ * Extended store interface required by the relationship proxy classes.
38
+ * `Store` satisfies this interface.
39
+ */
40
+ export interface RelationshipCapableStore extends ModelStoreLike {
41
+ peekRecord<T extends Model = Model>(type: string, id: string): T | null;
42
+ findRecord<T extends Model = Model>(type: string, id: string, options?: unknown): Promise<T>;
43
+ _getRelationshipRefFor(record: Model, name: string): RelationshipRef | null;
44
+ _getPendingMembers(record: Model, name: string): Iterable<Model>;
45
+ _hasManyAppend(record: Model, name: string, meta: RelationshipDef, value: Model): void;
46
+ _hasManyRemove(record: Model, name: string, meta: RelationshipDef, value: Model): void;
47
+ }
48
+ /**
49
+ * Synchronous, live-updating array proxy for a `hasMany` relationship.
50
+ *
51
+ * Each access to `length`, iteration, or mutation goes through the store so
52
+ * the array always reflects the current identity map state. Records that
53
+ * have been `push`ed to the relationship but not yet assigned a server id
54
+ * are tracked separately as "pending members" and are included in the
55
+ * resolved list.
56
+ */
57
+ export declare class ManyArray<T extends Model = Model> implements Iterable<T> {
58
+ static refData(ref: RelationshipRef | null): Array<{
59
+ type: string;
60
+ id: string;
61
+ }>;
62
+ private host;
63
+ constructor(host: RelationshipHost);
64
+ /**
65
+ * Resolves the current set of related records from the store identity map.
66
+ * Pending (unsaved) members appended via `push()` are appended at the end.
67
+ */
68
+ private get resolved();
69
+ /** Number of related records currently in the array. */
70
+ get length(): number;
71
+ /** Returns the record at `index`, or `undefined`. */
72
+ at(index: number): T | undefined;
73
+ /**
74
+ * Adds one or more records to the relationship.
75
+ * Delegates to `store._hasManyAppend` which also handles inverse tracking.
76
+ */
77
+ push(...records: T[]): number;
78
+ /**
79
+ * Removes a record from the relationship.
80
+ * Delegates to `store._hasManyRemove` which also handles inverse tracking.
81
+ */
82
+ removeObject(record: T): void;
83
+ /** Returns `true` when `record` is currently in the relationship. */
84
+ includes(record: T): boolean;
85
+ /** Returns a plain array snapshot of all related records. */
86
+ toArray(): T[];
87
+ /** Maps over the related records. */
88
+ map<R>(callback: (record: T, i: number) => R): R[];
89
+ /** Filters the related records. */
90
+ filter(predicate: (record: T, i: number) => boolean): T[];
91
+ /** Iterates over the related records. */
92
+ forEach(callback: (record: T, i: number) => void): void;
93
+ [Symbol.iterator](): Iterator<T>;
94
+ }
95
+ /**
96
+ * Async wrapper for a `belongsTo` relationship.
97
+ *
98
+ * Implements `PromiseLike<T | null>` so it can be `await`ed. Also exposes
99
+ * MobX-observable state flags:
100
+ * - `isPending` / `isFulfilled` / `isRejected` — promise lifecycle
101
+ * - `isLoading` — a network request is currently in flight
102
+ * - `isLoaded` — the relationship has been resolved (even to `null`)
103
+ * - `value` — the resolved record, or `null`
104
+ * - `reason` — the rejection error, if any
105
+ *
106
+ * Eagerly checks the store cache at construction; if the referenced record is
107
+ * already present it transitions straight to `fulfilled`.
108
+ */
109
+ export declare class AsyncBelongsTo<T extends Model = Model> implements PromiseLike<T | null> {
110
+ private host;
111
+ private loadedState;
112
+ private currentValue;
113
+ private error;
114
+ private inflight;
115
+ constructor(host: RelationshipHost);
116
+ /** Checks the store cache and transitions to `fulfilled` if the record is already loaded. */
117
+ private syncFromCache;
118
+ /** `true` while the relationship has not yet been resolved. */
119
+ get isPending(): boolean;
120
+ /** `true` once the relationship has been resolved (including to `null`). */
121
+ get isFulfilled(): boolean;
122
+ /** `true` if the network request failed. */
123
+ get isRejected(): boolean;
124
+ /** `true` while a network request is in flight. */
125
+ get isLoading(): boolean;
126
+ /** `true` once the relationship is resolved. */
127
+ get isLoaded(): boolean;
128
+ /** The resolved record, or `null` when the relationship is empty or not yet loaded. */
129
+ get value(): T | null;
130
+ /** The rejection reason if `isRejected`. */
131
+ get reason(): unknown;
132
+ /**
133
+ * Ensures the related record is loaded, returning a `Promise<T | null>`.
134
+ * If the record is already in the store it resolves immediately.
135
+ * Concurrent calls share the same in-flight promise.
136
+ */
137
+ load(): Promise<T | null>;
138
+ /** Forces a fresh fetch, ignoring any cached value. */
139
+ reload(): Promise<T | null>;
140
+ then<TResult1 = T | null, TResult2 = never>(onfulfilled?: ((value: T | null) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null | undefined): PromiseLike<TResult1 | TResult2>;
141
+ }
142
+ /**
143
+ * Async wrapper for a `hasMany` relationship.
144
+ *
145
+ * Mirrors the `AsyncBelongsTo` API but resolves to a `ManyArray<T>` instead
146
+ * of a single record. Missing referenced records are fetched in parallel via
147
+ * `store.findRecord`.
148
+ */
149
+ export declare class AsyncHasMany<T extends Model = Model> implements PromiseLike<ManyArray<T>> {
150
+ private host;
151
+ private manyArray;
152
+ private loadedState;
153
+ private error;
154
+ private inflight;
155
+ constructor(host: RelationshipHost);
156
+ /** Transitions to `fulfilled` if all referenced records are already in the cache. */
157
+ private syncFromCache;
158
+ /** `true` while the relationship has not yet been resolved. */
159
+ get isPending(): boolean;
160
+ /** `true` once all referenced records have been resolved. */
161
+ get isFulfilled(): boolean;
162
+ /** `true` if any fetch failed. */
163
+ get isRejected(): boolean;
164
+ /** `true` while a network request is in flight. */
165
+ get isLoading(): boolean;
166
+ /** `true` once the relationship is resolved. */
167
+ get isLoaded(): boolean;
168
+ /** The underlying `ManyArray` (always available, even before `load()`). */
169
+ get value(): ManyArray<T>;
170
+ /** Number of records currently in the resolved array. */
171
+ get length(): number;
172
+ /**
173
+ * Ensures all referenced records are loaded.
174
+ * Records already in the cache are not re-fetched.
175
+ * Concurrent calls share the same in-flight promise.
176
+ */
177
+ load(): Promise<ManyArray<T>>;
178
+ /** Forces a fresh fetch, ignoring any cached state. */
179
+ reload(): Promise<ManyArray<T>>;
180
+ then<TResult1 = ManyArray<T>, TResult2 = never>(onfulfilled?: ((value: ManyArray<T>) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null | undefined): PromiseLike<TResult1 | TResult2>;
181
+ }
182
+ //# sourceMappingURL=relationships.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../src/model/relationships.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEzE,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAC/B,6CAA6C;IAC7C,MAAM,EAAE,KAAK,CAAC;IACd,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,IAAI,EAAE,eAAe,CAAC;IACtB,0DAA0D;IAC1D,KAAK,EAAE,wBAAwB,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC9D,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;IACxE,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAChC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;IAC5E,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjE,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACvF,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACxF;AAED;;;;;;;;GAQG;AACH,qBAAa,SAAS,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,YAAW,QAAQ,CAAC,CAAC,CAAC;IACpE,MAAM,CAAC,OAAO,CACZ,GAAG,EAAE,eAAe,GAAG,IAAI,GAC1B,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAOtC,OAAO,CAAC,IAAI,CAAmB;gBAEnB,IAAI,EAAE,gBAAgB;IAUlC;;;OAGG;IACH,OAAO,KAAK,QAAQ,GAqBnB;IAED,wDAAwD;IACxD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,qDAAqD;IACrD,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIhC;;;OAGG;IACH,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,GAAG,MAAM;IAY7B;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI;IAS7B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO;IAI5B,6DAA6D;IAC7D,OAAO,IAAI,CAAC,EAAE;IAId,qCAAqC;IACrC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE;IAIlD,mCAAmC;IACnC,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,CAAC,EAAE;IAIzD,yCAAyC;IACzC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIvD,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;CAGjC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CACnD,YAAW,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAmB;IAE/B,OAAO,CAAC,WAAW,CAAmD;IAEtE,OAAO,CAAC,YAAY,CAAkB;IAEtC,OAAO,CAAC,KAAK,CAAiB;IAE9B,OAAO,CAAC,QAAQ,CAAkC;gBAEtC,IAAI,EAAE,gBAAgB;IAkBlC,6FAA6F;IAC7F,OAAO,CAAC,aAAa;IAcrB,+DAA+D;IAC/D,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,4EAA4E;IAC5E,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,4CAA4C;IAC5C,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,mDAAmD;IACnD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,gDAAgD;IAChD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,uFAAuF;IACvF,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAEpB;IAED,4CAA4C;IAC5C,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAmCzB,uDAAuD;IACvD,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAM3B,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,EACxC,WAAW,CAAC,EACV,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GACvD,IAAI,GACJ,SAAS,EACX,UAAU,CAAC,EACT,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GACvD,IAAI,GACJ,SAAS,GACV,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAGpC;AAED;;;;;;GAMG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CACjD,YAAW,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,CAAC,IAAI,CAAmB;IAE/B,OAAO,CAAC,SAAS,CAAe;IAEhC,OAAO,CAAC,WAAW,CAAmD;IAEtE,OAAO,CAAC,KAAK,CAAiB;IAE9B,OAAO,CAAC,QAAQ,CAAsC;gBAE1C,IAAI,EAAE,gBAAgB;IAiBlC,qFAAqF;IACrF,OAAO,CAAC,aAAa;IAWrB,+DAA+D;IAC/D,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,6DAA6D;IAC7D,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,kCAAkC;IAClC,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,mDAAmD;IACnD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,gDAAgD;IAChD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,2EAA2E;IAC3E,IAAI,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,CAExB;IAED,yDAAyD;IACzD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAoC7B,uDAAuD;IACvD,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAM/B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,EAC5C,WAAW,CAAC,EACV,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAC3D,IAAI,GACJ,SAAS,EACX,UAAU,CAAC,EACT,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GACvD,IAAI,GACJ,SAAS,GACV,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAGpC"}
@@ -0,0 +1,67 @@
1
+ import { RestAdapter } from '@mobx-data/adapter';
2
+ import type { AdapterSnapshot } from '@mobx-data/adapter';
3
+ /**
4
+ * OData v4 adapter.
5
+ *
6
+ * Extends `RestAdapter` with OData-specific conventions:
7
+ * - Entity-set names are PascalCase plural (`user` → `Users`).
8
+ * - Single-entity URLs use key-in-parentheses syntax (`Users(1)`, `Users('abc')`).
9
+ * - Mutations use PATCH instead of PUT.
10
+ * - Accept / Content-Type headers carry the `odata.metadata=minimal` parameter.
11
+ * - System query options (`$filter`, `$expand`, etc.) are passed through verbatim;
12
+ * bare names are auto-prefixed (`filter` → `$filter`).
13
+ */
14
+ export declare class ODataAdapter extends RestAdapter {
15
+ /** OData protocol version sent in `OData-Version` and `OData-MaxVersion` headers. */
16
+ odataVersion: string;
17
+ static isNumericKey(id: string): boolean;
18
+ static escapeODataString(value: string): string;
19
+ defaultHeaders(): Record<string, string>;
20
+ mutationHeaders(): Record<string, string>;
21
+ /**
22
+ * Maps a camelCase/dasherized model name to a PascalCase plural entity-set name.
23
+ * @example `pathForType('orderItem')` → `'OrderItems'`
24
+ */
25
+ pathForType(modelName: string): string;
26
+ /**
27
+ * Encodes a record id as an OData key literal.
28
+ * Numeric ids are returned bare (`1`); string ids are single-quoted with
29
+ * inner apostrophes escaped (`o'brien` → `'o''brien'`).
30
+ *
31
+ * Override this method when the service uses a non-default key format (e.g. GUIDs).
32
+ */
33
+ encodeKey(id: string): string;
34
+ urlForFindRecord(id: string, modelName: string, _snapshot: AdapterSnapshot): string;
35
+ urlForUpdateRecord(id: string, modelName: string, _snapshot: AdapterSnapshot): string;
36
+ urlForDeleteRecord(id: string, modelName: string, _snapshot: AdapterSnapshot): string;
37
+ /**
38
+ * Fetches multiple records by id using a single request.
39
+ * Builds a `$filter=id eq X or id eq Y` expression so only one HTTP round-trip
40
+ * is needed regardless of how many ids are requested.
41
+ */
42
+ findMany(_store: unknown, modelName: string, ids: string[], snapshots: AdapterSnapshot[]): Promise<unknown>;
43
+ query(_store: unknown, modelName: string, query: Record<string, unknown>): Promise<unknown>;
44
+ /**
45
+ * Queries for a single record by appending `$top=1` to whatever filter is provided.
46
+ * The caller is responsible for picking the first element from the returned `value` array.
47
+ */
48
+ queryRecord(_store: unknown, modelName: string, query: Record<string, unknown>): Promise<unknown>;
49
+ /** Sends a PATCH request (partial update) as required by the OData v4 spec. */
50
+ updateRecord(_store: unknown, modelName: string, snapshot: AdapterSnapshot): Promise<unknown>;
51
+ /** Sends a PATCH request with only the changed attributes (partial update). */
52
+ patchRecord(_store: unknown, modelName: string, snapshot: AdapterSnapshot): Promise<unknown>;
53
+ /** Extracts the raw attribute map from the snapshot's internal record. */
54
+ protected _serializeSnapshot(snapshot: AdapterSnapshot): Record<string, unknown>;
55
+ /**
56
+ * Normalises a query hash so every OData system option has its `$` prefix.
57
+ * Bare names (`filter`, `top`, `expand`) are prefixed automatically.
58
+ * Custom (non-system) keys are forwarded verbatim.
59
+ * `null` and `undefined` values are dropped.
60
+ */
61
+ protected _normalizeQuery(query: Record<string, unknown>): Record<string, unknown>;
62
+ /** Serialises a key→value map to a `key=value&…` query string (percent-encoded). */
63
+ protected _toQueryString(query: Record<string, unknown>): string;
64
+ /** Returns `?key=value&…` when the query is non-empty, or an empty string. */
65
+ protected _appendQuery(query: Record<string, unknown>): string;
66
+ }
67
+ //# sourceMappingURL=ODataAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ODataAdapter.d.ts","sourceRoot":"","sources":["../../src/odata/ODataAdapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAgB1D;;;;;;;;;;GAUG;AACH,qBACa,YAAa,SAAQ,WAAW;IAC3C,qFAAqF;IACrF,YAAY,EAAE,MAAM,CAAS;IAE7B,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAItC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IASxC,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAOlD;;;OAGG;IACM,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI/C;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAOpB,gBAAgB,CACvB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,eAAe,GACzB,MAAM;IAIA,kBAAkB,CACzB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,eAAe,GACzB,MAAM;IAIA,kBAAkB,CACzB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,eAAe,GACzB,MAAM;IAIT;;;;OAIG;IACY,QAAQ,CACrB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EAAE,EACb,SAAS,EAAE,eAAe,EAAE,GAC3B,OAAO,CAAC,OAAO,CAAC;IAUJ,KAAK,CAClB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,OAAO,CAAC;IAUnB;;;OAGG;IACY,WAAW,CACxB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,OAAO,CAAC;IAUnB,+EAA+E;IAChE,YAAY,CACzB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,OAAO,CAAC;IASnB,+EAA+E;IAChE,WAAW,CACxB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,OAAO,CAAC;IAcnB,0EAA0E;IAC1E,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAUhF;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAiB1B,oFAAoF;IACpF,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAWhE,8EAA8E;IAC9E,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAI/D"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../ODataAdapter-DyyF1sdA.cjs");Object.defineProperty(exports,"ODataAdapter",{enumerable:!0,get:()=>e.ODataAdapter});
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { ODataAdapter } from './ODataAdapter.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/odata/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { O as t } from "../ODataAdapter-C4IHK4BK.js";
2
+ export {
3
+ t as ODataAdapter
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ "use strict";require("reflect-metadata");const i=require("mobx"),h=require("./types-uWOXMPWW.cjs"),_=require("tsyringe");var y=Object.getOwnPropertyDescriptor,b=(a,t,e,r)=>{for(var s=r>1?void 0:r?y(t,e):t,o=a.length-1,n;o>=0;o--)(n=a[o])&&(s=n(s)||s);return s};exports.Errors=class{constructor(){this._errors=new Map,i.makeObservable(this,{_errors:i.observable.shallow,isEmpty:i.computed,length:i.computed,add:i.action,remove:i.action,clear:i.action})}get isEmpty(){return this._errors.size===0}get length(){let t=0;for(const e of this._errors.values())t+=e.length;return t}get(t){return this._errors.get(t)??[]}has(t){const e=this._errors.get(t);return!!e&&e.length>0}add(t,e){const r=Array.isArray(e)?e:[e],o=[...this._errors.get(t)??[],...r.map(n=>({attribute:t,message:n}))];this._errors.set(t,o)}remove(t){this._errors.delete(t)}clear(){this._errors.clear()}*[Symbol.iterator](){for(const t of this._errors.entries())yield t}};exports.Errors=b([_.injectable()],exports.Errors);const S={"root.empty":{loadingData:"root.loading",pushedData:"root.loaded.saved"},"root.loading":{pushedData:"root.loaded.saved",becameError:"root.error"},"root.loaded.saved":{didSetProperty:"root.loaded.updated.uncommitted",deleteRecord:"root.deleted.uncommitted",loadingData:"root.loading",pushedData:"root.loaded.saved",unloadRecord:"root.empty"},"root.loaded.created.uncommitted":{willCommit:"root.loaded.created.inFlight",rolledBack:"root.empty",deleteRecord:"root.deleted.uncommitted",didSetProperty:"root.loaded.created.uncommitted",unloadRecord:"root.empty"},"root.loaded.created.inFlight":{didCommit:"root.loaded.saved",becameInvalid:"root.loaded.created.uncommitted",becameError:"root.error"},"root.loaded.updated.uncommitted":{willCommit:"root.loaded.updated.inFlight",rolledBack:"root.loaded.saved",didSetProperty:"root.loaded.updated.uncommitted",deleteRecord:"root.deleted.uncommitted",unloadRecord:"root.empty"},"root.loaded.updated.inFlight":{didCommit:"root.loaded.saved",becameInvalid:"root.loaded.updated.uncommitted",becameError:"root.error"},"root.deleted.uncommitted":{willCommit:"root.deleted.inFlight",rolledBack:"root.loaded.saved",unloadRecord:"root.empty"},"root.deleted.inFlight":{didCommit:"root.deleted.saved",becameError:"root.error"},"root.deleted.saved":{unloadRecord:"root.empty"},"root.error":{rolledBack:"root.loaded.saved",unloadRecord:"root.empty"}};class p{constructor(t="root.empty"){this.current=t,i.makeObservable(this,{current:i.observable,transition:i.action})}transition(t){const e=S[this.current][t];if(!e)throw new Error(`Invalid transition: event "${t}" not allowed from state "${this.current}"`);return this.current=e,e}}function u(a,t){const e=[];let r=a;for(;r&&r!==Object.prototype;)e.push(r),r=Object.getPrototypeOf(r);const s=new Map;for(const o of e.reverse()){const n=Reflect.getOwnMetadata(t,o);if(n)for(const[l,c]of n)s.set(l,c)}return s}class g{constructor(t){this.record=t,this.id=t.id,this.modelName=t.modelName;const e=t;this._attributes={...e._data},this._relationships=new Map(e._relationships),this._changedAttributes=t.changedAttributes();const r=Object.getPrototypeOf(t);this._attributeDefinitions=u(r,h.ATTRIBUTES_META_KEY),this._relationshipDefinitions=u(r,h.RELATIONSHIPS_META_KEY)}attr(t){return this._attributes[t]}belongsTo(t,e){const r=this._relationships.get(t);if(!r||r.data===null)return null;const s=r.data;return e!=null&&e.id?s.id:{id:s.id,type:s.type}}hasMany(t,e){const r=this._relationships.get(t);if(!r||!Array.isArray(r.data))return[];const s=r.data;return e!=null&&e.ids?s.map(o=>o.id):s.map(o=>({id:o.id,type:o.type}))}changedAttributes(){return{...this._changedAttributes}}eachAttribute(t){for(const[e,r]of this._attributeDefinitions)t(e,r)}eachRelationship(t){for(const[e,r]of this._relationshipDefinitions)t(e,r)}}const m=Symbol("mobx-data:accessors-installed");function f(a,t){const e=[];let r=a;for(;r&&r!==Object.prototype;)e.push(r),r=Object.getPrototypeOf(r);const s=new Map;for(const o of e.reverse()){const n=Reflect.getOwnMetadata(t,o);if(n)for(const[l,c]of n)s.set(l,c)}return s}function v(a){const t=a.prototype;if(a[m])return;a[m]=!0;const e=f(t,h.ATTRIBUTES_META_KEY);for(const[s]of e)Object.defineProperty(t,s,{get(){return this._data[s]},set(o){this._setAttribute(s,o)},configurable:!0,enumerable:!0});const r=f(t,h.RELATIONSHIPS_META_KEY);for(const[s,o]of r)Object.defineProperty(t,s,{get(){return this._resolveRelationship(s,o)},set(n){this._setRelationship(s,o,n)},configurable:!0,enumerable:!0})}class R{constructor(t={}){this._data={},this._originalData={},this._relationships=new Map,this._id=null,this.errors=new exports.Errors;const e=t;v(this.constructor),this._id=e.id??null,this.store=e.store,this._stateMachine=new p(e.__initialState??"root.loaded.created.uncommitted");const r=e.data?{...e.data}:{};if(this._data=r,e.__initialState==="root.loaded.saved"?this._originalData={...r}:this._originalData={},e.relationships)for(const[s,o]of Object.entries(e.relationships))this._relationships.set(s,o);i.makeObservable(this,{_data:i.observable.shallow,_originalData:i.observable.ref,_relationships:i.observable.shallow,_id:i.observable,id:i.computed,currentState:i.computed,isLoading:i.computed,isLoaded:i.computed,isSaving:i.computed,isDirty:i.computed,hasDirtyAttributes:i.computed,isNew:i.computed,isDeleted:i.computed,isValid:i.computed,isError:i.computed,isEmpty:i.computed,_setAttribute:i.action,_transitionIfClean:i.action,_applyServerData:i.action,_setState:i.action,rollbackAttributes:i.action,deleteRecord:i.action})}static push(t){const e=this,r=new e({...t,__initialState:"root.loaded.saved"});return r.didLoad(),r}get id(){return this._id}set id(t){i.runInAction(()=>{this._id=t})}get modelName(){return this.constructor.modelName}get currentState(){return this._stateMachine.current}get isLoading(){return this.currentState==="root.loading"}get isLoaded(){return this.currentState.startsWith("root.loaded")}get isSaving(){return this.currentState.endsWith(".inFlight")}get isNew(){return this.currentState.startsWith("root.loaded.created")}get isDeleted(){return this.currentState.startsWith("root.deleted")}get isError(){return this.currentState==="root.error"}get isEmpty(){return this.currentState==="root.empty"}get hasDirtyAttributes(){const t=this._data,e=this._originalData;for(const r of Object.keys(t))if(!Object.is(t[r],e[r]))return!0;for(const r of Object.keys(e))if(!(r in t))return!0;return!1}get isDirty(){return this.isNew||this.isDeleted&&this.currentState!=="root.deleted.saved"?!0:this.hasDirtyAttributes}get isValid(){return this.errors.isEmpty}changedAttributes(){const t={},e=new Set([...Object.keys(this._data),...Object.keys(this._originalData)]);for(const r of e){const s=this._data[r],o=this._originalData[r];Object.is(s,o)||(t[r]=[o,s])}return t}rollbackAttributes(){var t;if(this._data={...this._originalData},this.errors.clear(),this.isNew){this._setState("root.empty"),(t=this.store)!=null&&t.unloadRecord&&this.store.unloadRecord(this);return}this.currentState==="root.loaded.updated.uncommitted"?this._stateMachine.transition("rolledBack"):this.currentState==="root.deleted.uncommitted"&&this._stateMachine.transition("rolledBack")}async save(t={}){var r;if(!this.isDirty)return this;if(!((r=this.store)!=null&&r.saveRecord))throw new Error("Cannot save: no store attached");const e=this.isNew;this.willSave(),this._stateMachine.transition("willCommit");try{return await this.store.saveRecord(this,t),(this.currentState==="root.loaded.created.inFlight"||this.currentState==="root.loaded.updated.inFlight")&&i.runInAction(()=>{this._originalData={...this._data},this._stateMachine.transition("didCommit")}),e?this.didCreate():this.didUpdate(),this.didSave(),this}catch(s){throw this.errors.isEmpty?(this._stateMachine.transition("becameError"),this.becameError()):(this._stateMachine.transition("becameInvalid"),this.becameInvalid()),s}}async reload(){var t;if(!((t=this.store)!=null&&t.reloadRecord))throw new Error("Cannot reload: no store attached");return await this.store.reloadRecord(this)}deleteRecord(){this.isNew?this._setState("root.deleted.uncommitted"):this._stateMachine.transition("deleteRecord")}async destroyRecord(){var e;if(this.deleteRecord(),!((e=this.store)!=null&&e.deleteRecord))throw new Error("Cannot destroy: no store attached");this._stateMachine.transition("willCommit");const t=await this.store.deleteRecord(this);return this.currentState==="root.deleted.inFlight"&&this._stateMachine.transition("didCommit"),this.didDelete(),t}unloadRecord(){var t;(t=this.store)!=null&&t.unloadRecord&&this.store.unloadRecord(this)}createSnapshot(){return new g(this)}serialize(t={}){return{...this._data}}toJSON(){return{id:this._id,...this._data}}didLoad(){}didCreate(){}didUpdate(){}didDelete(){}willSave(){}didSave(){}becameInvalid(){}becameError(){}_setAttribute(t,e){Object.is(this._data[t],e)||(this._data[t]=e,this._transitionIfClean())}_transitionIfClean(){const t=this.hasDirtyAttributes;t&&this.currentState==="root.loaded.saved"?this._stateMachine.transition("didSetProperty"):!t&&this.currentState==="root.loaded.updated.uncommitted"&&this._stateMachine.transition("rolledBack")}_setState(t){this._stateMachine.current=t}_transition(t){this._stateMachine.transition(t)}_applyServerData(t,e,r){if(t!==null&&(this._id=t),this._data={...this._data,...e},this._originalData={...this._data},this.errors.clear(),r)for(const[s,o]of Object.entries(r))this._relationships.set(s,o);this.currentState==="root.loaded.created.inFlight"?(this._stateMachine.transition("didCommit"),this.didCreate()):this.currentState==="root.loaded.updated.inFlight"?(this._stateMachine.transition("didCommit"),this.didUpdate()):this.currentState==="root.deleted.inFlight"?this._stateMachine.transition("didCommit"):this.currentState==="root.loading"&&this._stateMachine.transition("pushedData"),!this.isNew&&!this.isDeleted&&(this.currentState==="root.loaded.updated.uncommitted"||this.currentState==="root.loaded.created.uncommitted")&&this._setState("root.loaded.saved")}_getRelationshipRef(t){return this._relationships.get(t)??null}_setRelationshipRef(t,e){this._relationships.set(t,e)}_resolveRelationship(t,e){var r;return(r=this.store)!=null&&r.resolveRelationship?this.store.resolveRelationship(this,t,e):null}_setRelationship(t,e,r){var s;(s=this.store)!=null&&s.setRelationshipValue&&this.store.setRelationshipValue(this,t,e,r)}}class d{static refData(t){return!t||!t.data?[]:Array.isArray(t.data)?t.data:[]}constructor(t){this.host=t,i.makeObservable(this,{resolved:i.computed,length:i.computed,push:i.action,removeObject:i.action})}get resolved(){const t=this.host.store._getRelationshipRefFor(this.host.parent,this.host.name),e=[],r=new Set;for(const o of d.refData(t)){const n=this.host.store.peekRecord(o.type,o.id);n&&(e.push(n),r.add(n))}const s=this.host.store._getPendingMembers(this.host.parent,this.host.name);for(const o of s)r.has(o)||e.push(o);return e}get length(){return this.resolved.length}at(t){return this.resolved[t]}push(...t){for(const e of t)this.host.store._hasManyAppend(this.host.parent,this.host.name,this.host.meta,e);return this.length}removeObject(t){this.host.store._hasManyRemove(this.host.parent,this.host.name,this.host.meta,t)}includes(t){return this.resolved.includes(t)}toArray(){return[...this.resolved]}map(t){return this.resolved.map(t)}filter(t){return this.resolved.filter(t)}forEach(t){this.resolved.forEach(t)}[Symbol.iterator](){return this.resolved[Symbol.iterator]()}}class A{constructor(t){this.loadedState="pending",this.currentValue=null,this.error=null,this.inflight=null,this.host=t,i.makeObservable(this,{loadedState:i.observable,currentValue:i.observable.ref,error:i.observable.ref,isPending:i.computed,isFulfilled:i.computed,isRejected:i.computed,isLoaded:i.computed,isLoading:i.computed,value:i.computed,reason:i.computed,syncFromCache:i.action}),this.syncFromCache()}syncFromCache(){const t=this.host.store._getRelationshipRefFor(this.host.parent,this.host.name);if(!t||!t.data||Array.isArray(t.data)){this.currentValue=null,this.loadedState="fulfilled";return}const e=this.host.store.peekRecord(t.data.type,t.data.id);e&&(this.currentValue=e,this.loadedState="fulfilled")}get isPending(){return this.loadedState==="pending"}get isFulfilled(){return this.loadedState==="fulfilled"}get isRejected(){return this.loadedState==="rejected"}get isLoading(){return this.inflight!==null&&this.isPending}get isLoaded(){return this.loadedState==="fulfilled"}get value(){return this.currentValue}get reason(){return this.error}load(){if(this.syncFromCache(),this.loadedState==="fulfilled"&&this.currentValue)return Promise.resolve(this.currentValue);if(this.inflight)return this.inflight;const t=this.host.store._getRelationshipRefFor(this.host.parent,this.host.name);if(!t||!t.data||Array.isArray(t.data))return Promise.resolve(null);const{type:e,id:r}=t.data;return this.inflight=this.host.store.findRecord(e,r).then(s=>(i.runInAction(()=>{this.currentValue=s,this.loadedState="fulfilled",this.inflight=null}),s),s=>{throw i.runInAction(()=>{this.error=s,this.loadedState="rejected",this.inflight=null}),s}),this.inflight}reload(){return this.inflight=null,this.loadedState="pending",this.load()}then(t,e){return this.load().then(t,e)}}class w{constructor(t){this.loadedState="pending",this.error=null,this.inflight=null,this.host=t,this.manyArray=new d(t),i.makeObservable(this,{loadedState:i.observable,error:i.observable.ref,isPending:i.computed,isFulfilled:i.computed,isRejected:i.computed,isLoaded:i.computed,isLoading:i.computed,length:i.computed,syncFromCache:i.action}),this.syncFromCache()}syncFromCache(){const t=this.host.store._getRelationshipRefFor(this.host.parent,this.host.name);d.refData(t).every(s=>this.host.store.peekRecord(s.type,s.id)!==null)&&(this.loadedState="fulfilled")}get isPending(){return this.loadedState==="pending"}get isFulfilled(){return this.loadedState==="fulfilled"}get isRejected(){return this.loadedState==="rejected"}get isLoading(){return this.inflight!==null&&this.isPending}get isLoaded(){return this.loadedState==="fulfilled"}get value(){return this.manyArray}get length(){return this.manyArray.length}load(){if(this.syncFromCache(),this.loadedState==="fulfilled")return Promise.resolve(this.manyArray);if(this.inflight)return this.inflight;const t=this.host.store._getRelationshipRefFor(this.host.parent,this.host.name),s=d.refData(t).filter(o=>this.host.store.peekRecord(o.type,o.id)===null).map(o=>this.host.store.findRecord(o.type,o.id));return this.inflight=Promise.all(s).then(()=>(i.runInAction(()=>{this.loadedState="fulfilled",this.inflight=null}),this.manyArray),o=>{throw i.runInAction(()=>{this.error=o,this.loadedState="rejected",this.inflight=null}),o}),this.inflight}reload(){return this.inflight=null,this.loadedState="pending",this.load()}then(t,e){return this.load().then(t,e)}}exports.AsyncBelongsTo=A;exports.AsyncHasMany=w;exports.ManyArray=d;exports.Model=R;exports.Snapshot=g;exports.StateMachine=p;
2
+ //# sourceMappingURL=relationships-B55LBaCW.cjs.map