@lssm/lib.contracts-runtime-core 3.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 (227) hide show
  1. package/README.md +110 -0
  2. package/dist/approval.d.ts +13 -0
  3. package/dist/approval.js +2 -0
  4. package/dist/approval.test.d.ts +1 -0
  5. package/dist/browser/approval.js +1 -0
  6. package/dist/browser/collaboration.js +0 -0
  7. package/dist/browser/contracts-runtime-core.feature.js +1 -0
  8. package/dist/browser/engine/backoff.js +1 -0
  9. package/dist/browser/engine/cache-store.js +1 -0
  10. package/dist/browser/engine/conflict-registry.js +1 -0
  11. package/dist/browser/engine/conflict-resolution.js +1 -0
  12. package/dist/browser/engine/data-engine-host.js +1 -0
  13. package/dist/browser/engine/data-engine-test-helpers.js +1 -0
  14. package/dist/browser/engine/data-engine.js +1 -0
  15. package/dist/browser/engine/dedup.js +1 -0
  16. package/dist/browser/engine/events.js +1 -0
  17. package/dist/browser/engine/index.js +1 -0
  18. package/dist/browser/engine/maintenance.js +1 -0
  19. package/dist/browser/engine/mutation-engine.js +1 -0
  20. package/dist/browser/engine/mutation-queue.js +1 -0
  21. package/dist/browser/engine/mutation-types.js +0 -0
  22. package/dist/browser/engine/no-cache-store.js +1 -0
  23. package/dist/browser/engine/online-only-data-engine.js +1 -0
  24. package/dist/browser/engine/online-only-mutation-engine.js +1 -0
  25. package/dist/browser/engine/query-engine.js +1 -0
  26. package/dist/browser/engine/state.js +1 -0
  27. package/dist/browser/engine/types.js +0 -0
  28. package/dist/browser/forms-platform-csv-columns.js +1 -0
  29. package/dist/browser/forms-platform-csv.js +2 -0
  30. package/dist/browser/forms-platform-management.js +1 -0
  31. package/dist/browser/forms-platform-navigation.js +1 -0
  32. package/dist/browser/forms-platform-submission.js +1 -0
  33. package/dist/browser/forms-platform-types.js +1 -0
  34. package/dist/browser/forms-platform-utils.js +1 -0
  35. package/dist/browser/forms-platform.js +2 -0
  36. package/dist/browser/index.js +3 -0
  37. package/dist/browser/local-offline.js +1 -0
  38. package/dist/browser/observability.js +1 -0
  39. package/dist/browser/reachability.js +1 -0
  40. package/dist/browser/redaction.js +1 -0
  41. package/dist/browser/storage/indexeddb.web.js +1 -0
  42. package/dist/browser/storage/keyed-store.js +1 -0
  43. package/dist/browser/storage/memory.js +1 -0
  44. package/dist/browser/storage/port.js +1 -0
  45. package/dist/browser/transport.js +2 -0
  46. package/dist/collaboration.d.ts +57 -0
  47. package/dist/collaboration.js +1 -0
  48. package/dist/contracts-runtime-core.feature.d.ts +1 -0
  49. package/dist/contracts-runtime-core.feature.js +2 -0
  50. package/dist/engine/backoff.d.ts +16 -0
  51. package/dist/engine/backoff.js +2 -0
  52. package/dist/engine/backoff.test.d.ts +1 -0
  53. package/dist/engine/cache-store.d.ts +19 -0
  54. package/dist/engine/cache-store.js +2 -0
  55. package/dist/engine/conflict-registry.d.ts +10 -0
  56. package/dist/engine/conflict-registry.js +2 -0
  57. package/dist/engine/conflict-registry.test.d.ts +1 -0
  58. package/dist/engine/conflict-resolution.d.ts +24 -0
  59. package/dist/engine/conflict-resolution.js +2 -0
  60. package/dist/engine/conflict-resolution.test.d.ts +1 -0
  61. package/dist/engine/data-engine-host.d.ts +30 -0
  62. package/dist/engine/data-engine-host.js +2 -0
  63. package/dist/engine/data-engine-local-offline.test.d.ts +1 -0
  64. package/dist/engine/data-engine-test-helpers.d.ts +30 -0
  65. package/dist/engine/data-engine-test-helpers.js +2 -0
  66. package/dist/engine/data-engine.d.ts +46 -0
  67. package/dist/engine/data-engine.js +2 -0
  68. package/dist/engine/data-engine.test.d.ts +1 -0
  69. package/dist/engine/dedup.d.ts +9 -0
  70. package/dist/engine/dedup.js +2 -0
  71. package/dist/engine/events.d.ts +76 -0
  72. package/dist/engine/events.economic-evidence.test.d.ts +1 -0
  73. package/dist/engine/events.js +2 -0
  74. package/dist/engine/index.d.ts +17 -0
  75. package/dist/engine/index.js +2 -0
  76. package/dist/engine/maintenance.d.ts +18 -0
  77. package/dist/engine/maintenance.js +2 -0
  78. package/dist/engine/maintenance.test.d.ts +1 -0
  79. package/dist/engine/mutation-engine.d.ts +2 -0
  80. package/dist/engine/mutation-engine.js +2 -0
  81. package/dist/engine/mutation-queue.d.ts +16 -0
  82. package/dist/engine/mutation-queue.js +2 -0
  83. package/dist/engine/mutation-queue.test.d.ts +1 -0
  84. package/dist/engine/mutation-types.d.ts +118 -0
  85. package/dist/engine/mutation-types.js +1 -0
  86. package/dist/engine/no-cache-store.d.ts +3 -0
  87. package/dist/engine/no-cache-store.js +2 -0
  88. package/dist/engine/online-only-data-engine.d.ts +9 -0
  89. package/dist/engine/online-only-data-engine.js +2 -0
  90. package/dist/engine/online-only-mutation-engine.d.ts +3 -0
  91. package/dist/engine/online-only-mutation-engine.js +2 -0
  92. package/dist/engine/query-engine.d.ts +7 -0
  93. package/dist/engine/query-engine.js +2 -0
  94. package/dist/engine/query-engine.test.d.ts +1 -0
  95. package/dist/engine/state.d.ts +37 -0
  96. package/dist/engine/state.js +2 -0
  97. package/dist/engine/types.d.ts +70 -0
  98. package/dist/engine/types.js +1 -0
  99. package/dist/forms-platform-choice.test.d.ts +1 -0
  100. package/dist/forms-platform-csv-columns.d.ts +7 -0
  101. package/dist/forms-platform-csv-columns.js +2 -0
  102. package/dist/forms-platform-csv.d.ts +12 -0
  103. package/dist/forms-platform-csv.js +3 -0
  104. package/dist/forms-platform-management.d.ts +12 -0
  105. package/dist/forms-platform-management.js +2 -0
  106. package/dist/forms-platform-navigation.d.ts +2 -0
  107. package/dist/forms-platform-navigation.js +2 -0
  108. package/dist/forms-platform-submission.d.ts +7 -0
  109. package/dist/forms-platform-submission.js +2 -0
  110. package/dist/forms-platform-types.d.ts +51 -0
  111. package/dist/forms-platform-types.js +2 -0
  112. package/dist/forms-platform-utils.d.ts +6 -0
  113. package/dist/forms-platform-utils.js +2 -0
  114. package/dist/forms-platform-utils.test.d.ts +1 -0
  115. package/dist/forms-platform.d.ts +19 -0
  116. package/dist/forms-platform.js +3 -0
  117. package/dist/forms-platform.test.d.ts +1 -0
  118. package/dist/index.d.ts +25 -0
  119. package/dist/index.js +4 -0
  120. package/dist/local-offline.d.ts +17 -0
  121. package/dist/local-offline.js +2 -0
  122. package/dist/local-offline.test.d.ts +1 -0
  123. package/dist/native/approval.js +130 -0
  124. package/dist/native/collaboration.js +0 -0
  125. package/dist/native/contracts-runtime-core.feature.js +17 -0
  126. package/dist/native/engine/backoff.js +16 -0
  127. package/dist/native/engine/cache-store.js +49 -0
  128. package/dist/native/engine/conflict-registry.js +51 -0
  129. package/dist/native/engine/conflict-resolution.js +81 -0
  130. package/dist/native/engine/data-engine-host.js +1119 -0
  131. package/dist/native/engine/data-engine-test-helpers.js +117 -0
  132. package/dist/native/engine/data-engine.js +1106 -0
  133. package/dist/native/engine/dedup.js +22 -0
  134. package/dist/native/engine/events.js +19 -0
  135. package/dist/native/engine/index.js +1189 -0
  136. package/dist/native/engine/maintenance.js +36 -0
  137. package/dist/native/engine/mutation-engine.js +360 -0
  138. package/dist/native/engine/mutation-queue.js +26 -0
  139. package/dist/native/engine/mutation-types.js +0 -0
  140. package/dist/native/engine/no-cache-store.js +15 -0
  141. package/dist/native/engine/online-only-data-engine.js +422 -0
  142. package/dist/native/engine/online-only-mutation-engine.js +70 -0
  143. package/dist/native/engine/query-engine.js +360 -0
  144. package/dist/native/engine/state.js +116 -0
  145. package/dist/native/engine/types.js +0 -0
  146. package/dist/native/forms-platform-csv-columns.js +31 -0
  147. package/dist/native/forms-platform-csv.js +150 -0
  148. package/dist/native/forms-platform-management.js +179 -0
  149. package/dist/native/forms-platform-navigation.js +27 -0
  150. package/dist/native/forms-platform-submission.js +207 -0
  151. package/dist/native/forms-platform-types.js +12 -0
  152. package/dist/native/forms-platform-utils.js +69 -0
  153. package/dist/native/forms-platform.js +429 -0
  154. package/dist/native/index.js +1879 -0
  155. package/dist/native/local-offline.js +81 -0
  156. package/dist/native/observability.js +182 -0
  157. package/dist/native/reachability.js +28 -0
  158. package/dist/native/redaction.js +44 -0
  159. package/dist/native/storage/async-storage.native.js +91 -0
  160. package/dist/native/storage/keyed-store.js +74 -0
  161. package/dist/native/storage/memory.js +26 -0
  162. package/dist/native/storage/port.js +16 -0
  163. package/dist/native/transport.js +27 -0
  164. package/dist/node/approval.js +1 -0
  165. package/dist/node/collaboration.js +0 -0
  166. package/dist/node/contracts-runtime-core.feature.js +1 -0
  167. package/dist/node/engine/backoff.js +1 -0
  168. package/dist/node/engine/cache-store.js +1 -0
  169. package/dist/node/engine/conflict-registry.js +1 -0
  170. package/dist/node/engine/conflict-resolution.js +1 -0
  171. package/dist/node/engine/data-engine-host.js +1 -0
  172. package/dist/node/engine/data-engine-test-helpers.js +1 -0
  173. package/dist/node/engine/data-engine.js +1 -0
  174. package/dist/node/engine/dedup.js +1 -0
  175. package/dist/node/engine/events.js +1 -0
  176. package/dist/node/engine/index.js +1 -0
  177. package/dist/node/engine/maintenance.js +1 -0
  178. package/dist/node/engine/mutation-engine.js +1 -0
  179. package/dist/node/engine/mutation-queue.js +1 -0
  180. package/dist/node/engine/mutation-types.js +0 -0
  181. package/dist/node/engine/no-cache-store.js +1 -0
  182. package/dist/node/engine/online-only-data-engine.js +1 -0
  183. package/dist/node/engine/online-only-mutation-engine.js +1 -0
  184. package/dist/node/engine/query-engine.js +1 -0
  185. package/dist/node/engine/state.js +1 -0
  186. package/dist/node/engine/types.js +0 -0
  187. package/dist/node/forms-platform-csv-columns.js +1 -0
  188. package/dist/node/forms-platform-csv.js +2 -0
  189. package/dist/node/forms-platform-management.js +1 -0
  190. package/dist/node/forms-platform-navigation.js +1 -0
  191. package/dist/node/forms-platform-submission.js +1 -0
  192. package/dist/node/forms-platform-types.js +1 -0
  193. package/dist/node/forms-platform-utils.js +1 -0
  194. package/dist/node/forms-platform.js +2 -0
  195. package/dist/node/index.js +3 -0
  196. package/dist/node/local-offline.js +1 -0
  197. package/dist/node/observability.js +1 -0
  198. package/dist/node/reachability.js +1 -0
  199. package/dist/node/redaction.js +1 -0
  200. package/dist/node/storage/keyed-store.js +1 -0
  201. package/dist/node/storage/memory.js +1 -0
  202. package/dist/node/storage/port.js +1 -0
  203. package/dist/node/transport.js +2 -0
  204. package/dist/observability.d.ts +34 -0
  205. package/dist/observability.js +2 -0
  206. package/dist/observability.test.d.ts +1 -0
  207. package/dist/reachability.d.ts +63 -0
  208. package/dist/reachability.js +2 -0
  209. package/dist/reachability.test.d.ts +1 -0
  210. package/dist/redaction.d.ts +34 -0
  211. package/dist/redaction.js +2 -0
  212. package/dist/redaction.test.d.ts +1 -0
  213. package/dist/storage/async-storage.native.d.ts +23 -0
  214. package/dist/storage/async-storage.native.test.d.ts +1 -0
  215. package/dist/storage/indexeddb.web.d.ts +13 -0
  216. package/dist/storage/indexeddb.web.js +2 -0
  217. package/dist/storage/keyed-store.d.ts +25 -0
  218. package/dist/storage/keyed-store.js +2 -0
  219. package/dist/storage/keyed-store.test.d.ts +1 -0
  220. package/dist/storage/memory.d.ts +11 -0
  221. package/dist/storage/memory.js +2 -0
  222. package/dist/storage/memory.test.d.ts +1 -0
  223. package/dist/storage/port.d.ts +34 -0
  224. package/dist/storage/port.js +2 -0
  225. package/dist/transport.d.ts +53 -0
  226. package/dist/transport.js +3 -0
  227. package/package.json +219 -0
