@xyo-network/diviner-payload-generic 2.111.2 → 3.0.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/neutral/index.d.ts +41 -2
- package/package.json +22 -41
- package/xy.config.ts +12 -0
- package/dist/browser/Diviner.d.cts +0 -39
- package/dist/browser/Diviner.d.cts.map +0 -1
- package/dist/browser/Diviner.d.mts +0 -39
- package/dist/browser/Diviner.d.mts.map +0 -1
- package/dist/browser/Diviner.d.ts +0 -39
- package/dist/browser/Diviner.d.ts.map +0 -1
- package/dist/browser/index.cjs +0 -182
- package/dist/browser/index.cjs.map +0 -1
- package/dist/browser/index.d.cts +0 -2
- package/dist/browser/index.d.cts.map +0 -1
- package/dist/browser/index.d.mts +0 -2
- package/dist/browser/index.d.mts.map +0 -1
- package/dist/browser/index.d.ts +0 -2
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.mjs +0 -161
- package/dist/browser/index.mjs.map +0 -1
- package/dist/neutral/Diviner.d.cts +0 -39
- package/dist/neutral/Diviner.d.cts.map +0 -1
- package/dist/neutral/Diviner.d.mts +0 -39
- package/dist/neutral/Diviner.d.mts.map +0 -1
- package/dist/neutral/Diviner.d.ts +0 -39
- package/dist/neutral/Diviner.d.ts.map +0 -1
- package/dist/neutral/index.cjs +0 -182
- package/dist/neutral/index.cjs.map +0 -1
- package/dist/neutral/index.d.cts +0 -2
- package/dist/neutral/index.d.cts.map +0 -1
- package/dist/neutral/index.d.mts +0 -2
- package/dist/neutral/index.d.mts.map +0 -1
- package/dist/neutral/index.d.ts.map +0 -1
- package/dist/node/Diviner.d.cts +0 -39
- package/dist/node/Diviner.d.cts.map +0 -1
- package/dist/node/Diviner.d.mts +0 -39
- package/dist/node/Diviner.d.mts.map +0 -1
- package/dist/node/Diviner.d.ts +0 -39
- package/dist/node/Diviner.d.ts.map +0 -1
- package/dist/node/index.cjs +0 -192
- package/dist/node/index.cjs.map +0 -1
- package/dist/node/index.d.cts +0 -2
- package/dist/node/index.d.cts.map +0 -1
- package/dist/node/index.d.mts +0 -2
- package/dist/node/index.d.mts.map +0 -1
- package/dist/node/index.d.ts +0 -2
- package/dist/node/index.d.ts.map +0 -1
- package/dist/node/index.mjs +0 -166
- package/dist/node/index.mjs.map +0 -1
package/dist/neutral/index.d.ts
CHANGED
|
@@ -1,2 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Hash } from '@xylabs/hex';
|
|
2
|
+
import { EmptyObject } from '@xylabs/object';
|
|
3
|
+
import { ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
|
|
4
|
+
import { DivinerModuleEventData, DivinerInstance } from '@xyo-network/diviner-model';
|
|
5
|
+
import { PayloadDiviner } from '@xyo-network/diviner-payload-abstract';
|
|
6
|
+
import { PayloadDivinerConfig, PayloadDivinerParams, PayloadDivinerQueryPayload, Order } from '@xyo-network/diviner-payload-model';
|
|
7
|
+
import { EventListener } from '@xyo-network/module-events';
|
|
8
|
+
import { Payload, Schema, WithMeta } from '@xyo-network/payload-model';
|
|
9
|
+
|
|
10
|
+
declare const GenericPayloadDivinerConfigSchema: "network.xyo.diviner.payload.generic.config";
|
|
11
|
+
type GenericPayloadDivinerConfigSchema = typeof GenericPayloadDivinerConfigSchema;
|
|
12
|
+
type GenericPayloadDivinerConfig = PayloadDivinerConfig<{
|
|
13
|
+
indexes?: string[];
|
|
14
|
+
}, GenericPayloadDivinerConfigSchema>;
|
|
15
|
+
declare class GenericPayloadDiviner<TParams extends PayloadDivinerParams<GenericPayloadDivinerConfig> = PayloadDivinerParams<GenericPayloadDivinerConfig>, TIn extends PayloadDivinerQueryPayload<EmptyObject, Hash> = PayloadDivinerQueryPayload<EmptyObject, Hash>, TOut extends Payload = Payload, TEventData extends DivinerModuleEventData<DivinerInstance<TParams, TIn, TOut>, TIn, TOut> = DivinerModuleEventData<DivinerInstance<TParams, TIn, TOut>, TIn, TOut>> extends PayloadDiviner<TParams, TIn, TOut, TEventData> {
|
|
16
|
+
static readonly configSchemas: Schema[];
|
|
17
|
+
static readonly defaultConfigSchema: Schema;
|
|
18
|
+
protected indexMaps: Record<string, WithMeta<TOut>[]>;
|
|
19
|
+
protected payloadPairs: [WithMeta<TOut>, Hash][];
|
|
20
|
+
private _archivistInstance?;
|
|
21
|
+
private _indexOffset?;
|
|
22
|
+
private _updatePayloadPairsMutex;
|
|
23
|
+
protected get indexBatchSize(): number;
|
|
24
|
+
protected get indexes(): string[];
|
|
25
|
+
protected get maxIndexSize(): number;
|
|
26
|
+
protected all(order?: Order, offset?: Hash): WithMeta<TOut>[];
|
|
27
|
+
protected allAsc(offset?: Hash): WithMeta<TOut>[];
|
|
28
|
+
protected allDesc(offset?: Hash): WithMeta<TOut>[];
|
|
29
|
+
protected archivistInstance(): Promise<ArchivistInstance | undefined>;
|
|
30
|
+
protected archivistInstance(required: true): Promise<ArchivistInstance>;
|
|
31
|
+
protected clearIndex(): Promise<void>;
|
|
32
|
+
protected divineHandler(payloads?: TIn[]): Promise<WithMeta<TOut>[]>;
|
|
33
|
+
protected onArchivistCleared: EventListener<ArchivistModuleEventData['cleared']>;
|
|
34
|
+
protected onArchivistDeleted: EventListener<ArchivistModuleEventData['deleted']>;
|
|
35
|
+
protected onArchivistInserted: EventListener<ArchivistModuleEventData['inserted']>;
|
|
36
|
+
protected stopHandler(_timeout?: number | undefined): Promise<boolean>;
|
|
37
|
+
protected updateIndex(): Promise<void>;
|
|
38
|
+
private indexPayloads;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export { GenericPayloadDiviner, type GenericPayloadDivinerConfig, GenericPayloadDivinerConfigSchema };
|
package/package.json
CHANGED
|
@@ -10,58 +10,39 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xylabs/assert": "^3.6.
|
|
14
|
-
"@xylabs/forget": "^3.6.
|
|
15
|
-
"@xylabs/hex": "^3.6.
|
|
16
|
-
"@xylabs/object": "^3.6.
|
|
17
|
-
"@xyo-network/archivist-model": "^
|
|
18
|
-
"@xyo-network/diviner-model": "^
|
|
19
|
-
"@xyo-network/diviner-payload-abstract": "^
|
|
20
|
-
"@xyo-network/diviner-payload-model": "^
|
|
21
|
-
"@xyo-network/module-events": "^
|
|
22
|
-
"@xyo-network/payload-builder": "^
|
|
23
|
-
"@xyo-network/payload-model": "^
|
|
13
|
+
"@xylabs/assert": "^3.6.12",
|
|
14
|
+
"@xylabs/forget": "^3.6.12",
|
|
15
|
+
"@xylabs/hex": "^3.6.12",
|
|
16
|
+
"@xylabs/object": "^3.6.12",
|
|
17
|
+
"@xyo-network/archivist-model": "^3.0.0",
|
|
18
|
+
"@xyo-network/diviner-model": "^3.0.0",
|
|
19
|
+
"@xyo-network/diviner-payload-abstract": "^3.0.0",
|
|
20
|
+
"@xyo-network/diviner-payload-model": "^3.0.0",
|
|
21
|
+
"@xyo-network/module-events": "^3.0.0",
|
|
22
|
+
"@xyo-network/payload-builder": "^3.0.0",
|
|
23
|
+
"@xyo-network/payload-model": "^3.0.0",
|
|
24
24
|
"async-mutex": "^0.5.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@xylabs/ts-scripts-yarn3": "
|
|
28
|
-
"@xylabs/tsconfig": "
|
|
29
|
-
"@xyo-network/archivist-indexeddb": "^
|
|
30
|
-
"@xyo-network/archivist-memory": "^
|
|
31
|
-
"@xyo-network/node-memory": "^
|
|
32
|
-
"@xyo-network/payload-builder": "^
|
|
27
|
+
"@xylabs/ts-scripts-yarn3": "next",
|
|
28
|
+
"@xylabs/tsconfig": "next",
|
|
29
|
+
"@xyo-network/archivist-indexeddb": "^3.0.0",
|
|
30
|
+
"@xyo-network/archivist-memory": "^3.0.0",
|
|
31
|
+
"@xyo-network/node-memory": "^3.0.0",
|
|
32
|
+
"@xyo-network/payload-builder": "^3.0.0",
|
|
33
33
|
"fake-indexeddb": "^6.0.0",
|
|
34
34
|
"typescript": "^5.5.4"
|
|
35
35
|
},
|
|
36
36
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
37
|
-
"types": "dist/
|
|
37
|
+
"types": "dist/neutral/index.d.ts",
|
|
38
38
|
"exports": {
|
|
39
39
|
".": {
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
-
"types": "./dist/browser/index.d.cts",
|
|
43
|
-
"default": "./dist/browser/index.cjs"
|
|
44
|
-
},
|
|
45
|
-
"import": {
|
|
46
|
-
"types": "./dist/browser/index.d.mts",
|
|
47
|
-
"default": "./dist/browser/index.mjs"
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
"node": {
|
|
51
|
-
"require": {
|
|
52
|
-
"types": "./dist/node/index.d.cts",
|
|
53
|
-
"default": "./dist/node/index.cjs"
|
|
54
|
-
},
|
|
55
|
-
"import": {
|
|
56
|
-
"types": "./dist/node/index.d.mts",
|
|
57
|
-
"default": "./dist/node/index.mjs"
|
|
58
|
-
}
|
|
59
|
-
}
|
|
40
|
+
"types": "./dist/neutral/index.d.ts",
|
|
41
|
+
"default": "./dist/neutral/index.mjs"
|
|
60
42
|
},
|
|
61
43
|
"./package.json": "./package.json"
|
|
62
44
|
},
|
|
63
|
-
"
|
|
64
|
-
"module": "dist/node/index.mjs",
|
|
45
|
+
"module": "dist/neutral/index.mjs",
|
|
65
46
|
"homepage": "https://xyo.network",
|
|
66
47
|
"license": "LGPL-3.0-only",
|
|
67
48
|
"publishConfig": {
|
|
@@ -72,6 +53,6 @@
|
|
|
72
53
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
73
54
|
},
|
|
74
55
|
"sideEffects": false,
|
|
75
|
-
"version": "
|
|
56
|
+
"version": "3.0.0",
|
|
76
57
|
"type": "module"
|
|
77
58
|
}
|
package/xy.config.ts
ADDED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { Hash } from '@xylabs/hex';
|
|
2
|
-
import { EmptyObject } from '@xylabs/object';
|
|
3
|
-
import { ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
|
|
4
|
-
import { DivinerInstance, DivinerModuleEventData } from '@xyo-network/diviner-model';
|
|
5
|
-
import { PayloadDiviner } from '@xyo-network/diviner-payload-abstract';
|
|
6
|
-
import { Order, PayloadDivinerConfig, PayloadDivinerParams, PayloadDivinerQueryPayload } from '@xyo-network/diviner-payload-model';
|
|
7
|
-
import { EventListener } from '@xyo-network/module-events';
|
|
8
|
-
import { Payload, Schema, WithMeta } from '@xyo-network/payload-model';
|
|
9
|
-
export declare const GenericPayloadDivinerConfigSchema: "network.xyo.diviner.payload.generic.config";
|
|
10
|
-
export type GenericPayloadDivinerConfigSchema = typeof GenericPayloadDivinerConfigSchema;
|
|
11
|
-
export type GenericPayloadDivinerConfig = PayloadDivinerConfig<{
|
|
12
|
-
indexes?: string[];
|
|
13
|
-
}, GenericPayloadDivinerConfigSchema>;
|
|
14
|
-
export declare class GenericPayloadDiviner<TParams extends PayloadDivinerParams<GenericPayloadDivinerConfig> = PayloadDivinerParams<GenericPayloadDivinerConfig>, TIn extends PayloadDivinerQueryPayload<EmptyObject, Hash> = PayloadDivinerQueryPayload<EmptyObject, Hash>, TOut extends Payload = Payload, TEventData extends DivinerModuleEventData<DivinerInstance<TParams, TIn, TOut>, TIn, TOut> = DivinerModuleEventData<DivinerInstance<TParams, TIn, TOut>, TIn, TOut>> extends PayloadDiviner<TParams, TIn, TOut, TEventData> {
|
|
15
|
-
static readonly configSchemas: Schema[];
|
|
16
|
-
static readonly defaultConfigSchema: Schema;
|
|
17
|
-
protected indexMaps: Record<string, WithMeta<TOut>[]>;
|
|
18
|
-
protected payloadPairs: [WithMeta<TOut>, Hash][];
|
|
19
|
-
private _archivistInstance?;
|
|
20
|
-
private _indexOffset?;
|
|
21
|
-
private _updatePayloadPairsMutex;
|
|
22
|
-
protected get indexBatchSize(): number;
|
|
23
|
-
protected get indexes(): string[];
|
|
24
|
-
protected get maxIndexSize(): number;
|
|
25
|
-
protected all(order?: Order, offset?: Hash): WithMeta<TOut>[];
|
|
26
|
-
protected allAsc(offset?: Hash): WithMeta<TOut>[];
|
|
27
|
-
protected allDesc(offset?: Hash): WithMeta<TOut>[];
|
|
28
|
-
protected archivistInstance(): Promise<ArchivistInstance | undefined>;
|
|
29
|
-
protected archivistInstance(required: true): Promise<ArchivistInstance>;
|
|
30
|
-
protected clearIndex(): Promise<void>;
|
|
31
|
-
protected divineHandler(payloads?: TIn[]): Promise<WithMeta<TOut>[]>;
|
|
32
|
-
protected onArchivistCleared: EventListener<ArchivistModuleEventData['cleared']>;
|
|
33
|
-
protected onArchivistDeleted: EventListener<ArchivistModuleEventData['deleted']>;
|
|
34
|
-
protected onArchivistInserted: EventListener<ArchivistModuleEventData['inserted']>;
|
|
35
|
-
protected stopHandler(_timeout?: number | undefined): Promise<boolean>;
|
|
36
|
-
protected updateIndex(): Promise<void>;
|
|
37
|
-
private indexPayloads;
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=Diviner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { Hash } from '@xylabs/hex';
|
|
2
|
-
import { EmptyObject } from '@xylabs/object';
|
|
3
|
-
import { ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
|
|
4
|
-
import { DivinerInstance, DivinerModuleEventData } from '@xyo-network/diviner-model';
|
|
5
|
-
import { PayloadDiviner } from '@xyo-network/diviner-payload-abstract';
|
|
6
|
-
import { Order, PayloadDivinerConfig, PayloadDivinerParams, PayloadDivinerQueryPayload } from '@xyo-network/diviner-payload-model';
|
|
7
|
-
import { EventListener } from '@xyo-network/module-events';
|
|
8
|
-
import { Payload, Schema, WithMeta } from '@xyo-network/payload-model';
|
|
9
|
-
export declare const GenericPayloadDivinerConfigSchema: "network.xyo.diviner.payload.generic.config";
|
|
10
|
-
export type GenericPayloadDivinerConfigSchema = typeof GenericPayloadDivinerConfigSchema;
|
|
11
|
-
export type GenericPayloadDivinerConfig = PayloadDivinerConfig<{
|
|
12
|
-
indexes?: string[];
|
|
13
|
-
}, GenericPayloadDivinerConfigSchema>;
|
|
14
|
-
export declare class GenericPayloadDiviner<TParams extends PayloadDivinerParams<GenericPayloadDivinerConfig> = PayloadDivinerParams<GenericPayloadDivinerConfig>, TIn extends PayloadDivinerQueryPayload<EmptyObject, Hash> = PayloadDivinerQueryPayload<EmptyObject, Hash>, TOut extends Payload = Payload, TEventData extends DivinerModuleEventData<DivinerInstance<TParams, TIn, TOut>, TIn, TOut> = DivinerModuleEventData<DivinerInstance<TParams, TIn, TOut>, TIn, TOut>> extends PayloadDiviner<TParams, TIn, TOut, TEventData> {
|
|
15
|
-
static readonly configSchemas: Schema[];
|
|
16
|
-
static readonly defaultConfigSchema: Schema;
|
|
17
|
-
protected indexMaps: Record<string, WithMeta<TOut>[]>;
|
|
18
|
-
protected payloadPairs: [WithMeta<TOut>, Hash][];
|
|
19
|
-
private _archivistInstance?;
|
|
20
|
-
private _indexOffset?;
|
|
21
|
-
private _updatePayloadPairsMutex;
|
|
22
|
-
protected get indexBatchSize(): number;
|
|
23
|
-
protected get indexes(): string[];
|
|
24
|
-
protected get maxIndexSize(): number;
|
|
25
|
-
protected all(order?: Order, offset?: Hash): WithMeta<TOut>[];
|
|
26
|
-
protected allAsc(offset?: Hash): WithMeta<TOut>[];
|
|
27
|
-
protected allDesc(offset?: Hash): WithMeta<TOut>[];
|
|
28
|
-
protected archivistInstance(): Promise<ArchivistInstance | undefined>;
|
|
29
|
-
protected archivistInstance(required: true): Promise<ArchivistInstance>;
|
|
30
|
-
protected clearIndex(): Promise<void>;
|
|
31
|
-
protected divineHandler(payloads?: TIn[]): Promise<WithMeta<TOut>[]>;
|
|
32
|
-
protected onArchivistCleared: EventListener<ArchivistModuleEventData['cleared']>;
|
|
33
|
-
protected onArchivistDeleted: EventListener<ArchivistModuleEventData['deleted']>;
|
|
34
|
-
protected onArchivistInserted: EventListener<ArchivistModuleEventData['inserted']>;
|
|
35
|
-
protected stopHandler(_timeout?: number | undefined): Promise<boolean>;
|
|
36
|
-
protected updateIndex(): Promise<void>;
|
|
37
|
-
private indexPayloads;
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=Diviner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { Hash } from '@xylabs/hex';
|
|
2
|
-
import { EmptyObject } from '@xylabs/object';
|
|
3
|
-
import { ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
|
|
4
|
-
import { DivinerInstance, DivinerModuleEventData } from '@xyo-network/diviner-model';
|
|
5
|
-
import { PayloadDiviner } from '@xyo-network/diviner-payload-abstract';
|
|
6
|
-
import { Order, PayloadDivinerConfig, PayloadDivinerParams, PayloadDivinerQueryPayload } from '@xyo-network/diviner-payload-model';
|
|
7
|
-
import { EventListener } from '@xyo-network/module-events';
|
|
8
|
-
import { Payload, Schema, WithMeta } from '@xyo-network/payload-model';
|
|
9
|
-
export declare const GenericPayloadDivinerConfigSchema: "network.xyo.diviner.payload.generic.config";
|
|
10
|
-
export type GenericPayloadDivinerConfigSchema = typeof GenericPayloadDivinerConfigSchema;
|
|
11
|
-
export type GenericPayloadDivinerConfig = PayloadDivinerConfig<{
|
|
12
|
-
indexes?: string[];
|
|
13
|
-
}, GenericPayloadDivinerConfigSchema>;
|
|
14
|
-
export declare class GenericPayloadDiviner<TParams extends PayloadDivinerParams<GenericPayloadDivinerConfig> = PayloadDivinerParams<GenericPayloadDivinerConfig>, TIn extends PayloadDivinerQueryPayload<EmptyObject, Hash> = PayloadDivinerQueryPayload<EmptyObject, Hash>, TOut extends Payload = Payload, TEventData extends DivinerModuleEventData<DivinerInstance<TParams, TIn, TOut>, TIn, TOut> = DivinerModuleEventData<DivinerInstance<TParams, TIn, TOut>, TIn, TOut>> extends PayloadDiviner<TParams, TIn, TOut, TEventData> {
|
|
15
|
-
static readonly configSchemas: Schema[];
|
|
16
|
-
static readonly defaultConfigSchema: Schema;
|
|
17
|
-
protected indexMaps: Record<string, WithMeta<TOut>[]>;
|
|
18
|
-
protected payloadPairs: [WithMeta<TOut>, Hash][];
|
|
19
|
-
private _archivistInstance?;
|
|
20
|
-
private _indexOffset?;
|
|
21
|
-
private _updatePayloadPairsMutex;
|
|
22
|
-
protected get indexBatchSize(): number;
|
|
23
|
-
protected get indexes(): string[];
|
|
24
|
-
protected get maxIndexSize(): number;
|
|
25
|
-
protected all(order?: Order, offset?: Hash): WithMeta<TOut>[];
|
|
26
|
-
protected allAsc(offset?: Hash): WithMeta<TOut>[];
|
|
27
|
-
protected allDesc(offset?: Hash): WithMeta<TOut>[];
|
|
28
|
-
protected archivistInstance(): Promise<ArchivistInstance | undefined>;
|
|
29
|
-
protected archivistInstance(required: true): Promise<ArchivistInstance>;
|
|
30
|
-
protected clearIndex(): Promise<void>;
|
|
31
|
-
protected divineHandler(payloads?: TIn[]): Promise<WithMeta<TOut>[]>;
|
|
32
|
-
protected onArchivistCleared: EventListener<ArchivistModuleEventData['cleared']>;
|
|
33
|
-
protected onArchivistDeleted: EventListener<ArchivistModuleEventData['deleted']>;
|
|
34
|
-
protected onArchivistInserted: EventListener<ArchivistModuleEventData['inserted']>;
|
|
35
|
-
protected stopHandler(_timeout?: number | undefined): Promise<boolean>;
|
|
36
|
-
protected updateIndex(): Promise<void>;
|
|
37
|
-
private indexPayloads;
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=Diviner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"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"}
|
package/dist/browser/index.cjs
DELETED
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
-
|
|
21
|
-
// src/index.ts
|
|
22
|
-
var src_exports = {};
|
|
23
|
-
__export(src_exports, {
|
|
24
|
-
GenericPayloadDiviner: () => GenericPayloadDiviner,
|
|
25
|
-
GenericPayloadDivinerConfigSchema: () => GenericPayloadDivinerConfigSchema
|
|
26
|
-
});
|
|
27
|
-
module.exports = __toCommonJS(src_exports);
|
|
28
|
-
|
|
29
|
-
// src/Diviner.ts
|
|
30
|
-
var import_assert = require("@xylabs/assert");
|
|
31
|
-
var import_forget = require("@xylabs/forget");
|
|
32
|
-
var import_diviner_payload_abstract = require("@xyo-network/diviner-payload-abstract");
|
|
33
|
-
var import_diviner_payload_model = require("@xyo-network/diviner-payload-model");
|
|
34
|
-
var import_payload_builder = require("@xyo-network/payload-builder");
|
|
35
|
-
var import_async_mutex = require("async-mutex");
|
|
36
|
-
var DEFAULT_INDEX_BATCH_SIZE = 100;
|
|
37
|
-
var DEFAULT_MAX_INDEX_SIZE = 8e3;
|
|
38
|
-
var GenericPayloadDivinerConfigSchema = "network.xyo.diviner.payload.generic.config";
|
|
39
|
-
var GenericPayloadDiviner = class extends import_diviner_payload_abstract.PayloadDiviner {
|
|
40
|
-
static {
|
|
41
|
-
__name(this, "GenericPayloadDiviner");
|
|
42
|
-
}
|
|
43
|
-
static configSchemas = [
|
|
44
|
-
...super.configSchemas,
|
|
45
|
-
GenericPayloadDivinerConfigSchema
|
|
46
|
-
];
|
|
47
|
-
static defaultConfigSchema = GenericPayloadDivinerConfigSchema;
|
|
48
|
-
indexMaps = {};
|
|
49
|
-
payloadPairs = [];
|
|
50
|
-
_archivistInstance;
|
|
51
|
-
_indexOffset;
|
|
52
|
-
_updatePayloadPairsMutex = new import_async_mutex.Mutex();
|
|
53
|
-
get indexBatchSize() {
|
|
54
|
-
return this.config.indexBatchSize ?? DEFAULT_INDEX_BATCH_SIZE;
|
|
55
|
-
}
|
|
56
|
-
get indexes() {
|
|
57
|
-
return [
|
|
58
|
-
"schema",
|
|
59
|
-
...this.config.indexes ?? []
|
|
60
|
-
];
|
|
61
|
-
}
|
|
62
|
-
get maxIndexSize() {
|
|
63
|
-
return this.config.maxIndexSize ?? DEFAULT_MAX_INDEX_SIZE;
|
|
64
|
-
}
|
|
65
|
-
all(order = "desc", offset) {
|
|
66
|
-
return order === "asc" ? this.allAsc(offset) : this.allDesc(offset);
|
|
67
|
-
}
|
|
68
|
-
allAsc(offset) {
|
|
69
|
-
const pairs = this.payloadPairs;
|
|
70
|
-
const startIndex = (offset ? pairs.findIndex(([, hash]) => hash === offset) ?? -1 : -1) + 1;
|
|
71
|
-
return pairs.slice(startIndex).map(([payload]) => payload);
|
|
72
|
-
}
|
|
73
|
-
allDesc(offset) {
|
|
74
|
-
const pairs = [
|
|
75
|
-
...this.payloadPairs
|
|
76
|
-
].reverse();
|
|
77
|
-
const startIndex = (offset ? pairs.findIndex(([, hash]) => hash === offset) ?? -1 : -1) + 1;
|
|
78
|
-
return pairs.slice(startIndex).map(([payload]) => payload);
|
|
79
|
-
}
|
|
80
|
-
async archivistInstance(required = false) {
|
|
81
|
-
if (!this._archivistInstance) {
|
|
82
|
-
const archivist = await super.archivistInstance();
|
|
83
|
-
if (required && !archivist) {
|
|
84
|
-
throw new Error("Failed to find archivist");
|
|
85
|
-
}
|
|
86
|
-
archivist?.on("inserted", this.onArchivistInserted);
|
|
87
|
-
archivist?.on("cleared", this.onArchivistCleared);
|
|
88
|
-
archivist?.on("deleted", this.onArchivistDeleted);
|
|
89
|
-
this._archivistInstance = archivist;
|
|
90
|
-
}
|
|
91
|
-
return this._archivistInstance;
|
|
92
|
-
}
|
|
93
|
-
async clearIndex() {
|
|
94
|
-
await this._updatePayloadPairsMutex.runExclusive(() => {
|
|
95
|
-
this._indexOffset = void 0;
|
|
96
|
-
this.payloadPairs = [];
|
|
97
|
-
this.indexMaps = {};
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
async divineHandler(payloads) {
|
|
101
|
-
const filters = payloads?.filter(import_diviner_payload_model.isPayloadDivinerQueryPayload) ?? [];
|
|
102
|
-
(0, import_assert.assertEx)(filters.length < 2, () => "Multiple PayloadDivinerQuery payloads may not be specified");
|
|
103
|
-
const filter = (0, import_assert.assertEx)(filters.shift(), () => "No PayloadDivinerQuery specified");
|
|
104
|
-
await this.updateIndex();
|
|
105
|
-
const { $hash, $meta, schema, schemas, order, limit, offset, ...props } = filter;
|
|
106
|
-
let all = this.all(order, offset);
|
|
107
|
-
if (all) {
|
|
108
|
-
if (schemas?.length) all = all.filter((payload) => schemas.includes(payload.schema));
|
|
109
|
-
if (Object.keys(props).length > 0) {
|
|
110
|
-
const additionalFilterCriteria = Object.entries(props);
|
|
111
|
-
for (const [prop, filter2] of additionalFilterCriteria) {
|
|
112
|
-
const property = prop;
|
|
113
|
-
all = Array.isArray(filter2) ? all.filter((payload) => filter2.every((value) => {
|
|
114
|
-
const prop2 = payload?.[property];
|
|
115
|
-
return Array.isArray(prop2) && prop2.includes?.(value);
|
|
116
|
-
})) : all.filter((payload) => payload?.[property] === filter2);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return limit ? all.slice(0, limit) : all;
|
|
120
|
-
} else {
|
|
121
|
-
throw new Error('Archivist does not support "all"');
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
onArchivistCleared = /* @__PURE__ */ __name(() => {
|
|
125
|
-
(0, import_forget.forget)((async () => {
|
|
126
|
-
await this.clearIndex();
|
|
127
|
-
await this.updateIndex();
|
|
128
|
-
})());
|
|
129
|
-
}, "onArchivistCleared");
|
|
130
|
-
// we are just rebuilding the entire index at this point on delete since large archivists do not support delete
|
|
131
|
-
onArchivistDeleted = /* @__PURE__ */ __name(() => {
|
|
132
|
-
(0, import_forget.forget)((async () => {
|
|
133
|
-
await this.clearIndex();
|
|
134
|
-
await this.updateIndex();
|
|
135
|
-
})());
|
|
136
|
-
}, "onArchivistDeleted");
|
|
137
|
-
onArchivistInserted = /* @__PURE__ */ __name(() => {
|
|
138
|
-
(0, import_forget.forget)(this.updateIndex());
|
|
139
|
-
}, "onArchivistInserted");
|
|
140
|
-
async stopHandler(_timeout) {
|
|
141
|
-
const archivist = await this.archivistInstance(true);
|
|
142
|
-
archivist.off("inserted", this.onArchivistInserted);
|
|
143
|
-
archivist.off("deleted", this.onArchivistDeleted);
|
|
144
|
-
archivist.off("cleared", this.onArchivistCleared);
|
|
145
|
-
return await super.stopHandler();
|
|
146
|
-
}
|
|
147
|
-
// index any new payloads
|
|
148
|
-
async updateIndex() {
|
|
149
|
-
await this._updatePayloadPairsMutex.runExclusive(async () => {
|
|
150
|
-
const archivist = await this.archivistInstance(true);
|
|
151
|
-
let newPayloads = await archivist.next({
|
|
152
|
-
limit: 100,
|
|
153
|
-
offset: this._indexOffset
|
|
154
|
-
});
|
|
155
|
-
while (newPayloads.length > 0) {
|
|
156
|
-
const prevOffset = this._indexOffset;
|
|
157
|
-
this._indexOffset = await import_payload_builder.PayloadBuilder.hash((0, import_assert.assertEx)(newPayloads.at(-1)));
|
|
158
|
-
if (this._indexOffset === prevOffset) {
|
|
159
|
-
this.logger.warn("next offset not found", prevOffset);
|
|
160
|
-
}
|
|
161
|
-
(0, import_assert.assertEx)(this.payloadPairs.length + newPayloads.length <= this.maxIndexSize, () => "maxIndexSize exceeded");
|
|
162
|
-
await this.indexPayloads(newPayloads);
|
|
163
|
-
newPayloads = await archivist.next({
|
|
164
|
-
limit: 100,
|
|
165
|
-
offset: this._indexOffset
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
async indexPayloads(payloads) {
|
|
171
|
-
const pairs = await import_payload_builder.PayloadBuilder.hashPairs(payloads);
|
|
172
|
-
this.payloadPairs.push(...pairs);
|
|
173
|
-
for (const index of this.indexes ?? []) {
|
|
174
|
-
this.indexMaps[index] = this.indexMaps[index] ?? [];
|
|
175
|
-
for (const [payload] of pairs) {
|
|
176
|
-
if (payload[index] !== void 0) this.indexMaps[index].push(payload);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
return (0, import_assert.assertEx)(pairs.at(-1))[1];
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/Diviner.ts"],"sourcesContent":["export * from './Diviner.ts'\n","import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { Hash } from '@xylabs/hex'\nimport { EmptyObject, JsonObject } from '@xylabs/object'\nimport { ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model'\nimport { DivinerInstance, DivinerModuleEventData } from '@xyo-network/diviner-model'\nimport { PayloadDiviner } from '@xyo-network/diviner-payload-abstract'\nimport {\n isPayloadDivinerQueryPayload,\n Order,\n PayloadDivinerConfig,\n PayloadDivinerParams,\n PayloadDivinerQueryPayload,\n} from '@xyo-network/diviner-payload-model'\nimport { EventListener } from '@xyo-network/module-events'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema, WithMeta } from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\n\nconst DEFAULT_INDEX_BATCH_SIZE = 100 as const\nconst DEFAULT_MAX_INDEX_SIZE = 8000 as const\n\nexport const GenericPayloadDivinerConfigSchema = 'network.xyo.diviner.payload.generic.config' as const\nexport type GenericPayloadDivinerConfigSchema = typeof GenericPayloadDivinerConfigSchema\n\nexport type GenericPayloadDivinerConfig = PayloadDivinerConfig<\n {\n indexes?: string[]\n },\n GenericPayloadDivinerConfigSchema\n>\n\nexport class GenericPayloadDiviner<\n TParams extends PayloadDivinerParams<GenericPayloadDivinerConfig> = PayloadDivinerParams<GenericPayloadDivinerConfig>,\n TIn extends PayloadDivinerQueryPayload<EmptyObject, Hash> = PayloadDivinerQueryPayload<EmptyObject, Hash>,\n TOut extends Payload = Payload,\n TEventData extends DivinerModuleEventData<DivinerInstance<TParams, TIn, TOut>, TIn, TOut> = DivinerModuleEventData<\n DivinerInstance<TParams, TIn, TOut>,\n TIn,\n TOut\n >,\n> extends PayloadDiviner<TParams, TIn, TOut, TEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, GenericPayloadDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = GenericPayloadDivinerConfigSchema\n\n protected indexMaps: Record<string, WithMeta<TOut>[]> = {}\n protected payloadPairs: [WithMeta<TOut>, Hash][] = []\n\n private _archivistInstance?: ArchivistInstance\n private _indexOffset?: Hash\n private _updatePayloadPairsMutex = new Mutex()\n\n protected get indexBatchSize() {\n return this.config.indexBatchSize ?? DEFAULT_INDEX_BATCH_SIZE\n }\n\n protected get indexes(): string[] {\n return ['schema', ...(this.config.indexes ?? [])]\n }\n\n protected get maxIndexSize() {\n return this.config.maxIndexSize ?? DEFAULT_MAX_INDEX_SIZE\n }\n\n protected all(order: Order = 'desc', offset?: Hash) {\n return order === 'asc' ? this.allAsc(offset) : this.allDesc(offset)\n }\n\n protected allAsc(offset?: Hash) {\n const pairs = this.payloadPairs\n const startIndex = (offset ? (pairs.findIndex(([, hash]) => hash === offset) ?? -1) : -1) + 1\n return pairs.slice(startIndex).map(([payload]) => payload)\n }\n\n protected allDesc(offset?: Hash) {\n const pairs = [...this.payloadPairs].reverse()\n const startIndex = (offset ? (pairs.findIndex(([, hash]) => hash === offset) ?? -1) : -1) + 1\n return pairs.slice(startIndex).map(([payload]) => payload)\n }\n\n protected override async archivistInstance(): Promise<ArchivistInstance | undefined>\n protected override async archivistInstance(required: true): Promise<ArchivistInstance>\n protected override async archivistInstance(required = false): Promise<ArchivistInstance | undefined> {\n if (!this._archivistInstance) {\n const archivist = await super.archivistInstance()\n if (required && !archivist) {\n throw new Error('Failed to find archivist')\n }\n archivist?.on('inserted', this.onArchivistInserted)\n archivist?.on('cleared', this.onArchivistCleared)\n archivist?.on('deleted', this.onArchivistDeleted)\n this._archivistInstance = archivist\n }\n return this._archivistInstance\n }\n\n protected async clearIndex() {\n await this._updatePayloadPairsMutex.runExclusive(() => {\n this._indexOffset = undefined\n this.payloadPairs = []\n this.indexMaps = {}\n })\n }\n\n protected override async divineHandler(payloads?: TIn[]): Promise<WithMeta<TOut>[]> {\n const filters = payloads?.filter(isPayloadDivinerQueryPayload) ?? []\n assertEx(filters.length < 2, () => 'Multiple PayloadDivinerQuery payloads may not be specified')\n const filter = assertEx(filters.shift(), () => 'No PayloadDivinerQuery specified') as unknown as WithMeta<\n PayloadDivinerQueryPayload<EmptyObject, Hash>\n >\n\n await this.updateIndex()\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { $hash, $meta, schema, schemas, order, limit, offset, ...props } = filter\n let all: WithMeta<TOut>[] = this.all(order, offset)\n if (all) {\n if (schemas?.length) all = all.filter(payload => schemas.includes(payload.schema))\n if (Object.keys(props).length > 0) {\n const additionalFilterCriteria = Object.entries(props)\n for (const [prop, filter] of additionalFilterCriteria) {\n const property = prop as keyof TOut\n all\n = Array.isArray(filter)\n ? all.filter(payload =>\n filter.every((value) => {\n const prop = payload?.[property]\n // TODO: This seems to be written just to check arrays, and now that $meta is there, need to check type?\n return Array.isArray(prop) && prop.includes?.(value)\n }),\n )\n : all.filter(payload => payload?.[property] === filter)\n }\n }\n return limit ? all.slice(0, limit) : all\n } else {\n throw new Error('Archivist does not support \"all\"')\n }\n }\n\n protected onArchivistCleared: EventListener<ArchivistModuleEventData['cleared']> = () => {\n forget(\n (async () => {\n await this.clearIndex()\n await this.updateIndex()\n })(),\n )\n }\n\n // we are just rebuilding the entire index at this point on delete since large archivists do not support delete\n protected onArchivistDeleted: EventListener<ArchivistModuleEventData['deleted']> = () => {\n forget(\n (async () => {\n await this.clearIndex()\n await this.updateIndex()\n })(),\n )\n }\n\n protected onArchivistInserted: EventListener<ArchivistModuleEventData['inserted']> = () => {\n forget(this.updateIndex())\n }\n\n protected override async stopHandler(_timeout?: number | undefined): Promise<boolean> {\n const archivist = await this.archivistInstance(true)\n archivist.off('inserted', this.onArchivistInserted)\n archivist.off('deleted', this.onArchivistDeleted)\n archivist.off('cleared', this.onArchivistCleared)\n return await super.stopHandler()\n }\n\n // index any new payloads\n protected async updateIndex() {\n await this._updatePayloadPairsMutex.runExclusive(async () => {\n const archivist = await this.archivistInstance(true)\n let newPayloads = (await archivist.next({ limit: 100, offset: this._indexOffset })) as WithMeta<TOut>[]\n while (newPayloads.length > 0) {\n const prevOffset = this._indexOffset\n this._indexOffset = await PayloadBuilder.hash(assertEx(newPayloads.at(-1)))\n if (this._indexOffset === prevOffset) {\n this.logger.warn('next offset not found', prevOffset)\n }\n assertEx(this.payloadPairs.length + newPayloads.length <= this.maxIndexSize, () => 'maxIndexSize exceeded')\n await this.indexPayloads(newPayloads)\n newPayloads = (await archivist.next({ limit: 100, offset: this._indexOffset })) as WithMeta<TOut>[]\n }\n })\n }\n\n private async indexPayloads(payloads: TOut[]): Promise<Hash> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n this.payloadPairs.push(...pairs)\n\n // update the custom indexes\n for (const index of this.indexes ?? []) {\n this.indexMaps[index] = this.indexMaps[index] ?? []\n for (const [payload] of pairs) {\n if ((payload as unknown as JsonObject)[index] !== undefined) this.indexMaps[index].push(payload)\n }\n }\n return assertEx(pairs.at(-1))[1]\n }\n}\n"],"mappings":"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","names":["DEFAULT_INDEX_BATCH_SIZE","DEFAULT_MAX_INDEX_SIZE","GenericPayloadDivinerConfigSchema","GenericPayloadDiviner","PayloadDiviner","configSchemas","defaultConfigSchema","indexMaps","payloadPairs","_archivistInstance","_indexOffset","_updatePayloadPairsMutex","Mutex","indexBatchSize","config","indexes","maxIndexSize","all","order","offset","allAsc","allDesc","pairs","startIndex","findIndex","hash","slice","map","payload","reverse","archivistInstance","required","archivist","Error","on","onArchivistInserted","onArchivistCleared","onArchivistDeleted","clearIndex","runExclusive","undefined","divineHandler","payloads","filters","filter","isPayloadDivinerQueryPayload","assertEx","length","shift","updateIndex","$hash","$meta","schema","schemas","limit","props","includes","Object","keys","additionalFilterCriteria","entries","prop","property","Array","isArray","every","value","forget","stopHandler","_timeout","off","newPayloads","next","prevOffset","PayloadBuilder","at","logger","warn","indexPayloads","hashPairs","push","index"]}
|
package/dist/browser/index.d.cts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
|
package/dist/browser/index.d.mts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
|
package/dist/browser/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
|