From 3499c52f7c96696d008a6743814af209587ecf3d Mon Sep 17 00:00:00 2001 From: Xinyu Ma Date: Sat, 10 Feb 2024 00:11:35 -0800 Subject: [PATCH] Update dependencies --- deno.lock | 2 +- package.json | 6 +-- pnpm-lock.yaml | 89 ++++-------------------------------- src/sync-agent/deliveries.ts | 38 +++++++-------- src/sync-agent/sync-agent.ts | 12 ++--- 5 files changed, 39 insertions(+), 108 deletions(-) diff --git a/deno.lock b/deno.lock index 0e5c9a7..b5720e3 100644 --- a/deno.lock +++ b/deno.lock @@ -204,7 +204,7 @@ "npm:streaming-iterables@^8.0.1", "npm:tslib@^2.6.2", "npm:y-protocols@^1.0.6", - "npm:yjs@^13.6.11" + "npm:yjs@^13.6.12" ] } } diff --git a/package.json b/package.json index 7cf8263..d557f80 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "jose": "^5.2.1", "tslib": "^2.6.2", "y-protocols": "^1.0.6", - "yjs": "^13.6.11" + "yjs": "^13.6.12" }, "devDependencies": { "@ndn/endpoint": "https://ndnts-nightly.ndn.today/endpoint.tgz", @@ -37,7 +37,7 @@ "@ndn/node-transport": "https://ndnts-nightly.ndn.today/node-transport.tgz", "@ndn/packet": "https://ndnts-nightly.ndn.today/packet.tgz", "@ndn/segmented-object": "https://ndnts-nightly.ndn.today/segmented-object.tgz", - "@ndn/sync": "https://ndnts-nightly.ndn.today/sync.tgz", + "@ndn/svs": "https://ndnts-nightly.ndn.today/svs.tgz", "@ndn/tlv": "https://ndnts-nightly.ndn.today/tlv.tgz", "@ndn/util": "https://ndnts-nightly.ndn.today/util.tgz", "@ndn/ws-transport": "https://ndnts-nightly.ndn.today/ws-transport.tgz", @@ -59,7 +59,7 @@ "@ndn/node-transport": ">=0.0.0", "@ndn/packet": ">=0.0.0", "@ndn/segmented-object": ">=0.0.0", - "@ndn/sync": ">=0.0.0", + "@ndn/svs": ">=0.0.0", "@ndn/tlv": ">=0.0.0", "@ndn/util": ">=0.0.0", "@ndn/ws-transport": ">=0.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3dc166d..e6e424c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,10 +16,10 @@ dependencies: version: 2.6.2 y-protocols: specifier: ^1.0.6 - version: 1.0.6(yjs@13.6.11) + version: 1.0.6(yjs@13.6.12) yjs: - specifier: ^13.6.11 - version: 13.6.11 + specifier: ^13.6.12 + version: 13.6.12 devDependencies: '@ndn/endpoint': @@ -55,9 +55,9 @@ devDependencies: '@ndn/segmented-object': specifier: https://ndnts-nightly.ndn.today/segmented-object.tgz version: '@ndnts-nightly.ndn.today/segmented-object.tgz' - '@ndn/sync': - specifier: https://ndnts-nightly.ndn.today/sync.tgz - version: '@ndnts-nightly.ndn.today/sync.tgz' + '@ndn/svs': + specifier: https://ndnts-nightly.ndn.today/svs.tgz + version: '@ndnts-nightly.ndn.today/svs.tgz' '@ndn/tlv': specifier: https://ndnts-nightly.ndn.today/tlv.tgz version: '@ndnts-nightly.ndn.today/tlv.tgz' @@ -177,10 +177,6 @@ packages: uri-js: 4.4.1 dev: true - /applymixins@1.1.0: - resolution: {integrity: sha512-mLvdWWGyCbRJyLC0BJCRu1m/642aVVq3kIwD1MWwmdedkVGwXVrx5D85EhkAtb4NgkCfVTDwacIhTDeX3gu55w==} - dev: true - /b64-lite@1.4.0: resolution: {integrity: sha512-aHe97M7DXt+dkpa8fHlCcm1CnskAHrJqEfMI0KN7dwqlzml/aUe1AGt6lk51HzrSfVD67xOso84sOpr+0wIe2w==} dependencies: @@ -503,11 +499,6 @@ packages: obliterator: 2.0.4 dev: true - /murmurhash3js-revisited@3.0.0: - resolution: {integrity: sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==} - engines: {node: '>=8.0.0'} - dev: true - /node-gyp-build@4.8.0: resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} hasBin: true @@ -559,10 +550,6 @@ packages: engines: {node: '>=14.16'} dev: true - /pako@2.1.0: - resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} - dev: true - /parseley@0.12.1: resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} dependencies: @@ -735,18 +722,18 @@ packages: bufferutil: 4.0.8 dev: true - /y-protocols@1.0.6(yjs@13.6.11): + /y-protocols@1.0.6(yjs@13.6.12): resolution: {integrity: sha512-vHRF2L6iT3rwj1jub/K5tYcTT/mEYDUppgNPXwp8fmLpui9f7Yeq3OEtTLVF012j39QnV+KEQpNqoN7CWU7Y9Q==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} peerDependencies: yjs: ^13.0.0 dependencies: lib0: 0.2.88 - yjs: 13.6.11 + yjs: 13.6.12 dev: false - /yjs@13.6.11: - resolution: {integrity: sha512-FvRRJKX9u270dOLkllGF/UDCWwmIv2Z+ucM4v1QO1TuxdmoiMnSUXH1HAcOKOrkBEhQtPTkxep7tD2DrQB+l0g==} + /yjs@13.6.12: + resolution: {integrity: sha512-KOT8ILoyVH2f/PxPadeu5kVVS055D1r3x1iFfJVJzFdnN98pVGM8H07NcKsO+fG3F7/0tf30Vnokf5YIqhU/iw==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} dependencies: lib0: 0.2.88 @@ -925,29 +912,6 @@ packages: type-fest: 4.10.2 dev: true - '@ndnts-nightly.ndn.today/psync.tgz': - resolution: {tarball: https://ndnts-nightly.ndn.today/psync.tgz} - name: '@ndn/psync' - version: 0.0.20240209-nightly-9b234f4 - dependencies: - '@ndn/endpoint': '@ndnts-nightly.ndn.today/endpoint.tgz' - '@ndn/naming-convention2': '@ndnts-nightly.ndn.today/naming-convention2.tgz' - '@ndn/packet': '@ndnts-nightly.ndn.today/packet.tgz' - '@ndn/segmented-object': '@ndnts-nightly.ndn.today/segmented-object.tgz' - '@ndn/sync-api': '@ndnts-nightly.ndn.today/sync-api.tgz' - '@ndn/tlv': '@ndnts-nightly.ndn.today/tlv.tgz' - '@ndn/util': '@ndnts-nightly.ndn.today/util.tgz' - '@yoursunny/psync-bloom': github.com/yoursunny/PSyncBloom-wasm/d4f18babd44f142021046d5a76ae92efbc5a49d3 - applymixins: 1.1.0 - mnemonist: 0.39.8 - murmurhash3js-revisited: 3.0.0 - obliterator: 2.0.4 - p-defer: 4.0.0 - pako: 2.1.0 - tslib: 2.6.2 - typescript-event-target: 1.1.0 - dev: true - '@ndnts-nightly.ndn.today/rdr.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/rdr.tgz} name: '@ndn/rdr' @@ -1032,33 +996,6 @@ packages: typescript-event-target: 1.1.0 dev: true - '@ndnts-nightly.ndn.today/sync.tgz': - resolution: {tarball: https://ndnts-nightly.ndn.today/sync.tgz} - name: '@ndn/sync' - version: 0.0.20240209-nightly-9b234f4 - dependencies: - '@ndn/endpoint': '@ndnts-nightly.ndn.today/endpoint.tgz' - '@ndn/naming-convention2': '@ndnts-nightly.ndn.today/naming-convention2.tgz' - '@ndn/packet': '@ndnts-nightly.ndn.today/packet.tgz' - '@ndn/psync': '@ndnts-nightly.ndn.today/psync.tgz' - '@ndn/repo-api': '@ndnts-nightly.ndn.today/repo-api.tgz' - '@ndn/segmented-object': '@ndnts-nightly.ndn.today/segmented-object.tgz' - '@ndn/svs': '@ndnts-nightly.ndn.today/svs.tgz' - '@ndn/sync-api': '@ndnts-nightly.ndn.today/sync-api.tgz' - '@ndn/tlv': '@ndnts-nightly.ndn.today/tlv.tgz' - '@ndn/util': '@ndnts-nightly.ndn.today/util.tgz' - '@yoursunny/psync-bloom': github.com/yoursunny/PSyncBloom-wasm/d4f18babd44f142021046d5a76ae92efbc5a49d3 - applymixins: 1.1.0 - mnemonist: 0.39.8 - murmurhash3js-revisited: 3.0.0 - obliterator: 2.0.4 - p-defer: 4.0.0 - pako: 2.1.0 - streaming-iterables: 8.0.1 - tslib: 2.6.2 - typescript-event-target: 1.1.0 - dev: true - '@ndnts-nightly.ndn.today/tlv.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/tlv.tgz} name: '@ndn/tlv' @@ -1102,9 +1039,3 @@ packages: transitivePeerDependencies: - utf-8-validate dev: true - - github.com/yoursunny/PSyncBloom-wasm/d4f18babd44f142021046d5a76ae92efbc5a49d3: - resolution: {tarball: https://codeload.github.com/yoursunny/PSyncBloom-wasm/tar.gz/d4f18babd44f142021046d5a76ae92efbc5a49d3} - name: '@yoursunny/psync-bloom' - version: 0.0.0 - dev: true diff --git a/src/sync-agent/deliveries.ts b/src/sync-agent/deliveries.ts index b512657..eaf3d23 100644 --- a/src/sync-agent/deliveries.ts +++ b/src/sync-agent/deliveries.ts @@ -1,5 +1,5 @@ import { type Endpoint } from '@ndn/endpoint'; -import { SvStateVector, SvSync, type SyncNode, type SyncUpdate } from '@ndn/sync'; +import { StateVector, SvSync, type SyncNode, type SyncUpdate } from '@ndn/svs'; import { Data, digestSigning, Name, Signer, type Verifier } from '@ndn/packet'; import { SequenceNum } from '@ndn/naming-convention2'; import { Decoder, Encoder } from '@ndn/tlv'; @@ -8,17 +8,17 @@ import { getNamespace } from './namespace.ts'; import { Storage } from '../storage/mod.ts'; import { panic } from '../utils/panic.ts'; -export function encodeSyncState(state: SvStateVector): Uint8Array { +export function encodeSyncState(state: StateVector): Uint8Array { return Encoder.encode(state); } -export function parseSyncState(vector: Uint8Array): SvStateVector { +export function parseSyncState(vector: Uint8Array): StateVector { try { - const ret = Decoder.decode(vector, SvStateVector); + const ret = Decoder.decode(vector, StateVector); return ret; } catch (e) { - console.error(`Unable to parse SvStateVector: `, e); - return new SvStateVector(); + console.error(`Unable to parse StateVector: `, e); + return new StateVector(); } } @@ -42,7 +42,7 @@ export abstract class SyncDelivery implements AsyncDisposable { private _startPromiseResolve?: () => void; protected _onReset?: () => void; protected _abortController: AbortController; - protected _lastTillNow: SvStateVector; + protected _lastTillNow: StateVector; // TODO: Use options to configure parameters constructor( @@ -52,7 +52,7 @@ export abstract class SyncDelivery implements AsyncDisposable { readonly signer: Signer, readonly verifier: Verifier, onUpdatePromise: Promise, - protected state?: SvStateVector, + protected state?: StateVector, ) { // const nodeId = getNamespace().nodeIdFromSigner(this.signer.name) this.baseName = getNamespace().baseName(nodeId, syncPrefix); @@ -63,14 +63,14 @@ export abstract class SyncDelivery implements AsyncDisposable { } }); this._abortController = new AbortController(); - this._lastTillNow = new SvStateVector(this.state); + this._lastTillNow = new StateVector(this.state); SvSync.create({ endpoint: endpoint, syncPrefix: syncPrefix, signer: signer, verifier: verifier, - initialStateVector: new SvStateVector(state), + initialStateVector: new StateVector(state), initialize: async (svSync) => { this._syncInst = svSync; this._syncInst.addEventListener('update', (update) => this.handleSyncUpdate(update)); @@ -101,7 +101,7 @@ export abstract class SyncDelivery implements AsyncDisposable { } public get syncState() { - return new SvStateVector(this.state); + return new StateVector(this.state); } /** @@ -155,7 +155,7 @@ export abstract class SyncDelivery implements AsyncDisposable { console.warn('A Sync reset is scheduled.'); this._abortController.abort('Reset'); this._abortController = new AbortController(); - this._lastTillNow = new SvStateVector(this.state); + this._lastTillNow = new StateVector(this.state); this._syncInst.close(); this._syncNode = undefined; const svSync = await SvSync.create({ @@ -163,7 +163,7 @@ export abstract class SyncDelivery implements AsyncDisposable { syncPrefix: this.syncPrefix, signer: digestSigning, // We can do so because the state has not been set - initialStateVector: new SvStateVector(this.state), + initialStateVector: new StateVector(this.state), initialize: (svSync) => { this._syncInst = svSync; this._syncInst.addEventListener('update', (update) => this.handleSyncUpdate(update)); @@ -227,7 +227,7 @@ export class AtLeastOnceDelivery extends SyncDelivery { readonly verifier: Verifier, readonly storage: Storage, onUpdatePromise: Promise, - protected state?: SvStateVector, + protected state?: StateVector, ) { super(nodeId, endpoint, syncPrefix, signer, verifier, onUpdatePromise, state); } @@ -263,7 +263,7 @@ export class AtLeastOnceDelivery extends SyncDelivery { // Callback // AtLeastOnce is required to have the callback acknowledged - // before writing the new SvStateVector into the storage + // before writing the new StateVector into the storage await this._onUpdate!(data.content, update.id, this); } } catch (error) { @@ -358,7 +358,7 @@ export class AtLeastOnceDelivery extends SyncDelivery { // const nodeId = getNamespace().nodeIdFromSigner(signer.name) const baseName = getNamespace().baseName(nodeId, syncPrefix); const encoded = await storage.get(getNamespace().syncStateKey(baseName)); - let syncState = new SvStateVector(); + let syncState = new StateVector(); if (encoded) { syncState = parseSyncState(encoded); } @@ -369,7 +369,7 @@ export class AtLeastOnceDelivery extends SyncDelivery { return await super.destroy(this.storage); } - async replay(startFrom: SvStateVector, callback: UpdateEvent) { + async replay(startFrom: StateVector, callback: UpdateEvent) { for (const [key, last] of this.syncState) { const first = startFrom.get(key); const prefix = getNamespace().baseName(key, this.syncPrefix); @@ -401,7 +401,7 @@ export class LatestOnlyDelivery extends SyncDelivery { readonly pktStorage: Storage, readonly stateStorage: Storage, readonly onUpdatePromise: Promise, - protected state?: SvStateVector, + protected state?: StateVector, ) { super(nodeId, endpoint, syncPrefix, signer, verifier, onUpdatePromise, state); } @@ -467,7 +467,7 @@ export class LatestOnlyDelivery extends SyncDelivery { // const nodeId = getNamespace().nodeIdFromSigner(signer.name) const baseName = getNamespace().baseName(nodeId, syncPrefix); const encoded = await stateStorage.get(getNamespace().syncStateKey(baseName)); - let syncState = new SvStateVector(); + let syncState = new StateVector(); if (encoded) { syncState = parseSyncState(encoded); } diff --git a/src/sync-agent/sync-agent.ts b/src/sync-agent/sync-agent.ts index 27c76ee..6a216c9 100644 --- a/src/sync-agent/sync-agent.ts +++ b/src/sync-agent/sync-agent.ts @@ -1,12 +1,12 @@ import { Endpoint } from '@ndn/endpoint'; import { Data, type Interest, Name, Signer, type Verifier } from '@ndn/packet'; import { Decoder, Encoder } from '@ndn/tlv'; -import { DataProducer, fetch, makeChunkSource } from '@ndn/segmented-object'; +import { BufferChunkSource, DataProducer, fetch } from '@ndn/segmented-object'; import { concatBuffers } from '@ndn/util'; import { AtLeastOnceDelivery, LatestOnlyDelivery, UpdateEvent } from './deliveries.ts'; import { getNamespace } from './namespace.ts'; import { InMemoryStorage, Storage } from '../storage/mod.ts'; -import { SvStateVector } from '@ndn/sync'; +import { StateVector } from '@ndn/svs'; import { panic } from '../utils/panic.ts'; export type ChannelType = 'update' | 'blob' | 'status' | 'blobUpdate'; @@ -246,7 +246,7 @@ export class SyncAgent implements AsyncDisposable { await this.persistStorage.set(name.toString(), blobContent); // Put segmented packets - const producer = DataProducer.create(makeChunkSource(blobContent), name, { signer: this.signer }); + const producer = DataProducer.create(new BufferChunkSource(blobContent), name, { signer: this.signer }); for await (const segment of producer.listData()) { this.persistStorage.set(segment.name.toString(), Encoder.encode(segment)); } @@ -329,13 +329,13 @@ export class SyncAgent implements AsyncDisposable { /** * Replay existing updates under specific topic */ - async replayUpdates(topic: string, startFrom?: SvStateVector) { + async replayUpdates(topic: string, startFrom?: StateVector) { const listener = this.listeners[`update.${topic}`]; if (!listener) { throw new Error('You cannot call replayUpdates without a listener'); } - const start = startFrom ?? new SvStateVector(); + const start = startFrom ?? new StateVector(); await this.atLeastOnce.replay(start, async (wire, id) => { const inner = this.parseInnerData(wire); if (!inner) { @@ -363,7 +363,7 @@ export class SyncAgent implements AsyncDisposable { } public getUpdateSyncSV() { - return new SvStateVector(this.atLeastOnce.syncState); + return new StateVector(this.atLeastOnce.syncState); } static async create(