@interop/was-client 0.27.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Collection.d.ts.map +1 -1
- package/dist/Collection.js +27 -66
- package/dist/Collection.js.map +1 -1
- package/dist/Resource.d.ts.map +1 -1
- package/dist/Resource.js +28 -6
- package/dist/Resource.js.map +1 -1
- package/dist/Space.d.ts.map +1 -1
- package/dist/Space.js +10 -25
- package/dist/Space.js.map +1 -1
- package/dist/WasClient.d.ts.map +1 -1
- package/dist/WasClient.js +9 -19
- package/dist/WasClient.js.map +1 -1
- package/dist/codec.d.ts +31 -5
- package/dist/codec.d.ts.map +1 -1
- package/dist/edv/EdvCodec.d.ts +9 -14
- package/dist/edv/EdvCodec.d.ts.map +1 -1
- package/dist/edv/EdvCodec.js +147 -71
- package/dist/edv/EdvCodec.js.map +1 -1
- package/dist/edv/WasTransport.d.ts +1 -2
- package/dist/edv/WasTransport.d.ts.map +1 -1
- package/dist/edv/WasTransport.js +19 -28
- package/dist/edv/WasTransport.js.map +1 -1
- package/dist/edv/constants.d.ts +11 -0
- package/dist/edv/constants.d.ts.map +1 -1
- package/dist/edv/constants.js +16 -4
- package/dist/edv/constants.js.map +1 -1
- package/dist/edv/docCipher.d.ts +10 -26
- package/dist/edv/docCipher.d.ts.map +1 -1
- package/dist/edv/docCipher.js +62 -135
- package/dist/edv/docCipher.js.map +1 -1
- package/dist/edv/epochCrypto.d.ts +0 -4
- package/dist/edv/epochCrypto.d.ts.map +1 -1
- package/dist/edv/epochCrypto.js +4 -4
- package/dist/edv/epochCrypto.js.map +1 -1
- package/dist/edv/epochKeys.d.ts.map +1 -1
- package/dist/edv/epochKeys.js +2 -4
- package/dist/edv/epochKeys.js.map +1 -1
- package/dist/edv/epochMac.d.ts.map +1 -1
- package/dist/edv/epochMac.js +4 -4
- package/dist/edv/epochMac.js.map +1 -1
- package/dist/edv/index.d.ts +3 -2
- package/dist/edv/index.d.ts.map +1 -1
- package/dist/edv/index.js +2 -1
- package/dist/edv/index.js.map +1 -1
- package/dist/edv/recipients.d.ts +13 -14
- package/dist/edv/recipients.d.ts.map +1 -1
- package/dist/edv/recipients.js +126 -99
- package/dist/edv/recipients.js.map +1 -1
- package/dist/errors.d.ts +29 -12
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +37 -65
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/internal/codec.d.ts +15 -12
- package/dist/internal/codec.d.ts.map +1 -1
- package/dist/internal/codec.js +4 -6
- package/dist/internal/codec.js.map +1 -1
- package/dist/internal/conditional.d.ts +9 -4
- package/dist/internal/conditional.d.ts.map +1 -1
- package/dist/internal/conditional.js +9 -2
- package/dist/internal/conditional.js.map +1 -1
- package/dist/internal/content.d.ts +28 -24
- package/dist/internal/content.d.ts.map +1 -1
- package/dist/internal/content.js +28 -13
- package/dist/internal/content.js.map +1 -1
- package/dist/internal/describe.d.ts +15 -2
- package/dist/internal/describe.d.ts.map +1 -1
- package/dist/internal/describe.js +17 -0
- package/dist/internal/describe.js.map +1 -1
- package/dist/internal/pagination.d.ts +20 -1
- package/dist/internal/pagination.d.ts.map +1 -1
- package/dist/internal/pagination.js +22 -0
- package/dist/internal/pagination.js.map +1 -1
- package/dist/internal/paths.d.ts +0 -11
- package/dist/internal/paths.d.ts.map +1 -1
- package/dist/internal/paths.js +20 -33
- package/dist/internal/paths.js.map +1 -1
- package/dist/internal/policy.d.ts.map +1 -1
- package/dist/internal/policy.js +2 -9
- package/dist/internal/policy.js.map +1 -1
- package/dist/internal/write.d.ts +50 -4
- package/dist/internal/write.d.ts.map +1 -1
- package/dist/internal/write.js +45 -0
- package/dist/internal/write.js.map +1 -1
- package/dist/sync/cid.d.ts.map +1 -1
- package/dist/sync/cid.js +8 -2
- package/dist/sync/cid.js.map +1 -1
- package/dist/sync/port.d.ts +9 -8
- package/dist/sync/port.d.ts.map +1 -1
- package/dist/sync/port.js +74 -70
- package/dist/sync/port.js.map +1 -1
- package/dist/sync/provisioning.d.ts +32 -16
- package/dist/sync/provisioning.d.ts.map +1 -1
- package/dist/sync/provisioning.js +51 -18
- package/dist/sync/provisioning.js.map +1 -1
- package/dist/sync/types.d.ts +7 -10
- package/dist/sync/types.d.ts.map +1 -1
- package/package.json +13 -13
|
@@ -1,41 +1,74 @@
|
|
|
1
|
+
// A direct module import (not the `./edv` subpath entry), so the crypto-free
|
|
2
|
+
// sync module does not pull the EDV crypto graph for one number.
|
|
3
|
+
import { EDV_SCHEME_VERSION } from '../edv/constants.js';
|
|
1
4
|
/**
|
|
2
5
|
* Ensures the controller's Space exists and one synced collection is
|
|
3
|
-
* configured
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* configured, without overwriting anything already there. The Space is
|
|
7
|
+
* described first and configured only when absent -- an existing Space keeps
|
|
8
|
+
* its name AND its controller, so `controllerDid` is used only at creation
|
|
9
|
+
* (a joined client re-running this never rewrites the description). The
|
|
10
|
+
* collection likewise: when absent, an `'edv'` collection is created with the
|
|
11
|
+
* encryption descriptor `{ scheme: 'edv', version: EDV_SCHEME_VERSION }`, so
|
|
12
|
+
* the server stores only ciphertext it can never decrypt and validates every
|
|
13
|
+
* write against the declared envelope wire format -- the same version the
|
|
14
|
+
* cipher binds into each envelope's AEAD-protected header, so descriptor and
|
|
15
|
+
* envelopes cannot drift; a `'plaintext'` collection is created without one,
|
|
16
|
+
* with `force` so the descriptor-less upsert can create a fresh collection
|
|
17
|
+
* (running full-tier, a 404 from the pre-merge describe really means absent).
|
|
18
|
+
* An existing collection that lacks a descriptor an `'edv'` spec calls for
|
|
19
|
+
* gets the late in-place declaration (set-once on the server); one that
|
|
20
|
+
* already carries a descriptor -- possibly with appended key epochs -- is
|
|
21
|
+
* left untouched, epochs and display name included. A public collection gets
|
|
22
|
+
* the collection-level world-read grant (`setPublic`, what makes a resource
|
|
23
|
+
* URL in it resolve for anyone) only when its policy does not already say so.
|
|
24
|
+
* Runs full-tier -- the client invokes its own root authority.
|
|
11
25
|
*
|
|
12
26
|
* @param options {object}
|
|
13
27
|
* @param options.was {WasClient}
|
|
14
28
|
* @param options.spaceId {string}
|
|
15
|
-
* @param options.controllerDid {string} the Space controller (e.g. `did:key`)
|
|
29
|
+
* @param options.controllerDid {string} the Space controller (e.g. `did:key`);
|
|
30
|
+
* used only when the Space does not exist yet
|
|
16
31
|
* @param options.collectionId {string} the WAS collection id
|
|
17
32
|
* @param [options.encryption] {'edv' | 'plaintext'} defaults to `'edv'`
|
|
18
33
|
* @param [options.isPublic] {boolean} grant collection-level world read
|
|
19
|
-
* @param [options.spaceName] {string} the Space display name
|
|
20
|
-
* `'WAS Space'`
|
|
21
|
-
* @param [options.collectionName] {string} the collection display name
|
|
22
|
-
* defaults to the collection id
|
|
34
|
+
* @param [options.spaceName] {string} the Space display name, applied only at
|
|
35
|
+
* Space creation; defaults to `'WAS Space'`
|
|
36
|
+
* @param [options.collectionName] {string} the collection display name,
|
|
37
|
+
* applied only at collection creation; defaults to the collection id
|
|
23
38
|
* @returns {Promise<void>}
|
|
24
39
|
*/
|
|
25
40
|
export async function ensureSpaceAndCollection({ was, spaceId, controllerDid, collectionId, encryption = 'edv', isPublic = false, spaceName = 'WAS Space', collectionName = collectionId }) {
|
|
26
41
|
const space = was.space(spaceId);
|
|
27
42
|
try {
|
|
28
|
-
await space.
|
|
43
|
+
if ((await space.describe()) === null) {
|
|
44
|
+
await space.configure({ name: spaceName, controller: controllerDid });
|
|
45
|
+
}
|
|
29
46
|
}
|
|
30
47
|
catch (err) {
|
|
31
48
|
throw new Error(`Failed to configure WAS space "${spaceId}" for "${controllerDid}".`, { cause: err });
|
|
32
49
|
}
|
|
33
50
|
try {
|
|
34
51
|
const collection = space.collection(collectionId);
|
|
35
|
-
await collection.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
52
|
+
const current = await collection.describe();
|
|
53
|
+
if (current === null) {
|
|
54
|
+
await collection.configure(encryption === 'edv'
|
|
55
|
+
? {
|
|
56
|
+
name: collectionName,
|
|
57
|
+
encryption: { scheme: 'edv', version: EDV_SCHEME_VERSION }
|
|
58
|
+
}
|
|
59
|
+
: { name: collectionName, force: true });
|
|
60
|
+
}
|
|
61
|
+
else if (encryption === 'edv' && current.encryption === undefined) {
|
|
62
|
+
// The late in-place declaration: adding a descriptor to a collection
|
|
63
|
+
// that lacks one is allowed (set-once), while re-sending one over an
|
|
64
|
+
// existing descriptor would drop its appended key epochs -- which is
|
|
65
|
+
// exactly why an existing descriptor is never touched.
|
|
66
|
+
await collection.configure({
|
|
67
|
+
name: current.name ?? collectionName,
|
|
68
|
+
encryption: { scheme: 'edv', version: EDV_SCHEME_VERSION }
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (isPublic && !(await collection.isPublic())) {
|
|
39
72
|
await collection.setPublic();
|
|
40
73
|
}
|
|
41
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provisioning.js","sourceRoot":"","sources":["../../src/sync/provisioning.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provisioning.js","sourceRoot":"","sources":["../../src/sync/provisioning.ts"],"names":[],"mappings":"AAaA,6EAA6E;AAC7E,iEAAiE;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,EAC7C,GAAG,EACH,OAAO,EACP,aAAa,EACb,YAAY,EACZ,UAAU,GAAG,KAAK,EAClB,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,WAAW,EACvB,cAAc,GAAG,YAAY,EAU9B;IACC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAEhC,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;YACtC,MAAM,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,kCAAkC,OAAO,UAAU,aAAa,IAAI,EACpE,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAA;QAC3C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,UAAU,CAAC,SAAS,CACxB,UAAU,KAAK,KAAK;gBAClB,CAAC,CAAC;oBACE,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE;iBAC3D;gBACH,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAC1C,CAAA;QACH,CAAC;aAAM,IAAI,UAAU,KAAK,KAAK,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpE,qEAAqE;YACrE,qEAAqE;YACrE,qEAAqE;YACrE,uDAAuD;YACvD,MAAM,UAAU,CAAC,SAAS,CAAC;gBACzB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,cAAc;gBACpC,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE;aAC3D,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,QAAQ,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YAC/C,MAAM,UAAU,CAAC,SAAS,EAAE,CAAA;QAC9B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,mCAAmC,YAAY,eAAe,OAAO,IAAI,EACzE,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;IACH,CAAC;AACH,CAAC"}
|
package/dist/sync/types.d.ts
CHANGED
|
@@ -40,16 +40,16 @@ export type WireDoc = ChangeDocument;
|
|
|
40
40
|
export type SyncPage = ChangesPage;
|
|
41
41
|
/**
|
|
42
42
|
* The current master state of a single resource, read back for the 412-conflict
|
|
43
|
-
* path ({@link WasSyncPort.get}).
|
|
44
|
-
*
|
|
45
|
-
* are populated from the resource's `/meta`
|
|
46
|
-
* with no metadata yet reports an
|
|
47
|
-
*
|
|
43
|
+
* path ({@link WasSyncPort.get}). An absent or tombstoned resource surfaces as
|
|
44
|
+
* `get` resolving `null`, never as a `MasterState`. `updatedAt`, `metaVersion`,
|
|
45
|
+
* `custom`, `createdBy`, and `epoch` are populated from the resource's `/meta`
|
|
46
|
+
* document when it exists; a resource with no metadata yet reports an
|
|
47
|
+
* epoch-zero `updatedAt` placeholder (a valid, sortable timestamp -- the
|
|
48
|
+
* change feed remains the authority on ordering).
|
|
48
49
|
*/
|
|
49
50
|
export interface MasterState {
|
|
50
51
|
version: number;
|
|
51
52
|
updatedAt: string;
|
|
52
|
-
deleted: boolean;
|
|
53
53
|
metaVersion?: number;
|
|
54
54
|
data?: Json;
|
|
55
55
|
custom?: Json;
|
|
@@ -74,10 +74,7 @@ export interface WasSyncPort {
|
|
|
74
74
|
query(options: {
|
|
75
75
|
checkpoint?: SyncCheckpoint;
|
|
76
76
|
limit: number;
|
|
77
|
-
}): Promise<
|
|
78
|
-
documents: WireDoc[];
|
|
79
|
-
checkpoint: SyncCheckpoint | null;
|
|
80
|
-
}>;
|
|
77
|
+
}): Promise<SyncPage>;
|
|
81
78
|
/**
|
|
82
79
|
* Conditionally writes the content body verbatim (`PUT /:id`). Pass
|
|
83
80
|
* `ifNoneMatch: true` for create-if-absent, or `ifMatch` (a quoted ETag over
|
package/dist/sync/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sync/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,WAAW,EACZ,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAEvC,YAAY,EAAE,IAAI,EAAE,CAAA;AAEpB;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAAA;AAE9C;;;;;;;;GAQG;AACH,MAAM,MAAM,OAAO,GAAG,cAAc,CAAA;AAEpC;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAA;AAElC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sync/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,WAAW,EACZ,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAEvC,YAAY,EAAE,IAAI,EAAE,CAAA;AAEpB;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAAA;AAE9C;;;;;;;;GAQG;AACH,MAAM,MAAM,OAAO,GAAG,cAAc,CAAA;AAEpC;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAA;AAElC;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,MAAM,CAAC,EAAE,IAAI,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE;QACb,UAAU,CAAC,EAAE,cAAc,CAAA;QAC3B,KAAK,EAAE,MAAM,CAAA;KACd,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAErB;;;;;;;OAOG;IACH,UAAU,CAAC,OAAO,EAAE;QAClB,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,IAAI,CAAA;QACV,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEnB;;;;;;OAMG;IACH,aAAa,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEzE;;;;OAIG;IACH,OAAO,CAAC,CAAC,OAAO,EAAE;QAChB,EAAE,EAAE,MAAM,CAAA;QACV,MAAM,EAAE,IAAI,CAAA;QACZ,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,WAAW,CAAC,EAAE,OAAO,CAAA;KACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjB;;;;;OAKG;IACH,GAAG,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;CAC1D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,OAAO,EAAE;QACf,IAAI,EAAE,IAAI,CAAA;KACX,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3D,aAAa,CAAC,CAAC,OAAO,EAAE;QACtB,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,IAAI,CAAA;QACV,OAAO,EAAE,IAAI,CAAA;KACd,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3D,OAAO,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACpD"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@interop/was-client",
|
|
3
3
|
"description": "A developer-friendly client for Wallet Attached Storage (WAS) servers.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.28.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "pnpm run clear && tsc",
|
|
@@ -56,25 +56,25 @@
|
|
|
56
56
|
"@interop/minimal-cipher": "^7.8.1",
|
|
57
57
|
"@interop/storage-core": "^0.3.13",
|
|
58
58
|
"@interop/x25519-key-agreement-key": "^5.2.1",
|
|
59
|
-
"@noble/hashes": "^2.
|
|
59
|
+
"@noble/hashes": "^2.3.0",
|
|
60
60
|
"@scure/base": "^2.2.0",
|
|
61
61
|
"json-canonicalize": "^2.0.0"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@eslint/js": "^10.0.1",
|
|
65
65
|
"@interop/ed25519-verification-key": "^8.0.3",
|
|
66
|
-
"@playwright/test": "^1.
|
|
67
|
-
"@types/node": "^
|
|
68
|
-
"@vitest/coverage-v8": "^4.1.
|
|
69
|
-
"eslint": "^10.
|
|
66
|
+
"@playwright/test": "^1.62.1",
|
|
67
|
+
"@types/node": "^26.1.2",
|
|
68
|
+
"@vitest/coverage-v8": "^4.1.10",
|
|
69
|
+
"eslint": "^10.8.0",
|
|
70
70
|
"eslint-config-prettier": "^10.1.8",
|
|
71
|
-
"globals": "^17.
|
|
72
|
-
"prettier": "^3.
|
|
71
|
+
"globals": "^17.9.0",
|
|
72
|
+
"prettier": "^3.9.6",
|
|
73
73
|
"rimraf": "^6.1.3",
|
|
74
|
-
"typescript": "
|
|
75
|
-
"typescript-eslint": "^8.
|
|
76
|
-
"vite": "^8.
|
|
77
|
-
"vitest": "^4.1.
|
|
74
|
+
"typescript": "~6.0.3",
|
|
75
|
+
"typescript-eslint": "^8.66.0",
|
|
76
|
+
"vite": "^8.2.1",
|
|
77
|
+
"vitest": "^4.1.10"
|
|
78
78
|
},
|
|
79
79
|
"publishConfig": {
|
|
80
80
|
"access": "public",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"zcap",
|
|
87
87
|
"ezcap"
|
|
88
88
|
],
|
|
89
|
-
"packageManager": "pnpm@11.
|
|
89
|
+
"packageManager": "pnpm@11.20.0",
|
|
90
90
|
"engines": {
|
|
91
91
|
"node": ">=24.0"
|
|
92
92
|
},
|