@@ -0,0 +1,117 @@
1
+ // src/engine/data-engine-test-helpers.ts
2
+ import { createQueryKey } from "@lssm/lib.contracts-spec/query/key";
3
+ import {
4
+ contractOk
5
+ } from "@lssm/lib.contracts-spec/results";
6
+ var QUERY = {
7
+ operation: { key: "user.get", version: "1.0.0" },
8
+ input: { id: "u1" },
9
+ tags: [{ entity: "user", id: "u1" }],
10
+ cache: { staleTimeMs: 60000 }
11
+ };
12
+ var MUTATION = {
13
+ operation: { key: "user.update", version: "1.0.0" },
14
+ input: { id: "u1", name: "Local" },
15
+ tags: [{ entity: "user", id: "u1" }],
16
+ versionToken: "v1"
17
+ };
18
+ var KEY = createQueryKey(QUERY);
19
+ var optimisticLocal = [
20
+ { key: KEY, data: { id: "u1", name: "Local" }, versionToken: "v1" }
21
+ ];
22
+ function mutableReachability(initial) {
23
+ let snapshot = { signal: initial, since: 0 };
24
+ const listeners = new Set;
25
+ return {
26
+ source: {
27
+ getSnapshot: () => snapshot,
28
+ subscribe: (l) => {
29
+ listeners.add(l);
30
+ return () => listeners.delete(l);
31
+ }
32
+ },
33
+ set: (signal) => {
34
+ snapshot = { signal, since: 0 };
35
+ for (const l of listeners)
36
+ l(snapshot);
37
+ }
38
+ };
39
+ }
40
+ function conflictFailure(versionToken, serverData) {
41
+ return {
42
+ ok: false,
43
+ code: "CONFLICT",
44
+ status: 409,
45
+ problem: {
46
+ type: "about:blank",
47
+ title: "Conflict",
48
+ status: 409,
49
+ code: "CONFLICT",
50
+ category: "conflict",
51
+ severity: "warning",
52
+ retryable: false,
53
+ versionToken,
54
+ metadata: { serverData }
55
+ }
56
+ };
57
+ }
58
+ function failure(code, category, retryable) {
59
+ return {
60
+ ok: false,
61
+ code,
62
+ status: category === "auth" ? 401 : 503,
63
+ problem: {
64
+ type: "about:blank",
65
+ title: code,
66
+ status: category === "auth" ? 401 : 503,
67
+ code,
68
+ category,
69
+ severity: "error",
70
+ retryable
71
+ }
72
+ };
73
+ }
74
+ function scriptedTransport() {
75
+ let serverUser = { id: "u1", name: "Server" };
76
+ let serverVersion = "v1";
77
+ let mode = "ok";
78
+ let retryFailsLeft = 0;
79
+ const calls = [];
80
+ const transport = {
81
+ execute: async (env) => {
82
+ calls.push(env.operation.key);
83
+ if (env.operation.key === "user.update") {
84
+ if (mode === "conflict")
85
+ return conflictFailure("v2", serverUser);
86
+ if (mode === "auth") {
87
+ return failure("UNAUTHENTICATED", "auth", false);
88
+ }
89
+ if (mode === "retry" && retryFailsLeft > 0) {
90
+ retryFailsLeft -= 1;
91
+ return failure("SERVICE_UNAVAILABLE", "dependency", true);
92
+ }
93
+ serverVersion = "v2";
94
+ serverUser = { ...serverUser, name: env.input.name };
95
+ }
96
+ return contractOk({ data: serverUser, versionToken: serverVersion }, { versionToken: serverVersion });
97
+ }
98
+ };
99
+ return {
100
+ transport,
101
+ calls,
102
+ setMode: (m) => {
103
+ mode = m;
104
+ },
105
+ setRetryFails: (n) => {
106
+ retryFailsLeft = n;
107
+ }
108
+ };
109
+ }
110
+ export {
111
+ KEY,
112
+ MUTATION,
113
+ QUERY,
114
+ mutableReachability,
115
+ optimisticLocal,
116
+ scriptedTransport
117
+ };