@saga-sync/client 0.1.3 → 0.2.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/LICENSE +674 -0
- package/README.md +248 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +61 -7
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +13 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +89 -6
- package/dist/client.js.map +1 -1
- package/dist/fetch.d.ts +3 -3
- package/dist/fetch.d.ts.map +1 -1
- package/dist/fetch.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +14 -5
- package/dist/manifest.js.map +1 -1
- package/dist/verify.d.ts +2 -2
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +51 -15
- package/dist/verify.js.map +1 -1
- package/package.json +4 -4
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAKjD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAqDhF,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,+EAA+E;AAC/E,+EAA+E;AAC/E,uCAAuC;AACvC,MAAM,OAAO,MAAM;IACA,MAAM,CAAQ;IACd,KAAK,CAAoB;IACzB,WAAW,CAAS;IACpB,SAAS,CAAgC;IAE1D,YAAY,IAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,mBAAmB,CAAC;QAC3D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,uBAAuB;IACvB,aAAa,CAAC,MAAc,YAAY;QACtC,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,yEAAyE;IACzE,iEAAiE;IACjE,gBAAgB;IAChB,UAAU,CAAC,IAAe,EAAE,OAA0B,EAAE;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED,6EAA6E;IAC7E,+EAA+E;IAC/E,6EAA6E;IAC7E,2EAA2E;IAC3E,oEAAoE;IACpE,KAAK,CAAC,aAAa,CAAC,MAAe;QACjC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACvD,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7F,CAAC;IAED,gFAAgF;IAChF,sEAAsE;IACtE,KAAK,CAAC,iBAAiB,CAAC,QAA0B;QAChD,OAAO,UAAU,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,4EAA4E;IAC5E,wEAAwE;IACxE,8EAA8E;IAC9E,8EAA8E;IAC9E,sCAAsC;IACtC,KAAK,CAAC,CAAC,YAAY,CACjB,MAAoB,EACpB,OAAsB,EAAE;QAExB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5C,IAAI,UAAkB,CAAC;QACvB,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;YACJ,CAAC;YACD,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC1C,aAAa,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,CAAC;QACD,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;QACpF,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;QACvE,MAAM,WAAW,GAAG,cAAc,CAChC,UAAU,EACV,aAAa,CAAC,SAAS,EACvB,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACrC,aAAa,EACb,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CACzB,CAAC;QACF,MAAM,SAAS,GAAG,cAAc,CAC9B,UAAU,EACV,aAAa,CAAC,WAAW,EACzB,QAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,EACvC,gBAAgB,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CACpB,CAAC;QACF,MAAM,IAAI,GAAG,CAAC,CAAkB,EAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;QAE7E,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,KAAK,MAAM,KAAK,IAAI,MAAM;gBAAE,IAAI,IAAI,CAAC,KAAK,CAAC;oBAAE,MAAM,KAAK,CAAC;QAC3D,CAAC;QAED,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACtD,KAAK,MAAM,KAAK,IAAI,MAAM;gBAAE,IAAI,IAAI,CAAC,KAAK,CAAC;oBAAE,MAAM,KAAK,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,oEAAoE;IACpE,sCAAsC;IAC9B,KAAK,CAAC,WAAW,CAAC,IAAe;QACvC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,MAAM;gBAAE,OAAO,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC5D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4EAA4E;IAC5E,qEAAqE;IACrE,wEAAwE;IACxE,uEAAuE;IACvE,4BAA4B;IACpB,KAAK,CAAC,CAAC,kBAAkB,CAC/B,KAAkB;QAElB,MAAM,KAAK,GAAiC,EAAE,CAAC;QAC/C,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,EAAG,CAAC;YACpC,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAE,CAAC,CAAC,CAAC;YACtE,MAAM,MAAM,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAED,+EAA+E;AAC/E,+EAA+E;AAC/E,4DAA4D;AAC5D,SAAS,aAAa,CAAC,EAAU,EAAE,MAAc;IAC/C,OAAO,EAAE,KAAK,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,mBAAmB;AACnB,SAAS,UAAU,CAAC,QAAkB,EAAE,QAA0B;IAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAChE,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,GAAG,KAAK,SAAS,IAAI,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,0CAA0C,QAAQ,CAAC,OAAO,GAAG,EAAE,mBAAmB,CACnF,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,yBAAyB,QAAQ,CAAC,OAAO,GAAG,EAAE,4BAA4B;YACxE,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC;AACrB,CAAC;AAED,+EAA+E;AAC/E,qEAAqE;AACrE,SAAS,YAAY,CAAC,CAAM,EAAE,CAAM;IAClC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,kFAAkF;AAClF,gFAAgF;AAChF,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,SAAS,cAAc,CACrB,UAAkB,EAClB,SAA4B,EAC5B,OAA0B,EAC1B,KAAa,EACb,IAAoC;IAEpC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC5D,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,WAAW,UAAU,oBAAoB,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBACvE,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,8EAA8E;IAC9E,6EAA6E;IAC7E,sCAAsC;IACtC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAClF,CAAC"}
|
package/dist/fetch.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CanonicalRecord } from "@saga-sync/core";
|
|
2
2
|
import type { Store } from "@saga-sync/core";
|
|
3
3
|
import type { ChunkMeta } from "@saga-sync/core";
|
|
4
4
|
export declare class ChunkNotFoundError extends Error {
|
|
5
5
|
readonly meta: ChunkMeta;
|
|
6
6
|
constructor(meta: ChunkMeta);
|
|
7
7
|
}
|
|
8
|
-
export declare function decodeAndVerify(compressed: Uint8Array, meta: ChunkMeta): Promise<
|
|
9
|
-
export declare function fetchChunkFrom(store: Store, meta: ChunkMeta): Promise<
|
|
8
|
+
export declare function decodeAndVerify(compressed: Uint8Array, meta: ChunkMeta): Promise<CanonicalRecord[]>;
|
|
9
|
+
export declare function fetchChunkFrom(store: Store, meta: ChunkMeta): Promise<CanonicalRecord[]>;
|
|
10
10
|
//# sourceMappingURL=fetch.d.ts.map
|
package/dist/fetch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAMjD,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;gBACb,IAAI,EAAE,SAAS;CAK5B;AAiBD,wBAAsB,eAAe,CACnC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,eAAe,EAAE,CAAC,CAc5B;AAKD,wBAAsB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAI9F"}
|
package/dist/fetch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE9D,yEAAyE;AACzE,yEAAyE;AACzE,iFAAiF;AACjF,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,CAAY;IACzB,YAAY,IAAe;QACzB,KAAK,CAAC,yBAAyB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,+EAA+E;AAC/E,4EAA4E;AAC5E,+EAA+E;AAC/E,KAAK,UAAU,MAAM,CAAC,IAAgB;IACpC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACtF,OAAO,IAAI,UAAU,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;AAE/B,iFAAiF;AACjF,kFAAkF;AAClF,mFAAmF;AACnF,oFAAoF;AACpF,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAsB,EACtB,IAAe;IAEf,wEAAwE;IACxE,wEAAwE;IACxE,oDAAoD;IACpD,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAC5F,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACjC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI;SAChB,MAAM,CAAC,YAAY,CAAC;SACpB,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE9D,yEAAyE;AACzE,yEAAyE;AACzE,iFAAiF;AACjF,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,CAAY;IACzB,YAAY,IAAe;QACzB,KAAK,CAAC,yBAAyB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,+EAA+E;AAC/E,4EAA4E;AAC5E,+EAA+E;AAC/E,KAAK,UAAU,MAAM,CAAC,IAAgB;IACpC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACtF,OAAO,IAAI,UAAU,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;AAE/B,iFAAiF;AACjF,kFAAkF;AAClF,mFAAmF;AACnF,oFAAoF;AACpF,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAsB,EACtB,IAAe;IAEf,wEAAwE;IACxE,wEAAwE;IACxE,oDAAoD;IACpD,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAC5F,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACjC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI;SAChB,MAAM,CAAC,YAAY,CAAC;SACpB,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC,CAAC;IACtD,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gEAAgE;AAChE,6EAA6E;AAC7E,uCAAuC;AACvC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAY,EAAE,IAAe;IAChE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACpD,OAAO,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Client } from "./client.js";
|
|
2
|
-
export type { ClientOptions, StreamOptions } from "./client.js";
|
|
2
|
+
export type { ClientOptions, StreamOptions, ProtocolSelector, StreamTarget } from "./client.js";
|
|
3
3
|
export { HttpStore } from "@saga-sync/core";
|
|
4
4
|
export type { Store } from "@saga-sync/core";
|
|
5
5
|
export { decodeAndVerify, fetchChunkFrom, ChunkNotFoundError } from "./fetch.js";
|
|
@@ -7,5 +7,6 @@ export { verifyDigest, DigestMismatchError } from "./verify.js";
|
|
|
7
7
|
export { loadManifest } from "./manifest.js";
|
|
8
8
|
export type { ChunkMeta, ManifestData, LoadManifestOptions } from "./manifest.js";
|
|
9
9
|
export { verifyManifestSignature, ManifestSignatureError } from "@saga-sync/core";
|
|
10
|
-
export type { CanonicalEvent } from "@saga-sync/core";
|
|
10
|
+
export type { CanonicalEvent, CanonicalEntity, CanonicalRecord } from "@saga-sync/core";
|
|
11
|
+
export { isEntityRecord } from "@saga-sync/core";
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGlF,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAElF,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -13,4 +13,5 @@ export { verifyDigest, DigestMismatchError } from "./verify.js";
|
|
|
13
13
|
export { loadManifest } from "./manifest.js";
|
|
14
14
|
// Manifest signature verification (Ed25519) — consumers pin a public key.
|
|
15
15
|
export { verifyManifestSignature, ManifestSignatureError } from "@saga-sync/core";
|
|
16
|
+
export { isEntityRecord } from "@saga-sync/core";
|
|
16
17
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,qEAAqE;AACrE,6EAA6E;AAC7E,0EAA0E;AAC1E,6EAA6E;AAC7E,gFAAgF;AAChF,mBAAmB;AAEnB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,kDAAkD;AAClD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,0EAA0E;AAC1E,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,qEAAqE;AACrE,6EAA6E;AAC7E,0EAA0E;AAC1E,6EAA6E;AAC7E,gFAAgF;AAChF,mBAAmB;AAEnB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,kDAAkD;AAClD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,0EAA0E;AAC1E,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGlF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/manifest.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Manifest as PublisherManifest } from "@saga-sync/core";
|
|
|
3
3
|
import type { ChunkMeta } from "@saga-sync/core";
|
|
4
4
|
export type { ChunkMeta, ManifestData } from "@saga-sync/core";
|
|
5
5
|
export type LoadManifestOptions = {
|
|
6
|
-
publicKey?: string;
|
|
6
|
+
publicKey?: string | string[];
|
|
7
7
|
};
|
|
8
8
|
export declare function loadManifest(store: Store, key?: string, opts?: LoadManifestOptions): Promise<PublisherManifest>;
|
|
9
9
|
export declare function selectSealedChunks(chunks: ChunkMeta[], filter?: {
|
package/dist/manifest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAUjD,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAAG;IAUhC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC/B,CAAC;AAMF,wBAAsB,YAAY,CAChC,KAAK,EAAE,KAAK,EACZ,GAAG,GAAE,MAAqB,EAC1B,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAuB5B;AAMD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EAAE,EACnB,MAAM,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD,SAAS,EAAE,CAUb;AAGD,wBAAgB,aAAa,CAC3B,GAAG,EAAE,SAAS,GAAG,SAAS,EAC1B,MAAM,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD,SAAS,GAAG,SAAS,CASvB"}
|
package/dist/manifest.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Manifest as PublisherManifest } from "@saga-sync/core";
|
|
2
|
-
import { ManifestSignatureError,
|
|
2
|
+
import { ManifestSignatureError, parseSignatureEnvelope, verifyManifestSignatures, } from "@saga-sync/core";
|
|
3
3
|
// Load and parse the manifest from a store. Throws if the manifest is absent
|
|
4
4
|
// (the publisher has not run yet, or the URL is wrong) or malformed. If a
|
|
5
5
|
// publicKey is supplied, the signature is verified first — over the raw bytes,
|
|
@@ -8,12 +8,21 @@ export async function loadManifest(store, key = "index.json", opts = {}) {
|
|
|
8
8
|
const raw = await store.get(key);
|
|
9
9
|
if (!raw)
|
|
10
10
|
throw new Error(`manifest not found at key "${key}"`);
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
const publicKeys = opts.publicKey === undefined
|
|
12
|
+
? []
|
|
13
|
+
: Array.isArray(opts.publicKey)
|
|
14
|
+
? opts.publicKey
|
|
15
|
+
: [opts.publicKey];
|
|
16
|
+
if (publicKeys.length > 0) {
|
|
17
|
+
// Prefer the multi-algorithm envelope; fall back to the legacy bare-hex file
|
|
18
|
+
// so a client stays compatible with a bucket published before envelopes.
|
|
19
|
+
// `parseSignatureEnvelope` accepts either form, so one code path covers both.
|
|
20
|
+
const sig = (await store.get(`${key}.sigs`)) ?? (await store.get(`${key}.sig`));
|
|
13
21
|
if (!sig) {
|
|
14
|
-
throw new ManifestSignatureError(`manifest signature "${key}.sig" not found,
|
|
22
|
+
throw new ManifestSignatureError(`manifest signature ("${key}.sigs" or "${key}.sig") not found, ` +
|
|
23
|
+
`but a public key was configured`);
|
|
15
24
|
}
|
|
16
|
-
|
|
25
|
+
verifyManifestSignatures(raw, parseSignatureEnvelope(sig), publicKeys);
|
|
17
26
|
}
|
|
18
27
|
return PublisherManifest.fromRaw(store, key, raw);
|
|
19
28
|
}
|
package/dist/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/verify.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ChunkMeta } from "@saga-sync/core";
|
|
2
|
-
import type {
|
|
2
|
+
import type { CanonicalRecord } from "@saga-sync/core";
|
|
3
3
|
export declare class DigestMismatchError extends Error {
|
|
4
4
|
readonly meta: ChunkMeta;
|
|
5
5
|
readonly expected: string;
|
|
@@ -11,5 +11,5 @@ export declare class CanonicalFormError extends Error {
|
|
|
11
11
|
readonly meta: ChunkMeta;
|
|
12
12
|
constructor(meta: ChunkMeta, detail: string);
|
|
13
13
|
}
|
|
14
|
-
export declare function verifyChunkEvents(meta: ChunkMeta, events:
|
|
14
|
+
export declare function verifyChunkEvents(meta: ChunkMeta, events: CanonicalRecord[]): void;
|
|
15
15
|
//# sourceMappingURL=verify.d.ts.map
|
package/dist/verify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAKvD,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBACZ,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAS9D;AAKD,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,GAAG,IAAI,CAS5E;AAYD,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;gBACb,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;CAK5C;AAsCD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAkClF"}
|
package/dist/verify.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { sha256Hex } from "@saga-sync/core";
|
|
2
|
+
import { isEntityRecord } from "@saga-sync/core";
|
|
2
3
|
// Thrown when a chunk's recomputed digest does not match the manifest. Carries
|
|
3
4
|
// both digests so the caller can log them; both are lower-case 0x-prefixed.
|
|
4
5
|
export class DigestMismatchError extends Error {
|
|
@@ -43,28 +44,63 @@ export class CanonicalFormError extends Error {
|
|
|
43
44
|
this.meta = meta;
|
|
44
45
|
}
|
|
45
46
|
}
|
|
46
|
-
//
|
|
47
|
-
//
|
|
48
|
-
//
|
|
47
|
+
// A record's position in the total order. Logs sort by (blockNumber, logIndex);
|
|
48
|
+
// indexer-derived entities by (blockNumber, transactionIndex, opIndex) — both are
|
|
49
|
+
// chain coordinates, so the two schemes are the same idea at different
|
|
50
|
+
// granularity. Returned as an array so one comparison covers both.
|
|
51
|
+
function sortKey(record) {
|
|
52
|
+
return isEntityRecord(record)
|
|
53
|
+
? [BigInt(record.blockNumber), BigInt(record.transactionIndex), BigInt(record.opIndex)]
|
|
54
|
+
: [BigInt(record.blockNumber), BigInt(record.logIndex)];
|
|
55
|
+
}
|
|
56
|
+
// Lexicographic compare of two equal-length keys. -1 / 0 / 1.
|
|
57
|
+
function compareKeys(a, b) {
|
|
58
|
+
for (let i = 0; i < a.length; i++) {
|
|
59
|
+
if (a[i] < b[i])
|
|
60
|
+
return -1;
|
|
61
|
+
if (a[i] > b[i])
|
|
62
|
+
return 1;
|
|
63
|
+
}
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
function describe(record) {
|
|
67
|
+
const k = sortKey(record);
|
|
68
|
+
return isEntityRecord(record)
|
|
69
|
+
? `(block ${record.blockNumber}, tx ${record.transactionIndex}, op ${record.opIndex})`
|
|
70
|
+
: `(block ${record.blockNumber}, logIndex ${record.logIndex})`;
|
|
71
|
+
}
|
|
72
|
+
// Validate the §3.3 properties the digest does not *semantically* enforce:
|
|
73
|
+
// 1. every record's blockNumber is within the chunk's [fromBlock, toBlock) range
|
|
74
|
+
// 2. records are strictly ascending by their sort key
|
|
75
|
+
// 3. a chunk holds one KIND of record — logs or entities, never a mix
|
|
49
76
|
// Empty chunks pass trivially. Mandatory on every chunk, like the digest.
|
|
77
|
+
//
|
|
78
|
+
// (3) matters because the two kinds carry different provenance: a log is
|
|
79
|
+
// verifiable against an archive node, an entity is someone's derivation. Letting
|
|
80
|
+
// them interleave in one stream would let a derived record hide among records
|
|
81
|
+
// that can be independently checked.
|
|
50
82
|
export function verifyChunkEvents(meta, events) {
|
|
51
83
|
const from = BigInt(meta.fromBlock);
|
|
52
84
|
const to = BigInt(meta.toBlock);
|
|
53
|
-
let
|
|
54
|
-
let
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
85
|
+
let prevKey = null;
|
|
86
|
+
let kind = null;
|
|
87
|
+
for (const record of events) {
|
|
88
|
+
const thisKind = isEntityRecord(record) ? "entity" : "log";
|
|
89
|
+
if (kind === null) {
|
|
90
|
+
kind = thisKind;
|
|
91
|
+
}
|
|
92
|
+
else if (kind !== thisKind) {
|
|
93
|
+
throw new CanonicalFormError(meta, `mixes ${kind} and ${thisKind} records; a stream carries one kind`);
|
|
94
|
+
}
|
|
95
|
+
const block = BigInt(record.blockNumber);
|
|
59
96
|
if (block < from || block >= to) {
|
|
60
|
-
throw new CanonicalFormError(meta, `
|
|
97
|
+
throw new CanonicalFormError(meta, `record at block ${record.blockNumber} is outside [${meta.fromBlock},${meta.toBlock})`);
|
|
61
98
|
}
|
|
62
|
-
|
|
63
|
-
|
|
99
|
+
const key = sortKey(record);
|
|
100
|
+
if (prevKey !== null && compareKeys(key, prevKey) <= 0) {
|
|
101
|
+
throw new CanonicalFormError(meta, `records not strictly ascending at ${describe(record)}`);
|
|
64
102
|
}
|
|
65
|
-
|
|
66
|
-
prevLog = log;
|
|
67
|
-
first = false;
|
|
103
|
+
prevKey = key;
|
|
68
104
|
}
|
|
69
105
|
}
|
|
70
106
|
//# sourceMappingURL=verify.js.map
|
package/dist/verify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@saga-sync/client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Consumer library + CLI for saga-sync: fetch, verify, and stream published privacy-protocol state",
|
|
5
|
-
"license": "
|
|
5
|
+
"license": "GPL-3.0-only",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "https://github.com/fatlabsxyz/saga-sync.git",
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
"dist"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@saga-sync/core": "0.
|
|
30
|
+
"@saga-sync/core": "0.2.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@saga-sync/producer": "0.
|
|
33
|
+
"@saga-sync/producer": "0.2.0"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
36
|
"build": "tsc -b"
|