@peers-app/peers-device 0.16.5 → 0.16.6
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.
- package/dist/__tests__/contracts/contracts-integration.test.d.ts +1 -0
- package/dist/__tests__/contracts/contracts-integration.test.js +310 -0
- package/dist/__tests__/contracts/contracts-integration.test.js.map +1 -0
- package/dist/__tests__/contracts/test-packages.d.ts +9 -0
- package/dist/__tests__/contracts/test-packages.js +241 -0
- package/dist/__tests__/contracts/test-packages.js.map +1 -0
- package/dist/system-tools.d.ts +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
4
|
+
const local_data_source_1 = require("../../local.data-source");
|
|
5
|
+
const test_packages_1 = require("./test-packages");
|
|
6
|
+
jest.setTimeout(30_000);
|
|
7
|
+
beforeAll(() => {
|
|
8
|
+
(0, peers_sdk_1.setSchemaToFieldsFn)(peers_sdk_1.schemaToFields);
|
|
9
|
+
});
|
|
10
|
+
async function createTestUserContext() {
|
|
11
|
+
const userId = (0, peers_sdk_1.newid)();
|
|
12
|
+
const deviceId = (0, peers_sdk_1.newid)();
|
|
13
|
+
const db = new local_data_source_1.DBLocal(":memory:");
|
|
14
|
+
const dataSourceFactory = (metaData, schema, _groupId) => {
|
|
15
|
+
return new peers_sdk_1.SQLDataSource(db, metaData, schema);
|
|
16
|
+
};
|
|
17
|
+
const userContext = new peers_sdk_1.UserContext(userId, dataSourceFactory, true);
|
|
18
|
+
await userContext.loadingPromise;
|
|
19
|
+
userContext.deviceId(deviceId);
|
|
20
|
+
return userContext;
|
|
21
|
+
}
|
|
22
|
+
describe("Contract persistence — integration", () => {
|
|
23
|
+
let userContext;
|
|
24
|
+
let registry;
|
|
25
|
+
let persistentRegistry;
|
|
26
|
+
beforeEach(async () => {
|
|
27
|
+
userContext = await createTestUserContext();
|
|
28
|
+
registry = new peers_sdk_1.ContractRegistry();
|
|
29
|
+
persistentRegistry = new peers_sdk_1.PersistentContractRegistry(registry, userContext.userDataContext);
|
|
30
|
+
});
|
|
31
|
+
// -------------------------------------------------------------------------
|
|
32
|
+
// 1. Persistence round-trip
|
|
33
|
+
// -------------------------------------------------------------------------
|
|
34
|
+
describe("persistence round-trip", () => {
|
|
35
|
+
it("persists a contract definition and hydrates it into a fresh registry", async () => {
|
|
36
|
+
const tasksPkg = (0, test_packages_1.defineTasksBasicPackage)();
|
|
37
|
+
const definition = tasksPkg.contracts[0];
|
|
38
|
+
const providerPkgId = (0, peers_sdk_1.newid)();
|
|
39
|
+
// Register in-memory
|
|
40
|
+
const regResult = registry.register(providerPkgId, definition);
|
|
41
|
+
expect(regResult.valid).toBe(true);
|
|
42
|
+
// Persist
|
|
43
|
+
await persistentRegistry.persist(definition, providerPkgId, true);
|
|
44
|
+
// Verify DB records
|
|
45
|
+
const defs = await (0, peers_sdk_1.Contracts)(userContext.userDataContext).list();
|
|
46
|
+
expect(defs).toHaveLength(1);
|
|
47
|
+
expect(defs[0].contractId).toBe(test_packages_1.TASKS_BASIC_CONTRACT_ID);
|
|
48
|
+
expect(defs[0].version).toBe(1);
|
|
49
|
+
const providers = await (0, peers_sdk_1.ContractProviders)(userContext.userDataContext).list();
|
|
50
|
+
expect(providers).toHaveLength(1);
|
|
51
|
+
expect(providers[0].providerPackageId).toBe(providerPkgId);
|
|
52
|
+
expect(providers[0].isActive).toBe(true);
|
|
53
|
+
// Hydrate into a fresh registry
|
|
54
|
+
const freshRegistry = new peers_sdk_1.ContractRegistry();
|
|
55
|
+
const freshPersistent = new peers_sdk_1.PersistentContractRegistry(freshRegistry, userContext.userDataContext);
|
|
56
|
+
await freshPersistent.hydrate();
|
|
57
|
+
const resolved = freshRegistry.resolve(test_packages_1.TASKS_BASIC_CONTRACT_ID, 1);
|
|
58
|
+
expect(resolved).toBeDefined();
|
|
59
|
+
expect(resolved?.tables[0].name).toBe("Tasks");
|
|
60
|
+
expect(resolved?.tools[0].name).toBe("create-task");
|
|
61
|
+
expect(resolved?.observables[0].name).toBe("taskCount");
|
|
62
|
+
expect(freshRegistry.getProviderPackageId(test_packages_1.TASKS_BASIC_CONTRACT_ID, 1)).toBe(providerPkgId);
|
|
63
|
+
});
|
|
64
|
+
it("updates an existing definition record on re-persist", async () => {
|
|
65
|
+
const tasksPkg = (0, test_packages_1.defineTasksBasicPackage)();
|
|
66
|
+
const definition = tasksPkg.contracts[0];
|
|
67
|
+
const providerPkgId = (0, peers_sdk_1.newid)();
|
|
68
|
+
registry.register(providerPkgId, definition);
|
|
69
|
+
await persistentRegistry.persist(definition, providerPkgId, true);
|
|
70
|
+
// Re-persist (same shape, should update not duplicate)
|
|
71
|
+
await persistentRegistry.persist(definition, providerPkgId, true);
|
|
72
|
+
const defs = await (0, peers_sdk_1.Contracts)(userContext.userDataContext).list();
|
|
73
|
+
expect(defs).toHaveLength(1);
|
|
74
|
+
const providers = await (0, peers_sdk_1.ContractProviders)(userContext.userDataContext).list();
|
|
75
|
+
expect(providers).toHaveLength(1);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
// -------------------------------------------------------------------------
|
|
79
|
+
// 2. Provider registration + swap
|
|
80
|
+
// -------------------------------------------------------------------------
|
|
81
|
+
describe("provider registration and swap", () => {
|
|
82
|
+
it("registers two providers and swaps active, persisting the change", async () => {
|
|
83
|
+
const tasksPkg = (0, test_packages_1.defineTasksBasicPackage)();
|
|
84
|
+
const enhancedPkg = (0, test_packages_1.defineTasksEnhancedPackage)();
|
|
85
|
+
const pkgA = (0, peers_sdk_1.newid)();
|
|
86
|
+
const pkgB = (0, peers_sdk_1.newid)();
|
|
87
|
+
// Register tasks-basic from package A
|
|
88
|
+
registry.register(pkgA, tasksPkg.contracts[0]);
|
|
89
|
+
await persistentRegistry.persist(tasksPkg.contracts[0], pkgA, true);
|
|
90
|
+
// Register tasks-enhanced from package B (also satisfies tasks-basic via alsoImplements)
|
|
91
|
+
const enhancedKey = (0, peers_sdk_1.contractKey)(test_packages_1.TASKS_ENHANCED_CONTRACT_ID, 1);
|
|
92
|
+
const alsoImpl = enhancedPkg.alsoImplements.get(enhancedKey) ?? [];
|
|
93
|
+
registry.register(pkgB, enhancedPkg.contracts[0], alsoImpl);
|
|
94
|
+
await persistentRegistry.persist(enhancedPkg.contracts[0], pkgB, true);
|
|
95
|
+
// Also register pkgB as a provider of the original tasks-basic contract
|
|
96
|
+
registry.register(pkgB, tasksPkg.contracts[0]);
|
|
97
|
+
await persistentRegistry.persist(tasksPkg.contracts[0], pkgB, false);
|
|
98
|
+
// Verify pkgA is active for tasks-basic
|
|
99
|
+
expect(registry.getProviderPackageId(test_packages_1.TASKS_BASIC_CONTRACT_ID, 1)).toBe(pkgA);
|
|
100
|
+
// Swap active provider to pkgB
|
|
101
|
+
const switched = await persistentRegistry.setActiveProvider(test_packages_1.TASKS_BASIC_CONTRACT_ID, 1, pkgB);
|
|
102
|
+
expect(switched).toBe(true);
|
|
103
|
+
expect(registry.getProviderPackageId(test_packages_1.TASKS_BASIC_CONTRACT_ID, 1)).toBe(pkgB);
|
|
104
|
+
// Verify persistence reflects the swap
|
|
105
|
+
const providers = await (0, peers_sdk_1.ContractProviders)(userContext.userDataContext).list({
|
|
106
|
+
contractId: test_packages_1.TASKS_BASIC_CONTRACT_ID,
|
|
107
|
+
version: 1,
|
|
108
|
+
});
|
|
109
|
+
const activeProvider = providers.find((p) => p.isActive);
|
|
110
|
+
expect(activeProvider?.providerPackageId).toBe(pkgB);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
// -------------------------------------------------------------------------
|
|
114
|
+
// 3. Consumer dependency checking
|
|
115
|
+
// -------------------------------------------------------------------------
|
|
116
|
+
describe("consumer dependency checking", () => {
|
|
117
|
+
it("satisfies consumer deps when all providers are registered", async () => {
|
|
118
|
+
const tasksPkg = (0, test_packages_1.defineTasksBasicPackage)();
|
|
119
|
+
const notesPkg = (0, test_packages_1.defineNotesPackage)();
|
|
120
|
+
const consumerPkg = (0, test_packages_1.defineConsumerPackage)();
|
|
121
|
+
const tasksPkgId = (0, peers_sdk_1.newid)();
|
|
122
|
+
const notesPkgId = (0, peers_sdk_1.newid)();
|
|
123
|
+
const consumerPkgId = (0, peers_sdk_1.newid)();
|
|
124
|
+
registry.register(tasksPkgId, tasksPkg.contracts[0]);
|
|
125
|
+
registry.register(notesPkgId, notesPkg.contracts[0]);
|
|
126
|
+
registry.register(consumerPkgId, consumerPkg.contracts[0]);
|
|
127
|
+
const deps = registry.checkConsumerDependencies(consumerPkg.consumes);
|
|
128
|
+
expect(deps.satisfied).toHaveLength(2);
|
|
129
|
+
expect(deps.missing).toHaveLength(0);
|
|
130
|
+
});
|
|
131
|
+
it("reports missing deps when a provider is unregistered", async () => {
|
|
132
|
+
const tasksPkg = (0, test_packages_1.defineTasksBasicPackage)();
|
|
133
|
+
const notesPkg = (0, test_packages_1.defineNotesPackage)();
|
|
134
|
+
const consumerPkg = (0, test_packages_1.defineConsumerPackage)();
|
|
135
|
+
const tasksPkgId = (0, peers_sdk_1.newid)();
|
|
136
|
+
const notesPkgId = (0, peers_sdk_1.newid)();
|
|
137
|
+
const consumerPkgId = (0, peers_sdk_1.newid)();
|
|
138
|
+
registry.register(tasksPkgId, tasksPkg.contracts[0]);
|
|
139
|
+
registry.register(notesPkgId, notesPkg.contracts[0]);
|
|
140
|
+
registry.register(consumerPkgId, consumerPkg.contracts[0]);
|
|
141
|
+
// Remove tasks provider
|
|
142
|
+
registry.unregister(tasksPkgId);
|
|
143
|
+
const deps = registry.checkConsumerDependencies(consumerPkg.consumes);
|
|
144
|
+
expect(deps.satisfied).toHaveLength(1);
|
|
145
|
+
expect(deps.satisfied[0].contractId).toBe(test_packages_1.NOTES_CONTRACT_ID);
|
|
146
|
+
expect(deps.missing).toHaveLength(1);
|
|
147
|
+
expect(deps.missing[0].contractId).toBe(test_packages_1.TASKS_BASIC_CONTRACT_ID);
|
|
148
|
+
});
|
|
149
|
+
it("reports all deps missing when no providers are registered", async () => {
|
|
150
|
+
const consumerPkg = (0, test_packages_1.defineConsumerPackage)();
|
|
151
|
+
const deps = registry.checkConsumerDependencies(consumerPkg.consumes);
|
|
152
|
+
expect(deps.missing).toHaveLength(2);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
// -------------------------------------------------------------------------
|
|
156
|
+
// 4. Immutability enforcement
|
|
157
|
+
// -------------------------------------------------------------------------
|
|
158
|
+
describe("immutability enforcement", () => {
|
|
159
|
+
it("rejects a modified stable contract on re-registration", () => {
|
|
160
|
+
const tasksPkg = (0, test_packages_1.defineTasksBasicPackage)();
|
|
161
|
+
const pkgId = (0, peers_sdk_1.newid)();
|
|
162
|
+
// Register stable contract
|
|
163
|
+
const result1 = registry.register(pkgId, tasksPkg.contracts[0]);
|
|
164
|
+
expect(result1.valid).toBe(true);
|
|
165
|
+
// Attempt to register with a different shape (add an extra required field)
|
|
166
|
+
const modified = {
|
|
167
|
+
...tasksPkg.contracts[0],
|
|
168
|
+
tables: [
|
|
169
|
+
{
|
|
170
|
+
...tasksPkg.contracts[0].tables[0],
|
|
171
|
+
fields: [
|
|
172
|
+
...tasksPkg.contracts[0].tables[0].fields,
|
|
173
|
+
{ name: "extraField", type: peers_sdk_1.FieldType.string, description: "Extra" },
|
|
174
|
+
],
|
|
175
|
+
},
|
|
176
|
+
],
|
|
177
|
+
};
|
|
178
|
+
const result2 = registry.register((0, peers_sdk_1.newid)(), modified);
|
|
179
|
+
expect(result2.valid).toBe(false);
|
|
180
|
+
expect(result2.errors[0].kind).toBe("contract");
|
|
181
|
+
expect(result2.errors[0].message).toContain("frozen");
|
|
182
|
+
});
|
|
183
|
+
it("allows identical stable contract to be re-registered by another provider", () => {
|
|
184
|
+
const tasksPkg = (0, test_packages_1.defineTasksBasicPackage)();
|
|
185
|
+
const pkgA = (0, peers_sdk_1.newid)();
|
|
186
|
+
const pkgB = (0, peers_sdk_1.newid)();
|
|
187
|
+
registry.register(pkgA, tasksPkg.contracts[0]);
|
|
188
|
+
const result = registry.register(pkgB, tasksPkg.contracts[0]);
|
|
189
|
+
expect(result.valid).toBe(true);
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
// -------------------------------------------------------------------------
|
|
193
|
+
// 5. Dev-to-stable lifecycle
|
|
194
|
+
// -------------------------------------------------------------------------
|
|
195
|
+
describe("dev-to-stable lifecycle", () => {
|
|
196
|
+
it("allows shape changes while in dev, then freezes on stable", () => {
|
|
197
|
+
const pkgId = (0, peers_sdk_1.newid)();
|
|
198
|
+
// Register as dev
|
|
199
|
+
const lifecycleContractId = "00mp0ajl9pxnifs5az3mx7elj";
|
|
200
|
+
const devDef = {
|
|
201
|
+
contractId: lifecycleContractId,
|
|
202
|
+
version: 1,
|
|
203
|
+
devTag: "dev",
|
|
204
|
+
name: "lifecycle-test:v1",
|
|
205
|
+
description: "lifecycle-test:v1",
|
|
206
|
+
tables: [
|
|
207
|
+
{
|
|
208
|
+
name: "Items",
|
|
209
|
+
description: "Test items",
|
|
210
|
+
primaryKeyName: "itemId",
|
|
211
|
+
fields: [{ name: "itemId", type: peers_sdk_1.FieldType.id, description: "PK" }],
|
|
212
|
+
},
|
|
213
|
+
],
|
|
214
|
+
tools: [],
|
|
215
|
+
observables: [],
|
|
216
|
+
};
|
|
217
|
+
const r1 = registry.register(pkgId, devDef);
|
|
218
|
+
expect(r1.valid).toBe(true);
|
|
219
|
+
// Modify shape while still dev
|
|
220
|
+
const devDef2 = {
|
|
221
|
+
...devDef,
|
|
222
|
+
tables: [
|
|
223
|
+
{
|
|
224
|
+
name: "Items",
|
|
225
|
+
description: "Test items v2",
|
|
226
|
+
primaryKeyName: "itemId",
|
|
227
|
+
fields: [
|
|
228
|
+
{ name: "itemId", type: peers_sdk_1.FieldType.id, description: "PK" },
|
|
229
|
+
{ name: "name", type: peers_sdk_1.FieldType.string, description: "Name" },
|
|
230
|
+
],
|
|
231
|
+
},
|
|
232
|
+
],
|
|
233
|
+
};
|
|
234
|
+
const r2 = registry.register((0, peers_sdk_1.newid)(), devDef2);
|
|
235
|
+
expect(r2.valid).toBe(true);
|
|
236
|
+
// Freeze by registering without devTag
|
|
237
|
+
const stableDef = {
|
|
238
|
+
...devDef2,
|
|
239
|
+
devTag: undefined,
|
|
240
|
+
};
|
|
241
|
+
const r3 = registry.register((0, peers_sdk_1.newid)(), stableDef);
|
|
242
|
+
expect(r3.valid).toBe(true);
|
|
243
|
+
// Attempt to go back to dev — should be rejected
|
|
244
|
+
const backToDev = {
|
|
245
|
+
...stableDef,
|
|
246
|
+
devTag: "dev",
|
|
247
|
+
};
|
|
248
|
+
const r4 = registry.register((0, peers_sdk_1.newid)(), backToDev);
|
|
249
|
+
expect(r4.valid).toBe(false);
|
|
250
|
+
expect(r4.errors[0].message).toContain("frozen");
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
// -------------------------------------------------------------------------
|
|
254
|
+
// 6. Full lifecycle persistence
|
|
255
|
+
// -------------------------------------------------------------------------
|
|
256
|
+
describe("full lifecycle with persistence", () => {
|
|
257
|
+
it("persists all packages, clears registry, hydrates, and verifies state", async () => {
|
|
258
|
+
const tasksPkg = (0, test_packages_1.defineTasksBasicPackage)();
|
|
259
|
+
const notesPkg = (0, test_packages_1.defineNotesPackage)();
|
|
260
|
+
const consumerPkg = (0, test_packages_1.defineConsumerPackage)();
|
|
261
|
+
const tasksPkgId = (0, peers_sdk_1.newid)();
|
|
262
|
+
const notesPkgId = (0, peers_sdk_1.newid)();
|
|
263
|
+
const consumerPkgId = (0, peers_sdk_1.newid)();
|
|
264
|
+
// Register all
|
|
265
|
+
registry.register(tasksPkgId, tasksPkg.contracts[0]);
|
|
266
|
+
registry.register(notesPkgId, notesPkg.contracts[0]);
|
|
267
|
+
registry.register(consumerPkgId, consumerPkg.contracts[0]);
|
|
268
|
+
// Persist all
|
|
269
|
+
await persistentRegistry.persist(tasksPkg.contracts[0], tasksPkgId, true);
|
|
270
|
+
await persistentRegistry.persist(notesPkg.contracts[0], notesPkgId, true);
|
|
271
|
+
await persistentRegistry.persist(consumerPkg.contracts[0], consumerPkgId, true);
|
|
272
|
+
// Verify consumer deps are satisfied in original registry
|
|
273
|
+
let deps = registry.checkConsumerDependencies(consumerPkg.consumes);
|
|
274
|
+
expect(deps.missing).toHaveLength(0);
|
|
275
|
+
// Create a completely fresh registry and hydrate from DB
|
|
276
|
+
const freshRegistry = new peers_sdk_1.ContractRegistry();
|
|
277
|
+
const freshPersistent = new peers_sdk_1.PersistentContractRegistry(freshRegistry, userContext.userDataContext);
|
|
278
|
+
await freshPersistent.hydrate();
|
|
279
|
+
// All contracts should resolve
|
|
280
|
+
expect(freshRegistry.resolve(test_packages_1.TASKS_BASIC_CONTRACT_ID, 1)).toBeDefined();
|
|
281
|
+
expect(freshRegistry.resolve(test_packages_1.NOTES_CONTRACT_ID, 1)).toBeDefined();
|
|
282
|
+
expect(freshRegistry.resolve(test_packages_1.DASHBOARDS_CONTRACT_ID, 1)).toBeDefined();
|
|
283
|
+
// Provider IDs should match
|
|
284
|
+
expect(freshRegistry.getProviderPackageId(test_packages_1.TASKS_BASIC_CONTRACT_ID, 1)).toBe(tasksPkgId);
|
|
285
|
+
expect(freshRegistry.getProviderPackageId(test_packages_1.NOTES_CONTRACT_ID, 1)).toBe(notesPkgId);
|
|
286
|
+
expect(freshRegistry.getProviderPackageId(test_packages_1.DASHBOARDS_CONTRACT_ID, 1)).toBe(consumerPkgId);
|
|
287
|
+
// Consumer deps still satisfied after hydration
|
|
288
|
+
deps = freshRegistry.checkConsumerDependencies(consumerPkg.consumes);
|
|
289
|
+
expect(deps.missing).toHaveLength(0);
|
|
290
|
+
});
|
|
291
|
+
it("persists provider swap and hydrates correctly", async () => {
|
|
292
|
+
const tasksPkg = (0, test_packages_1.defineTasksBasicPackage)();
|
|
293
|
+
const pkgA = (0, peers_sdk_1.newid)();
|
|
294
|
+
const pkgB = (0, peers_sdk_1.newid)();
|
|
295
|
+
// Two providers for the same contract
|
|
296
|
+
registry.register(pkgA, tasksPkg.contracts[0]);
|
|
297
|
+
registry.register(pkgB, tasksPkg.contracts[0]);
|
|
298
|
+
await persistentRegistry.persist(tasksPkg.contracts[0], pkgA, true);
|
|
299
|
+
await persistentRegistry.persist(tasksPkg.contracts[0], pkgB, false);
|
|
300
|
+
// Swap
|
|
301
|
+
await persistentRegistry.setActiveProvider(test_packages_1.TASKS_BASIC_CONTRACT_ID, 1, pkgB);
|
|
302
|
+
// Hydrate fresh
|
|
303
|
+
const freshRegistry = new peers_sdk_1.ContractRegistry();
|
|
304
|
+
const freshPersistent = new peers_sdk_1.PersistentContractRegistry(freshRegistry, userContext.userDataContext);
|
|
305
|
+
await freshPersistent.hydrate();
|
|
306
|
+
expect(freshRegistry.getProviderPackageId(test_packages_1.TASKS_BASIC_CONTRACT_ID, 1)).toBe(pkgB);
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
});
|
|
310
|
+
//# sourceMappingURL=contracts-integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts-integration.test.js","sourceRoot":"","sources":["../../../src/__tests__/contracts/contracts-integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type IPackageDefinitionResult } from "@peers-app/peers-sdk";
|
|
2
|
+
export declare const TASKS_BASIC_CONTRACT_ID = "00mp0ajdfr23cmt2bb73yqmvk";
|
|
3
|
+
export declare const TASKS_ENHANCED_CONTRACT_ID = "00mp0ajdftt5f2ka8t5hlefi3";
|
|
4
|
+
export declare const NOTES_CONTRACT_ID = "00mp0ajdft5r1czhuu2sc1vhv";
|
|
5
|
+
export declare const DASHBOARDS_CONTRACT_ID = "00mp0ajdftdisqgeq4x7gkkdi";
|
|
6
|
+
export declare function defineTasksBasicPackage(): IPackageDefinitionResult;
|
|
7
|
+
export declare function defineTasksEnhancedPackage(): IPackageDefinitionResult;
|
|
8
|
+
export declare function defineNotesPackage(): IPackageDefinitionResult;
|
|
9
|
+
export declare function defineConsumerPackage(): IPackageDefinitionResult;
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DASHBOARDS_CONTRACT_ID = exports.NOTES_CONTRACT_ID = exports.TASKS_ENHANCED_CONTRACT_ID = exports.TASKS_BASIC_CONTRACT_ID = void 0;
|
|
4
|
+
exports.defineTasksBasicPackage = defineTasksBasicPackage;
|
|
5
|
+
exports.defineTasksEnhancedPackage = defineTasksEnhancedPackage;
|
|
6
|
+
exports.defineNotesPackage = defineNotesPackage;
|
|
7
|
+
exports.defineConsumerPackage = defineConsumerPackage;
|
|
8
|
+
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
9
|
+
const zod_1 = require("zod");
|
|
10
|
+
(0, peers_sdk_1.setSchemaToFieldsFn)(peers_sdk_1.schemaToFields);
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Contract IDs
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
exports.TASKS_BASIC_CONTRACT_ID = "00mp0ajdfr23cmt2bb73yqmvk";
|
|
15
|
+
exports.TASKS_ENHANCED_CONTRACT_ID = "00mp0ajdftt5f2ka8t5hlefi3";
|
|
16
|
+
exports.NOTES_CONTRACT_ID = "00mp0ajdft5r1czhuu2sc1vhv";
|
|
17
|
+
exports.DASHBOARDS_CONTRACT_ID = "00mp0ajdftdisqgeq4x7gkkdi";
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// tasks-basic: 1 table, 1 tool, 1 observable
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
function defineTasksBasicPackage() {
|
|
22
|
+
return (0, peers_sdk_1.definePackage)((pkg) => {
|
|
23
|
+
pkg.packageId = (0, peers_sdk_1.newid)();
|
|
24
|
+
const tasks = pkg.contract(exports.TASKS_BASIC_CONTRACT_ID, 1, "Tasks Basic");
|
|
25
|
+
tasks.tables = [
|
|
26
|
+
{
|
|
27
|
+
metaData: {
|
|
28
|
+
name: "Tasks",
|
|
29
|
+
description: "Basic task tracking table",
|
|
30
|
+
primaryKeyName: "taskId",
|
|
31
|
+
fields: [],
|
|
32
|
+
},
|
|
33
|
+
schema: zod_1.z.object({
|
|
34
|
+
taskId: zod_1.z.string().describe("Primary key"),
|
|
35
|
+
title: zod_1.z.string().describe("Task title"),
|
|
36
|
+
status: zod_1.z.string().describe("Task status"),
|
|
37
|
+
sortOrder: zod_1.z.number().describe("Sort priority"),
|
|
38
|
+
}),
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
tasks.tools = [
|
|
42
|
+
{
|
|
43
|
+
tool: {
|
|
44
|
+
name: "create-task",
|
|
45
|
+
usageDescription: "Creates a new task",
|
|
46
|
+
inputSchema: {
|
|
47
|
+
fields: [
|
|
48
|
+
{ name: "title", type: peers_sdk_1.FieldType.string, description: "Task title" },
|
|
49
|
+
{
|
|
50
|
+
name: "status",
|
|
51
|
+
type: peers_sdk_1.FieldType.string,
|
|
52
|
+
description: "Initial status",
|
|
53
|
+
optional: true,
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
},
|
|
57
|
+
outputSchema: {
|
|
58
|
+
fields: [{ name: "taskId", type: peers_sdk_1.FieldType.id, description: "Created task ID" }],
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
tasks.observables = [
|
|
64
|
+
{
|
|
65
|
+
name: "taskCount",
|
|
66
|
+
description: "Total number of tasks",
|
|
67
|
+
valueType: peers_sdk_1.FieldType.number,
|
|
68
|
+
writable: false,
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
// tasks-enhanced: alsoImplements tasks-basic v1, adds optional fields + tool
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
function defineTasksEnhancedPackage() {
|
|
77
|
+
return (0, peers_sdk_1.definePackage)((pkg) => {
|
|
78
|
+
pkg.packageId = (0, peers_sdk_1.newid)();
|
|
79
|
+
const enhanced = pkg.contract(exports.TASKS_ENHANCED_CONTRACT_ID, 1, "Tasks Enhanced");
|
|
80
|
+
enhanced.alsoImplements(exports.TASKS_BASIC_CONTRACT_ID, 1);
|
|
81
|
+
enhanced.tables = [
|
|
82
|
+
{
|
|
83
|
+
metaData: {
|
|
84
|
+
name: "Tasks",
|
|
85
|
+
description: "Enhanced task table with priority and tags",
|
|
86
|
+
primaryKeyName: "taskId",
|
|
87
|
+
fields: [],
|
|
88
|
+
},
|
|
89
|
+
schema: zod_1.z.object({
|
|
90
|
+
taskId: zod_1.z.string().describe("Primary key"),
|
|
91
|
+
title: zod_1.z.string().describe("Task title"),
|
|
92
|
+
status: zod_1.z.string().describe("Task status"),
|
|
93
|
+
sortOrder: zod_1.z.number().describe("Sort priority"),
|
|
94
|
+
priority: zod_1.z.number().optional().describe("Priority level (1-5)"),
|
|
95
|
+
tags: zod_1.z.string().array().optional().describe("Freeform tags"),
|
|
96
|
+
}),
|
|
97
|
+
},
|
|
98
|
+
];
|
|
99
|
+
enhanced.tools = [
|
|
100
|
+
{
|
|
101
|
+
tool: {
|
|
102
|
+
name: "create-task",
|
|
103
|
+
usageDescription: "Creates an enhanced task with priority",
|
|
104
|
+
inputSchema: {
|
|
105
|
+
fields: [
|
|
106
|
+
{ name: "title", type: peers_sdk_1.FieldType.string, description: "Task title" },
|
|
107
|
+
{
|
|
108
|
+
name: "status",
|
|
109
|
+
type: peers_sdk_1.FieldType.string,
|
|
110
|
+
description: "Initial status",
|
|
111
|
+
optional: true,
|
|
112
|
+
},
|
|
113
|
+
{ name: "priority", type: peers_sdk_1.FieldType.number, description: "Priority", optional: true },
|
|
114
|
+
],
|
|
115
|
+
},
|
|
116
|
+
outputSchema: {
|
|
117
|
+
fields: [{ name: "taskId", type: peers_sdk_1.FieldType.id, description: "Created task ID" }],
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
tool: {
|
|
123
|
+
name: "bulk-update-tasks",
|
|
124
|
+
usageDescription: "Bulk-update task statuses",
|
|
125
|
+
inputSchema: {
|
|
126
|
+
fields: [
|
|
127
|
+
{
|
|
128
|
+
name: "taskIds",
|
|
129
|
+
type: peers_sdk_1.FieldType.string,
|
|
130
|
+
description: "Comma-separated IDs",
|
|
131
|
+
isArray: true,
|
|
132
|
+
},
|
|
133
|
+
{ name: "status", type: peers_sdk_1.FieldType.string, description: "New status" },
|
|
134
|
+
],
|
|
135
|
+
},
|
|
136
|
+
outputSchema: {
|
|
137
|
+
fields: [
|
|
138
|
+
{ name: "updatedCount", type: peers_sdk_1.FieldType.number, description: "Count updated" },
|
|
139
|
+
],
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
];
|
|
144
|
+
enhanced.observables = [
|
|
145
|
+
{
|
|
146
|
+
name: "taskCount",
|
|
147
|
+
description: "Total number of tasks",
|
|
148
|
+
valueType: peers_sdk_1.FieldType.number,
|
|
149
|
+
writable: false,
|
|
150
|
+
},
|
|
151
|
+
];
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
// ---------------------------------------------------------------------------
|
|
155
|
+
// notes-simple: independent contract with 1 table
|
|
156
|
+
// ---------------------------------------------------------------------------
|
|
157
|
+
function defineNotesPackage() {
|
|
158
|
+
return (0, peers_sdk_1.definePackage)((pkg) => {
|
|
159
|
+
pkg.packageId = (0, peers_sdk_1.newid)();
|
|
160
|
+
const notes = pkg.contract(exports.NOTES_CONTRACT_ID, 1, "Notes");
|
|
161
|
+
notes.tables = [
|
|
162
|
+
{
|
|
163
|
+
metaData: {
|
|
164
|
+
name: "Notes",
|
|
165
|
+
description: "Freeform note storage",
|
|
166
|
+
primaryKeyName: "noteId",
|
|
167
|
+
fields: [],
|
|
168
|
+
},
|
|
169
|
+
schema: zod_1.z.object({
|
|
170
|
+
noteId: zod_1.z.string().describe("Primary key"),
|
|
171
|
+
title: zod_1.z.string().describe("Note title"),
|
|
172
|
+
body: zod_1.z.string().describe("Note body content"),
|
|
173
|
+
createdAt: zod_1.z.string().describe("ISO creation timestamp"),
|
|
174
|
+
}),
|
|
175
|
+
},
|
|
176
|
+
];
|
|
177
|
+
notes.tools = [
|
|
178
|
+
{
|
|
179
|
+
tool: {
|
|
180
|
+
name: "create-note",
|
|
181
|
+
usageDescription: "Creates a new note",
|
|
182
|
+
inputSchema: {
|
|
183
|
+
fields: [
|
|
184
|
+
{ name: "title", type: peers_sdk_1.FieldType.string, description: "Note title" },
|
|
185
|
+
{ name: "body", type: peers_sdk_1.FieldType.string, description: "Note body" },
|
|
186
|
+
],
|
|
187
|
+
},
|
|
188
|
+
outputSchema: {
|
|
189
|
+
fields: [{ name: "noteId", type: peers_sdk_1.FieldType.id, description: "Created note ID" }],
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
];
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
// ---------------------------------------------------------------------------
|
|
197
|
+
// consumer-pkg: consumes tasks-basic v1 + notes v1, provides dashboards
|
|
198
|
+
// ---------------------------------------------------------------------------
|
|
199
|
+
function defineConsumerPackage() {
|
|
200
|
+
return (0, peers_sdk_1.definePackage)((pkg) => {
|
|
201
|
+
pkg.packageId = (0, peers_sdk_1.newid)();
|
|
202
|
+
pkg.consumes(exports.TASKS_BASIC_CONTRACT_ID, 1);
|
|
203
|
+
pkg.consumes(exports.NOTES_CONTRACT_ID, 1);
|
|
204
|
+
const dashboards = pkg.contract(exports.DASHBOARDS_CONTRACT_ID, 1, "Dashboards");
|
|
205
|
+
dashboards.tables = [
|
|
206
|
+
{
|
|
207
|
+
metaData: {
|
|
208
|
+
name: "Dashboards",
|
|
209
|
+
description: "User-defined dashboards aggregating tasks and notes",
|
|
210
|
+
primaryKeyName: "dashboardId",
|
|
211
|
+
fields: [],
|
|
212
|
+
},
|
|
213
|
+
schema: zod_1.z.object({
|
|
214
|
+
dashboardId: zod_1.z.string().describe("Primary key"),
|
|
215
|
+
name: zod_1.z.string().describe("Dashboard display name"),
|
|
216
|
+
layout: zod_1.z.string().describe("JSON layout configuration"),
|
|
217
|
+
}),
|
|
218
|
+
},
|
|
219
|
+
];
|
|
220
|
+
dashboards.tools = [
|
|
221
|
+
{
|
|
222
|
+
tool: {
|
|
223
|
+
name: "create-dashboard",
|
|
224
|
+
usageDescription: "Creates a dashboard",
|
|
225
|
+
inputSchema: {
|
|
226
|
+
fields: [
|
|
227
|
+
{ name: "name", type: peers_sdk_1.FieldType.string, description: "Dashboard name" },
|
|
228
|
+
{ name: "layout", type: peers_sdk_1.FieldType.string, description: "Layout JSON" },
|
|
229
|
+
],
|
|
230
|
+
},
|
|
231
|
+
outputSchema: {
|
|
232
|
+
fields: [
|
|
233
|
+
{ name: "dashboardId", type: peers_sdk_1.FieldType.id, description: "Created dashboard ID" },
|
|
234
|
+
],
|
|
235
|
+
},
|
|
236
|
+
},
|
|
237
|
+
},
|
|
238
|
+
];
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=test-packages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-packages.js","sourceRoot":"","sources":["../../../src/__tests__/contracts/test-packages.ts"],"names":[],"mappings":"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"}
|
package/dist/system-tools.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peers-app/peers-device",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.6",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"repository": {
|
|
@@ -40,12 +40,12 @@
|
|
|
40
40
|
"zod-to-json-schema": "^3.24.5"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
43
|
-
"@peers-app/peers-sdk": "^0.16.
|
|
43
|
+
"@peers-app/peers-sdk": "^0.16.6"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@biomejs/biome": "2.3.11",
|
|
47
47
|
"@electron/rebuild": "^4.0.1",
|
|
48
|
-
"@peers-app/peers-sdk": "0.16.
|
|
48
|
+
"@peers-app/peers-sdk": "0.16.6",
|
|
49
49
|
"@types/diff-match-patch": "^1.0.36",
|
|
50
50
|
"@types/jest": "^29.5.13",
|
|
51
51
|
"@types/lodash": "^4.17.20",
|