@peers-app/peers-sdk 0.27.3 → 0.27.5

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 (272) hide show
  1. package/dist/contracts/contract-proxy.d.ts +7 -0
  2. package/dist/contracts/contract-proxy.js +19 -2
  3. package/dist/contracts/contract-transport.d.ts +2 -1
  4. package/dist/contracts/contract-transport.js +24 -2
  5. package/dist/contracts/create-local-consumer.js +16 -1
  6. package/dist/contracts/index.d.ts +2 -0
  7. package/dist/contracts/index.js +2 -0
  8. package/dist/contracts/system/index.d.ts +2 -0
  9. package/dist/contracts/system/index.js +2 -0
  10. package/dist/contracts/system/invites-contract.js +2 -1
  11. package/dist/contracts/system/sync-check-contract.d.ts +97 -0
  12. package/dist/contracts/system/sync-check-contract.js +115 -0
  13. package/dist/contracts/tool-arguments.d.ts +15 -0
  14. package/dist/contracts/tool-arguments.js +41 -0
  15. package/dist/contracts/tool-catalog-service.js +2 -12
  16. package/dist/contracts/tool-catalog.js +6 -2
  17. package/dist/data/change-tracking.d.ts +40 -0
  18. package/dist/data/change-tracking.js +89 -0
  19. package/dist/data/orm/types.d.ts +24 -7
  20. package/dist/data/orm/types.js +97 -24
  21. package/dist/define/manifest.js +6 -34
  22. package/dist/device/binary-peer-connection-v2.d.ts +7 -15
  23. package/dist/device/binary-peer-connection-v2.js +14 -30
  24. package/dist/device/connection.d.ts +34 -43
  25. package/dist/device/connection.js +188 -186
  26. package/dist/device/device.d.ts +1 -8
  27. package/dist/device/device.js +1 -30
  28. package/dist/device/socket.type.d.ts +6 -12
  29. package/dist/package-loader/package-loader.js +27 -22
  30. package/dist/system-ids.d.ts +5 -0
  31. package/dist/system-ids.js +6 -1
  32. package/package.json +4 -2
  33. package/dist/context/user-context-identity.test.d.ts +0 -1
  34. package/dist/context/user-context-identity.test.js +0 -220
  35. package/dist/contracts/__tests__/action-dispatch.test.d.ts +0 -1
  36. package/dist/contracts/__tests__/action-dispatch.test.js +0 -319
  37. package/dist/contracts/__tests__/also-implements.test.d.ts +0 -1
  38. package/dist/contracts/__tests__/also-implements.test.js +0 -110
  39. package/dist/contracts/__tests__/builder.test.d.ts +0 -1
  40. package/dist/contracts/__tests__/builder.test.js +0 -669
  41. package/dist/contracts/__tests__/contract-events.test.d.ts +0 -1
  42. package/dist/contracts/__tests__/contract-events.test.js +0 -199
  43. package/dist/contracts/__tests__/contract-observables.test.d.ts +0 -1
  44. package/dist/contracts/__tests__/contract-observables.test.js +0 -290
  45. package/dist/contracts/__tests__/contract-provider-router.test.d.ts +0 -1
  46. package/dist/contracts/__tests__/contract-provider-router.test.js +0 -315
  47. package/dist/contracts/__tests__/contract-proxy.test.d.ts +0 -1
  48. package/dist/contracts/__tests__/contract-proxy.test.js +0 -657
  49. package/dist/contracts/__tests__/contract-resolvers.test.d.ts +0 -1
  50. package/dist/contracts/__tests__/contract-resolvers.test.js +0 -758
  51. package/dist/contracts/__tests__/contract-subscription-lifecycle.test.d.ts +0 -1
  52. package/dist/contracts/__tests__/contract-subscription-lifecycle.test.js +0 -353
  53. package/dist/contracts/__tests__/contract-table-events.test.d.ts +0 -1
  54. package/dist/contracts/__tests__/contract-table-events.test.js +0 -209
  55. package/dist/contracts/__tests__/contract-transport.test.d.ts +0 -1
  56. package/dist/contracts/__tests__/contract-transport.test.js +0 -163
  57. package/dist/contracts/__tests__/extract.test.d.ts +0 -1
  58. package/dist/contracts/__tests__/extract.test.js +0 -145
  59. package/dist/contracts/__tests__/frozen-contracts.test.d.ts +0 -1
  60. package/dist/contracts/__tests__/frozen-contracts.test.js +0 -191
  61. package/dist/contracts/__tests__/generic-tool-dispatch.test.d.ts +0 -1
  62. package/dist/contracts/__tests__/generic-tool-dispatch.test.js +0 -130
  63. package/dist/contracts/__tests__/host-contract-client.test.d.ts +0 -1
  64. package/dist/contracts/__tests__/host-contract-client.test.js +0 -793
  65. package/dist/contracts/__tests__/host-contract-consumer.test.d.ts +0 -1
  66. package/dist/contracts/__tests__/host-contract-consumer.test.js +0 -163
  67. package/dist/contracts/__tests__/host-contract-transport.test.d.ts +0 -1
  68. package/dist/contracts/__tests__/host-contract-transport.test.js +0 -66
  69. package/dist/contracts/__tests__/integration.test.d.ts +0 -1
  70. package/dist/contracts/__tests__/integration.test.js +0 -348
  71. package/dist/contracts/__tests__/legacy-removal.test.d.ts +0 -1
  72. package/dist/contracts/__tests__/legacy-removal.test.js +0 -128
  73. package/dist/contracts/__tests__/persistent-registry.test.d.ts +0 -1
  74. package/dist/contracts/__tests__/persistent-registry.test.js +0 -109
  75. package/dist/contracts/__tests__/playground.test.d.ts +0 -1
  76. package/dist/contracts/__tests__/playground.test.js +0 -216
  77. package/dist/contracts/__tests__/registry.test.d.ts +0 -1
  78. package/dist/contracts/__tests__/registry.test.js +0 -238
  79. package/dist/contracts/__tests__/remote-contract-transport.test.d.ts +0 -1
  80. package/dist/contracts/__tests__/remote-contract-transport.test.js +0 -119
  81. package/dist/contracts/__tests__/system-contracts.test.d.ts +0 -1
  82. package/dist/contracts/__tests__/system-contracts.test.js +0 -247
  83. package/dist/contracts/__tests__/target-dispatch.d.ts +0 -11
  84. package/dist/contracts/__tests__/target-dispatch.js +0 -24
  85. package/dist/contracts/__tests__/tool-catalog-inventory.test.d.ts +0 -1
  86. package/dist/contracts/__tests__/tool-catalog-inventory.test.js +0 -44
  87. package/dist/contracts/__tests__/tool-catalog-service.test.d.ts +0 -1
  88. package/dist/contracts/__tests__/tool-catalog-service.test.js +0 -482
  89. package/dist/contracts/__tests__/tool-catalog.test.d.ts +0 -1
  90. package/dist/contracts/__tests__/tool-catalog.test.js +0 -1199
  91. package/dist/contracts/__tests__/validate.test.d.ts +0 -1
  92. package/dist/contracts/__tests__/validate.test.js +0 -991
  93. package/dist/contracts/__tests__/workflow-context.test.d.ts +0 -1
  94. package/dist/contracts/__tests__/workflow-context.test.js +0 -50
  95. package/dist/data/access-level.test.d.ts +0 -1
  96. package/dist/data/access-level.test.js +0 -53
  97. package/dist/data/change-tracking.test.d.ts +0 -1
  98. package/dist/data/change-tracking.test.js +0 -62
  99. package/dist/data/files/files.test.d.ts +0 -1
  100. package/dist/data/files/files.test.js +0 -770
  101. package/dist/data/group-members.test.d.ts +0 -1
  102. package/dist/data/group-members.test.js +0 -336
  103. package/dist/data/group-share.test.d.ts +0 -1
  104. package/dist/data/group-share.test.js +0 -110
  105. package/dist/data/groups.test.d.ts +0 -1
  106. package/dist/data/groups.test.js +0 -153
  107. package/dist/data/orm/cursor.test.d.ts +0 -1
  108. package/dist/data/orm/cursor.test.js +0 -314
  109. package/dist/data/orm/data-query.mongo.test.d.ts +0 -1
  110. package/dist/data/orm/data-query.mongo.test.js +0 -367
  111. package/dist/data/orm/data-query.sqlite.test.d.ts +0 -1
  112. package/dist/data/orm/data-query.sqlite.test.js +0 -365
  113. package/dist/data/orm/data-query.test.d.ts +0 -1
  114. package/dist/data/orm/data-query.test.js +0 -545
  115. package/dist/data/orm/dependency-injection.test.d.ts +0 -1
  116. package/dist/data/orm/dependency-injection.test.js +0 -171
  117. package/dist/data/orm/event-registry.test.d.ts +0 -1
  118. package/dist/data/orm/event-registry.test.js +0 -44
  119. package/dist/data/orm/multi-cursors.test.d.ts +0 -1
  120. package/dist/data/orm/multi-cursors.test.js +0 -463
  121. package/dist/data/orm/sql.data-source.test.d.ts +0 -1
  122. package/dist/data/orm/sql.data-source.test.js +0 -731
  123. package/dist/data/orm/table-container-events.test.d.ts +0 -1
  124. package/dist/data/orm/table-container-events.test.js +0 -101
  125. package/dist/data/orm/table-container.test.d.ts +0 -1
  126. package/dist/data/orm/table-container.test.js +0 -273
  127. package/dist/data/orm/table.event-source.test.d.ts +0 -1
  128. package/dist/data/orm/table.event-source.test.js +0 -331
  129. package/dist/data/orm/types.test.d.ts +0 -1
  130. package/dist/data/orm/types.test.js +0 -409
  131. package/dist/data/package-table-identity.test.d.ts +0 -1
  132. package/dist/data/package-table-identity.test.js +0 -46
  133. package/dist/data/package-version-permissions.test.d.ts +0 -1
  134. package/dist/data/package-version-permissions.test.js +0 -107
  135. package/dist/data/package-version-resolver.test.d.ts +0 -4
  136. package/dist/data/package-version-resolver.test.js +0 -543
  137. package/dist/data/package-versions.test.d.ts +0 -1
  138. package/dist/data/package-versions.test.js +0 -227
  139. package/dist/data/persistent-vars.conflict.test.d.ts +0 -1
  140. package/dist/data/persistent-vars.conflict.test.js +0 -126
  141. package/dist/data/persistent-vars.migration.test.d.ts +0 -1
  142. package/dist/data/persistent-vars.migration.test.js +0 -133
  143. package/dist/data/persistent-vars.package-scope.test.d.ts +0 -1
  144. package/dist/data/persistent-vars.package-scope.test.js +0 -27
  145. package/dist/data/sync-recovery-queue.test.d.ts +0 -1
  146. package/dist/data/sync-recovery-queue.test.js +0 -215
  147. package/dist/data/table-signing.test.d.ts +0 -1
  148. package/dist/data/table-signing.test.js +0 -118
  149. package/dist/data/tool-access.test.d.ts +0 -1
  150. package/dist/data/tool-access.test.js +0 -166
  151. package/dist/data/user-permissions.test.d.ts +0 -1
  152. package/dist/data/user-permissions.test.js +0 -305
  153. package/dist/data/user-trust-levels.test.d.ts +0 -1
  154. package/dist/data/user-trust-levels.test.js +0 -37
  155. package/dist/define/also-implements.test.d.ts +0 -1
  156. package/dist/define/also-implements.test.js +0 -123
  157. package/dist/define/declare-contract.test.d.ts +0 -1
  158. package/dist/define/declare-contract.test.js +0 -573
  159. package/dist/define/define.test.d.ts +0 -1
  160. package/dist/define/define.test.js +0 -1010
  161. package/dist/define/empty-fields.test.d.ts +0 -1
  162. package/dist/define/empty-fields.test.js +0 -55
  163. package/dist/define/events-observables.test.d.ts +0 -1
  164. package/dist/define/events-observables.test.js +0 -1013
  165. package/dist/define/serve-members.test.d.ts +0 -1
  166. package/dist/define/serve-members.test.js +0 -630
  167. package/dist/define/vars.test.d.ts +0 -1
  168. package/dist/define/vars.test.js +0 -39
  169. package/dist/device/binary-peer-connection-v2.test.d.ts +0 -1
  170. package/dist/device/binary-peer-connection-v2.test.js +0 -730
  171. package/dist/device/binary-peer-connection.d.ts +0 -58
  172. package/dist/device/binary-peer-connection.js +0 -516
  173. package/dist/device/binary-peer-connection.test.d.ts +0 -1
  174. package/dist/device/binary-peer-connection.test.js +0 -184
  175. package/dist/device/connection.test.d.ts +0 -1
  176. package/dist/device/connection.test.js +0 -613
  177. package/dist/device/device-election.test.d.ts +0 -1
  178. package/dist/device/device-election.test.js +0 -516
  179. package/dist/device/device.test.d.ts +0 -1
  180. package/dist/device/device.test.js +0 -243
  181. package/dist/device/frame-cipher.test.d.ts +0 -1
  182. package/dist/device/frame-cipher.test.js +0 -219
  183. package/dist/device/get-trust-level-fn.test.d.ts +0 -1
  184. package/dist/device/get-trust-level-fn.test.js +0 -685
  185. package/dist/device/streamed-socket.d.ts +0 -23
  186. package/dist/device/streamed-socket.js +0 -255
  187. package/dist/device/streamed-socket.test.d.ts +0 -1
  188. package/dist/device/streamed-socket.test.js +0 -216
  189. package/dist/device/tx-encoding.test.d.ts +0 -1
  190. package/dist/device/tx-encoding.test.js +0 -295
  191. package/dist/device-pairing/cpace.test.d.ts +0 -1
  192. package/dist/device-pairing/cpace.test.js +0 -116
  193. package/dist/device-pairing/device-pairing.test.d.ts +0 -1
  194. package/dist/device-pairing/device-pairing.test.js +0 -211
  195. package/dist/hlc.test.d.ts +0 -1
  196. package/dist/hlc.test.js +0 -45
  197. package/dist/host-credentials.test.d.ts +0 -1
  198. package/dist/host-credentials.test.js +0 -88
  199. package/dist/identity/account-email.test.d.ts +0 -1
  200. package/dist/identity/account-email.test.js +0 -59
  201. package/dist/identity/anchor-document.test.d.ts +0 -1
  202. package/dist/identity/anchor-document.test.js +0 -16
  203. package/dist/identity/anchor-resolution.test.d.ts +0 -1
  204. package/dist/identity/anchor-resolution.test.js +0 -130
  205. package/dist/identity/key-change.test.d.ts +0 -1
  206. package/dist/identity/key-change.test.js +0 -811
  207. package/dist/invites/group-approval.test.d.ts +0 -1
  208. package/dist/invites/group-approval.test.js +0 -223
  209. package/dist/invites/invite-token.test.d.ts +0 -1
  210. package/dist/invites/invite-token.test.js +0 -123
  211. package/dist/keys.test.d.ts +0 -1
  212. package/dist/keys.test.js +0 -336
  213. package/dist/logging/console-logger.test.d.ts +0 -1
  214. package/dist/logging/console-logger.test.js +0 -300
  215. package/dist/logging/console-logs.table.test.d.ts +0 -1
  216. package/dist/logging/console-logs.table.test.js +0 -156
  217. package/dist/observable.test.d.ts +0 -1
  218. package/dist/observable.test.js +0 -309
  219. package/dist/package-build/build-package.test.d.ts +0 -1
  220. package/dist/package-build/build-package.test.js +0 -204
  221. package/dist/package-build/contract-add.test.d.ts +0 -1
  222. package/dist/package-build/contract-add.test.js +0 -467
  223. package/dist/package-build/freeze-contracts.test.d.ts +0 -1
  224. package/dist/package-build/freeze-contracts.test.js +0 -355
  225. package/dist/package-installer/package-author-signing.test.d.ts +0 -1
  226. package/dist/package-installer/package-author-signing.test.js +0 -200
  227. package/dist/package-installer/package-cloner.test.d.ts +0 -1
  228. package/dist/package-installer/package-cloner.test.js +0 -278
  229. package/dist/package-installer/package-creator.test.d.ts +0 -1
  230. package/dist/package-installer/package-creator.test.js +0 -908
  231. package/dist/package-installer/package-dev-tools.test.d.ts +0 -1
  232. package/dist/package-installer/package-dev-tools.test.js +0 -64
  233. package/dist/package-installer/package-installer.test.d.ts +0 -1
  234. package/dist/package-installer/package-installer.test.js +0 -882
  235. package/dist/package-installer/package-propagation.test.d.ts +0 -1
  236. package/dist/package-installer/package-propagation.test.js +0 -1269
  237. package/dist/package-installer/package-publisher.test.d.ts +0 -1
  238. package/dist/package-installer/package-publisher.test.js +0 -153
  239. package/dist/package-installer/package-remote-checker.test.d.ts +0 -1
  240. package/dist/package-installer/package-remote-checker.test.js +0 -334
  241. package/dist/package-installer/package-seed-installer.test.d.ts +0 -1
  242. package/dist/package-installer/package-seed-installer.test.js +0 -123
  243. package/dist/package-installer/package-tarball.test.d.ts +0 -1
  244. package/dist/package-installer/package-tarball.test.js +0 -75
  245. package/dist/package-installer/peers-core-installer.test.d.ts +0 -1
  246. package/dist/package-installer/peers-core-installer.test.js +0 -49
  247. package/dist/package-installer/peers-core-trust-anchor.test.d.ts +0 -1
  248. package/dist/package-installer/peers-core-trust-anchor.test.js +0 -155
  249. package/dist/package-loader/contract-package-loader.test.d.ts +0 -1
  250. package/dist/package-loader/contract-package-loader.test.js +0 -274
  251. package/dist/package-loader/host-authority-loading.test.d.ts +0 -1
  252. package/dist/package-loader/host-authority-loading.test.js +0 -104
  253. package/dist/package-loader/host-dispatch-policy.test.d.ts +0 -1
  254. package/dist/package-loader/host-dispatch-policy.test.js +0 -56
  255. package/dist/package-loader/isolated-artifact.test.d.ts +0 -1
  256. package/dist/package-loader/isolated-artifact.test.js +0 -688
  257. package/dist/package-loader/isolated-persistent-var-gateway.test.d.ts +0 -1
  258. package/dist/package-loader/isolated-persistent-var-gateway.test.js +0 -56
  259. package/dist/package-loader/isolated-table-gateway.test.d.ts +0 -1
  260. package/dist/package-loader/isolated-table-gateway.test.js +0 -633
  261. package/dist/package-loader/package-loader.test.d.ts +0 -1
  262. package/dist/package-loader/package-loader.test.js +0 -1764
  263. package/dist/package-loader/resolve-consumed-contracts.test.d.ts +0 -1
  264. package/dist/package-loader/resolve-consumed-contracts.test.js +0 -166
  265. package/dist/serial-json.compat.test.d.ts +0 -1
  266. package/dist/serial-json.compat.test.js +0 -369
  267. package/dist/serial-json.test.d.ts +0 -1
  268. package/dist/serial-json.test.js +0 -401
  269. package/dist/testing/mock-host-contract.test.d.ts +0 -1
  270. package/dist/testing/mock-host-contract.test.js +0 -782
  271. package/dist/utils.test.d.ts +0 -1
  272. package/dist/utils.test.js +0 -232
