@xyo-network/archivist-mongodb 3.2.4 → 3.3.1

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.
@@ -62,9 +62,9 @@ declare const MongoDBArchivistBase: (abstract new (...args: any[]) => {
62
62
  id: string;
63
63
  modName?: import("@xyo-network/module-model").ModuleName;
64
64
  params: import("@xylabs/object").BaseParamsFields & {
65
- account?: import(".store/@xyo-network-account-model-virtual-669f93d2a3/package").AccountInstance | "random";
65
+ account?: import(".store/@xyo-network-account-model-virtual-2eddd29fdf/package").AccountInstance | "random";
66
66
  addToResolvers?: boolean;
67
- additionalSigners?: import(".store/@xyo-network-account-model-virtual-669f93d2a3/package").AccountInstance[];
67
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-2eddd29fdf/package").AccountInstance[];
68
68
  allowNameResolution?: boolean;
69
69
  config: import("@xylabs/object").DeepRestrictToStringKeys<{
70
70
  schema: import("@xyo-network/payload-model").Schema;
@@ -130,11 +130,11 @@ declare const MongoDBArchivistBase: (abstract new (...args: any[]) => {
130
130
  emit<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
131
131
  emitSerial<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
132
132
  listenerCount(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): number;
133
- off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
134
- offAny(listener: import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventAnyListener | Promise<void>): void;
135
- on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventUnsubscribeFunction;
136
- onAny(listener: import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventAnyListener): import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventUnsubscribeFunction;
137
- once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventUnsubscribeFunction;
133
+ off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
134
+ offAny(listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventAnyListener | Promise<void>): void;
135
+ on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
136
+ onAny(listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventAnyListener): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
137
+ once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
138
138
  }) & {
139
139
  labels: import("@xyo-network/module-model-mongodb").MongoDBStorageClassLabels;
140
140
  } & typeof AbstractArchivist;
@@ -1 +1 @@
1
- {"version":3,"file":"Archivist.d.ts","sourceRoot":"","sources":["../../src/Archivist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Archivist.d.ts","sourceRoot":"","sources":["../../src/Archivist.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import type { Hash } from '@xylabs/hex';
2
+ import { AbstractArchivist } from '@xyo-network/archivist-abstract';
3
+ import type { ArchivistNextOptions } from '@xyo-network/archivist-model';
4
+ import { type Payload, type Schema, type Sequence, type WithStorageMeta } from '@xyo-network/payload-model';
5
+ import type { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb';
6
+ declare const MongoDBArchivistBaseV2: (abstract new (...args: any[]) => {
7
+ _payloadSdk: import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdk<PayloadWithMongoMeta> | undefined;
8
+ readonly jobQueue: import("@xyo-network/node-core-model").JobQueue;
9
+ readonly payloadSdkConfig: import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdkConfig;
10
+ readonly payloads: import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdk<PayloadWithMongoMeta>;
11
+ ensureIndexes(): Promise<void>;
12
+ address: import("@xylabs/hex").Address;
13
+ config: import("@xylabs/object").DeepRestrictToStringKeys<{
14
+ schema: import("@xyo-network/payload-model").Schema;
15
+ readonly archivist?: import("@xyo-network/module-model").ModuleIdentifier | undefined;
16
+ readonly archiving?: {
17
+ readonly archivists?: string[] | undefined;
18
+ readonly queries?: string[] | undefined;
19
+ } | undefined;
20
+ readonly allowedQueries?: string[] | undefined;
21
+ readonly consoleLogger?: import(".store/@xylabs-logger-npm-4.5.1-a411051254/package").LogLevel | undefined;
22
+ readonly labels?: {
23
+ [x: string]: string | undefined;
24
+ } | undefined;
25
+ readonly name?: import("@xyo-network/module-model").ModuleName | undefined;
26
+ readonly paging?: {
27
+ [x: string]: {
28
+ size?: number | undefined;
29
+ };
30
+ } | undefined;
31
+ readonly retry?: {
32
+ backoff?: number | undefined;
33
+ interval?: number | undefined;
34
+ retries?: number | undefined;
35
+ } | undefined;
36
+ readonly security?: {
37
+ readonly allowAnonymous?: boolean | undefined;
38
+ readonly allowed?: {
39
+ [x: string]: (Lowercase<string> | Lowercase<string>[])[];
40
+ } | undefined;
41
+ readonly disallowed?: {
42
+ [x: string]: Lowercase<string>[];
43
+ } | undefined;
44
+ } | undefined;
45
+ readonly sign?: boolean | undefined;
46
+ readonly storeQueries?: boolean | undefined;
47
+ readonly timestamp?: boolean | undefined;
48
+ payloadSdkConfig?: {
49
+ closeDelay?: number | undefined;
50
+ collection?: string | undefined;
51
+ maxPoolSize?: number | undefined;
52
+ } | undefined;
53
+ }>;
54
+ id: string;
55
+ modName?: import("@xyo-network/module-model").ModuleName;
56
+ params: import("@xylabs/object").BaseParamsFields & {
57
+ account?: import(".store/@xyo-network-account-model-virtual-2eddd29fdf/package").AccountInstance | "random";
58
+ addToResolvers?: boolean;
59
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-2eddd29fdf/package").AccountInstance[];
60
+ allowNameResolution?: boolean;
61
+ config: import("@xylabs/object").DeepRestrictToStringKeys<{
62
+ schema: import("@xyo-network/payload-model").Schema;
63
+ readonly archivist?: import("@xyo-network/module-model").ModuleIdentifier | undefined;
64
+ readonly archiving?: {
65
+ readonly archivists?: string[] | undefined;
66
+ readonly queries?: string[] | undefined;
67
+ } | undefined;
68
+ readonly allowedQueries?: string[] | undefined;
69
+ readonly consoleLogger?: import(".store/@xylabs-logger-npm-4.5.1-a411051254/package").LogLevel | undefined;
70
+ readonly labels?: {
71
+ [x: string]: string | undefined;
72
+ } | undefined;
73
+ readonly name?: import("@xyo-network/module-model").ModuleName | undefined;
74
+ readonly paging?: {
75
+ [x: string]: {
76
+ size?: number | undefined;
77
+ };
78
+ } | undefined;
79
+ readonly retry?: {
80
+ backoff?: number | undefined;
81
+ interval?: number | undefined;
82
+ retries?: number | undefined;
83
+ } | undefined;
84
+ readonly security?: {
85
+ readonly allowAnonymous?: boolean | undefined;
86
+ readonly allowed?: {
87
+ [x: string]: (Lowercase<string> | Lowercase<string>[])[];
88
+ } | undefined;
89
+ readonly disallowed?: {
90
+ [x: string]: Lowercase<string>[];
91
+ } | undefined;
92
+ } | undefined;
93
+ readonly sign?: boolean | undefined;
94
+ readonly storeQueries?: boolean | undefined;
95
+ readonly timestamp?: boolean | undefined;
96
+ payloadSdkConfig?: {
97
+ closeDelay?: number | undefined;
98
+ collection?: string | undefined;
99
+ maxPoolSize?: number | undefined;
100
+ } | undefined;
101
+ }>;
102
+ ephemeralQueryAccountEnabled?: boolean;
103
+ moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[];
104
+ } & {
105
+ jobQueue?: import("@xyo-network/node-core-model").JobQueue;
106
+ payloadSdkConfig?: (import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdkPrivateConfig & Partial<import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdkPublicConfig>) | undefined;
107
+ };
108
+ previousHash: () => import(".store/@xylabs-promise-npm-4.5.1-97d36b712b/package").Promisable<string | undefined>;
109
+ queries: string[];
110
+ query: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf) => import(".store/@xylabs-promise-npm-4.5.1-97d36b712b/package").Promisable<import("@xyo-network/module-model").ModuleQueryResult>;
111
+ queryable: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf_1 extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf_1) => import(".store/@xylabs-promise-npm-4.5.1-97d36b712b/package").Promisable<boolean>;
112
+ start?: () => import(".store/@xylabs-promise-npm-4.5.1-97d36b712b/package").Promisable<boolean>;
113
+ stop?: () => import(".store/@xylabs-promise-npm-4.5.1-97d36b712b/package").Promisable<boolean>;
114
+ eventData: import("@xyo-network/module-model").ModuleEventData<object>;
115
+ clearListeners(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): void;
116
+ emit<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
117
+ emitSerial<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
118
+ listenerCount(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): number;
119
+ off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
120
+ offAny(listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventAnyListener | Promise<void>): void;
121
+ on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
122
+ onAny(listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventAnyListener): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
123
+ once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
124
+ }) & {
125
+ labels: import("@xyo-network/module-model-mongodb").MongoDBStorageClassLabels;
126
+ } & typeof AbstractArchivist;
127
+ export declare class MongoDBArchivistV2 extends MongoDBArchivistBaseV2 {
128
+ static readonly configSchemas: Schema[];
129
+ static readonly defaultConfigSchema: Schema;
130
+ readonly queries: string[];
131
+ /**
132
+ * The amount of time to allow the aggregate query to execute
133
+ */
134
+ protected readonly aggregateTimeoutMs = 10000;
135
+ protected findOneByHash(hash: Hash): Promise<import("mongodb").WithId<PayloadWithMongoMeta> | undefined>;
136
+ protected findOneBySequence(sequence: Sequence): Promise<import("mongodb").WithId<PayloadWithMongoMeta> | undefined>;
137
+ protected getHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]>;
138
+ protected insertHandler(payloads: WithStorageMeta<Payload>[]): Promise<WithStorageMeta<Payload>[]>;
139
+ protected nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]>;
140
+ protected startHandler(): Promise<boolean>;
141
+ }
142
+ export {};
143
+ //# sourceMappingURL=ArchivistV2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchivistV2.d.ts","sourceRoot":"","sources":["../../src/ArchivistV2.ts"],"names":[],"mappings":"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"}
@@ -112,7 +112,8 @@ var MongoDBArchivist = class extends MongoDBArchivistBase {
112
112
  let {
113
113
  limit,
114
114
  cursor,
115
- order
115
+ order,
116
+ open
116
117
  } = options ?? { limit: 10, order: "desc" };
117
118
  if (!limit) limit = 10;
118
119
  if (limit > 100) limit = 100;
@@ -126,7 +127,7 @@ var MongoDBArchivist = class extends MongoDBArchivistBase {
126
127
  }
127
128
  if (!id) return [];
128
129
  const sort = order === "asc" ? 1 : -1;
129
- const match = order === "asc" ? { _id: { $gt: id } } : { _id: { $lt: id } };
130
+ const match = order === "asc" ? open ? { _id: { $gte: id } } : { _id: { $gt: id } } : open ? { _id: { $lte: id } } : { _id: { $lt: id } };
130
131
  const foundPayloads = await this.payloads.useCollection((collection) => {
131
132
  return collection.aggregate([
132
133
  // Pre-filter payloads collection
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Archivist.ts","../../src/lib/validByType.ts","../../src/index.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport type { Hash } from '@xylabs/hex'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport type { ArchivistNextOptions } from '@xyo-network/archivist-model'\nimport { ArchivistInsertQuerySchema, ArchivistNextQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport type {\n Payload, Schema, Sequence, WithStorageMeta,\n} from '@xyo-network/payload-model'\nimport type { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { fromDbRepresentation, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { ObjectId } from 'mongodb'\n\nimport { validByType } from './lib/index.js'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, MongoDBArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = MongoDBArchivistConfigSchema\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ArchivistNextQuerySchema, ...super.queries]\n\n /**\n * The amount of time to allow the aggregate query to execute\n */\n protected readonly aggregateTimeoutMs = 10_000\n\n protected async findOneByHash(hash: Hash) {\n const dataPayload = (await this.payloads.findOne({ _$hash: hash }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _$hash: hash }))\n if (dataBw) {\n return dataBw\n } else {\n const payload = (await this.payloads.findOne({ _hash: hash }))\n if (payload) {\n return payload\n } else {\n const bw = (await this.boundWitnesses.findOne({ _hash: hash }))\n return bw ?? undefined\n }\n }\n }\n }\n\n protected async findOneBySequence(sequence: Sequence) {\n const dataPayload = (await this.payloads.findOne({ _sequence: sequence }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _sequence: sequence }))\n return dataBw\n }\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads = (await Promise.all(remainingHashes.map(_dataHash => this.payloads.findOne({ _dataHash })))).filter(exists)\n const dataPayloadsHashes = new Set(dataPayloads.map(payload => payload._dataHash))\n remainingHashes = remainingHashes.filter(hash => !dataPayloadsHashes.has(hash))\n\n const dataBws = (await Promise.all(remainingHashes.map(_dataHash => this.boundWitnesses.findOne({ _dataHash })))).filter(exists)\n const dataBwsHashes = new Set(dataBws.map(payload => payload._dataHash))\n remainingHashes = remainingHashes.filter(hash => !dataBwsHashes.has(hash))\n\n const payloads = (await Promise.all(remainingHashes.map(_hash => this.payloads.findOne({ _hash })))).filter(exists)\n const payloadsHashes = new Set(payloads.map(payload => payload._hash))\n remainingHashes = remainingHashes.filter(hash => !payloadsHashes.has(hash))\n\n const bws = (await Promise.all(remainingHashes.map(_hash => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = new Set(bws.map(payload => payload._hash))\n remainingHashes = remainingHashes.filter(hash => !bwsHashes.has(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload>[]\n const result = foundPayloads.map(fromDbRepresentation)\n // console.log(`getHandler: ${JSON.stringify(hashes, null, 2)}:${JSON.stringify(result, null, 2)}`)\n return result\n }\n\n protected override async insertHandler(payloads: WithStorageMeta<Payload>[]): Promise<WithStorageMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = p.map(value => toDbRepresentation(value))\n if (payloadsWithExternalMeta.length > 0) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting Payloads')\n }\n\n const boundWitnessesWithExternalMeta = bw.map(value => toDbRepresentation(value))\n if (boundWitnessesWithExternalMeta.length > 0) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting BoundWitnesses')\n }\n\n return [...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta].map(fromDbRepresentation)\n }\n\n protected override async nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]> {\n // Sanitize inputs and set defaults\n let {\n limit, cursor, order,\n } = options ?? { limit: 10, order: 'desc' }\n\n if (!limit) limit = 10\n if (limit > 100) limit = 100\n\n if (order != 'asc') order = 'desc'\n\n let id: ObjectId | undefined\n if (cursor) {\n const payload = await this.findOneBySequence(cursor)\n // TODO: Should we throw an error if the requested payload is not found?\n if (payload) id = payload._id\n } else {\n id = order === 'asc'\n // If ascending, start from the beginning of time\n ? ObjectId.createFromTime(0)\n // If descending, start from now (plus a bit more in the future to ensure\n // them most recent ObjectIds are included)\n : ObjectId.createFromTime((Date.now() + 10_000) / 1000)\n }\n if (!id) return []\n\n // Create aggregate criteria\n const sort = order === 'asc' ? 1 : -1\n // TODO: How to handle random component of ID across multiple collections\n // to ensure we don't skip some payloads\n const match = order === 'asc' ? { _id: { $gt: id } } : { _id: { $lt: id } }\n\n // Run the aggregate query\n const foundPayloads = await this.payloads.useCollection((collection) => {\n return collection\n .aggregate<PayloadWithMongoMeta>([\n // Pre-filter payloads collection\n { $match: match },\n // Sort payloads by _id\n { $sort: { _id: sort } },\n // Limit payloads to the first N payloads\n { $limit: limit },\n // Combine with filtered boundWitnesses collection\n {\n $unionWith: {\n coll: this.boundWitnessSdkConfig.collection,\n pipeline: [\n { $match: match }, // Pre-filter boundWitnesses\n { $sort: { _id: sort } }, // Sort boundWitnesses by _id\n { $limit: limit }, // Limit boundWitnesses to the first N boundWitnesses\n ],\n },\n },\n // Sort the combined result by _id\n { $sort: { _id: sort } },\n // Limit the final result to N documents\n { $limit: limit },\n ])\n .maxTimeMS(this.aggregateTimeoutMs)\n .toArray()\n })\n\n // Convert from DB representation to Payloads\n return foundPayloads.map(fromDbRepresentation)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: WithStorageMeta<Payload>[] = []) => {\n const results: [WithStorageMeta<BoundWitness>[], WithStorageMeta<Payload>[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(payload)\n } else {\n const errors = await bw.getErrors()\n console.log(`validByType.Error: ${JSON.stringify(errors, null, 2)}`)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payload)\n }\n }\n return\n }),\n )\n return results\n}\n","export * from './Archivist.js'\nexport * from '@xyo-network/archivist-model-mongodb'\n"],"mappings":";AAAA,SAAS,cAAc;AAEvB,SAAS,yBAAyB;AAElC,SAAS,4BAA4B,gCAAgC;AACrE,SAAS,oCAAoC;AAC7C,SAAS,0BAA0B;AAKnC,SAAS,sBAAsB,0BAA0B;AACzD,SAAS,gBAAgB;;;ACXzB,SAAS,gBAAgB,2BAA2B;AACpD,SAAS,qBAAqB,gCAAgC;AAE9D,SAAS,sBAAsB;AAExB,IAAM,cAAc,OAAO,WAAuC,CAAC,MAAM;AAC9E,QAAM,UAAyE,CAAC,CAAC,GAAG,CAAC,CAAC;AACtF,QAAM,QAAQ;AAAA,IACZ,SAAS,IAAI,OAAO,YAAY;AAC9B,UAAI,eAAe,OAAO,GAAG;AAC3B,cAAM,UAAU,oBAAoB,OAAO,IAAI,2BAA2B;AAC1E,cAAM,KAAK,QAAQ,MAAM,OAAO;AAChC,YAAI,MAAM,GAAG,SAAS,GAAG;AACvB,kBAAQ,CAAC,EAAE,KAAK,OAAO;AAAA,QACzB,OAAO;AACL,gBAAM,SAAS,MAAM,GAAG,UAAU;AAClC,kBAAQ,IAAI,sBAAsB,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC,EAAE;AAAA,QACrE;AAAA,MACF,OAAO;AACL,cAAM,iBAAiB,eAAe,KAAK,OAAO;AAClD,YAAI,MAAM,eAAe,SAAS,GAAG;AACnC,kBAAQ,CAAC,EAAE,KAAK,OAAO;AAAA,QACzB;AAAA,MACF;AACA;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO;AACT;;;ADbA,IAAM,uBAAuB,mBAAmB,iBAAiB;AAE1D,IAAM,mBAAN,cAA+B,qBAAqB;AAAA,EACzD,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,4BAA4B;AAAA,EACxG,OAAyB,sBAA8B;AAAA,EAErC,UAAoB,CAAC,4BAA4B,0BAA0B,GAAG,MAAM,OAAO;AAAA;AAAA;AAAA;AAAA,EAK1F,qBAAqB;AAAA,EAExC,MAAgB,cAAc,MAAY;AACxC,UAAM,cAAe,MAAM,KAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,CAAC;AACjE,QAAI,aAAa;AACf,aAAO;AAAA,IACT,OAAO;AACL,YAAM,SAAU,MAAM,KAAK,eAAe,QAAQ,EAAE,QAAQ,KAAK,CAAC;AAClE,UAAI,QAAQ;AACV,eAAO;AAAA,MACT,OAAO;AACL,cAAM,UAAW,MAAM,KAAK,SAAS,QAAQ,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAI,SAAS;AACX,iBAAO;AAAA,QACT,OAAO;AACL,gBAAM,KAAM,MAAM,KAAK,eAAe,QAAQ,EAAE,OAAO,KAAK,CAAC;AAC7D,iBAAO,MAAM;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAgB,kBAAkB,UAAoB;AACpD,UAAM,cAAe,MAAM,KAAK,SAAS,QAAQ,EAAE,WAAW,SAAS,CAAC;AACxE,QAAI,aAAa;AACf,aAAO;AAAA,IACT,OAAO;AACL,YAAM,SAAU,MAAM,KAAK,eAAe,QAAQ,EAAE,WAAW,SAAS,CAAC;AACzE,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAyB,WAAW,QAAqD;AACvF,QAAI,kBAAkB,CAAC,GAAG,MAAM;AAEhC,UAAM,gBAAgB,MAAM,QAAQ,IAAI,gBAAgB,IAAI,eAAa,KAAK,SAAS,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM;AAC9H,UAAM,qBAAqB,IAAI,IAAI,aAAa,IAAI,aAAW,QAAQ,SAAS,CAAC;AACjF,sBAAkB,gBAAgB,OAAO,UAAQ,CAAC,mBAAmB,IAAI,IAAI,CAAC;AAE9E,UAAM,WAAW,MAAM,QAAQ,IAAI,gBAAgB,IAAI,eAAa,KAAK,eAAe,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM;AAC/H,UAAM,gBAAgB,IAAI,IAAI,QAAQ,IAAI,aAAW,QAAQ,SAAS,CAAC;AACvE,sBAAkB,gBAAgB,OAAO,UAAQ,CAAC,cAAc,IAAI,IAAI,CAAC;AAEzE,UAAM,YAAY,MAAM,QAAQ,IAAI,gBAAgB,IAAI,WAAS,KAAK,SAAS,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM;AAClH,UAAM,iBAAiB,IAAI,IAAI,SAAS,IAAI,aAAW,QAAQ,KAAK,CAAC;AACrE,sBAAkB,gBAAgB,OAAO,UAAQ,CAAC,eAAe,IAAI,IAAI,CAAC;AAE1E,UAAM,OAAO,MAAM,QAAQ,IAAI,gBAAgB,IAAI,WAAS,KAAK,eAAe,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM;AACnH,UAAM,YAAY,IAAI,IAAI,IAAI,IAAI,aAAW,QAAQ,KAAK,CAAC;AAC3D,sBAAkB,gBAAgB,OAAO,UAAQ,CAAC,UAAU,IAAI,IAAI,CAAC;AAErE,UAAM,gBAAgB,CAAC,GAAG,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,GAAG;AACvE,UAAM,SAAS,cAAc,IAAI,oBAAoB;AAErD,WAAO;AAAA,EACT;AAAA,EAEA,MAAyB,cAAc,UAA2E;AAChH,UAAM,CAAC,IAAI,CAAC,IAAI,MAAM,YAAY,QAAQ;AAC1C,UAAM,2BAA2B,EAAE,IAAI,WAAS,mBAAmB,KAAK,CAAC;AACzE,QAAI,yBAAyB,SAAS,GAAG;AACvC,YAAM,iBAAiB,MAAM,KAAK,SAAS,WAAW,wBAAwB;AAC9E,UAAI,CAAC,eAAe,gBAAgB,eAAe,kBAAkB,yBAAyB;AAC5F,cAAM,IAAI,MAAM,4CAA4C;AAAA,IAChE;AAEA,UAAM,iCAAiC,GAAG,IAAI,WAAS,mBAAmB,KAAK,CAAC;AAChF,QAAI,+BAA+B,SAAS,GAAG;AAC7C,YAAM,uBAAuB,MAAM,KAAK,eAAe,WAAW,8BAA8B;AAChG,UAAI,CAAC,qBAAqB,gBAAgB,qBAAqB,kBAAkB,+BAA+B;AAC9G,cAAM,IAAI,MAAM,kDAAkD;AAAA,IACtE;AAEA,WAAO,CAAC,GAAG,gCAAgC,GAAG,wBAAwB,EAAE,IAAI,oBAAoB;AAAA,EAClG;AAAA,EAEA,MAAyB,YAAY,SAAqE;AAExG,QAAI;AAAA,MACF;AAAA,MAAO;AAAA,MAAQ;AAAA,IACjB,IAAI,WAAW,EAAE,OAAO,IAAI,OAAO,OAAO;AAE1C,QAAI,CAAC,MAAO,SAAQ;AACpB,QAAI,QAAQ,IAAK,SAAQ;AAEzB,QAAI,SAAS,MAAO,SAAQ;AAE5B,QAAI;AACJ,QAAI,QAAQ;AACV,YAAM,UAAU,MAAM,KAAK,kBAAkB,MAAM;AAEnD,UAAI,QAAS,MAAK,QAAQ;AAAA,IAC5B,OAAO;AACL,WAAK,UAAU,QAEX,SAAS,eAAe,CAAC,IAGzB,SAAS,gBAAgB,KAAK,IAAI,IAAI,OAAU,GAAI;AAAA,IAC1D;AACA,QAAI,CAAC,GAAI,QAAO,CAAC;AAGjB,UAAM,OAAO,UAAU,QAAQ,IAAI;AAGnC,UAAM,QAAQ,UAAU,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE;AAG1E,UAAM,gBAAgB,MAAM,KAAK,SAAS,cAAc,CAAC,eAAe;AACtE,aAAO,WACJ,UAAgC;AAAA;AAAA,QAE/B,EAAE,QAAQ,MAAM;AAAA;AAAA,QAEhB,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE;AAAA;AAAA,QAEvB,EAAE,QAAQ,MAAM;AAAA;AAAA,QAEhB;AAAA,UACE,YAAY;AAAA,YACV,MAAM,KAAK,sBAAsB;AAAA,YACjC,UAAU;AAAA,cACR,EAAE,QAAQ,MAAM;AAAA;AAAA,cAChB,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE;AAAA;AAAA,cACvB,EAAE,QAAQ,MAAM;AAAA;AAAA,YAClB;AAAA,UACF;AAAA,QACF;AAAA;AAAA,QAEA,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE;AAAA;AAAA,QAEvB,EAAE,QAAQ,MAAM;AAAA,MAClB,CAAC,EACA,UAAU,KAAK,kBAAkB,EACjC,QAAQ;AAAA,IACb,CAAC;AAGD,WAAO,cAAc,IAAI,oBAAoB;AAAA,EAC/C;AAAA,EAEA,MAAyB,eAAe;AACtC,UAAM,MAAM,aAAa;AACzB,UAAM,KAAK,cAAc;AACzB,WAAO;AAAA,EACT;AACF;;;AE7KA,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/Archivist.ts","../../src/lib/validByType.ts","../../src/index.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport type { Hash } from '@xylabs/hex'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport type { ArchivistNextOptions } from '@xyo-network/archivist-model'\nimport { ArchivistInsertQuerySchema, ArchivistNextQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport type {\n Payload, Schema, Sequence, WithStorageMeta,\n} from '@xyo-network/payload-model'\nimport type { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { fromDbRepresentation, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { ObjectId } from 'mongodb'\n\nimport { validByType } from './lib/index.js'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, MongoDBArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = MongoDBArchivistConfigSchema\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ArchivistNextQuerySchema, ...super.queries]\n\n /**\n * The amount of time to allow the aggregate query to execute\n */\n protected readonly aggregateTimeoutMs = 10_000\n\n protected async findOneByHash(hash: Hash) {\n const dataPayload = (await this.payloads.findOne({ _$hash: hash }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _$hash: hash }))\n if (dataBw) {\n return dataBw\n } else {\n const payload = (await this.payloads.findOne({ _hash: hash }))\n if (payload) {\n return payload\n } else {\n const bw = (await this.boundWitnesses.findOne({ _hash: hash }))\n return bw ?? undefined\n }\n }\n }\n }\n\n protected async findOneBySequence(sequence: Sequence) {\n const dataPayload = (await this.payloads.findOne({ _sequence: sequence }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _sequence: sequence }))\n return dataBw\n }\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads = (await Promise.all(remainingHashes.map(_dataHash => this.payloads.findOne({ _dataHash })))).filter(exists)\n const dataPayloadsHashes = new Set(dataPayloads.map(payload => payload._dataHash))\n remainingHashes = remainingHashes.filter(hash => !dataPayloadsHashes.has(hash))\n\n const dataBws = (await Promise.all(remainingHashes.map(_dataHash => this.boundWitnesses.findOne({ _dataHash })))).filter(exists)\n const dataBwsHashes = new Set(dataBws.map(payload => payload._dataHash))\n remainingHashes = remainingHashes.filter(hash => !dataBwsHashes.has(hash))\n\n const payloads = (await Promise.all(remainingHashes.map(_hash => this.payloads.findOne({ _hash })))).filter(exists)\n const payloadsHashes = new Set(payloads.map(payload => payload._hash))\n remainingHashes = remainingHashes.filter(hash => !payloadsHashes.has(hash))\n\n const bws = (await Promise.all(remainingHashes.map(_hash => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = new Set(bws.map(payload => payload._hash))\n remainingHashes = remainingHashes.filter(hash => !bwsHashes.has(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload>[]\n const result = foundPayloads.map(fromDbRepresentation)\n // console.log(`getHandler: ${JSON.stringify(hashes, null, 2)}:${JSON.stringify(result, null, 2)}`)\n return result\n }\n\n protected override async insertHandler(payloads: WithStorageMeta<Payload>[]): Promise<WithStorageMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = p.map(value => toDbRepresentation(value))\n if (payloadsWithExternalMeta.length > 0) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting Payloads')\n }\n\n const boundWitnessesWithExternalMeta = bw.map(value => toDbRepresentation(value))\n if (boundWitnessesWithExternalMeta.length > 0) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting BoundWitnesses')\n }\n\n return [...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta].map(fromDbRepresentation)\n }\n\n protected override async nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]> {\n // Sanitize inputs and set defaults\n let {\n limit, cursor, order, open,\n } = options ?? { limit: 10, order: 'desc' }\n\n if (!limit) limit = 10\n if (limit > 100) limit = 100\n\n if (order != 'asc') order = 'desc'\n\n let id: ObjectId | undefined\n if (cursor) {\n const payload = await this.findOneBySequence(cursor)\n // TODO: Should we throw an error if the requested payload is not found?\n if (payload) id = payload._id\n } else {\n id = order === 'asc'\n // If ascending, start from the beginning of time\n ? ObjectId.createFromTime(0)\n // If descending, start from now (plus a bit more in the future to ensure\n // them most recent ObjectIds are included)\n : ObjectId.createFromTime((Date.now() + 10_000) / 1000)\n }\n if (!id) return []\n\n // Create aggregate criteria\n const sort = order === 'asc' ? 1 : -1\n // TODO: How to handle random component of ID across multiple collections\n // to ensure we don't skip some payloads\n const match = order === 'asc' ? (open ? { _id: { $gte: id } } : { _id: { $gt: id } }) : (open ? { _id: { $lte: id } } : { _id: { $lt: id } })\n\n // Run the aggregate query\n const foundPayloads = await this.payloads.useCollection((collection) => {\n return collection\n .aggregate<PayloadWithMongoMeta>([\n // Pre-filter payloads collection\n { $match: match },\n // Sort payloads by _id\n { $sort: { _id: sort } },\n // Limit payloads to the first N payloads\n { $limit: limit },\n // Combine with filtered boundWitnesses collection\n {\n $unionWith: {\n coll: this.boundWitnessSdkConfig.collection,\n pipeline: [\n { $match: match }, // Pre-filter boundWitnesses\n { $sort: { _id: sort } }, // Sort boundWitnesses by _id\n { $limit: limit }, // Limit boundWitnesses to the first N boundWitnesses\n ],\n },\n },\n // Sort the combined result by _id\n { $sort: { _id: sort } },\n // Limit the final result to N documents\n { $limit: limit },\n ])\n .maxTimeMS(this.aggregateTimeoutMs)\n .toArray()\n })\n\n // Convert from DB representation to Payloads\n return foundPayloads.map(fromDbRepresentation)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: WithStorageMeta<Payload>[] = []) => {\n const results: [WithStorageMeta<BoundWitness>[], WithStorageMeta<Payload>[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(payload)\n } else {\n const errors = await bw.getErrors()\n console.log(`validByType.Error: ${JSON.stringify(errors, null, 2)}`)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payload)\n }\n }\n return\n }),\n )\n return results\n}\n","export * from './Archivist.js'\nexport * from '@xyo-network/archivist-model-mongodb'\n"],"mappings":"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","names":[]}
@@ -62,9 +62,9 @@ declare const MongoDBArchivistBase: (abstract new (...args: any[]) => {
62
62
  id: string;
63
63
  modName?: import("@xyo-network/module-model").ModuleName;
64
64
  params: import("@xylabs/object").BaseParamsFields & {
65
- account?: import(".store/@xyo-network-account-model-virtual-669f93d2a3/package").AccountInstance | "random";
65
+ account?: import(".store/@xyo-network-account-model-virtual-2eddd29fdf/package").AccountInstance | "random";
66
66
  addToResolvers?: boolean;
67
- additionalSigners?: import(".store/@xyo-network-account-model-virtual-669f93d2a3/package").AccountInstance[];
67
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-2eddd29fdf/package").AccountInstance[];
68
68
  allowNameResolution?: boolean;
69
69
  config: import("@xylabs/object").DeepRestrictToStringKeys<{
70
70
  schema: import("@xyo-network/payload-model").Schema;
@@ -130,11 +130,11 @@ declare const MongoDBArchivistBase: (abstract new (...args: any[]) => {
130
130
  emit<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
131
131
  emitSerial<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
132
132
  listenerCount(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): number;
133
- off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
134
- offAny(listener: import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventAnyListener | Promise<void>): void;
135
- on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventUnsubscribeFunction;
136
- onAny(listener: import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventAnyListener): import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventUnsubscribeFunction;
137
- once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventUnsubscribeFunction;
133
+ off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
134
+ offAny(listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventAnyListener | Promise<void>): void;
135
+ on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
136
+ onAny(listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventAnyListener): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
137
+ once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
138
138
  }) & {
139
139
  labels: import("@xyo-network/module-model-mongodb").MongoDBStorageClassLabels;
140
140
  } & typeof AbstractArchivist;
@@ -1 +1 @@
1
- {"version":3,"file":"Archivist.d.ts","sourceRoot":"","sources":["../../src/Archivist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Archivist.d.ts","sourceRoot":"","sources":["../../src/Archivist.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import type { Hash } from '@xylabs/hex';
2
+ import { AbstractArchivist } from '@xyo-network/archivist-abstract';
3
+ import type { ArchivistNextOptions } from '@xyo-network/archivist-model';
4
+ import { type Payload, type Schema, type Sequence, type WithStorageMeta } from '@xyo-network/payload-model';
5
+ import type { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb';
6
+ declare const MongoDBArchivistBaseV2: (abstract new (...args: any[]) => {
7
+ _payloadSdk: import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdk<PayloadWithMongoMeta> | undefined;
8
+ readonly jobQueue: import("@xyo-network/node-core-model").JobQueue;
9
+ readonly payloadSdkConfig: import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdkConfig;
10
+ readonly payloads: import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdk<PayloadWithMongoMeta>;
11
+ ensureIndexes(): Promise<void>;
12
+ address: import("@xylabs/hex").Address;
13
+ config: import("@xylabs/object").DeepRestrictToStringKeys<{
14
+ schema: import("@xyo-network/payload-model").Schema;
15
+ readonly archivist?: import("@xyo-network/module-model").ModuleIdentifier | undefined;
16
+ readonly archiving?: {
17
+ readonly archivists?: string[] | undefined;
18
+ readonly queries?: string[] | undefined;
19
+ } | undefined;
20
+ readonly allowedQueries?: string[] | undefined;
21
+ readonly consoleLogger?: import(".store/@xylabs-logger-npm-4.5.1-a411051254/package").LogLevel | undefined;
22
+ readonly labels?: {
23
+ [x: string]: string | undefined;
24
+ } | undefined;
25
+ readonly name?: import("@xyo-network/module-model").ModuleName | undefined;
26
+ readonly paging?: {
27
+ [x: string]: {
28
+ size?: number | undefined;
29
+ };
30
+ } | undefined;
31
+ readonly retry?: {
32
+ backoff?: number | undefined;
33
+ interval?: number | undefined;
34
+ retries?: number | undefined;
35
+ } | undefined;
36
+ readonly security?: {
37
+ readonly allowAnonymous?: boolean | undefined;
38
+ readonly allowed?: {
39
+ [x: string]: (Lowercase<string> | Lowercase<string>[])[];
40
+ } | undefined;
41
+ readonly disallowed?: {
42
+ [x: string]: Lowercase<string>[];
43
+ } | undefined;
44
+ } | undefined;
45
+ readonly sign?: boolean | undefined;
46
+ readonly storeQueries?: boolean | undefined;
47
+ readonly timestamp?: boolean | undefined;
48
+ payloadSdkConfig?: {
49
+ closeDelay?: number | undefined;
50
+ collection?: string | undefined;
51
+ maxPoolSize?: number | undefined;
52
+ } | undefined;
53
+ }>;
54
+ id: string;
55
+ modName?: import("@xyo-network/module-model").ModuleName;
56
+ params: import("@xylabs/object").BaseParamsFields & {
57
+ account?: import(".store/@xyo-network-account-model-virtual-2eddd29fdf/package").AccountInstance | "random";
58
+ addToResolvers?: boolean;
59
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-2eddd29fdf/package").AccountInstance[];
60
+ allowNameResolution?: boolean;
61
+ config: import("@xylabs/object").DeepRestrictToStringKeys<{
62
+ schema: import("@xyo-network/payload-model").Schema;
63
+ readonly archivist?: import("@xyo-network/module-model").ModuleIdentifier | undefined;
64
+ readonly archiving?: {
65
+ readonly archivists?: string[] | undefined;
66
+ readonly queries?: string[] | undefined;
67
+ } | undefined;
68
+ readonly allowedQueries?: string[] | undefined;
69
+ readonly consoleLogger?: import(".store/@xylabs-logger-npm-4.5.1-a411051254/package").LogLevel | undefined;
70
+ readonly labels?: {
71
+ [x: string]: string | undefined;
72
+ } | undefined;
73
+ readonly name?: import("@xyo-network/module-model").ModuleName | undefined;
74
+ readonly paging?: {
75
+ [x: string]: {
76
+ size?: number | undefined;
77
+ };
78
+ } | undefined;
79
+ readonly retry?: {
80
+ backoff?: number | undefined;
81
+ interval?: number | undefined;
82
+ retries?: number | undefined;
83
+ } | undefined;
84
+ readonly security?: {
85
+ readonly allowAnonymous?: boolean | undefined;
86
+ readonly allowed?: {
87
+ [x: string]: (Lowercase<string> | Lowercase<string>[])[];
88
+ } | undefined;
89
+ readonly disallowed?: {
90
+ [x: string]: Lowercase<string>[];
91
+ } | undefined;
92
+ } | undefined;
93
+ readonly sign?: boolean | undefined;
94
+ readonly storeQueries?: boolean | undefined;
95
+ readonly timestamp?: boolean | undefined;
96
+ payloadSdkConfig?: {
97
+ closeDelay?: number | undefined;
98
+ collection?: string | undefined;
99
+ maxPoolSize?: number | undefined;
100
+ } | undefined;
101
+ }>;
102
+ ephemeralQueryAccountEnabled?: boolean;
103
+ moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[];
104
+ } & {
105
+ jobQueue?: import("@xyo-network/node-core-model").JobQueue;
106
+ payloadSdkConfig?: (import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdkPrivateConfig & Partial<import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdkPublicConfig>) | undefined;
107
+ };
108
+ previousHash: () => import(".store/@xylabs-promise-npm-4.5.1-97d36b712b/package").Promisable<string | undefined>;
109
+ queries: string[];
110
+ query: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf) => import(".store/@xylabs-promise-npm-4.5.1-97d36b712b/package").Promisable<import("@xyo-network/module-model").ModuleQueryResult>;
111
+ queryable: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf_1 extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf_1) => import(".store/@xylabs-promise-npm-4.5.1-97d36b712b/package").Promisable<boolean>;
112
+ start?: () => import(".store/@xylabs-promise-npm-4.5.1-97d36b712b/package").Promisable<boolean>;
113
+ stop?: () => import(".store/@xylabs-promise-npm-4.5.1-97d36b712b/package").Promisable<boolean>;
114
+ eventData: import("@xyo-network/module-model").ModuleEventData<object>;
115
+ clearListeners(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): void;
116
+ emit<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
117
+ emitSerial<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
118
+ listenerCount(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): number;
119
+ off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
120
+ offAny(listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventAnyListener | Promise<void>): void;
121
+ on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
122
+ onAny(listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventAnyListener): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
123
+ once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
124
+ }) & {
125
+ labels: import("@xyo-network/module-model-mongodb").MongoDBStorageClassLabels;
126
+ } & typeof AbstractArchivist;
127
+ export declare class MongoDBArchivistV2 extends MongoDBArchivistBaseV2 {
128
+ static readonly configSchemas: Schema[];
129
+ static readonly defaultConfigSchema: Schema;
130
+ readonly queries: string[];
131
+ /**
132
+ * The amount of time to allow the aggregate query to execute
133
+ */
134
+ protected readonly aggregateTimeoutMs = 10000;
135
+ protected findOneByHash(hash: Hash): Promise<import("mongodb").WithId<PayloadWithMongoMeta> | undefined>;
136
+ protected findOneBySequence(sequence: Sequence): Promise<import("mongodb").WithId<PayloadWithMongoMeta> | undefined>;
137
+ protected getHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]>;
138
+ protected insertHandler(payloads: WithStorageMeta<Payload>[]): Promise<WithStorageMeta<Payload>[]>;
139
+ protected nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]>;
140
+ protected startHandler(): Promise<boolean>;
141
+ }
142
+ export {};
143
+ //# sourceMappingURL=ArchivistV2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchivistV2.d.ts","sourceRoot":"","sources":["../../src/ArchivistV2.ts"],"names":[],"mappings":"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"}
@@ -112,7 +112,8 @@ var MongoDBArchivist = class extends MongoDBArchivistBase {
112
112
  let {
113
113
  limit,
114
114
  cursor,
115
- order
115
+ order,
116
+ open
116
117
  } = options ?? { limit: 10, order: "desc" };
117
118
  if (!limit) limit = 10;
118
119
  if (limit > 100) limit = 100;
@@ -126,7 +127,7 @@ var MongoDBArchivist = class extends MongoDBArchivistBase {
126
127
  }
127
128
  if (!id) return [];
128
129
  const sort = order === "asc" ? 1 : -1;
129
- const match = order === "asc" ? { _id: { $gt: id } } : { _id: { $lt: id } };
130
+ const match = order === "asc" ? open ? { _id: { $gte: id } } : { _id: { $gt: id } } : open ? { _id: { $lte: id } } : { _id: { $lt: id } };
130
131
  const foundPayloads = await this.payloads.useCollection((collection) => {
131
132
  return collection.aggregate([
132
133
  // Pre-filter payloads collection
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Archivist.ts","../../src/lib/validByType.ts","../../src/index.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport type { Hash } from '@xylabs/hex'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport type { ArchivistNextOptions } from '@xyo-network/archivist-model'\nimport { ArchivistInsertQuerySchema, ArchivistNextQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport type {\n Payload, Schema, Sequence, WithStorageMeta,\n} from '@xyo-network/payload-model'\nimport type { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { fromDbRepresentation, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { ObjectId } from 'mongodb'\n\nimport { validByType } from './lib/index.js'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, MongoDBArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = MongoDBArchivistConfigSchema\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ArchivistNextQuerySchema, ...super.queries]\n\n /**\n * The amount of time to allow the aggregate query to execute\n */\n protected readonly aggregateTimeoutMs = 10_000\n\n protected async findOneByHash(hash: Hash) {\n const dataPayload = (await this.payloads.findOne({ _$hash: hash }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _$hash: hash }))\n if (dataBw) {\n return dataBw\n } else {\n const payload = (await this.payloads.findOne({ _hash: hash }))\n if (payload) {\n return payload\n } else {\n const bw = (await this.boundWitnesses.findOne({ _hash: hash }))\n return bw ?? undefined\n }\n }\n }\n }\n\n protected async findOneBySequence(sequence: Sequence) {\n const dataPayload = (await this.payloads.findOne({ _sequence: sequence }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _sequence: sequence }))\n return dataBw\n }\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads = (await Promise.all(remainingHashes.map(_dataHash => this.payloads.findOne({ _dataHash })))).filter(exists)\n const dataPayloadsHashes = new Set(dataPayloads.map(payload => payload._dataHash))\n remainingHashes = remainingHashes.filter(hash => !dataPayloadsHashes.has(hash))\n\n const dataBws = (await Promise.all(remainingHashes.map(_dataHash => this.boundWitnesses.findOne({ _dataHash })))).filter(exists)\n const dataBwsHashes = new Set(dataBws.map(payload => payload._dataHash))\n remainingHashes = remainingHashes.filter(hash => !dataBwsHashes.has(hash))\n\n const payloads = (await Promise.all(remainingHashes.map(_hash => this.payloads.findOne({ _hash })))).filter(exists)\n const payloadsHashes = new Set(payloads.map(payload => payload._hash))\n remainingHashes = remainingHashes.filter(hash => !payloadsHashes.has(hash))\n\n const bws = (await Promise.all(remainingHashes.map(_hash => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = new Set(bws.map(payload => payload._hash))\n remainingHashes = remainingHashes.filter(hash => !bwsHashes.has(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload>[]\n const result = foundPayloads.map(fromDbRepresentation)\n // console.log(`getHandler: ${JSON.stringify(hashes, null, 2)}:${JSON.stringify(result, null, 2)}`)\n return result\n }\n\n protected override async insertHandler(payloads: WithStorageMeta<Payload>[]): Promise<WithStorageMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = p.map(value => toDbRepresentation(value))\n if (payloadsWithExternalMeta.length > 0) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting Payloads')\n }\n\n const boundWitnessesWithExternalMeta = bw.map(value => toDbRepresentation(value))\n if (boundWitnessesWithExternalMeta.length > 0) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting BoundWitnesses')\n }\n\n return [...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta].map(fromDbRepresentation)\n }\n\n protected override async nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]> {\n // Sanitize inputs and set defaults\n let {\n limit, cursor, order,\n } = options ?? { limit: 10, order: 'desc' }\n\n if (!limit) limit = 10\n if (limit > 100) limit = 100\n\n if (order != 'asc') order = 'desc'\n\n let id: ObjectId | undefined\n if (cursor) {\n const payload = await this.findOneBySequence(cursor)\n // TODO: Should we throw an error if the requested payload is not found?\n if (payload) id = payload._id\n } else {\n id = order === 'asc'\n // If ascending, start from the beginning of time\n ? ObjectId.createFromTime(0)\n // If descending, start from now (plus a bit more in the future to ensure\n // them most recent ObjectIds are included)\n : ObjectId.createFromTime((Date.now() + 10_000) / 1000)\n }\n if (!id) return []\n\n // Create aggregate criteria\n const sort = order === 'asc' ? 1 : -1\n // TODO: How to handle random component of ID across multiple collections\n // to ensure we don't skip some payloads\n const match = order === 'asc' ? { _id: { $gt: id } } : { _id: { $lt: id } }\n\n // Run the aggregate query\n const foundPayloads = await this.payloads.useCollection((collection) => {\n return collection\n .aggregate<PayloadWithMongoMeta>([\n // Pre-filter payloads collection\n { $match: match },\n // Sort payloads by _id\n { $sort: { _id: sort } },\n // Limit payloads to the first N payloads\n { $limit: limit },\n // Combine with filtered boundWitnesses collection\n {\n $unionWith: {\n coll: this.boundWitnessSdkConfig.collection,\n pipeline: [\n { $match: match }, // Pre-filter boundWitnesses\n { $sort: { _id: sort } }, // Sort boundWitnesses by _id\n { $limit: limit }, // Limit boundWitnesses to the first N boundWitnesses\n ],\n },\n },\n // Sort the combined result by _id\n { $sort: { _id: sort } },\n // Limit the final result to N documents\n { $limit: limit },\n ])\n .maxTimeMS(this.aggregateTimeoutMs)\n .toArray()\n })\n\n // Convert from DB representation to Payloads\n return foundPayloads.map(fromDbRepresentation)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: WithStorageMeta<Payload>[] = []) => {\n const results: [WithStorageMeta<BoundWitness>[], WithStorageMeta<Payload>[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(payload)\n } else {\n const errors = await bw.getErrors()\n console.log(`validByType.Error: ${JSON.stringify(errors, null, 2)}`)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payload)\n }\n }\n return\n }),\n )\n return results\n}\n","export * from './Archivist.js'\nexport * from '@xyo-network/archivist-model-mongodb'\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/Archivist.ts","../../src/lib/validByType.ts","../../src/index.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport type { Hash } from '@xylabs/hex'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport type { ArchivistNextOptions } from '@xyo-network/archivist-model'\nimport { ArchivistInsertQuerySchema, ArchivistNextQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport type {\n Payload, Schema, Sequence, WithStorageMeta,\n} from '@xyo-network/payload-model'\nimport type { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { fromDbRepresentation, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { ObjectId } from 'mongodb'\n\nimport { validByType } from './lib/index.js'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, MongoDBArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = MongoDBArchivistConfigSchema\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ArchivistNextQuerySchema, ...super.queries]\n\n /**\n * The amount of time to allow the aggregate query to execute\n */\n protected readonly aggregateTimeoutMs = 10_000\n\n protected async findOneByHash(hash: Hash) {\n const dataPayload = (await this.payloads.findOne({ _$hash: hash }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _$hash: hash }))\n if (dataBw) {\n return dataBw\n } else {\n const payload = (await this.payloads.findOne({ _hash: hash }))\n if (payload) {\n return payload\n } else {\n const bw = (await this.boundWitnesses.findOne({ _hash: hash }))\n return bw ?? undefined\n }\n }\n }\n }\n\n protected async findOneBySequence(sequence: Sequence) {\n const dataPayload = (await this.payloads.findOne({ _sequence: sequence }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _sequence: sequence }))\n return dataBw\n }\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads = (await Promise.all(remainingHashes.map(_dataHash => this.payloads.findOne({ _dataHash })))).filter(exists)\n const dataPayloadsHashes = new Set(dataPayloads.map(payload => payload._dataHash))\n remainingHashes = remainingHashes.filter(hash => !dataPayloadsHashes.has(hash))\n\n const dataBws = (await Promise.all(remainingHashes.map(_dataHash => this.boundWitnesses.findOne({ _dataHash })))).filter(exists)\n const dataBwsHashes = new Set(dataBws.map(payload => payload._dataHash))\n remainingHashes = remainingHashes.filter(hash => !dataBwsHashes.has(hash))\n\n const payloads = (await Promise.all(remainingHashes.map(_hash => this.payloads.findOne({ _hash })))).filter(exists)\n const payloadsHashes = new Set(payloads.map(payload => payload._hash))\n remainingHashes = remainingHashes.filter(hash => !payloadsHashes.has(hash))\n\n const bws = (await Promise.all(remainingHashes.map(_hash => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = new Set(bws.map(payload => payload._hash))\n remainingHashes = remainingHashes.filter(hash => !bwsHashes.has(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload>[]\n const result = foundPayloads.map(fromDbRepresentation)\n // console.log(`getHandler: ${JSON.stringify(hashes, null, 2)}:${JSON.stringify(result, null, 2)}`)\n return result\n }\n\n protected override async insertHandler(payloads: WithStorageMeta<Payload>[]): Promise<WithStorageMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = p.map(value => toDbRepresentation(value))\n if (payloadsWithExternalMeta.length > 0) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting Payloads')\n }\n\n const boundWitnessesWithExternalMeta = bw.map(value => toDbRepresentation(value))\n if (boundWitnessesWithExternalMeta.length > 0) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting BoundWitnesses')\n }\n\n return [...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta].map(fromDbRepresentation)\n }\n\n protected override async nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]> {\n // Sanitize inputs and set defaults\n let {\n limit, cursor, order, open,\n } = options ?? { limit: 10, order: 'desc' }\n\n if (!limit) limit = 10\n if (limit > 100) limit = 100\n\n if (order != 'asc') order = 'desc'\n\n let id: ObjectId | undefined\n if (cursor) {\n const payload = await this.findOneBySequence(cursor)\n // TODO: Should we throw an error if the requested payload is not found?\n if (payload) id = payload._id\n } else {\n id = order === 'asc'\n // If ascending, start from the beginning of time\n ? ObjectId.createFromTime(0)\n // If descending, start from now (plus a bit more in the future to ensure\n // them most recent ObjectIds are included)\n : ObjectId.createFromTime((Date.now() + 10_000) / 1000)\n }\n if (!id) return []\n\n // Create aggregate criteria\n const sort = order === 'asc' ? 1 : -1\n // TODO: How to handle random component of ID across multiple collections\n // to ensure we don't skip some payloads\n const match = order === 'asc' ? (open ? { _id: { $gte: id } } : { _id: { $gt: id } }) : (open ? { _id: { $lte: id } } : { _id: { $lt: id } })\n\n // Run the aggregate query\n const foundPayloads = await this.payloads.useCollection((collection) => {\n return collection\n .aggregate<PayloadWithMongoMeta>([\n // Pre-filter payloads collection\n { $match: match },\n // Sort payloads by _id\n { $sort: { _id: sort } },\n // Limit payloads to the first N payloads\n { $limit: limit },\n // Combine with filtered boundWitnesses collection\n {\n $unionWith: {\n coll: this.boundWitnessSdkConfig.collection,\n pipeline: [\n { $match: match }, // Pre-filter boundWitnesses\n { $sort: { _id: sort } }, // Sort boundWitnesses by _id\n { $limit: limit }, // Limit boundWitnesses to the first N boundWitnesses\n ],\n },\n },\n // Sort the combined result by _id\n { $sort: { _id: sort } },\n // Limit the final result to N documents\n { $limit: limit },\n ])\n .maxTimeMS(this.aggregateTimeoutMs)\n .toArray()\n })\n\n // Convert from DB representation to Payloads\n return foundPayloads.map(fromDbRepresentation)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: WithStorageMeta<Payload>[] = []) => {\n const results: [WithStorageMeta<BoundWitness>[], WithStorageMeta<Payload>[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(payload)\n } else {\n const errors = await bw.getErrors()\n console.log(`validByType.Error: ${JSON.stringify(errors, null, 2)}`)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payload)\n }\n }\n return\n }),\n )\n return results\n}\n","export * from './Archivist.js'\nexport * from '@xyo-network/archivist-model-mongodb'\n"],"mappings":"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","names":[]}
@@ -62,9 +62,9 @@ declare const MongoDBArchivistBase: (abstract new (...args: any[]) => {
62
62
  id: string;
63
63
  modName?: import("@xyo-network/module-model").ModuleName;
64
64
  params: import("@xylabs/object").BaseParamsFields & {
65
- account?: import(".store/@xyo-network-account-model-virtual-669f93d2a3/package").AccountInstance | "random";
65
+ account?: import(".store/@xyo-network-account-model-virtual-2eddd29fdf/package").AccountInstance | "random";
66
66
  addToResolvers?: boolean;
67
- additionalSigners?: import(".store/@xyo-network-account-model-virtual-669f93d2a3/package").AccountInstance[];
67
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-2eddd29fdf/package").AccountInstance[];
68
68
  allowNameResolution?: boolean;
69
69
  config: import("@xylabs/object").DeepRestrictToStringKeys<{
70
70
  schema: import("@xyo-network/payload-model").Schema;
@@ -130,11 +130,11 @@ declare const MongoDBArchivistBase: (abstract new (...args: any[]) => {
130
130
  emit<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
131
131
  emitSerial<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
132
132
  listenerCount(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): number;
133
- off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
134
- offAny(listener: import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventAnyListener | Promise<void>): void;
135
- on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventUnsubscribeFunction;
136
- onAny(listener: import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventAnyListener): import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventUnsubscribeFunction;
137
- once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.6.11-8a3729f357/package").EventUnsubscribeFunction;
133
+ off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
134
+ offAny(listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventAnyListener | Promise<void>): void;
135
+ on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
136
+ onAny(listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventAnyListener): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
137
+ once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
138
138
  }) & {
139
139
  labels: import("@xyo-network/module-model-mongodb").MongoDBStorageClassLabels;
140
140
  } & typeof AbstractArchivist;
@@ -1 +1 @@
1
- {"version":3,"file":"Archivist.d.ts","sourceRoot":"","sources":["../../src/Archivist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Archivist.d.ts","sourceRoot":"","sources":["../../src/Archivist.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import type { Hash } from '@xylabs/hex';
2
+ import { AbstractArchivist } from '@xyo-network/archivist-abstract';
3
+ import type { ArchivistNextOptions } from '@xyo-network/archivist-model';
4
+ import { type Payload, type Schema, type Sequence, type WithStorageMeta } from '@xyo-network/payload-model';
5
+ import type { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb';
6
+ declare const MongoDBArchivistBaseV2: (abstract new (...args: any[]) => {
7
+ _payloadSdk: import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdk<PayloadWithMongoMeta> | undefined;
8
+ readonly jobQueue: import("@xyo-network/node-core-model").JobQueue;
9
+ readonly payloadSdkConfig: import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdkConfig;
10
+ readonly payloads: import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdk<PayloadWithMongoMeta>;
11
+ ensureIndexes(): Promise<void>;
12
+ address: import("@xylabs/hex").Address;
13
+ config: import("@xylabs/object").DeepRestrictToStringKeys<{
14
+ schema: import("@xyo-network/payload-model").Schema;
15
+ readonly archivist?: import("@xyo-network/module-model").ModuleIdentifier | undefined;
16
+ readonly archiving?: {
17
+ readonly archivists?: string[] | undefined;
18
+ readonly queries?: string[] | undefined;
19
+ } | undefined;
20
+ readonly allowedQueries?: string[] | undefined;
21
+ readonly consoleLogger?: import(".store/@xylabs-logger-npm-4.5.1-a411051254/package").LogLevel | undefined;
22
+ readonly labels?: {
23
+ [x: string]: string | undefined;
24
+ } | undefined;
25
+ readonly name?: import("@xyo-network/module-model").ModuleName | undefined;
26
+ readonly paging?: {
27
+ [x: string]: {
28
+ size?: number | undefined;
29
+ };
30
+ } | undefined;
31
+ readonly retry?: {
32
+ backoff?: number | undefined;
33
+ interval?: number | undefined;
34
+ retries?: number | undefined;
35
+ } | undefined;
36
+ readonly security?: {
37
+ readonly allowAnonymous?: boolean | undefined;
38
+ readonly allowed?: {
39
+ [x: string]: (Lowercase<string> | Lowercase<string>[])[];
40
+ } | undefined;
41
+ readonly disallowed?: {
42
+ [x: string]: Lowercase<string>[];
43
+ } | undefined;
44
+ } | undefined;
45
+ readonly sign?: boolean | undefined;
46
+ readonly storeQueries?: boolean | undefined;
47
+ readonly timestamp?: boolean | undefined;
48
+ payloadSdkConfig?: {
49
+ closeDelay?: number | undefined;
50
+ collection?: string | undefined;
51
+ maxPoolSize?: number | undefined;
52
+ } | undefined;
53
+ }>;
54
+ id: string;
55
+ modName?: import("@xyo-network/module-model").ModuleName;
56
+ params: import("@xylabs/object").BaseParamsFields & {
57
+ account?: import(".store/@xyo-network-account-model-virtual-2eddd29fdf/package").AccountInstance | "random";
58
+ addToResolvers?: boolean;
59
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-2eddd29fdf/package").AccountInstance[];
60
+ allowNameResolution?: boolean;
61
+ config: import("@xylabs/object").DeepRestrictToStringKeys<{
62
+ schema: import("@xyo-network/payload-model").Schema;
63
+ readonly archivist?: import("@xyo-network/module-model").ModuleIdentifier | undefined;
64
+ readonly archiving?: {
65
+ readonly archivists?: string[] | undefined;
66
+ readonly queries?: string[] | undefined;
67
+ } | undefined;
68
+ readonly allowedQueries?: string[] | undefined;
69
+ readonly consoleLogger?: import(".store/@xylabs-logger-npm-4.5.1-a411051254/package").LogLevel | undefined;
70
+ readonly labels?: {
71
+ [x: string]: string | undefined;
72
+ } | undefined;
73
+ readonly name?: import("@xyo-network/module-model").ModuleName | undefined;
74
+ readonly paging?: {
75
+ [x: string]: {
76
+ size?: number | undefined;
77
+ };
78
+ } | undefined;
79
+ readonly retry?: {
80
+ backoff?: number | undefined;
81
+ interval?: number | undefined;
82
+ retries?: number | undefined;
83
+ } | undefined;
84
+ readonly security?: {
85
+ readonly allowAnonymous?: boolean | undefined;
86
+ readonly allowed?: {
87
+ [x: string]: (Lowercase<string> | Lowercase<string>[])[];
88
+ } | undefined;
89
+ readonly disallowed?: {
90
+ [x: string]: Lowercase<string>[];
91
+ } | undefined;
92
+ } | undefined;
93
+ readonly sign?: boolean | undefined;
94
+ readonly storeQueries?: boolean | undefined;
95
+ readonly timestamp?: boolean | undefined;
96
+ payloadSdkConfig?: {
97
+ closeDelay?: number | undefined;
98
+ collection?: string | undefined;
99
+ maxPoolSize?: number | undefined;
100
+ } | undefined;
101
+ }>;
102
+ ephemeralQueryAccountEnabled?: boolean;
103
+ moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[];
104
+ } & {
105
+ jobQueue?: import("@xyo-network/node-core-model").JobQueue;
106
+ payloadSdkConfig?: (import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdkPrivateConfig & Partial<import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdkPublicConfig>) | undefined;
107
+ };
108
+ previousHash: () => import(".store/@xylabs-promise-npm-4.5.1-97d36b712b/package").Promisable<string | undefined>;
109
+ queries: string[];
110
+ query: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf) => import(".store/@xylabs-promise-npm-4.5.1-97d36b712b/package").Promisable<import("@xyo-network/module-model").ModuleQueryResult>;
111
+ queryable: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf_1 extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf_1) => import(".store/@xylabs-promise-npm-4.5.1-97d36b712b/package").Promisable<boolean>;
112
+ start?: () => import(".store/@xylabs-promise-npm-4.5.1-97d36b712b/package").Promisable<boolean>;
113
+ stop?: () => import(".store/@xylabs-promise-npm-4.5.1-97d36b712b/package").Promisable<boolean>;
114
+ eventData: import("@xyo-network/module-model").ModuleEventData<object>;
115
+ clearListeners(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): void;
116
+ emit<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
117
+ emitSerial<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
118
+ listenerCount(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): number;
119
+ off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
120
+ offAny(listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventAnyListener | Promise<void>): void;
121
+ on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
122
+ onAny(listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventAnyListener): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
123
+ once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.8.0-7e0bbfb689/package").EventUnsubscribeFunction;
124
+ }) & {
125
+ labels: import("@xyo-network/module-model-mongodb").MongoDBStorageClassLabels;
126
+ } & typeof AbstractArchivist;
127
+ export declare class MongoDBArchivistV2 extends MongoDBArchivistBaseV2 {
128
+ static readonly configSchemas: Schema[];
129
+ static readonly defaultConfigSchema: Schema;
130
+ readonly queries: string[];
131
+ /**
132
+ * The amount of time to allow the aggregate query to execute
133
+ */
134
+ protected readonly aggregateTimeoutMs = 10000;
135
+ protected findOneByHash(hash: Hash): Promise<import("mongodb").WithId<PayloadWithMongoMeta> | undefined>;
136
+ protected findOneBySequence(sequence: Sequence): Promise<import("mongodb").WithId<PayloadWithMongoMeta> | undefined>;
137
+ protected getHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]>;
138
+ protected insertHandler(payloads: WithStorageMeta<Payload>[]): Promise<WithStorageMeta<Payload>[]>;
139
+ protected nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]>;
140
+ protected startHandler(): Promise<boolean>;
141
+ }
142
+ export {};
143
+ //# sourceMappingURL=ArchivistV2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchivistV2.d.ts","sourceRoot":"","sources":["../../src/ArchivistV2.ts"],"names":[],"mappings":"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"}
@@ -112,7 +112,8 @@ var MongoDBArchivist = class extends MongoDBArchivistBase {
112
112
  let {
113
113
  limit,
114
114
  cursor,
115
- order
115
+ order,
116
+ open
116
117
  } = options ?? { limit: 10, order: "desc" };
117
118
  if (!limit) limit = 10;
118
119
  if (limit > 100) limit = 100;
@@ -126,7 +127,7 @@ var MongoDBArchivist = class extends MongoDBArchivistBase {
126
127
  }
127
128
  if (!id) return [];
128
129
  const sort = order === "asc" ? 1 : -1;
129
- const match = order === "asc" ? { _id: { $gt: id } } : { _id: { $lt: id } };
130
+ const match = order === "asc" ? open ? { _id: { $gte: id } } : { _id: { $gt: id } } : open ? { _id: { $lte: id } } : { _id: { $lt: id } };
130
131
  const foundPayloads = await this.payloads.useCollection((collection) => {
131
132
  return collection.aggregate([
132
133
  // Pre-filter payloads collection
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Archivist.ts","../../src/lib/validByType.ts","../../src/index.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport type { Hash } from '@xylabs/hex'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport type { ArchivistNextOptions } from '@xyo-network/archivist-model'\nimport { ArchivistInsertQuerySchema, ArchivistNextQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport type {\n Payload, Schema, Sequence, WithStorageMeta,\n} from '@xyo-network/payload-model'\nimport type { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { fromDbRepresentation, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { ObjectId } from 'mongodb'\n\nimport { validByType } from './lib/index.js'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, MongoDBArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = MongoDBArchivistConfigSchema\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ArchivistNextQuerySchema, ...super.queries]\n\n /**\n * The amount of time to allow the aggregate query to execute\n */\n protected readonly aggregateTimeoutMs = 10_000\n\n protected async findOneByHash(hash: Hash) {\n const dataPayload = (await this.payloads.findOne({ _$hash: hash }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _$hash: hash }))\n if (dataBw) {\n return dataBw\n } else {\n const payload = (await this.payloads.findOne({ _hash: hash }))\n if (payload) {\n return payload\n } else {\n const bw = (await this.boundWitnesses.findOne({ _hash: hash }))\n return bw ?? undefined\n }\n }\n }\n }\n\n protected async findOneBySequence(sequence: Sequence) {\n const dataPayload = (await this.payloads.findOne({ _sequence: sequence }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _sequence: sequence }))\n return dataBw\n }\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads = (await Promise.all(remainingHashes.map(_dataHash => this.payloads.findOne({ _dataHash })))).filter(exists)\n const dataPayloadsHashes = new Set(dataPayloads.map(payload => payload._dataHash))\n remainingHashes = remainingHashes.filter(hash => !dataPayloadsHashes.has(hash))\n\n const dataBws = (await Promise.all(remainingHashes.map(_dataHash => this.boundWitnesses.findOne({ _dataHash })))).filter(exists)\n const dataBwsHashes = new Set(dataBws.map(payload => payload._dataHash))\n remainingHashes = remainingHashes.filter(hash => !dataBwsHashes.has(hash))\n\n const payloads = (await Promise.all(remainingHashes.map(_hash => this.payloads.findOne({ _hash })))).filter(exists)\n const payloadsHashes = new Set(payloads.map(payload => payload._hash))\n remainingHashes = remainingHashes.filter(hash => !payloadsHashes.has(hash))\n\n const bws = (await Promise.all(remainingHashes.map(_hash => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = new Set(bws.map(payload => payload._hash))\n remainingHashes = remainingHashes.filter(hash => !bwsHashes.has(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload>[]\n const result = foundPayloads.map(fromDbRepresentation)\n // console.log(`getHandler: ${JSON.stringify(hashes, null, 2)}:${JSON.stringify(result, null, 2)}`)\n return result\n }\n\n protected override async insertHandler(payloads: WithStorageMeta<Payload>[]): Promise<WithStorageMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = p.map(value => toDbRepresentation(value))\n if (payloadsWithExternalMeta.length > 0) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting Payloads')\n }\n\n const boundWitnessesWithExternalMeta = bw.map(value => toDbRepresentation(value))\n if (boundWitnessesWithExternalMeta.length > 0) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting BoundWitnesses')\n }\n\n return [...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta].map(fromDbRepresentation)\n }\n\n protected override async nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]> {\n // Sanitize inputs and set defaults\n let {\n limit, cursor, order,\n } = options ?? { limit: 10, order: 'desc' }\n\n if (!limit) limit = 10\n if (limit > 100) limit = 100\n\n if (order != 'asc') order = 'desc'\n\n let id: ObjectId | undefined\n if (cursor) {\n const payload = await this.findOneBySequence(cursor)\n // TODO: Should we throw an error if the requested payload is not found?\n if (payload) id = payload._id\n } else {\n id = order === 'asc'\n // If ascending, start from the beginning of time\n ? ObjectId.createFromTime(0)\n // If descending, start from now (plus a bit more in the future to ensure\n // them most recent ObjectIds are included)\n : ObjectId.createFromTime((Date.now() + 10_000) / 1000)\n }\n if (!id) return []\n\n // Create aggregate criteria\n const sort = order === 'asc' ? 1 : -1\n // TODO: How to handle random component of ID across multiple collections\n // to ensure we don't skip some payloads\n const match = order === 'asc' ? { _id: { $gt: id } } : { _id: { $lt: id } }\n\n // Run the aggregate query\n const foundPayloads = await this.payloads.useCollection((collection) => {\n return collection\n .aggregate<PayloadWithMongoMeta>([\n // Pre-filter payloads collection\n { $match: match },\n // Sort payloads by _id\n { $sort: { _id: sort } },\n // Limit payloads to the first N payloads\n { $limit: limit },\n // Combine with filtered boundWitnesses collection\n {\n $unionWith: {\n coll: this.boundWitnessSdkConfig.collection,\n pipeline: [\n { $match: match }, // Pre-filter boundWitnesses\n { $sort: { _id: sort } }, // Sort boundWitnesses by _id\n { $limit: limit }, // Limit boundWitnesses to the first N boundWitnesses\n ],\n },\n },\n // Sort the combined result by _id\n { $sort: { _id: sort } },\n // Limit the final result to N documents\n { $limit: limit },\n ])\n .maxTimeMS(this.aggregateTimeoutMs)\n .toArray()\n })\n\n // Convert from DB representation to Payloads\n return foundPayloads.map(fromDbRepresentation)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: WithStorageMeta<Payload>[] = []) => {\n const results: [WithStorageMeta<BoundWitness>[], WithStorageMeta<Payload>[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(payload)\n } else {\n const errors = await bw.getErrors()\n console.log(`validByType.Error: ${JSON.stringify(errors, null, 2)}`)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payload)\n }\n }\n return\n }),\n )\n return results\n}\n","export * from './Archivist.js'\nexport * from '@xyo-network/archivist-model-mongodb'\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/Archivist.ts","../../src/lib/validByType.ts","../../src/index.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport type { Hash } from '@xylabs/hex'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport type { ArchivistNextOptions } from '@xyo-network/archivist-model'\nimport { ArchivistInsertQuerySchema, ArchivistNextQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport type {\n Payload, Schema, Sequence, WithStorageMeta,\n} from '@xyo-network/payload-model'\nimport type { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { fromDbRepresentation, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { ObjectId } from 'mongodb'\n\nimport { validByType } from './lib/index.js'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, MongoDBArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = MongoDBArchivistConfigSchema\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ArchivistNextQuerySchema, ...super.queries]\n\n /**\n * The amount of time to allow the aggregate query to execute\n */\n protected readonly aggregateTimeoutMs = 10_000\n\n protected async findOneByHash(hash: Hash) {\n const dataPayload = (await this.payloads.findOne({ _$hash: hash }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _$hash: hash }))\n if (dataBw) {\n return dataBw\n } else {\n const payload = (await this.payloads.findOne({ _hash: hash }))\n if (payload) {\n return payload\n } else {\n const bw = (await this.boundWitnesses.findOne({ _hash: hash }))\n return bw ?? undefined\n }\n }\n }\n }\n\n protected async findOneBySequence(sequence: Sequence) {\n const dataPayload = (await this.payloads.findOne({ _sequence: sequence }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _sequence: sequence }))\n return dataBw\n }\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads = (await Promise.all(remainingHashes.map(_dataHash => this.payloads.findOne({ _dataHash })))).filter(exists)\n const dataPayloadsHashes = new Set(dataPayloads.map(payload => payload._dataHash))\n remainingHashes = remainingHashes.filter(hash => !dataPayloadsHashes.has(hash))\n\n const dataBws = (await Promise.all(remainingHashes.map(_dataHash => this.boundWitnesses.findOne({ _dataHash })))).filter(exists)\n const dataBwsHashes = new Set(dataBws.map(payload => payload._dataHash))\n remainingHashes = remainingHashes.filter(hash => !dataBwsHashes.has(hash))\n\n const payloads = (await Promise.all(remainingHashes.map(_hash => this.payloads.findOne({ _hash })))).filter(exists)\n const payloadsHashes = new Set(payloads.map(payload => payload._hash))\n remainingHashes = remainingHashes.filter(hash => !payloadsHashes.has(hash))\n\n const bws = (await Promise.all(remainingHashes.map(_hash => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = new Set(bws.map(payload => payload._hash))\n remainingHashes = remainingHashes.filter(hash => !bwsHashes.has(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload>[]\n const result = foundPayloads.map(fromDbRepresentation)\n // console.log(`getHandler: ${JSON.stringify(hashes, null, 2)}:${JSON.stringify(result, null, 2)}`)\n return result\n }\n\n protected override async insertHandler(payloads: WithStorageMeta<Payload>[]): Promise<WithStorageMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = p.map(value => toDbRepresentation(value))\n if (payloadsWithExternalMeta.length > 0) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting Payloads')\n }\n\n const boundWitnessesWithExternalMeta = bw.map(value => toDbRepresentation(value))\n if (boundWitnessesWithExternalMeta.length > 0) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting BoundWitnesses')\n }\n\n return [...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta].map(fromDbRepresentation)\n }\n\n protected override async nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]> {\n // Sanitize inputs and set defaults\n let {\n limit, cursor, order, open,\n } = options ?? { limit: 10, order: 'desc' }\n\n if (!limit) limit = 10\n if (limit > 100) limit = 100\n\n if (order != 'asc') order = 'desc'\n\n let id: ObjectId | undefined\n if (cursor) {\n const payload = await this.findOneBySequence(cursor)\n // TODO: Should we throw an error if the requested payload is not found?\n if (payload) id = payload._id\n } else {\n id = order === 'asc'\n // If ascending, start from the beginning of time\n ? ObjectId.createFromTime(0)\n // If descending, start from now (plus a bit more in the future to ensure\n // them most recent ObjectIds are included)\n : ObjectId.createFromTime((Date.now() + 10_000) / 1000)\n }\n if (!id) return []\n\n // Create aggregate criteria\n const sort = order === 'asc' ? 1 : -1\n // TODO: How to handle random component of ID across multiple collections\n // to ensure we don't skip some payloads\n const match = order === 'asc' ? (open ? { _id: { $gte: id } } : { _id: { $gt: id } }) : (open ? { _id: { $lte: id } } : { _id: { $lt: id } })\n\n // Run the aggregate query\n const foundPayloads = await this.payloads.useCollection((collection) => {\n return collection\n .aggregate<PayloadWithMongoMeta>([\n // Pre-filter payloads collection\n { $match: match },\n // Sort payloads by _id\n { $sort: { _id: sort } },\n // Limit payloads to the first N payloads\n { $limit: limit },\n // Combine with filtered boundWitnesses collection\n {\n $unionWith: {\n coll: this.boundWitnessSdkConfig.collection,\n pipeline: [\n { $match: match }, // Pre-filter boundWitnesses\n { $sort: { _id: sort } }, // Sort boundWitnesses by _id\n { $limit: limit }, // Limit boundWitnesses to the first N boundWitnesses\n ],\n },\n },\n // Sort the combined result by _id\n { $sort: { _id: sort } },\n // Limit the final result to N documents\n { $limit: limit },\n ])\n .maxTimeMS(this.aggregateTimeoutMs)\n .toArray()\n })\n\n // Convert from DB representation to Payloads\n return foundPayloads.map(fromDbRepresentation)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: WithStorageMeta<Payload>[] = []) => {\n const results: [WithStorageMeta<BoundWitness>[], WithStorageMeta<Payload>[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(payload)\n } else {\n const errors = await bw.getErrors()\n console.log(`validByType.Error: ${JSON.stringify(errors, null, 2)}`)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payload)\n }\n }\n return\n }),\n )\n return results\n}\n","export * from './Archivist.js'\nexport * from '@xyo-network/archivist-model-mongodb'\n"],"mappings":";AAAA,SAAS,cAAc;AAEvB,SAAS,yBAAyB;AAElC,SAAS,4BAA4B,gCAAgC;AACrE,SAAS,oCAAoC;AAC7C,SAAS,0BAA0B;AAKnC,SAAS,sBAAsB,0BAA0B;AACzD,SAAS,gBAAgB;;;ACXzB,SAAS,gBAAgB,2BAA2B;AACpD,SAAS,qBAAqB,gCAAgC;AAE9D,SAAS,sBAAsB;AAExB,IAAM,cAAc,OAAO,WAAuC,CAAC,MAAM;AAC9E,QAAM,UAAyE,CAAC,CAAC,GAAG,CAAC,CAAC;AACtF,QAAM,QAAQ;AAAA,IACZ,SAAS,IAAI,OAAO,YAAY;AAC9B,UAAI,eAAe,OAAO,GAAG;AAC3B,cAAM,UAAU,oBAAoB,OAAO,IAAI,2BAA2B;AAC1E,cAAM,KAAK,QAAQ,MAAM,OAAO;AAChC,YAAI,MAAM,GAAG,SAAS,GAAG;AACvB,kBAAQ,CAAC,EAAE,KAAK,OAAO;AAAA,QACzB,OAAO;AACL,gBAAM,SAAS,MAAM,GAAG,UAAU;AAClC,kBAAQ,IAAI,sBAAsB,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC,EAAE;AAAA,QACrE;AAAA,MACF,OAAO;AACL,cAAM,iBAAiB,eAAe,KAAK,OAAO;AAClD,YAAI,MAAM,eAAe,SAAS,GAAG;AACnC,kBAAQ,CAAC,EAAE,KAAK,OAAO;AAAA,QACzB;AAAA,MACF;AACA;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO;AACT;;;ADbA,IAAM,uBAAuB,mBAAmB,iBAAiB;AAE1D,IAAM,mBAAN,cAA+B,qBAAqB;AAAA,EACzD,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,4BAA4B;AAAA,EACxG,OAAyB,sBAA8B;AAAA,EAErC,UAAoB,CAAC,4BAA4B,0BAA0B,GAAG,MAAM,OAAO;AAAA;AAAA;AAAA;AAAA,EAK1F,qBAAqB;AAAA,EAExC,MAAgB,cAAc,MAAY;AACxC,UAAM,cAAe,MAAM,KAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,CAAC;AACjE,QAAI,aAAa;AACf,aAAO;AAAA,IACT,OAAO;AACL,YAAM,SAAU,MAAM,KAAK,eAAe,QAAQ,EAAE,QAAQ,KAAK,CAAC;AAClE,UAAI,QAAQ;AACV,eAAO;AAAA,MACT,OAAO;AACL,cAAM,UAAW,MAAM,KAAK,SAAS,QAAQ,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAI,SAAS;AACX,iBAAO;AAAA,QACT,OAAO;AACL,gBAAM,KAAM,MAAM,KAAK,eAAe,QAAQ,EAAE,OAAO,KAAK,CAAC;AAC7D,iBAAO,MAAM;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAgB,kBAAkB,UAAoB;AACpD,UAAM,cAAe,MAAM,KAAK,SAAS,QAAQ,EAAE,WAAW,SAAS,CAAC;AACxE,QAAI,aAAa;AACf,aAAO;AAAA,IACT,OAAO;AACL,YAAM,SAAU,MAAM,KAAK,eAAe,QAAQ,EAAE,WAAW,SAAS,CAAC;AACzE,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAyB,WAAW,QAAqD;AACvF,QAAI,kBAAkB,CAAC,GAAG,MAAM;AAEhC,UAAM,gBAAgB,MAAM,QAAQ,IAAI,gBAAgB,IAAI,eAAa,KAAK,SAAS,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM;AAC9H,UAAM,qBAAqB,IAAI,IAAI,aAAa,IAAI,aAAW,QAAQ,SAAS,CAAC;AACjF,sBAAkB,gBAAgB,OAAO,UAAQ,CAAC,mBAAmB,IAAI,IAAI,CAAC;AAE9E,UAAM,WAAW,MAAM,QAAQ,IAAI,gBAAgB,IAAI,eAAa,KAAK,eAAe,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM;AAC/H,UAAM,gBAAgB,IAAI,IAAI,QAAQ,IAAI,aAAW,QAAQ,SAAS,CAAC;AACvE,sBAAkB,gBAAgB,OAAO,UAAQ,CAAC,cAAc,IAAI,IAAI,CAAC;AAEzE,UAAM,YAAY,MAAM,QAAQ,IAAI,gBAAgB,IAAI,WAAS,KAAK,SAAS,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM;AAClH,UAAM,iBAAiB,IAAI,IAAI,SAAS,IAAI,aAAW,QAAQ,KAAK,CAAC;AACrE,sBAAkB,gBAAgB,OAAO,UAAQ,CAAC,eAAe,IAAI,IAAI,CAAC;AAE1E,UAAM,OAAO,MAAM,QAAQ,IAAI,gBAAgB,IAAI,WAAS,KAAK,eAAe,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM;AACnH,UAAM,YAAY,IAAI,IAAI,IAAI,IAAI,aAAW,QAAQ,KAAK,CAAC;AAC3D,sBAAkB,gBAAgB,OAAO,UAAQ,CAAC,UAAU,IAAI,IAAI,CAAC;AAErE,UAAM,gBAAgB,CAAC,GAAG,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,GAAG;AACvE,UAAM,SAAS,cAAc,IAAI,oBAAoB;AAErD,WAAO;AAAA,EACT;AAAA,EAEA,MAAyB,cAAc,UAA2E;AAChH,UAAM,CAAC,IAAI,CAAC,IAAI,MAAM,YAAY,QAAQ;AAC1C,UAAM,2BAA2B,EAAE,IAAI,WAAS,mBAAmB,KAAK,CAAC;AACzE,QAAI,yBAAyB,SAAS,GAAG;AACvC,YAAM,iBAAiB,MAAM,KAAK,SAAS,WAAW,wBAAwB;AAC9E,UAAI,CAAC,eAAe,gBAAgB,eAAe,kBAAkB,yBAAyB;AAC5F,cAAM,IAAI,MAAM,4CAA4C;AAAA,IAChE;AAEA,UAAM,iCAAiC,GAAG,IAAI,WAAS,mBAAmB,KAAK,CAAC;AAChF,QAAI,+BAA+B,SAAS,GAAG;AAC7C,YAAM,uBAAuB,MAAM,KAAK,eAAe,WAAW,8BAA8B;AAChG,UAAI,CAAC,qBAAqB,gBAAgB,qBAAqB,kBAAkB,+BAA+B;AAC9G,cAAM,IAAI,MAAM,kDAAkD;AAAA,IACtE;AAEA,WAAO,CAAC,GAAG,gCAAgC,GAAG,wBAAwB,EAAE,IAAI,oBAAoB;AAAA,EAClG;AAAA,EAEA,MAAyB,YAAY,SAAqE;AAExG,QAAI;AAAA,MACF;AAAA,MAAO;AAAA,MAAQ;AAAA,MAAO;AAAA,IACxB,IAAI,WAAW,EAAE,OAAO,IAAI,OAAO,OAAO;AAE1C,QAAI,CAAC,MAAO,SAAQ;AACpB,QAAI,QAAQ,IAAK,SAAQ;AAEzB,QAAI,SAAS,MAAO,SAAQ;AAE5B,QAAI;AACJ,QAAI,QAAQ;AACV,YAAM,UAAU,MAAM,KAAK,kBAAkB,MAAM;AAEnD,UAAI,QAAS,MAAK,QAAQ;AAAA,IAC5B,OAAO;AACL,WAAK,UAAU,QAEX,SAAS,eAAe,CAAC,IAGzB,SAAS,gBAAgB,KAAK,IAAI,IAAI,OAAU,GAAI;AAAA,IAC1D;AACA,QAAI,CAAC,GAAI,QAAO,CAAC;AAGjB,UAAM,OAAO,UAAU,QAAQ,IAAI;AAGnC,UAAM,QAAQ,UAAU,QAAS,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,IAAM,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE;AAG3I,UAAM,gBAAgB,MAAM,KAAK,SAAS,cAAc,CAAC,eAAe;AACtE,aAAO,WACJ,UAAgC;AAAA;AAAA,QAE/B,EAAE,QAAQ,MAAM;AAAA;AAAA,QAEhB,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE;AAAA;AAAA,QAEvB,EAAE,QAAQ,MAAM;AAAA;AAAA,QAEhB;AAAA,UACE,YAAY;AAAA,YACV,MAAM,KAAK,sBAAsB;AAAA,YACjC,UAAU;AAAA,cACR,EAAE,QAAQ,MAAM;AAAA;AAAA,cAChB,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE;AAAA;AAAA,cACvB,EAAE,QAAQ,MAAM;AAAA;AAAA,YAClB;AAAA,UACF;AAAA,QACF;AAAA;AAAA,QAEA,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE;AAAA;AAAA,QAEvB,EAAE,QAAQ,MAAM;AAAA,MAClB,CAAC,EACA,UAAU,KAAK,kBAAkB,EACjC,QAAQ;AAAA,IACb,CAAC;AAGD,WAAO,cAAc,IAAI,oBAAoB;AAAA,EAC/C;AAAA,EAEA,MAAyB,eAAe;AACtC,UAAM,MAAM,aAAa;AACzB,UAAM,KAAK,cAAc;AACzB,WAAO;AAAA,EACT;AACF;;;AE7KA,cAAc;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/archivist-mongodb",
3
- "version": "3.2.4",
3
+ "version": "3.3.1",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -39,27 +39,27 @@
39
39
  "dependencies": {
40
40
  "@xylabs/exists": "^4.5.1",
41
41
  "@xylabs/hex": "^4.5.1",
42
- "@xyo-network/archivist-abstract": "^3.6.11",
43
- "@xyo-network/archivist-model": "^3.6.11",
44
- "@xyo-network/archivist-model-mongodb": "^3.2.4",
45
- "@xyo-network/boundwitness-model": "^3.6.11",
46
- "@xyo-network/boundwitness-wrapper": "^3.6.11",
47
- "@xyo-network/module-abstract-mongodb": "^3.2.4",
48
- "@xyo-network/payload-model": "^3.6.11",
49
- "@xyo-network/payload-mongodb": "^3.2.4",
50
- "@xyo-network/payload-wrapper": "^3.6.11",
51
- "mongodb": "~6.12.0"
42
+ "@xyo-network/archivist-abstract": "^3.8.0",
43
+ "@xyo-network/archivist-model": "^3.8.0",
44
+ "@xyo-network/archivist-model-mongodb": "^3.3.1",
45
+ "@xyo-network/boundwitness-model": "^3.8.0",
46
+ "@xyo-network/boundwitness-wrapper": "^3.8.0",
47
+ "@xyo-network/module-abstract-mongodb": "^3.3.1",
48
+ "@xyo-network/payload-model": "^3.8.0",
49
+ "@xyo-network/payload-mongodb": "^3.3.1",
50
+ "@xyo-network/payload-wrapper": "^3.8.0",
51
+ "mongodb": "~6.13.0"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@xylabs/delay": "^4.5.1",
55
55
  "@xylabs/ts-scripts-yarn3": "^4.2.6",
56
56
  "@xylabs/tsconfig": "^4.2.6",
57
57
  "@xylabs/vitest-extended": "^4.5.1",
58
- "@xyo-network/account": "^3.6.11",
59
- "@xyo-network/archivist-wrapper": "^3.6.11",
60
- "@xyo-network/boundwitness-builder": "^3.6.11",
61
- "@xyo-network/payload-builder": "^3.6.11",
62
- "@xyo-network/sdk-xyo-mongo-js": "^3.2.4",
58
+ "@xyo-network/account": "^3.8.0",
59
+ "@xyo-network/archivist-wrapper": "^3.8.0",
60
+ "@xyo-network/boundwitness-builder": "^3.8.0",
61
+ "@xyo-network/payload-builder": "^3.8.0",
62
+ "@xyo-network/sdk-xyo-mongo-js": "^3.3.1",
63
63
  "fake-indexeddb": "^6.0.0",
64
64
  "typescript": "^5.7.3",
65
65
  "vitest": "^3.0.4"
package/src/Archivist.ts CHANGED
@@ -104,7 +104,7 @@ export class MongoDBArchivist extends MongoDBArchivistBase {
104
104
  protected override async nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]> {
105
105
  // Sanitize inputs and set defaults
106
106
  let {
107
- limit, cursor, order,
107
+ limit, cursor, order, open,
108
108
  } = options ?? { limit: 10, order: 'desc' }
109
109
 
110
110
  if (!limit) limit = 10
@@ -131,7 +131,7 @@ export class MongoDBArchivist extends MongoDBArchivistBase {
131
131
  const sort = order === 'asc' ? 1 : -1
132
132
  // TODO: How to handle random component of ID across multiple collections
133
133
  // to ensure we don't skip some payloads
134
- const match = order === 'asc' ? { _id: { $gt: id } } : { _id: { $lt: id } }
134
+ const match = order === 'asc' ? (open ? { _id: { $gte: id } } : { _id: { $gt: id } }) : (open ? { _id: { $lte: id } } : { _id: { $lt: id } })
135
135
 
136
136
  // Run the aggregate query
137
137
  const foundPayloads = await this.payloads.useCollection((collection) => {
@@ -0,0 +1,133 @@
1
+ import { exists } from '@xylabs/exists'
2
+ import type { Hash } from '@xylabs/hex'
3
+ import { AbstractArchivist } from '@xyo-network/archivist-abstract'
4
+ import type { ArchivistNextOptions } from '@xyo-network/archivist-model'
5
+ import { ArchivistInsertQuerySchema, ArchivistNextQuerySchema } from '@xyo-network/archivist-model'
6
+ import { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'
7
+ import { MongoDBModuleMixinV2 } from '@xyo-network/module-abstract-mongodb'
8
+ import {
9
+ type Payload, type Schema, type Sequence, SequenceConstants,
10
+ type WithStorageMeta,
11
+ } from '@xyo-network/payload-model'
12
+ import type { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'
13
+ import { fromDbRepresentation, toDbRepresentation } from '@xyo-network/payload-mongodb'
14
+
15
+ const MongoDBArchivistBaseV2 = MongoDBModuleMixinV2(AbstractArchivist)
16
+
17
+ export class MongoDBArchivistV2 extends MongoDBArchivistBaseV2 {
18
+ static override readonly configSchemas: Schema[] = [...super.configSchemas, MongoDBArchivistConfigSchema]
19
+ static override readonly defaultConfigSchema: Schema = MongoDBArchivistConfigSchema
20
+
21
+ override readonly queries: string[] = [ArchivistInsertQuerySchema, ArchivistNextQuerySchema, ...super.queries]
22
+
23
+ /**
24
+ * The amount of time to allow the aggregate query to execute
25
+ */
26
+ protected readonly aggregateTimeoutMs = 10_000
27
+
28
+ protected async findOneByHash(hash: Hash) {
29
+ const dataPayload = (await this.payloads.findOne({ _$hash: hash }))
30
+ if (dataPayload) {
31
+ return dataPayload
32
+ } else {
33
+ const payload = (await this.payloads.findOne({ _hash: hash }))
34
+ if (payload) {
35
+ return payload
36
+ }
37
+ }
38
+ }
39
+
40
+ protected async findOneBySequence(sequence: Sequence) {
41
+ const dataPayload = (await this.payloads.findOne({ _sequence: sequence }))
42
+ if (dataPayload) {
43
+ return dataPayload
44
+ }
45
+ }
46
+
47
+ protected override async getHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {
48
+ let remainingHashes = [...hashes]
49
+
50
+ const dataPayloads = (await Promise.all(remainingHashes.map(_dataHash => this.payloads.findOne({ _dataHash })))).filter(exists)
51
+ const dataPayloadsHashes = new Set(dataPayloads.map(payload => payload._dataHash))
52
+ remainingHashes = remainingHashes.filter(hash => !dataPayloadsHashes.has(hash))
53
+
54
+ const payloads = (await Promise.all(remainingHashes.map(_hash => this.payloads.findOne({ _hash })))).filter(exists)
55
+ const payloadsHashes = new Set(payloads.map(payload => payload._hash))
56
+ remainingHashes = remainingHashes.filter(hash => !payloadsHashes.has(hash))
57
+
58
+ const foundPayloads = [...dataPayloads, ...payloads] as PayloadWithMongoMeta<Payload>[]
59
+ const result = foundPayloads.map(fromDbRepresentation)
60
+ return result
61
+ }
62
+
63
+ protected override async insertHandler(payloads: WithStorageMeta<Payload>[]): Promise<WithStorageMeta<Payload>[]> {
64
+ const payloadsWithExternalMeta = payloads.map(value => toDbRepresentation(value))
65
+ if (payloadsWithExternalMeta.length > 0) {
66
+ const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)
67
+ if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)
68
+ throw new Error('MongoDBArchivist: Error inserting Payloads')
69
+ }
70
+
71
+ return [...payloadsWithExternalMeta].map(fromDbRepresentation)
72
+ }
73
+
74
+ protected override async nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]> {
75
+ // Sanitize inputs and set defaults
76
+ let {
77
+ limit, cursor, order, open,
78
+ } = options ?? { limit: 10, order: 'desc' }
79
+
80
+ if (!limit) limit = 10
81
+ if (limit > 100) limit = 100
82
+
83
+ if (order != 'asc') order = 'desc'
84
+
85
+ let sequence: Sequence | undefined
86
+ if (cursor) {
87
+ const payload = await this.findOneBySequence(cursor)
88
+ // TODO: Should we throw an error if the requested payload is not found?
89
+ if (payload) sequence = payload._sequence
90
+ } else {
91
+ sequence = order === 'asc'
92
+ // If ascending, start from the beginning of time
93
+ ? SequenceConstants.minLocalSequence
94
+ // If descending, start from now (plus a bit more in the future to ensure
95
+ // them most recent ObjectIds are included)
96
+ : SequenceConstants.maxLocalSequence
97
+ }
98
+ if (!sequence) return []
99
+
100
+ // Create find criteria
101
+ const sort = order === 'asc' ? 1 : -1
102
+
103
+ const match = order === 'asc'
104
+ ? (open
105
+ ? { _sequence: { $gte: sequence } }
106
+ : { _sequence: { $gt: sequence } })
107
+ : (open ? { _sequence: { $lte: sequence } } : { _sequence: { $lt: sequence } })
108
+
109
+ // Run the aggregate query
110
+ const foundPayloads = await this.payloads.useCollection((collection) => {
111
+ return collection
112
+ .aggregate<PayloadWithMongoMeta>([
113
+ // Pre-filter payloads collection
114
+ { $match: match },
115
+ // Sort payloads by _sequence
116
+ { $sort: { _sequence: sort } },
117
+ // Limit payloads to the first N payloads
118
+ { $limit: limit },
119
+ ])
120
+ .maxTimeMS(this.aggregateTimeoutMs)
121
+ .toArray()
122
+ })
123
+
124
+ // Convert from DB representation to Payloads
125
+ return foundPayloads.map(fromDbRepresentation)
126
+ }
127
+
128
+ protected override async startHandler() {
129
+ await super.startHandler()
130
+ await this.ensureIndexes()
131
+ return true
132
+ }
133
+ }