@fireproof/core 0.20.0-dev-preview-14 → 0.20.0-dev-preview-15
Sign up to get free protection for your applications and to get access to all the features.
- package/index.cjs +79 -44
- package/index.cjs.map +1 -1
- package/index.d.cts +22 -18
- package/index.d.ts +22 -18
- package/index.js +69 -34
- package/index.js.map +1 -1
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/package.json +1 -1
package/index.d.cts
CHANGED
@@ -295,6 +295,13 @@ interface SerdeGatewayInterceptor {
|
|
295
295
|
subscribe(sthis: SuperThis, url: URI, callback: (meta: FPEnvelopeMeta) => Promise<void>, loader: Loadable): Promise<Result<SerdeGatewaySubscribeReturn>>;
|
296
296
|
}
|
297
297
|
|
298
|
+
declare class Context {
|
299
|
+
private ctx;
|
300
|
+
set<T>(key: string, value: T): void;
|
301
|
+
get<T>(key: string): T | undefined;
|
302
|
+
delete(key: string): void;
|
303
|
+
}
|
304
|
+
|
298
305
|
type AnyLink = Link<unknown, number, number, Version>;
|
299
306
|
type CarGroup = AnyLink[];
|
300
307
|
type CarLog = CarGroup[];
|
@@ -450,7 +457,8 @@ interface RefBlockstore {
|
|
450
457
|
readonly blockstore: RefLoadable;
|
451
458
|
}
|
452
459
|
interface Connection {
|
453
|
-
|
460
|
+
loaded(): Future<void>;
|
461
|
+
readonly context: Context;
|
454
462
|
connectStorage(ref: RefLoadable | RefBlockstore): void;
|
455
463
|
}
|
456
464
|
interface BaseStore {
|
@@ -703,10 +711,13 @@ declare function parseCarFile<T>(reader: CarReader$1, logger: Logger): Promise<C
|
|
703
711
|
declare abstract class ConnectionBase implements Connection {
|
704
712
|
private loader?;
|
705
713
|
taskManager?: TaskManager;
|
706
|
-
|
714
|
+
readonly context: Context;
|
707
715
|
readonly url: URI;
|
708
716
|
readonly logger: Logger;
|
709
717
|
constructor(url: URI, logger: Logger);
|
718
|
+
private readonly _loaded;
|
719
|
+
private _metaIsLoading;
|
720
|
+
loaded(): Future<void>;
|
710
721
|
refresh(): Promise<void>;
|
711
722
|
connect(refl: RefLoadable | RefBlockstore): Promise<void>;
|
712
723
|
connectMeta(refl: RefLoadable | RefBlockstore): Promise<void>;
|
@@ -897,13 +908,6 @@ declare class Index<K extends IndexKeyType, T extends DocTypes, R extends DocFra
|
|
897
908
|
_updateIndex(): Promise<IndexTransactionMeta>;
|
898
909
|
}
|
899
910
|
|
900
|
-
declare class Context {
|
901
|
-
private ctx;
|
902
|
-
set<T>(key: string, value: T): void;
|
903
|
-
get<T>(key: string): T | undefined;
|
904
|
-
delete(key: string): void;
|
905
|
-
}
|
906
|
-
|
907
911
|
type Falsy = false | null | undefined;
|
908
912
|
declare function isFalsy(value: unknown): value is Falsy;
|
909
913
|
declare enum PARAM {
|
@@ -1535,16 +1539,16 @@ declare namespace index$2 {
|
|
1535
1539
|
declare class DefSerdeGateway implements SerdeGateway {
|
1536
1540
|
readonly gw: Gateway;
|
1537
1541
|
constructor(gw: Gateway);
|
1538
|
-
start(sthis: SuperThis, baseURL: URI): Promise<Result<URI>>;
|
1539
|
-
buildUrl(sthis: SuperThis, baseUrl: URI, key: string): Promise<Result<URI>>;
|
1540
|
-
close(sthis: SuperThis, uri: URI): Promise<Result<void>>;
|
1542
|
+
start(sthis: SuperThis, baseURL: URI, loader?: Loadable): Promise<Result<URI>>;
|
1543
|
+
buildUrl(sthis: SuperThis, baseUrl: URI, key: string, loader?: Loadable): Promise<Result<URI>>;
|
1544
|
+
close(sthis: SuperThis, uri: URI, loader?: Loadable): Promise<Result<void>>;
|
1541
1545
|
private subscribeFn;
|
1542
|
-
put<T>(sthis: SuperThis, url: URI, env: FPEnvelope<T
|
1543
|
-
get<S>(sthis: SuperThis, url: URI): Promise<SerdeGetResult<S>>;
|
1544
|
-
subscribe(sthis: SuperThis, url: URI, callback: (meta: FPEnvelopeMeta) => Promise<void
|
1545
|
-
delete(sthis: SuperThis, url: URI): Promise<Result<void>>;
|
1546
|
-
destroy(sthis: SuperThis, baseURL: URI): Promise<Result<void>>;
|
1547
|
-
getPlain(sthis: SuperThis, iurl: URI, key: string): Promise<Result<Uint8Array<ArrayBufferLike>, Error>>;
|
1546
|
+
put<T>(sthis: SuperThis, url: URI, env: FPEnvelope<T>, loader?: Loadable): Promise<Result<void>>;
|
1547
|
+
get<S>(sthis: SuperThis, url: URI, loader?: Loadable): Promise<SerdeGetResult<S>>;
|
1548
|
+
subscribe(sthis: SuperThis, url: URI, callback: (meta: FPEnvelopeMeta) => Promise<void>, loader?: Loadable): Promise<Result<() => void>>;
|
1549
|
+
delete(sthis: SuperThis, url: URI, loader?: Loadable): Promise<Result<void>>;
|
1550
|
+
destroy(sthis: SuperThis, baseURL: URI, loader?: Loadable): Promise<Result<void>>;
|
1551
|
+
getPlain(sthis: SuperThis, iurl: URI, key: string, loader?: Loadable): Promise<Result<Uint8Array<ArrayBufferLike>, Error>>;
|
1548
1552
|
}
|
1549
1553
|
|
1550
1554
|
type index$1_CARDecodeEnvelope = CARDecodeEnvelope;
|
package/index.d.ts
CHANGED
@@ -295,6 +295,13 @@ interface SerdeGatewayInterceptor {
|
|
295
295
|
subscribe(sthis: SuperThis, url: URI, callback: (meta: FPEnvelopeMeta) => Promise<void>, loader: Loadable): Promise<Result<SerdeGatewaySubscribeReturn>>;
|
296
296
|
}
|
297
297
|
|
298
|
+
declare class Context {
|
299
|
+
private ctx;
|
300
|
+
set<T>(key: string, value: T): void;
|
301
|
+
get<T>(key: string): T | undefined;
|
302
|
+
delete(key: string): void;
|
303
|
+
}
|
304
|
+
|
298
305
|
type AnyLink = Link<unknown, number, number, Version>;
|
299
306
|
type CarGroup = AnyLink[];
|
300
307
|
type CarLog = CarGroup[];
|
@@ -450,7 +457,8 @@ interface RefBlockstore {
|
|
450
457
|
readonly blockstore: RefLoadable;
|
451
458
|
}
|
452
459
|
interface Connection {
|
453
|
-
|
460
|
+
loaded(): Future<void>;
|
461
|
+
readonly context: Context;
|
454
462
|
connectStorage(ref: RefLoadable | RefBlockstore): void;
|
455
463
|
}
|
456
464
|
interface BaseStore {
|
@@ -703,10 +711,13 @@ declare function parseCarFile<T>(reader: CarReader$1, logger: Logger): Promise<C
|
|
703
711
|
declare abstract class ConnectionBase implements Connection {
|
704
712
|
private loader?;
|
705
713
|
taskManager?: TaskManager;
|
706
|
-
|
714
|
+
readonly context: Context;
|
707
715
|
readonly url: URI;
|
708
716
|
readonly logger: Logger;
|
709
717
|
constructor(url: URI, logger: Logger);
|
718
|
+
private readonly _loaded;
|
719
|
+
private _metaIsLoading;
|
720
|
+
loaded(): Future<void>;
|
710
721
|
refresh(): Promise<void>;
|
711
722
|
connect(refl: RefLoadable | RefBlockstore): Promise<void>;
|
712
723
|
connectMeta(refl: RefLoadable | RefBlockstore): Promise<void>;
|
@@ -897,13 +908,6 @@ declare class Index<K extends IndexKeyType, T extends DocTypes, R extends DocFra
|
|
897
908
|
_updateIndex(): Promise<IndexTransactionMeta>;
|
898
909
|
}
|
899
910
|
|
900
|
-
declare class Context {
|
901
|
-
private ctx;
|
902
|
-
set<T>(key: string, value: T): void;
|
903
|
-
get<T>(key: string): T | undefined;
|
904
|
-
delete(key: string): void;
|
905
|
-
}
|
906
|
-
|
907
911
|
type Falsy = false | null | undefined;
|
908
912
|
declare function isFalsy(value: unknown): value is Falsy;
|
909
913
|
declare enum PARAM {
|
@@ -1535,16 +1539,16 @@ declare namespace index$2 {
|
|
1535
1539
|
declare class DefSerdeGateway implements SerdeGateway {
|
1536
1540
|
readonly gw: Gateway;
|
1537
1541
|
constructor(gw: Gateway);
|
1538
|
-
start(sthis: SuperThis, baseURL: URI): Promise<Result<URI>>;
|
1539
|
-
buildUrl(sthis: SuperThis, baseUrl: URI, key: string): Promise<Result<URI>>;
|
1540
|
-
close(sthis: SuperThis, uri: URI): Promise<Result<void>>;
|
1542
|
+
start(sthis: SuperThis, baseURL: URI, loader?: Loadable): Promise<Result<URI>>;
|
1543
|
+
buildUrl(sthis: SuperThis, baseUrl: URI, key: string, loader?: Loadable): Promise<Result<URI>>;
|
1544
|
+
close(sthis: SuperThis, uri: URI, loader?: Loadable): Promise<Result<void>>;
|
1541
1545
|
private subscribeFn;
|
1542
|
-
put<T>(sthis: SuperThis, url: URI, env: FPEnvelope<T
|
1543
|
-
get<S>(sthis: SuperThis, url: URI): Promise<SerdeGetResult<S>>;
|
1544
|
-
subscribe(sthis: SuperThis, url: URI, callback: (meta: FPEnvelopeMeta) => Promise<void
|
1545
|
-
delete(sthis: SuperThis, url: URI): Promise<Result<void>>;
|
1546
|
-
destroy(sthis: SuperThis, baseURL: URI): Promise<Result<void>>;
|
1547
|
-
getPlain(sthis: SuperThis, iurl: URI, key: string): Promise<Result<Uint8Array<ArrayBufferLike>, Error>>;
|
1546
|
+
put<T>(sthis: SuperThis, url: URI, env: FPEnvelope<T>, loader?: Loadable): Promise<Result<void>>;
|
1547
|
+
get<S>(sthis: SuperThis, url: URI, loader?: Loadable): Promise<SerdeGetResult<S>>;
|
1548
|
+
subscribe(sthis: SuperThis, url: URI, callback: (meta: FPEnvelopeMeta) => Promise<void>, loader?: Loadable): Promise<Result<() => void>>;
|
1549
|
+
delete(sthis: SuperThis, url: URI, loader?: Loadable): Promise<Result<void>>;
|
1550
|
+
destroy(sthis: SuperThis, baseURL: URI, loader?: Loadable): Promise<Result<void>>;
|
1551
|
+
getPlain(sthis: SuperThis, iurl: URI, key: string, loader?: Loadable): Promise<Result<Uint8Array<ArrayBufferLike>, Error>>;
|
1548
1552
|
}
|
1549
1553
|
|
1550
1554
|
type index$1_CARDecodeEnvelope = CARDecodeEnvelope;
|
package/index.js
CHANGED
@@ -5,7 +5,7 @@ var __export = (target, all) => {
|
|
5
5
|
};
|
6
6
|
|
7
7
|
// src/ledger.ts
|
8
|
-
import { BuildURI as BuildURI2, KeyedResolvOnce as KeyedResolvOnce4, ResolveOnce as ResolveOnce7, URI as
|
8
|
+
import { BuildURI as BuildURI2, KeyedResolvOnce as KeyedResolvOnce4, ResolveOnce as ResolveOnce7, URI as URI13 } from "@adviser/cement";
|
9
9
|
|
10
10
|
// src/utils.ts
|
11
11
|
import {
|
@@ -1203,16 +1203,20 @@ var DefSerdeGateway = class {
|
|
1203
1203
|
this.subscribeFn = /* @__PURE__ */ new Map();
|
1204
1204
|
this.gw = gw;
|
1205
1205
|
}
|
1206
|
-
|
1206
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1207
|
+
start(sthis, baseURL, loader) {
|
1207
1208
|
return this.gw.start(baseURL, sthis);
|
1208
1209
|
}
|
1209
|
-
|
1210
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1211
|
+
async buildUrl(sthis, baseUrl, key, loader) {
|
1210
1212
|
return this.gw.buildUrl(baseUrl, key, sthis);
|
1211
1213
|
}
|
1212
|
-
|
1214
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1215
|
+
async close(sthis, uri, loader) {
|
1213
1216
|
return this.gw.close(uri, sthis);
|
1214
1217
|
}
|
1215
|
-
|
1218
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1219
|
+
async put(sthis, url, env, loader) {
|
1216
1220
|
const rUint8 = await fpSerialize(sthis, env);
|
1217
1221
|
if (rUint8.isErr()) return rUint8;
|
1218
1222
|
const ret = this.gw.put(url, rUint8.Ok(), sthis);
|
@@ -1223,12 +1227,13 @@ var DefSerdeGateway = class {
|
|
1223
1227
|
}
|
1224
1228
|
return ret;
|
1225
1229
|
}
|
1226
|
-
|
1230
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1231
|
+
async get(sthis, url, loader) {
|
1227
1232
|
const res = await this.gw.get(url, sthis);
|
1228
1233
|
if (res.isErr()) return Result7.Err(res.Err());
|
1229
1234
|
return fpDeserialize(sthis, url, res);
|
1230
1235
|
}
|
1231
|
-
async subscribe(sthis, url, callback) {
|
1236
|
+
async subscribe(sthis, url, callback, loader) {
|
1232
1237
|
if (!this.gw.subscribe) {
|
1233
1238
|
this.subscribeFn.set(url.toString(), callback);
|
1234
1239
|
return Result7.Ok(() => {
|
@@ -1247,13 +1252,16 @@ var DefSerdeGateway = class {
|
|
1247
1252
|
);
|
1248
1253
|
return unreg;
|
1249
1254
|
}
|
1250
|
-
|
1255
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1256
|
+
async delete(sthis, url, loader) {
|
1251
1257
|
return this.gw.delete(url, sthis);
|
1252
1258
|
}
|
1253
|
-
|
1259
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1260
|
+
async destroy(sthis, baseURL, loader) {
|
1254
1261
|
return this.gw.destroy(baseURL, sthis);
|
1255
1262
|
}
|
1256
|
-
|
1263
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1264
|
+
async getPlain(sthis, iurl, key, loader) {
|
1257
1265
|
return this.gw.getPlain(iurl, key, sthis);
|
1258
1266
|
}
|
1259
1267
|
};
|
@@ -3639,6 +3647,9 @@ function toStoreRuntime(sthis, endeOpts = {}) {
|
|
3639
3647
|
};
|
3640
3648
|
}
|
3641
3649
|
|
3650
|
+
// src/blockstore/connection-base.ts
|
3651
|
+
import { exception2Result as exception2Result4, Future as Future3 } from "@adviser/cement";
|
3652
|
+
|
3642
3653
|
// src/blockstore/store-remote.ts
|
3643
3654
|
async function RemoteDataStore(sthis, url, opts) {
|
3644
3655
|
const ds = new DataStoreImpl(sthis, url, opts);
|
@@ -3651,6 +3662,22 @@ async function RemoteMetaStore(sthis, url, opts) {
|
|
3651
3662
|
return ms;
|
3652
3663
|
}
|
3653
3664
|
|
3665
|
+
// src/context.ts
|
3666
|
+
var Context = class {
|
3667
|
+
constructor() {
|
3668
|
+
this.ctx = /* @__PURE__ */ new Map();
|
3669
|
+
}
|
3670
|
+
set(key, value) {
|
3671
|
+
this.ctx.set(key, value);
|
3672
|
+
}
|
3673
|
+
get(key) {
|
3674
|
+
return this.ctx.get(key);
|
3675
|
+
}
|
3676
|
+
delete(key) {
|
3677
|
+
this.ctx.delete(key);
|
3678
|
+
}
|
3679
|
+
};
|
3680
|
+
|
3654
3681
|
// src/blockstore/connection-base.ts
|
3655
3682
|
function coerceLoader(ref) {
|
3656
3683
|
const refl = ref;
|
@@ -3665,10 +3692,22 @@ function coerceLoader(ref) {
|
|
3665
3692
|
}
|
3666
3693
|
var ConnectionBase = class {
|
3667
3694
|
constructor(url, logger) {
|
3668
|
-
|
3695
|
+
// loaded: Promise<void> = Promise.resolve();
|
3696
|
+
this.context = new Context();
|
3697
|
+
this._loaded = /* @__PURE__ */ new Set();
|
3698
|
+
this._metaIsLoading = false;
|
3669
3699
|
this.logger = logger;
|
3670
3700
|
this.url = url;
|
3671
3701
|
}
|
3702
|
+
loaded() {
|
3703
|
+
const f = new Future3();
|
3704
|
+
if (!this._metaIsLoading) {
|
3705
|
+
f.resolve();
|
3706
|
+
} else {
|
3707
|
+
this._loaded.add(f);
|
3708
|
+
}
|
3709
|
+
return f;
|
3710
|
+
}
|
3672
3711
|
async refresh() {
|
3673
3712
|
await throwFalsy(throwFalsy(this.loader).remoteMetaStore).load();
|
3674
3713
|
await (await throwFalsy(this.loader).WALStore()).process();
|
@@ -3696,22 +3735,34 @@ var ConnectionBase = class {
|
|
3696
3735
|
loader
|
3697
3736
|
});
|
3698
3737
|
this.loader.remoteMetaStore = remote;
|
3699
|
-
this.
|
3738
|
+
this._metaIsLoading = true;
|
3739
|
+
this.loader.ready().then(async () => {
|
3700
3740
|
return remote.load().then(async () => {
|
3701
|
-
|
3741
|
+
const res = await exception2Result4(async () => {
|
3742
|
+
return await (await throwFalsy(this.loader).WALStore()).process();
|
3743
|
+
});
|
3744
|
+
this._metaIsLoading = false;
|
3745
|
+
for (const f of this._loaded) {
|
3746
|
+
if (res.isErr()) {
|
3747
|
+
f.reject(res.Err());
|
3748
|
+
} else {
|
3749
|
+
f.resolve();
|
3750
|
+
}
|
3751
|
+
}
|
3752
|
+
this._loaded.clear();
|
3702
3753
|
});
|
3703
3754
|
});
|
3704
3755
|
}
|
3705
3756
|
async connectStorage(refl) {
|
3706
3757
|
const loader = coerceLoader(refl);
|
3707
|
-
if (!loader) throw this.logger.Error().Msg("
|
3758
|
+
if (!loader) throw this.logger.Error().Msg("connectStorage: loader is required").AsError();
|
3708
3759
|
this.loader = loader;
|
3709
3760
|
const dataUrl = this.url.build().defParam("store" /* STORE */, "data").URI();
|
3710
3761
|
const rgateway = await getStartedGateway(loader.sthis, dataUrl);
|
3711
3762
|
if (rgateway.isErr())
|
3712
|
-
throw this.logger.Error().Result("err", rgateway).Url(dataUrl).Msg("
|
3763
|
+
throw this.logger.Error().Result("err", rgateway).Url(dataUrl).Msg("connectStorage: gateway is required").AsError();
|
3713
3764
|
const name = dataUrl.getParam("name" /* NAME */);
|
3714
|
-
if (!name) throw this.logger.Error().Url(dataUrl).Msg("
|
3765
|
+
if (!name) throw this.logger.Error().Url(dataUrl).Msg("connectStorage: name is required").AsError;
|
3715
3766
|
loader.remoteCarStore = await RemoteDataStore(loader.sthis, this.url, {
|
3716
3767
|
gateway: rgateway.Ok().gateway,
|
3717
3768
|
loader
|
@@ -4327,22 +4378,6 @@ var CRDTImpl = class {
|
|
4327
4378
|
}
|
4328
4379
|
};
|
4329
4380
|
|
4330
|
-
// src/context.ts
|
4331
|
-
var Context = class {
|
4332
|
-
constructor() {
|
4333
|
-
this.ctx = /* @__PURE__ */ new Map();
|
4334
|
-
}
|
4335
|
-
set(key, value) {
|
4336
|
-
this.ctx.set(key, value);
|
4337
|
-
}
|
4338
|
-
get(key) {
|
4339
|
-
return this.ctx.get(key);
|
4340
|
-
}
|
4341
|
-
delete(key) {
|
4342
|
-
this.ctx.delete(key);
|
4343
|
-
}
|
4344
|
-
};
|
4345
|
-
|
4346
4381
|
// src/ledger.ts
|
4347
4382
|
var ledgers = new KeyedResolvOnce4();
|
4348
4383
|
function keyConfigOpts(sthis, name, opts) {
|
@@ -4530,7 +4565,7 @@ var LedgerImpl = class {
|
|
4530
4565
|
};
|
4531
4566
|
function defaultURI2(sthis, curi, uri, store, ctx) {
|
4532
4567
|
ctx = ctx || {};
|
4533
|
-
const ret = (curi ?
|
4568
|
+
const ret = (curi ? URI13.from(curi) : uri).build().setParam("store" /* STORE */, store);
|
4534
4569
|
if (!ret.hasParam("name" /* NAME */)) {
|
4535
4570
|
const name = sthis.pathOps.basename(ret.URI().pathname);
|
4536
4571
|
if (!name) {
|
@@ -4637,7 +4672,7 @@ __export(file_exports, {
|
|
4637
4672
|
|
4638
4673
|
// src/version.ts
|
4639
4674
|
var PACKAGE_VERSION = Object.keys({
|
4640
|
-
"0.20.0-dev-preview-
|
4675
|
+
"0.20.0-dev-preview-15": "xxxx"
|
4641
4676
|
})[0];
|
4642
4677
|
export {
|
4643
4678
|
CRDTImpl,
|