@@ -1,128 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const sdk = require("../../index");
4
- const utils_1 = require("../../utils");
5
- const builder_1 = require("../builder");
6
- const registry_1 = require("../registry");
7
- const tool_catalog_1 = require("../tool-catalog");
8
- const tool_catalog_migrations_1 = require("../tool-catalog-migrations");
9
- const removedRegistryExports = [
10
- "registerTool",
11
- "getRegisteredTool",
12
- "unregisterTools",
13
- "getAllRegisteredTools",
14
- "clearRegisteredTools",
15
- "tools",
16
- ];
17
- test("the SDK exports no executable registry", () => {
18
- for (const name of removedRegistryExports)
19
- expect(sdk).not.toHaveProperty(name);
20
- });
21
- test("package administration has no RPC stubs; System Packages replaces them", () => {
22
- for (const name of [
23
- "addOrUpdatePackage",
24
- "seedBundledPeersCore",
25
- "signPackageAuthorVersion",
26
- "injectUIBundle",
27
- ])
28
- expect(sdk.rpcServerCalls).not.toHaveProperty(name);
29
- expect(sdk).not.toHaveProperty("unwrapAddOrUpdatePackageResult");
30
- expect(sdk.getPackagesContractDefinition().name).toBe("System Packages");
31
- });
32
- test("the host shell has no RPC stubs; System Host Shell replaces them", () => {
33
- for (const name of [
34
- "openLinkInBrowser",
35
- "openPath",
36
- "openPackage",
37
- "copyPvarValueToClipboard",
38
- "appQuit",
39
- "appRestart",
40
- "uiReload",
41
- "uiInspect",
42
- "uiClick",
43
- "uiSet",
44
- "uiScroll",
45
- ])
46
- expect(sdk.rpcServerCalls).not.toHaveProperty(name);
47
- for (const name of [
48
- "setClientPath",
49
- "openThread",
50
- "uiGetState",
51
- "uiDoClick",
52
- "uiDoSet",
53
- "uiDoScroll",
54
- ])
55
- expect(sdk.rpcClientCalls).not.toHaveProperty(name);
56
- expect(sdk).not.toHaveProperty("UIState");
57
- expect(sdk.getHostShellContractDefinition().name).toBe("System Host Shell");
58
- });
59
- test("old SDK assignments warn once and never produce executables", () => {
60
- const builder = new builder_1.ContractBuilder((0, utils_1.newid)(), 1, "Old package");
61
- const warn = jest.spyOn(console, "warn").mockImplementation(() => { });
62
- try {
63
- builder.toolInstances = [{ toolFn: jest.fn() }];
64
- builder.toolInstances = [];
65
- expect(warn).toHaveBeenCalledTimes(1);
66
- expect(warn).toHaveBeenCalledWith(expect.stringContaining(`Contract Old package (${builder.contractId}@1) assigned toolInstances, which no longer run`));
67
- expect(builder._build()).not.toHaveProperty("toolInstances");
68
- }
69
- finally {
70
- warn.mockRestore();
71
- }
72
- });
73
- test("runner metadata uses the shape target and ignores arbitrary tool IDs", () => {
74
- const contractId = (0, utils_1.newid)();
75
- const shape = {
76
- tool: {
77
- toolId: (0, utils_1.newid)(),
78
- name: "runner",
79
- usageDescription: "run",
80
- isAssistantRunner: true,
81
- configSchema: { type: sdk.IOSchemaType.none, fields: [] },
82
- detailedDescription: "details",
83
- },
84
- };
85
- const result = (0, builder_1.definePackage)((pkg) => {
86
- pkg.packageId = (0, utils_1.newid)();
87
- pkg.contract(contractId, 1, "Runner").tools = [shape];
88
- });
89
- const target = { contractId, version: 1, toolName: "runner" };
90
- expect(result.toolMetadata).toEqual([
91
- {
92
- ...target,
93
- isAssistantRunner: true,
94
- configSchema: shape.tool.configSchema,
95
- detailedDescription: "details",
96
- },
97
- ]);
98
- expect(result).not.toHaveProperty("toolInstances");
99
- expect((0, tool_catalog_migrations_1.toolCatalogIds)(target)).not.toContain(shape.tool.toolId);
100
- shape.tool.toolId = (0, utils_1.newid)();
101
- expect((0, tool_catalog_migrations_1.toolCatalogIds)(target)).toEqual([sdk.deriveToolCatalogId(target)]);
102
- });
103
- test("metadata targeting another publication is rejected before any catalog write", async () => {
104
- const getTable = jest.fn();
105
- const registry = new registry_1.ContractRegistry();
106
- const catalog = new tool_catalog_1.ToolCatalog({ tableContainer: { getTable } }, registry);
107
- const definition = (0, builder_1.definePackage)((pkg) => {
108
- pkg.packageId = (0, utils_1.newid)();
109
- pkg.contract((0, utils_1.newid)(), 1, "Own").tools = [{ tool: { name: "own", usageDescription: "own" } }];
110
- });
111
- const foreign = {
112
- ...definition.contracts[0],
113
- contractId: (0, utils_1.newid)(),
114
- tools: [{ ...definition.contracts[0].tools[0], name: "foreign" }],
115
- };
116
- expect(registry.register((0, utils_1.newid)(), foreign).valid).toBe(true);
117
- const prepare = jest.fn();
118
- const activate = jest.fn();
119
- try {
120
- await expect(catalog.publish(definition.packageId, definition.contracts.map((definition) => ({ definition })), prepare, activate, [{ contractId: foreign.contractId, version: 1, toolName: "foreign" }])).rejects.toThrow(/member of this publication/);
121
- expect(getTable).not.toHaveBeenCalled();
122
- expect(prepare).not.toHaveBeenCalled();
123
- expect(activate).not.toHaveBeenCalled();
124
- }
125
- finally {
126
- await catalog.dispose();
127
- }
128
- });
@@ -1,109 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const field_type_1 = require("../../types/field-type");
4
- const utils_1 = require("../../utils");
5
- const contract_providers_table_1 = require("../contract-providers.table");
6
- const contracts_table_1 = require("../contracts.table");
7
- const persistent_registry_1 = require("../persistent-registry");
8
- const registry_1 = require("../registry");
9
- jest.mock("../contract-providers.table", () => ({ ContractProviders: jest.fn() }));
10
- jest.mock("../contracts.table", () => ({ Contracts: jest.fn() }));
11
- const contracts = contracts_table_1.Contracts;
12
- const contractProviders = contract_providers_table_1.ContractProviders;
13
- const dataContext = {};
14
- const contractRecords = [];
15
- const providerRecords = [];
16
- const contractsTable = {
17
- findOne: jest.fn(async (filter) => contractRecords.find((record) => Object.entries(filter).every(([key, value]) => record[key] === value))),
18
- list: jest.fn(async () => [...contractRecords]),
19
- save: jest.fn(async (record) => {
20
- const index = contractRecords.findIndex((existing) => existing.contractId === record.contractId && existing.version === record.version);
21
- if (index >= 0) {
22
- contractRecords[index] = record;
23
- }
24
- else {
25
- contractRecords.push(record);
26
- }
27
- return record;
28
- }),
29
- };
30
- const providersTable = {
31
- findOne: jest.fn(async (filter) => providerRecords.find((record) => Object.entries(filter).every(([key, value]) => record[key] === value))),
32
- list: jest.fn(async () => [...providerRecords]),
33
- save: jest.fn(async (record) => {
34
- const index = providerRecords.findIndex((existing) => existing.contractProviderId === record.contractProviderId);
35
- if (index >= 0) {
36
- providerRecords[index] = record;
37
- }
38
- else {
39
- providerRecords.push(record);
40
- }
41
- return record;
42
- }),
43
- };
44
- beforeEach(() => {
45
- contractRecords.length = 0;
46
- providerRecords.length = 0;
47
- jest.clearAllMocks();
48
- contracts.mockReturnValue(contractsTable);
49
- contractProviders.mockReturnValue(providersTable);
50
- });
51
- function makeDefinition() {
52
- return {
53
- contractId: (0, utils_1.newid)(),
54
- version: 1,
55
- devTag: "dev",
56
- name: "Event Contract",
57
- description: "Persists events",
58
- tables: [],
59
- tools: [],
60
- observables: [],
61
- events: [
62
- {
63
- name: "widgetChanged",
64
- description: "A widget changed",
65
- payloadFields: [{ name: "widgetId", type: field_type_1.FieldType.id, description: "Changed widget" }],
66
- },
67
- ],
68
- };
69
- }
70
- describe("PersistentContractRegistry event definitions", () => {
71
- it("persists and hydrates event names, descriptions, and payload fields", async () => {
72
- const definition = makeDefinition();
73
- const providerPackageId = (0, utils_1.newid)();
74
- const persistent = new persistent_registry_1.PersistentContractRegistry(new registry_1.ContractRegistry(), dataContext);
75
- await persistent.persist(definition, providerPackageId, true);
76
- expect(JSON.parse(contractRecords[0].shape).events).toEqual(definition.events);
77
- const hydratedRegistry = new registry_1.ContractRegistry();
78
- await new persistent_registry_1.PersistentContractRegistry(hydratedRegistry, dataContext).hydrate();
79
- expect(hydratedRegistry.getDefinition(definition.contractId, definition.version)).toEqual(definition);
80
- });
81
- it("hydrates old persisted shapes without events as an empty event list", async () => {
82
- const definition = makeDefinition();
83
- const providerPackageId = (0, utils_1.newid)();
84
- contractRecords.push({
85
- contractId: definition.contractId,
86
- version: definition.version,
87
- devTag: definition.devTag,
88
- name: definition.name,
89
- description: definition.description,
90
- shape: JSON.stringify({
91
- tables: definition.tables,
92
- tools: definition.tools,
93
- observables: definition.observables,
94
- }),
95
- registeredAt: new Date(0).toISOString(),
96
- });
97
- providerRecords.push({
98
- contractProviderId: (0, utils_1.newid)(),
99
- contractId: definition.contractId,
100
- version: definition.version,
101
- providerPackageId,
102
- isActive: true,
103
- registeredAt: new Date(0).toISOString(),
104
- });
105
- const registry = new registry_1.ContractRegistry();
106
- await new persistent_registry_1.PersistentContractRegistry(registry, dataContext).hydrate();
107
- expect(registry.getDefinition(definition.contractId, definition.version)?.events).toEqual([]);
108
- });
109
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,216 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /**
4
- * SCRATCH / PLAYGROUND — not a curated part of the suite.
5
- *
6
- * A place to hand-write contract *provider* (impl side) and *consumer* (caller
7
- * side) tests and feel out the ergonomics. Rename, rewrite, or delete freely.
8
- *
9
- * Run just this file:
10
- * cd peers-sdk && npx jest playground
11
- * Watch it:
12
- * cd peers-sdk && npx jest --watch playground
13
- */
14
- const observable_1 = require("../../observable");
15
- const field_type_1 = require("../../types/field-type");
16
- const utils_1 = require("../../utils");
17
- const contract_proxy_1 = require("../contract-proxy");
18
- const contract_transport_1 = require("../contract-transport");
19
- const cleanups = [];
20
- afterEach(() => {
21
- for (const cleanup of cleanups.splice(0).reverse()) {
22
- cleanup();
23
- }
24
- });
25
- /**
26
- * Build a consumer wired in-process to a provider *session* (via a transport pair).
27
- *
28
- * The session (not the stateless `createContractProvider`) is what a consumer should face:
29
- * it serves request/response dispatch *and* the subscription/streaming traffic that every
30
- * consumer now opens implicitly (observable mirrors fire a `subscribe` at construction, and
31
- * the session is what can push updates back on the notify channel). Returns the live session
32
- * too so a test can `session.dispose()`.
33
- */
34
- function inProcessConsumer(contract, resolution, opts = {}) {
35
- const [consumerTransport, providerTransport] = (0, contract_transport_1.inProcessTransportPair)();
36
- const session = (0, contract_proxy_1.createContractProviderSession)(resolution, providerTransport, opts);
37
- const consumer = (0, contract_proxy_1.createContractConsumer)(contract, consumerTransport);
38
- cleanups.push(() => {
39
- consumer.dispose();
40
- session.dispose();
41
- });
42
- return { consumer, session };
43
- }
44
- const CONTRACT_ID = "00mrbloudwk9svfxd42oyxqhi";
45
- /** The contract *shape* a consumer sees: one table, one tool, one observable. */
46
- function makeContract() {
47
- return {
48
- contractId: CONTRACT_ID,
49
- version: 1,
50
- devTag: "dev",
51
- name: "Playground Contract",
52
- description: "Scratch space",
53
- tables: [
54
- {
55
- name: "Widgets",
56
- description: "Widget table",
57
- primaryKeyName: "widgetId",
58
- fields: [{ name: "widgetId", type: field_type_1.FieldType.id, description: "PK" }],
59
- },
60
- ],
61
- tools: [
62
- {
63
- name: "make-widget",
64
- usageDescription: "Makes a widget",
65
- inputFields: [{ name: "color", type: field_type_1.FieldType.string, description: "Color" }],
66
- outputFields: [{ name: "widgetId", type: field_type_1.FieldType.id, description: "ID" }],
67
- },
68
- ],
69
- observables: [
70
- { name: "widgetCount", description: "Count", valueType: field_type_1.FieldType.number, writable: true },
71
- ],
72
- };
73
- }
74
- /** A live, in-memory implementation the *provider* dispatches to. */
75
- function makeResolution() {
76
- const rows = [];
77
- const table = {
78
- list: async (filter = {}) => rows.filter((r) => Object.entries(filter).every(([k, v]) => r[k] === v)),
79
- get: async (id) => rows.find((r) => r.widgetId === id),
80
- save: async (record) => {
81
- rows.push(record);
82
- return record;
83
- },
84
- };
85
- const makeWidget = async ({ color }) => ({ widgetId: (0, utils_1.newid)(), color });
86
- const widgetCount = (0, observable_1.observable)(0);
87
- const resolution = {
88
- contractId: CONTRACT_ID,
89
- version: 1,
90
- tables: { Widgets: table },
91
- tools: {
92
- "make-widget": { tool: { toolId: (0, utils_1.newid)(), name: "make-widget" }, toolFn: makeWidget },
93
- },
94
- observables: { widgetCount },
95
- observableWritability: { widgetCount: true },
96
- };
97
- return { resolution, table, makeWidget, widgetCount, rows };
98
- }
99
- /** Wire a consumer straight to a provider session, in-process (over a transport pair). */
100
- function wire() {
101
- const contract = makeContract();
102
- const { resolution, ...rest } = makeResolution();
103
- const { consumer, session } = inProcessConsumer(contract, resolution);
104
- return { consumer, session, contract, ...rest };
105
- }
106
- describe("playground", () => {
107
- it("round-trips a save through consumer -> provider -> live table", async () => {
108
- const { consumer } = wire();
109
- const saved = await consumer.tables.Widgets.save({ widgetId: "w1", color: "red" });
110
- expect(saved).toEqual({ widgetId: "w1", color: "red" });
111
- const listed = await consumer.tables.Widgets.list({ color: "red" });
112
- expect(listed).toEqual([{ widgetId: "w1", color: "red" }]);
113
- });
114
- // Start fiddling here — try a tool call, observable get/set, permission
115
- // checks (sameUserContractPermissionCheck), or swap in your own contract shape.
116
- it("keeps compatible contract versions isolated and reactive", async () => {
117
- const logs = [];
118
- let lastLogTime;
119
- const inc = (0, observable_1.observable)(0);
120
- const logCountObs = (0, observable_1.computed)(() => {
121
- inc();
122
- return logs.length;
123
- });
124
- const lastLogTimeObs = (0, observable_1.computed)(() => {
125
- inc();
126
- return lastLogTime;
127
- });
128
- const logTextFn = (text) => {
129
- logs.push(text);
130
- lastLogTime = Date.now();
131
- inc(inc() + 1);
132
- return logs.length - 1;
133
- };
134
- const logsContractV1 = {
135
- contractId: CONTRACT_ID,
136
- version: 1,
137
- devTag: "dev",
138
- name: "Playground Contract",
139
- description: "Scratch space",
140
- tables: [],
141
- tools: [
142
- {
143
- name: "logText",
144
- usageDescription: "logs text",
145
- inputFields: [{ name: "text", type: field_type_1.FieldType.string }],
146
- outputFields: [{ name: "logId", type: field_type_1.FieldType.id, description: "log id" }],
147
- },
148
- ],
149
- observables: [
150
- { name: "logCount", description: "Count", valueType: field_type_1.FieldType.number, writable: false },
151
- ],
152
- };
153
- const providerV1 = {
154
- contractId: CONTRACT_ID,
155
- version: 1,
156
- tools: {
157
- logText: {
158
- tool: { toolId: "", name: "logText", accessLevel: 0 },
159
- toolFn: logTextFn,
160
- },
161
- },
162
- observables: { logCount: logCountObs },
163
- observableWritability: { logCount: false },
164
- };
165
- const logsContractV2 = {
166
- ...logsContractV1,
167
- version: 2,
168
- devTag: "dev",
169
- observables: [
170
- ...logsContractV1.observables,
171
- {
172
- name: "lastLogTime",
173
- description: "last time a log was written",
174
- valueType: field_type_1.FieldType.number,
175
- writable: false,
176
- },
177
- ],
178
- };
179
- const providerV2 = {
180
- ...providerV1,
181
- version: 2,
182
- observables: {
183
- ...providerV1.observables,
184
- lastLogTime: lastLogTimeObs,
185
- },
186
- observableWritability: {
187
- ...providerV1.observableWritability,
188
- lastLogTime: false,
189
- },
190
- };
191
- const { consumer: consumerV1 } = inProcessConsumer(logsContractV1, providerV1);
192
- const { consumer: consumerV2 } = inProcessConsumer(logsContractV2, providerV2);
193
- await Promise.all([consumerV1.loadingPromise, consumerV2.loadingPromise]);
194
- await consumerV1.tools.logText("log1");
195
- expect(logs).toEqual(["log1"]);
196
- let observedLogCount = consumerV1.observables.logCount();
197
- expect(observedLogCount).toBe(1);
198
- let resolveSecondLog;
199
- const secondLogObserved = new Promise((resolve) => {
200
- resolveSecondLog = resolve;
201
- });
202
- const observedSub = consumerV2.observables.logCount.subscribe((value) => {
203
- observedLogCount = value;
204
- if (value === 2) {
205
- resolveSecondLog();
206
- }
207
- });
208
- cleanups.push(() => observedSub.dispose());
209
- await consumerV2.tools.logText("log2");
210
- await secondLogObserved;
211
- expect(logs).toEqual(["log1", "log2"]);
212
- expect(observedLogCount).toBe(2);
213
- // TODO test tables so we can see what this looks like and how it works for both providers and consumers
214
- // TODO consider renaming ContractResolution to ContractProviderInstance or something like that. ContractResolution is awkward.
215
- });
216
- });
@@ -1 +0,0 @@
1
- export {};