@xyo-network/archivist-mongodb 2.83.0 → 2.84.0-rc.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.
Files changed (100) hide show
  1. package/dist/browser/Archivist.d.cts +15 -26
  2. package/dist/browser/Archivist.d.cts.map +1 -1
  3. package/dist/browser/Archivist.d.mts +15 -26
  4. package/dist/browser/Archivist.d.mts.map +1 -1
  5. package/dist/browser/Archivist.d.ts +15 -26
  6. package/dist/browser/Archivist.d.ts.map +1 -1
  7. package/dist/browser/index.cjs +68 -54
  8. package/dist/browser/index.cjs.map +1 -1
  9. package/dist/browser/index.js +68 -54
  10. package/dist/browser/index.js.map +1 -1
  11. package/dist/browser/lib/index.d.cts +1 -2
  12. package/dist/browser/lib/index.d.cts.map +1 -1
  13. package/dist/browser/lib/index.d.mts +1 -2
  14. package/dist/browser/lib/index.d.mts.map +1 -1
  15. package/dist/browser/lib/index.d.ts +1 -2
  16. package/dist/browser/lib/index.d.ts.map +1 -1
  17. package/dist/browser/lib/toPayloadWithMongoMeta.d.cts +5 -0
  18. package/dist/browser/lib/toPayloadWithMongoMeta.d.cts.map +1 -0
  19. package/dist/browser/lib/toPayloadWithMongoMeta.d.mts +5 -0
  20. package/dist/browser/lib/toPayloadWithMongoMeta.d.mts.map +1 -0
  21. package/dist/browser/lib/toPayloadWithMongoMeta.d.ts +5 -0
  22. package/dist/browser/lib/toPayloadWithMongoMeta.d.ts.map +1 -0
  23. package/dist/browser/lib/toReturnValue.d.cts +1 -2
  24. package/dist/browser/lib/toReturnValue.d.cts.map +1 -1
  25. package/dist/browser/lib/toReturnValue.d.mts +1 -2
  26. package/dist/browser/lib/toReturnValue.d.mts.map +1 -1
  27. package/dist/browser/lib/toReturnValue.d.ts +1 -2
  28. package/dist/browser/lib/toReturnValue.d.ts.map +1 -1
  29. package/dist/browser/lib/validByType.d.cts +3 -7
  30. package/dist/browser/lib/validByType.d.cts.map +1 -1
  31. package/dist/browser/lib/validByType.d.mts +3 -7
  32. package/dist/browser/lib/validByType.d.mts.map +1 -1
  33. package/dist/browser/lib/validByType.d.ts +3 -7
  34. package/dist/browser/lib/validByType.d.ts.map +1 -1
  35. package/dist/node/Archivist.d.cts +15 -26
  36. package/dist/node/Archivist.d.cts.map +1 -1
  37. package/dist/node/Archivist.d.mts +15 -26
  38. package/dist/node/Archivist.d.mts.map +1 -1
  39. package/dist/node/Archivist.d.ts +15 -26
  40. package/dist/node/Archivist.d.ts.map +1 -1
  41. package/dist/node/index.cjs +68 -54
  42. package/dist/node/index.cjs.map +1 -1
  43. package/dist/node/index.js +68 -54
  44. package/dist/node/index.js.map +1 -1
  45. package/dist/node/lib/index.d.cts +1 -2
  46. package/dist/node/lib/index.d.cts.map +1 -1
  47. package/dist/node/lib/index.d.mts +1 -2
  48. package/dist/node/lib/index.d.mts.map +1 -1
  49. package/dist/node/lib/index.d.ts +1 -2
  50. package/dist/node/lib/index.d.ts.map +1 -1
  51. package/dist/node/lib/toPayloadWithMongoMeta.d.cts +5 -0
  52. package/dist/node/lib/toPayloadWithMongoMeta.d.cts.map +1 -0
  53. package/dist/node/lib/toPayloadWithMongoMeta.d.mts +5 -0
  54. package/dist/node/lib/toPayloadWithMongoMeta.d.mts.map +1 -0
  55. package/dist/node/lib/toPayloadWithMongoMeta.d.ts +5 -0
  56. package/dist/node/lib/toPayloadWithMongoMeta.d.ts.map +1 -0
  57. package/dist/node/lib/toReturnValue.d.cts +1 -2
  58. package/dist/node/lib/toReturnValue.d.cts.map +1 -1
  59. package/dist/node/lib/toReturnValue.d.mts +1 -2
  60. package/dist/node/lib/toReturnValue.d.mts.map +1 -1
  61. package/dist/node/lib/toReturnValue.d.ts +1 -2
  62. package/dist/node/lib/toReturnValue.d.ts.map +1 -1
  63. package/dist/node/lib/validByType.d.cts +3 -7
  64. package/dist/node/lib/validByType.d.cts.map +1 -1
  65. package/dist/node/lib/validByType.d.mts +3 -7
  66. package/dist/node/lib/validByType.d.mts.map +1 -1
  67. package/dist/node/lib/validByType.d.ts +3 -7
  68. package/dist/node/lib/validByType.d.ts.map +1 -1
  69. package/package.json +26 -23
  70. package/src/Archivist.ts +35 -19
  71. package/src/lib/index.ts +1 -2
  72. package/src/lib/toPayloadWithMongoMeta.ts +10 -0
  73. package/src/lib/toReturnValue.ts +3 -9
  74. package/src/lib/validByType.ts +10 -6
  75. package/dist/browser/lib/toBoundWitnessWithMeta.d.cts +0 -5
  76. package/dist/browser/lib/toBoundWitnessWithMeta.d.cts.map +0 -1
  77. package/dist/browser/lib/toBoundWitnessWithMeta.d.mts +0 -5
  78. package/dist/browser/lib/toBoundWitnessWithMeta.d.mts.map +0 -1
  79. package/dist/browser/lib/toBoundWitnessWithMeta.d.ts +0 -5
  80. package/dist/browser/lib/toBoundWitnessWithMeta.d.ts.map +0 -1
  81. package/dist/browser/lib/toPayloadWithMeta.d.cts +0 -4
  82. package/dist/browser/lib/toPayloadWithMeta.d.cts.map +0 -1
  83. package/dist/browser/lib/toPayloadWithMeta.d.mts +0 -4
  84. package/dist/browser/lib/toPayloadWithMeta.d.mts.map +0 -1
  85. package/dist/browser/lib/toPayloadWithMeta.d.ts +0 -4
  86. package/dist/browser/lib/toPayloadWithMeta.d.ts.map +0 -1
  87. package/dist/node/lib/toBoundWitnessWithMeta.d.cts +0 -5
  88. package/dist/node/lib/toBoundWitnessWithMeta.d.cts.map +0 -1
  89. package/dist/node/lib/toBoundWitnessWithMeta.d.mts +0 -5
  90. package/dist/node/lib/toBoundWitnessWithMeta.d.mts.map +0 -1
  91. package/dist/node/lib/toBoundWitnessWithMeta.d.ts +0 -5
  92. package/dist/node/lib/toBoundWitnessWithMeta.d.ts.map +0 -1
  93. package/dist/node/lib/toPayloadWithMeta.d.cts +0 -4
  94. package/dist/node/lib/toPayloadWithMeta.d.cts.map +0 -1
  95. package/dist/node/lib/toPayloadWithMeta.d.mts +0 -4
  96. package/dist/node/lib/toPayloadWithMeta.d.mts.map +0 -1
  97. package/dist/node/lib/toPayloadWithMeta.d.ts +0 -4
  98. package/dist/node/lib/toPayloadWithMeta.d.ts.map +0 -1
  99. package/src/lib/toBoundWitnessWithMeta.ts +0 -9
  100. package/src/lib/toPayloadWithMeta.ts +0 -6
@@ -8,53 +8,38 @@ var __publicField = (obj, key, value) => {
8
8
 
9
9
  // src/Archivist.ts
10
10
  import { exists } from "@xylabs/exists";
11
- import { fulfilledValues } from "@xylabs/promise";
12
11
  import { AbstractArchivist } from "@xyo-network/archivist-abstract";
13
12
  import { ArchivistConfigSchema, ArchivistInsertQuerySchema } from "@xyo-network/archivist-model";
14
13
  import { MongoDBArchivistConfigSchema } from "@xyo-network/archivist-model-mongodb";
15
14
  import { MongoDBModuleMixin } from "@xyo-network/module-abstract-mongodb";
16
- import { PayloadWrapper as PayloadWrapper3 } from "@xyo-network/payload-wrapper";
17
-
18
- // src/lib/toBoundWitnessWithMeta.ts
19
- var toBoundWitnessWithMeta = /* @__PURE__ */ __name(async (wrapper) => {
20
- const bw = wrapper.boundwitness;
21
- return {
22
- ...bw,
23
- _hash: await wrapper.hashAsync(),
24
- _timestamp: Date.now()
25
- };
26
- }, "toBoundWitnessWithMeta");
15
+ import { PayloadWrapper as PayloadWrapper2 } from "@xyo-network/payload-wrapper";
27
16
 
28
- // src/lib/toPayloadWithMeta.ts
29
- var toPayloadWithMeta = /* @__PURE__ */ __name(async (wrapper) => {
17
+ // src/lib/toPayloadWithMongoMeta.ts
18
+ import { PayloadBuilder } from "@xyo-network/payload-builder";
19
+ var toPayloadWithMongoMeta = /* @__PURE__ */ __name(async (payload) => {
20
+ const built = await PayloadBuilder.build(payload);
21
+ const _hash = await PayloadBuilder.hash(built);
22
+ const { $hash, $meta, ...fields } = built;
30
23
  return {
31
- ...wrapper.payload(),
32
- _hash: await wrapper.hashAsync(),
24
+ ...fields,
25
+ _$hash: $hash,
26
+ _$meta: $meta,
27
+ _hash,
33
28
  _timestamp: Date.now()
34
29
  };
35
- }, "toPayloadWithMeta");
30
+ }, "toPayloadWithMongoMeta");
36
31
 
37
32
  // src/lib/toReturnValue.ts
38
- import { PayloadWrapper } from "@xyo-network/payload-wrapper";
33
+ import { deepOmitPrefixedFields } from "@xyo-network/hash";
39
34
  var toReturnValue = /* @__PURE__ */ __name((value) => {
40
- const _signatures = value == null ? void 0 : value._signatures;
41
- if (_signatures) {
42
- return {
43
- ...PayloadWrapper.wrap(value).body(),
44
- _signatures
45
- };
46
- } else {
47
- return {
48
- ...PayloadWrapper.wrap(value).body()
49
- };
50
- }
35
+ return deepOmitPrefixedFields(value, "_");
51
36
  }, "toReturnValue");
52
37
 
53
38
  // src/lib/validByType.ts
54
39
  import { QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-builder";
55
40
  import { isBoundWitness, isQueryBoundWitness } from "@xyo-network/boundwitness-model";
56
41
  import { BoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
57
- import { PayloadWrapper as PayloadWrapper2 } from "@xyo-network/payload-wrapper";
42
+ import { PayloadWrapper } from "@xyo-network/payload-wrapper";
58
43
  var validByType = /* @__PURE__ */ __name(async (payloads = []) => {
59
44
  const results = [
60
45
  [],
@@ -63,16 +48,20 @@ var validByType = /* @__PURE__ */ __name(async (payloads = []) => {
63
48
  await Promise.all(payloads.map(async (payload) => {
64
49
  if (isBoundWitness(payload)) {
65
50
  const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper;
66
- const bw = wrapper.parse(payload);
51
+ const bw = await wrapper.parse(payload);
67
52
  if (await bw.getValid()) {
68
- results[0].push(bw);
53
+ results[0].push(bw.jsonPayload());
54
+ } else {
55
+ const errors = await bw.getErrors();
56
+ console.log(`validByType.Error: ${JSON.stringify(errors, null, 2)}`);
69
57
  }
70
58
  } else {
71
- const payloadWrapper = PayloadWrapper2.wrap(payload);
59
+ const payloadWrapper = await PayloadWrapper.wrap(payload);
72
60
  if (await payloadWrapper.getValid()) {
73
- results[1].push(payloadWrapper);
61
+ results[1].push(payloadWrapper.jsonPayload());
74
62
  }
75
63
  }
64
+ return;
76
65
  }));
77
66
  return results;
78
67
  }, "validByType");
@@ -88,37 +77,62 @@ var _MongoDBArchivist = class _MongoDBArchivist extends MongoDBArchivistBase {
88
77
  const head = await (await this.payloads.find({})).sort({
89
78
  _timestamp: -1
90
79
  }).limit(1).toArray();
91
- return head[0] ? PayloadWrapper3.wrap(head[0]).body() : void 0;
80
+ return head[0] ? (await PayloadWrapper2.wrap(head[0])).jsonPayload() : void 0;
92
81
  }
93
82
  async getHandler(hashes) {
94
- const payloads = hashes.map((_hash) => this.payloads.findOne({
83
+ let remainingHashes = [
84
+ ...hashes
85
+ ];
86
+ const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({
87
+ _$hash
88
+ })))).filter(exists);
89
+ const dataPayloadsHashes = dataPayloads.map((payload) => payload._$hash);
90
+ remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.includes(hash));
91
+ const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({
92
+ _$hash
93
+ })))).filter(exists);
94
+ const dataBwsHashes = dataBws.map((payload) => payload._$hash);
95
+ remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.includes(hash));
96
+ const payloads = (await Promise.all(remainingHashes.map((_hash) => this.payloads.findOne({
95
97
  _hash
96
- }));
97
- const bws = hashes.map((_hash) => this.boundWitnesses.findOne({
98
+ })))).filter(exists);
99
+ const payloadsHashes = payloads.map((payload) => payload._hash);
100
+ remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.includes(hash));
101
+ const bws = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({
98
102
  _hash
99
- }));
100
- const gets = await Promise.allSettled([
101
- payloads,
102
- bws
103
- ].flat());
104
- const succeeded = gets.reduce(fulfilledValues, []);
105
- return succeeded.filter(exists).map(toReturnValue);
103
+ })))).filter(exists);
104
+ const bwsHashes = bws.map((payload) => payload._hash);
105
+ remainingHashes = remainingHashes.filter((hash) => !bwsHashes.includes(hash));
106
+ const foundPayloads = [
107
+ ...dataPayloads,
108
+ ...dataBws,
109
+ ...payloads,
110
+ ...bws
111
+ ];
112
+ return foundPayloads.map(({ _$hash, _$meta, ...other }) => ({
113
+ $hash: _$hash,
114
+ $meta: _$meta,
115
+ ...other
116
+ })).map(toReturnValue);
106
117
  }
107
118
  async insertHandler(payloads) {
108
119
  const [bw, p] = await validByType(payloads);
109
- const payloadsWithMeta = await Promise.all(p.map((x) => toPayloadWithMeta(x)));
110
- if (payloadsWithMeta.length) {
111
- const payloadsResult = await this.payloads.insertMany(payloadsWithMeta);
112
- if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithMeta.length)
120
+ const payloadsWithExternalMeta = await Promise.all(p.map((x) => toPayloadWithMongoMeta(x)));
121
+ if (payloadsWithExternalMeta.length) {
122
+ const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta);
123
+ if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)
113
124
  throw new Error("MongoDBDeterministicArchivist: Error inserting Payloads");
114
125
  }
115
- const boundWitnesses = await Promise.all(bw.map((x) => toBoundWitnessWithMeta(x)));
116
- if (boundWitnesses.length) {
117
- const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnesses);
118
- if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnesses.length)
126
+ const boundWitnessesWithExternalMeta = await Promise.all(bw.map((x) => toPayloadWithMongoMeta(x)));
127
+ if (boundWitnessesWithExternalMeta.length) {
128
+ const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta);
129
+ if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)
119
130
  throw new Error("MongoDBDeterministicArchivist: Error inserting BoundWitnesses");
120
131
  }
121
- return payloads ?? [];
132
+ return [
133
+ ...boundWitnessesWithExternalMeta,
134
+ ...payloadsWithExternalMeta
135
+ ];
122
136
  }
123
137
  async startHandler() {
124
138
  await super.startHandler();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Archivist.ts","../../src/lib/toBoundWitnessWithMeta.ts","../../src/lib/toPayloadWithMeta.ts","../../src/lib/toReturnValue.ts","../../src/lib/validByType.ts","../../src/index.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport { fulfilledValues } from '@xylabs/promise'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWithPartialMeta } from '@xyo-network/payload-mongodb'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { toBoundWitnessWithMeta, toPayloadWithMeta, toReturnValue, validByType } from './lib'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override configSchemas = [MongoDBArchivistConfigSchema, ArchivistConfigSchema]\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ...super.queries]\n\n override async head(): Promise<Payload | undefined> {\n const head = await (await this.payloads.find({})).sort({ _timestamp: -1 }).limit(1).toArray()\n return head[0] ? PayloadWrapper.wrap(head[0]).body() : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<Payload[]> {\n const payloads = hashes.map((_hash) => this.payloads.findOne({ _hash }))\n const bws = hashes.map((_hash) => this.boundWitnesses.findOne({ _hash }))\n const gets = await Promise.allSettled([payloads, bws].flat())\n const succeeded = gets.reduce<(PayloadWithPartialMeta | null)[]>(fulfilledValues, []) as Payload[]\n return succeeded.filter(exists).map(toReturnValue)\n }\n\n protected override async insertHandler(payloads?: Payload[]): Promise<Payload[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithMeta = await Promise.all(p.map((x) => toPayloadWithMeta(x)))\n if (payloadsWithMeta.length) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n const boundWitnesses = await Promise.all(bw.map((x) => toBoundWitnessWithMeta(x)))\n if (boundWitnesses.length) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnesses)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnesses.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n return payloads ?? []\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { BoundWitnessWithMeta } from '@xyo-network/payload-mongodb'\n\nexport const toBoundWitnessWithMeta = async (wrapper: BoundWitnessWrapper | QueryBoundWitnessWrapper): Promise<BoundWitnessWithMeta> => {\n const bw = wrapper.boundwitness as BoundWitness\n return { ...bw, _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { PayloadWithMeta } from '@xyo-network/payload-mongodb'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toPayloadWithMeta = async (wrapper: PayloadWrapper): Promise<PayloadWithMeta> => {\n return { ...wrapper.payload(), _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toReturnValue = (value: Payload | BoundWitness): Payload => {\n const _signatures = (value as BoundWitness)?._signatures\n if (_signatures) {\n return { ...PayloadWrapper.wrap(value).body(), _signatures } as BoundWitness\n } else {\n return { ...PayloadWrapper.wrap(value).body() }\n }\n}\n","import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: Payload[] = []) => {\n const results: [BoundWitnessWrapper[], PayloadWrapper[]] = [[], []]\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(bw)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payloadWrapper)\n }\n }\n }),\n )\n return results\n}\n","export * from './Archivist'\nexport * from '@xyo-network/archivist-model-mongodb'\n"],"mappings":";;;;;;;;;AAAA,SAASA,cAAc;AACvB,SAASC,uBAAuB;AAChC,SAASC,yBAAyB;AAClC,SAASC,uBAAuBC,kCAAkC;AAClE,SAASC,oCAAoC;AAC7C,SAASC,0BAA0B;AAGnC,SAASC,kBAAAA,uBAAsB;;;ACHxB,IAAMC,yBAAyB,8BAAOC,YAAAA;AAC3C,QAAMC,KAAKD,QAAQE;AACnB,SAAO;IAAE,GAAGD;IAAIE,OAAO,MAAMH,QAAQI,UAAS;IAAIC,YAAYC,KAAKC,IAAG;EAAG;AAC3E,GAHsC;;;ACF/B,IAAMC,oBAAoB,8BAAOC,YAAAA;AACtC,SAAO;IAAE,GAAGA,QAAQC,QAAO;IAAIC,OAAO,MAAMF,QAAQG,UAAS;IAAIC,YAAYC,KAAKC,IAAG;EAAG;AAC1F,GAFiC;;;ACDjC,SAASC,sBAAsB;AAExB,IAAMC,gBAAgB,wBAACC,UAAAA;AAC5B,QAAMC,cAAeD,+BAAwBC;AAC7C,MAAIA,aAAa;AACf,WAAO;MAAE,GAAGC,eAAeC,KAAKH,KAAAA,EAAOI,KAAI;MAAIH;IAAY;EAC7D,OAAO;AACL,WAAO;MAAE,GAAGC,eAAeC,KAAKH,KAAAA,EAAOI,KAAI;IAAG;EAChD;AACF,GAP6B;;;ACJ7B,SAASC,gCAAgC;AACzC,SAASC,gBAAgBC,2BAA2B;AACpD,SAASC,2BAA2B;AAEpC,SAASC,kBAAAA,uBAAsB;AAExB,IAAMC,cAAc,8BAAOC,WAAsB,CAAA,MAAE;AACxD,QAAMC,UAAqD;IAAC,CAAA;IAAI,CAAA;;AAChE,QAAMC,QAAQC,IACZH,SAASI,IAAI,OAAOC,YAAAA;AAClB,QAAIC,eAAeD,OAAAA,GAAU;AAC3B,YAAME,UAAUC,oBAAoBH,OAAAA,IAAWI,2BAA2BC;AAC1E,YAAMC,KAAKJ,QAAQK,MAAMP,OAAAA;AACzB,UAAI,MAAMM,GAAGE,SAAQ,GAAI;AACvBZ,gBAAQ,CAAA,EAAGa,KAAKH,EAAAA;MAClB;IACF,OAAO;AACL,YAAMI,iBAAiBC,gBAAeC,KAAKZ,OAAAA;AAC3C,UAAI,MAAMU,eAAeF,SAAQ,GAAI;AACnCZ,gBAAQ,CAAA,EAAGa,KAAKC,cAAAA;MAClB;IACF;EACF,CAAA,CAAA;AAEF,SAAOd;AACT,GAnB2B;;;AJM3B,IAAMiB,uBAAuBC,mBAAmBC,iBAAAA;AAEzC,IAAMC,oBAAN,MAAMA,0BAAyBH,qBAAAA;EAGlBI,UAAoB;IAACC;OAA+B,MAAMD;;EAE5E,MAAeE,OAAqC;AAClD,UAAMA,OAAO,OAAO,MAAM,KAAKC,SAASC,KAAK,CAAC,CAAA,GAAIC,KAAK;MAAEC,YAAY;IAAG,CAAA,EAAGC,MAAM,CAAA,EAAGC,QAAO;AAC3F,WAAON,KAAK,CAAA,IAAKO,gBAAeC,KAAKR,KAAK,CAAA,CAAE,EAAES,KAAI,IAAKC;EACzD;EAEA,MAAyBC,WAAWC,QAAsC;AACxE,UAAMX,WAAWW,OAAOC,IAAI,CAACC,UAAU,KAAKb,SAASc,QAAQ;MAAED;IAAM,CAAA,CAAA;AACrE,UAAME,MAAMJ,OAAOC,IAAI,CAACC,UAAU,KAAKG,eAAeF,QAAQ;MAAED;IAAM,CAAA,CAAA;AACtE,UAAMI,OAAO,MAAMC,QAAQC,WAAW;MAACnB;MAAUe;MAAKK,KAAI,CAAA;AAC1D,UAAMC,YAAYJ,KAAKK,OAA0CC,iBAAiB,CAAA,CAAE;AACpF,WAAOF,UAAUG,OAAOC,MAAAA,EAAQb,IAAIc,aAAAA;EACtC;EAEA,MAAyBC,cAAc3B,UAA0C;AAC/E,UAAM,CAAC4B,IAAIC,CAAAA,IAAK,MAAMC,YAAY9B,QAAAA;AAClC,UAAM+B,mBAAmB,MAAMb,QAAQc,IAAIH,EAAEjB,IAAI,CAACqB,MAAMC,kBAAkBD,CAAAA,CAAAA,CAAAA;AAC1E,QAAIF,iBAAiBI,QAAQ;AAC3B,YAAMC,iBAAiB,MAAM,KAAKpC,SAASqC,WAAWN,gBAAAA;AACtD,UAAI,CAACK,eAAeE,gBAAgBF,eAAeG,kBAAkBR,iBAAiBI;AACpF,cAAM,IAAIK,MAAM,yDAAA;IACpB;AACA,UAAMxB,iBAAiB,MAAME,QAAQc,IAAIJ,GAAGhB,IAAI,CAACqB,MAAMQ,uBAAuBR,CAAAA,CAAAA,CAAAA;AAC9E,QAAIjB,eAAemB,QAAQ;AACzB,YAAMO,uBAAuB,MAAM,KAAK1B,eAAeqB,WAAWrB,cAAAA;AAClE,UAAI,CAAC0B,qBAAqBJ,gBAAgBI,qBAAqBH,kBAAkBvB,eAAemB;AAC9F,cAAM,IAAIK,MAAM,+DAAA;IACpB;AACA,WAAOxC,YAAY,CAAA;EACrB;EAEA,MAAyB2C,eAAe;AACtC,UAAM,MAAMA,aAAAA;AACZ,UAAM,KAAKC,cAAa;AACxB,WAAO;EACT;AACF;AAxCsCnD;AACpC,cADWG,mBACKiD,iBAAgB;EAACC;EAA8BC;;AAD1D,IAAMnD,mBAAN;;;AKbP,cAAc;","names":["exists","fulfilledValues","AbstractArchivist","ArchivistConfigSchema","ArchivistInsertQuerySchema","MongoDBArchivistConfigSchema","MongoDBModuleMixin","PayloadWrapper","toBoundWitnessWithMeta","wrapper","bw","boundwitness","_hash","hashAsync","_timestamp","Date","now","toPayloadWithMeta","wrapper","payload","_hash","hashAsync","_timestamp","Date","now","PayloadWrapper","toReturnValue","value","_signatures","PayloadWrapper","wrap","body","QueryBoundWitnessWrapper","isBoundWitness","isQueryBoundWitness","BoundWitnessWrapper","PayloadWrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","body","undefined","getHandler","hashes","map","_hash","findOne","bws","boundWitnesses","gets","Promise","allSettled","flat","succeeded","reduce","fulfilledValues","filter","exists","toReturnValue","insertHandler","bw","p","validByType","payloadsWithMeta","all","x","toPayloadWithMeta","length","payloadsResult","insertMany","acknowledged","insertedCount","Error","toBoundWitnessWithMeta","boundWitnessesResult","startHandler","ensureIndexes","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema"]}
1
+ {"version":3,"sources":["../../src/Archivist.ts","../../src/lib/toPayloadWithMongoMeta.ts","../../src/lib/toReturnValue.ts","../../src/lib/validByType.ts","../../src/index.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport { Hash } from '@xylabs/hex'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { toPayloadWithMongoMeta, toReturnValue, validByType } from './lib'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override configSchemas = [MongoDBArchivistConfigSchema, ArchivistConfigSchema]\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ...super.queries]\n\n override async head(): Promise<Payload | undefined> {\n const head = await (await this.payloads.find({})).sort({ _timestamp: -1 }).limit(1).toArray()\n return head[0] ? (await PayloadWrapper.wrap(head[0])).jsonPayload() : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<Payload[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({ _$hash })))).filter(exists)\n const dataPayloadsHashes = dataPayloads.map((payload) => payload._$hash)\n remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.includes(hash))\n\n const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({ _$hash })))).filter(exists)\n const dataBwsHashes = dataBws.map((payload) => payload._$hash)\n remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.includes(hash))\n\n const payloads = (await Promise.all(remainingHashes.map((_hash) => this.payloads.findOne({ _hash })))).filter(exists)\n const payloadsHashes = payloads.map((payload) => payload._hash)\n remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.includes(hash))\n\n const bws = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = bws.map((payload) => payload._hash)\n remainingHashes = remainingHashes.filter((hash) => !bwsHashes.includes(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload & { _$hash: Hash; _$meta?: unknown }>[]\n return foundPayloads.map(({ _$hash, _$meta, ...other }) => ({ $hash: _$hash, $meta: _$meta, ...other })).map(toReturnValue)\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<Payload[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = await Promise.all(p.map((x) => toPayloadWithMongoMeta(x)))\n if (payloadsWithExternalMeta.length) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n const boundWitnessesWithExternalMeta = await Promise.all(bw.map((x) => toPayloadWithMongoMeta(x)))\n if (boundWitnessesWithExternalMeta.length) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n\n return [...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta]\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\n\nexport const toPayloadWithMongoMeta = async <T extends Payload>(payload: T): Promise<PayloadWithMongoMeta<T>> => {\n const built = await PayloadBuilder.build(payload)\n const _hash = await PayloadBuilder.hash(built)\n const { $hash, $meta, ...fields } = built\n return { ...fields, _$hash: $hash, _$meta: $meta, _hash, _timestamp: Date.now() } as PayloadWithMongoMeta<T>\n}\n","import { deepOmitPrefixedFields } from '@xyo-network/hash'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport const toReturnValue = (value: Payload): Payload => {\n return deepOmitPrefixedFields(value, '_')\n}\n","import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: Payload[] = []) => {\n const results: [BoundWitness[], Payload[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = await wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw.jsonPayload())\n } else {\n const errors = await bw.getErrors()\n console.log(`validByType.Error: ${JSON.stringify(errors, null, 2)}`)\n }\n } else {\n const payloadWrapper = await PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payloadWrapper.jsonPayload())\n }\n }\n return\n }),\n )\n return results\n}\n","export * from './Archivist'\nexport * from '@xyo-network/archivist-model-mongodb'\n"],"mappings":";;;;;;;;;AAAA,SAASA,cAAc;AAEvB,SAASC,yBAAyB;AAClC,SAASC,uBAAuBC,kCAAkC;AAClE,SAASC,oCAAoC;AAC7C,SAASC,0BAA0B;AAGnC,SAASC,kBAAAA,uBAAsB;;;ACR/B,SAASC,sBAAsB;AAIxB,IAAMC,yBAAyB,8BAA0BC,YAAAA;AAC9D,QAAMC,QAAQ,MAAMC,eAAeC,MAAMH,OAAAA;AACzC,QAAMI,QAAQ,MAAMF,eAAeG,KAAKJ,KAAAA;AACxC,QAAM,EAAEK,OAAOC,OAAO,GAAGC,OAAAA,IAAWP;AACpC,SAAO;IAAE,GAAGO;IAAQC,QAAQH;IAAOI,QAAQH;IAAOH;IAAOO,YAAYC,KAAKC,IAAG;EAAG;AAClF,GALsC;;;ACJtC,SAASC,8BAA8B;AAGhC,IAAMC,gBAAgB,wBAACC,UAAAA;AAC5B,SAAOC,uBAAuBD,OAAO,GAAA;AACvC,GAF6B;;;ACH7B,SAASE,gCAAgC;AACzC,SAAuBC,gBAAgBC,2BAA2B;AAClE,SAASC,2BAA2B;AAEpC,SAASC,sBAAsB;AAExB,IAAMC,cAAc,8BAAOC,WAAsB,CAAA,MAAE;AACxD,QAAMC,UAAuC;IAAC,CAAA;IAAI,CAAA;;AAClD,QAAMC,QAAQC,IACZH,SAASI,IAAI,OAAOC,YAAAA;AAClB,QAAIC,eAAeD,OAAAA,GAAU;AAC3B,YAAME,UAAUC,oBAAoBH,OAAAA,IAAWI,2BAA2BC;AAC1E,YAAMC,KAAK,MAAMJ,QAAQK,MAAMP,OAAAA;AAC/B,UAAI,MAAMM,GAAGE,SAAQ,GAAI;AACvBZ,gBAAQ,CAAA,EAAGa,KAAKH,GAAGI,YAAW,CAAA;MAChC,OAAO;AACL,cAAMC,SAAS,MAAML,GAAGM,UAAS;AACjCC,gBAAQC,IAAI,sBAAsBC,KAAKC,UAAUL,QAAQ,MAAM,CAAA,CAAA,EAAI;MACrE;IACF,OAAO;AACL,YAAMM,iBAAiB,MAAMC,eAAeC,KAAKnB,OAAAA;AACjD,UAAI,MAAMiB,eAAeT,SAAQ,GAAI;AACnCZ,gBAAQ,CAAA,EAAGa,KAAKQ,eAAeP,YAAW,CAAA;MAC5C;IACF;AACA;EACF,CAAA,CAAA;AAEF,SAAOd;AACT,GAvB2B;;;AHM3B,IAAMwB,uBAAuBC,mBAAmBC,iBAAAA;AAEzC,IAAMC,oBAAN,MAAMA,0BAAyBH,qBAAAA;EAGlBI,UAAoB;IAACC;OAA+B,MAAMD;;EAE5E,MAAeE,OAAqC;AAClD,UAAMA,OAAO,OAAO,MAAM,KAAKC,SAASC,KAAK,CAAC,CAAA,GAAIC,KAAK;MAAEC,YAAY;IAAG,CAAA,EAAGC,MAAM,CAAA,EAAGC,QAAO;AAC3F,WAAON,KAAK,CAAA,KAAM,MAAMO,gBAAeC,KAAKR,KAAK,CAAA,CAAE,GAAGS,YAAW,IAAKC;EACxE;EAEA,MAAyBC,WAAWC,QAAsC;AACxE,QAAIC,kBAAkB;SAAID;;AAE1B,UAAME,gBAAgB,MAAMC,QAAQC,IAAIH,gBAAgBI,IAAI,CAACC,WAAW,KAAKjB,SAASkB,QAAQ;MAAED;IAAO,CAAA,CAAA,CAAA,GAAME,OAAOC,MAAAA;AACpH,UAAMC,qBAAqBR,aAAaG,IAAI,CAACM,YAAYA,QAAQL,MAAM;AACvEL,sBAAkBA,gBAAgBO,OAAO,CAACI,SAAS,CAACF,mBAAmBG,SAASD,IAAAA,CAAAA;AAEhF,UAAME,WAAW,MAAMX,QAAQC,IAAIH,gBAAgBI,IAAI,CAACC,WAAW,KAAKS,eAAeR,QAAQ;MAAED;IAAO,CAAA,CAAA,CAAA,GAAME,OAAOC,MAAAA;AACrH,UAAMO,gBAAgBF,QAAQT,IAAI,CAACM,YAAYA,QAAQL,MAAM;AAC7DL,sBAAkBA,gBAAgBO,OAAO,CAACI,SAAS,CAACI,cAAcH,SAASD,IAAAA,CAAAA;AAE3E,UAAMvB,YAAY,MAAMc,QAAQC,IAAIH,gBAAgBI,IAAI,CAACY,UAAU,KAAK5B,SAASkB,QAAQ;MAAEU;IAAM,CAAA,CAAA,CAAA,GAAMT,OAAOC,MAAAA;AAC9G,UAAMS,iBAAiB7B,SAASgB,IAAI,CAACM,YAAYA,QAAQM,KAAK;AAC9DhB,sBAAkBA,gBAAgBO,OAAO,CAACI,SAAS,CAACM,eAAeL,SAASD,IAAAA,CAAAA;AAE5E,UAAMO,OAAO,MAAMhB,QAAQC,IAAIH,gBAAgBI,IAAI,CAACY,UAAU,KAAKF,eAAeR,QAAQ;MAAEU;IAAM,CAAA,CAAA,CAAA,GAAMT,OAAOC,MAAAA;AAC/G,UAAMW,YAAYD,IAAId,IAAI,CAACM,YAAYA,QAAQM,KAAK;AACpDhB,sBAAkBA,gBAAgBO,OAAO,CAACI,SAAS,CAACQ,UAAUP,SAASD,IAAAA,CAAAA;AAEvE,UAAMS,gBAAgB;SAAInB;SAAiBY;SAAYzB;SAAa8B;;AACpE,WAAOE,cAAchB,IAAI,CAAC,EAAEC,QAAQgB,QAAQ,GAAGC,MAAAA,OAAa;MAAEC,OAAOlB;MAAQmB,OAAOH;MAAQ,GAAGC;IAAM,EAAA,EAAIlB,IAAIqB,aAAAA;EAC/G;EAEA,MAAyBC,cAActC,UAAyC;AAC9E,UAAM,CAACuC,IAAIC,CAAAA,IAAK,MAAMC,YAAYzC,QAAAA;AAClC,UAAM0C,2BAA2B,MAAM5B,QAAQC,IAAIyB,EAAExB,IAAI,CAAC2B,MAAMC,uBAAuBD,CAAAA,CAAAA,CAAAA;AACvF,QAAID,yBAAyBG,QAAQ;AACnC,YAAMC,iBAAiB,MAAM,KAAK9C,SAAS+C,WAAWL,wBAAAA;AACtD,UAAI,CAACI,eAAeE,gBAAgBF,eAAeG,kBAAkBP,yBAAyBG;AAC5F,cAAM,IAAIK,MAAM,yDAAA;IACpB;AACA,UAAMC,iCAAiC,MAAMrC,QAAQC,IAAIwB,GAAGvB,IAAI,CAAC2B,MAAMC,uBAAuBD,CAAAA,CAAAA,CAAAA;AAC9F,QAAIQ,+BAA+BN,QAAQ;AACzC,YAAMO,uBAAuB,MAAM,KAAK1B,eAAeqB,WAAWI,8BAAAA;AAClE,UAAI,CAACC,qBAAqBJ,gBAAgBI,qBAAqBH,kBAAkBE,+BAA+BN;AAC9G,cAAM,IAAIK,MAAM,+DAAA;IACpB;AAEA,WAAO;SAAIC;SAAmCT;;EAChD;EAEA,MAAyBW,eAAe;AACtC,UAAM,MAAMA,aAAAA;AACZ,UAAM,KAAKC,cAAa;AACxB,WAAO;EACT;AACF;AAxDsC7D;AACpC,cADWG,mBACK2D,iBAAgB;EAACC;EAA8BC;;AAD1D,IAAM7D,mBAAN;;;AIbP,cAAc;","names":["exists","AbstractArchivist","ArchivistConfigSchema","ArchivistInsertQuerySchema","MongoDBArchivistConfigSchema","MongoDBModuleMixin","PayloadWrapper","PayloadBuilder","toPayloadWithMongoMeta","payload","built","PayloadBuilder","build","_hash","hash","$hash","$meta","fields","_$hash","_$meta","_timestamp","Date","now","deepOmitPrefixedFields","toReturnValue","value","deepOmitPrefixedFields","QueryBoundWitnessWrapper","isBoundWitness","isQueryBoundWitness","BoundWitnessWrapper","PayloadWrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","jsonPayload","errors","getErrors","console","log","JSON","stringify","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","jsonPayload","undefined","getHandler","hashes","remainingHashes","dataPayloads","Promise","all","map","_$hash","findOne","filter","exists","dataPayloadsHashes","payload","hash","includes","dataBws","boundWitnesses","dataBwsHashes","_hash","payloadsHashes","bws","bwsHashes","foundPayloads","_$meta","other","$hash","$meta","toReturnValue","insertHandler","bw","p","validByType","payloadsWithExternalMeta","x","toPayloadWithMongoMeta","length","payloadsResult","insertMany","acknowledged","insertedCount","Error","boundWitnessesWithExternalMeta","boundWitnessesResult","startHandler","ensureIndexes","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema"]}
@@ -1,5 +1,4 @@
1
- export * from './toBoundWitnessWithMeta';
2
- export * from './toPayloadWithMeta';
1
+ export * from './toPayloadWithMongoMeta';
3
2
  export * from './toReturnValue';
4
3
  export * from './validByType';
5
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA"}
@@ -1,5 +1,4 @@
1
- export * from './toBoundWitnessWithMeta';
2
- export * from './toPayloadWithMeta';
1
+ export * from './toPayloadWithMongoMeta';
3
2
  export * from './toReturnValue';
4
3
  export * from './validByType';
5
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA"}
@@ -1,5 +1,4 @@
1
- export * from './toBoundWitnessWithMeta';
2
- export * from './toPayloadWithMeta';
1
+ export * from './toPayloadWithMongoMeta';
3
2
  export * from './toReturnValue';
4
3
  export * from './validByType';
5
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb';
2
+ export declare const toPayloadWithMongoMeta: <T extends {
3
+ schema: string;
4
+ } & object>(payload: T) => Promise<PayloadWithMongoMeta<T>>;
5
+ //# sourceMappingURL=toPayloadWithMongoMeta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toPayloadWithMongoMeta.d.ts","sourceRoot":"","sources":["../../../src/lib/toPayloadWithMongoMeta.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEnE,eAAO,MAAM,sBAAsB;;2DAKlC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb';
2
+ export declare const toPayloadWithMongoMeta: <T extends {
3
+ schema: string;
4
+ } & object>(payload: T) => Promise<PayloadWithMongoMeta<T>>;
5
+ //# sourceMappingURL=toPayloadWithMongoMeta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toPayloadWithMongoMeta.d.ts","sourceRoot":"","sources":["../../../src/lib/toPayloadWithMongoMeta.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEnE,eAAO,MAAM,sBAAsB;;2DAKlC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb';
2
+ export declare const toPayloadWithMongoMeta: <T extends {
3
+ schema: string;
4
+ } & object>(payload: T) => Promise<PayloadWithMongoMeta<T>>;
5
+ //# sourceMappingURL=toPayloadWithMongoMeta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toPayloadWithMongoMeta.d.ts","sourceRoot":"","sources":["../../../src/lib/toPayloadWithMongoMeta.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEnE,eAAO,MAAM,sBAAsB;;2DAKlC,CAAA"}
@@ -1,4 +1,3 @@
1
- import { BoundWitness } from '@xyo-network/boundwitness-model';
2
1
  import { Payload } from '@xyo-network/payload-model';
3
- export declare const toReturnValue: (value: Payload | BoundWitness) => Payload;
2
+ export declare const toReturnValue: (value: Payload) => Payload;
4
3
  //# sourceMappingURL=toReturnValue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toReturnValue.d.ts","sourceRoot":"","sources":["../../../src/lib/toReturnValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAGpD,eAAO,MAAM,aAAa,UAAW,OAAO,GAAG,YAAY,KAAG,OAO7D,CAAA"}
1
+ {"version":3,"file":"toReturnValue.d.ts","sourceRoot":"","sources":["../../../src/lib/toReturnValue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,OAE9C,CAAA"}
@@ -1,4 +1,3 @@
1
- import { BoundWitness } from '@xyo-network/boundwitness-model';
2
1
  import { Payload } from '@xyo-network/payload-model';
3
- export declare const toReturnValue: (value: Payload | BoundWitness) => Payload;
2
+ export declare const toReturnValue: (value: Payload) => Payload;
4
3
  //# sourceMappingURL=toReturnValue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toReturnValue.d.ts","sourceRoot":"","sources":["../../../src/lib/toReturnValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAGpD,eAAO,MAAM,aAAa,UAAW,OAAO,GAAG,YAAY,KAAG,OAO7D,CAAA"}
1
+ {"version":3,"file":"toReturnValue.d.ts","sourceRoot":"","sources":["../../../src/lib/toReturnValue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,OAE9C,CAAA"}
@@ -1,4 +1,3 @@
1
- import { BoundWitness } from '@xyo-network/boundwitness-model';
2
1
  import { Payload } from '@xyo-network/payload-model';
3
- export declare const toReturnValue: (value: Payload | BoundWitness) => Payload;
2
+ export declare const toReturnValue: (value: Payload) => Payload;
4
3
  //# sourceMappingURL=toReturnValue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toReturnValue.d.ts","sourceRoot":"","sources":["../../../src/lib/toReturnValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAGpD,eAAO,MAAM,aAAa,UAAW,OAAO,GAAG,YAAY,KAAG,OAO7D,CAAA"}
1
+ {"version":3,"file":"toReturnValue.d.ts","sourceRoot":"","sources":["../../../src/lib/toReturnValue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,OAE9C,CAAA"}
@@ -1,11 +1,7 @@
1
- import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
2
1
  import { Payload } from '@xyo-network/payload-model';
3
- import { PayloadWrapper } from '@xyo-network/payload-wrapper';
4
- export declare const validByType: (payloads?: Payload[]) => Promise<[BoundWitnessWrapper<import("@xyo-network/payload-model").SchemaFields & object & import("@xyo-network/boundwitness-model").BoundWitnessFields & {
2
+ export declare const validByType: (payloads?: Payload[]) => Promise<[(import("@xyo-network/payload-model").SchemaFields & object & import("@xyo-network/boundwitness-model").BoundWitnessFields & {
5
3
  schema: "network.xyo.boundwitness";
6
- }, {
4
+ })[], ({
7
5
  schema: string;
8
- } & object>[], PayloadWrapper<{
9
- schema: string;
10
- } & object>[]]>;
6
+ } & object)[]]>;
11
7
  //# sourceMappingURL=validByType.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validByType.d.ts","sourceRoot":"","sources":["../../../src/lib/validByType.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,eAAO,MAAM,WAAW,cAAoB,OAAO,EAAE;;;;;;eAmBpD,CAAA"}
1
+ {"version":3,"file":"validByType.d.ts","sourceRoot":"","sources":["../../../src/lib/validByType.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAGpD,eAAO,MAAM,WAAW,cAAoB,OAAO,EAAE;;;;eAuBpD,CAAA"}
@@ -1,11 +1,7 @@
1
- import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
2
1
  import { Payload } from '@xyo-network/payload-model';
3
- import { PayloadWrapper } from '@xyo-network/payload-wrapper';
4
- export declare const validByType: (payloads?: Payload[]) => Promise<[BoundWitnessWrapper<import("@xyo-network/payload-model").SchemaFields & object & import("@xyo-network/boundwitness-model").BoundWitnessFields & {
2
+ export declare const validByType: (payloads?: Payload[]) => Promise<[(import("@xyo-network/payload-model").SchemaFields & object & import("@xyo-network/boundwitness-model").BoundWitnessFields & {
5
3
  schema: "network.xyo.boundwitness";
6
- }, {
4
+ })[], ({
7
5
  schema: string;
8
- } & object>[], PayloadWrapper<{
9
- schema: string;
10
- } & object>[]]>;
6
+ } & object)[]]>;
11
7
  //# sourceMappingURL=validByType.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validByType.d.ts","sourceRoot":"","sources":["../../../src/lib/validByType.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,eAAO,MAAM,WAAW,cAAoB,OAAO,EAAE;;;;;;eAmBpD,CAAA"}
1
+ {"version":3,"file":"validByType.d.ts","sourceRoot":"","sources":["../../../src/lib/validByType.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAGpD,eAAO,MAAM,WAAW,cAAoB,OAAO,EAAE;;;;eAuBpD,CAAA"}
@@ -1,11 +1,7 @@
1
- import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
2
1
  import { Payload } from '@xyo-network/payload-model';
3
- import { PayloadWrapper } from '@xyo-network/payload-wrapper';
4
- export declare const validByType: (payloads?: Payload[]) => Promise<[BoundWitnessWrapper<import("@xyo-network/payload-model").SchemaFields & object & import("@xyo-network/boundwitness-model").BoundWitnessFields & {
2
+ export declare const validByType: (payloads?: Payload[]) => Promise<[(import("@xyo-network/payload-model").SchemaFields & object & import("@xyo-network/boundwitness-model").BoundWitnessFields & {
5
3
  schema: "network.xyo.boundwitness";
6
- }, {
4
+ })[], ({
7
5
  schema: string;
8
- } & object>[], PayloadWrapper<{
9
- schema: string;
10
- } & object>[]]>;
6
+ } & object)[]]>;
11
7
  //# sourceMappingURL=validByType.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validByType.d.ts","sourceRoot":"","sources":["../../../src/lib/validByType.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,eAAO,MAAM,WAAW,cAAoB,OAAO,EAAE;;;;;;eAmBpD,CAAA"}
1
+ {"version":3,"file":"validByType.d.ts","sourceRoot":"","sources":["../../../src/lib/validByType.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAGpD,eAAO,MAAM,WAAW,cAAoB,OAAO,EAAE;;;;eAuBpD,CAAA"}
package/package.json CHANGED
@@ -10,29 +10,31 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/exists": "^2.13.23",
14
- "@xylabs/promise": "^2.13.23",
15
- "@xyo-network/archivist-abstract": "^2.86.1",
16
- "@xyo-network/archivist-model": "^2.86.1",
17
- "@xyo-network/archivist-model-mongodb": "~2.83.0",
18
- "@xyo-network/boundwitness-builder": "^2.86.1",
19
- "@xyo-network/boundwitness-model": "^2.86.1",
20
- "@xyo-network/boundwitness-wrapper": "^2.86.1",
21
- "@xyo-network/module-abstract-mongodb": "~2.83.0",
22
- "@xyo-network/payload-model": "^2.86.1",
23
- "@xyo-network/payload-mongodb": "~2.83.0",
24
- "@xyo-network/payload-wrapper": "^2.86.1"
13
+ "@xylabs/exists": "^2.14.0",
14
+ "@xylabs/hex": "^2.14.0",
15
+ "@xyo-network/archivist-abstract": "^2.89.0-rc.12",
16
+ "@xyo-network/archivist-model": "^2.89.0-rc.12",
17
+ "@xyo-network/archivist-model-mongodb": "~2.84.0-rc.1",
18
+ "@xyo-network/boundwitness-builder": "^2.89.0-rc.12",
19
+ "@xyo-network/boundwitness-model": "^2.89.0-rc.12",
20
+ "@xyo-network/boundwitness-wrapper": "^2.89.0-rc.12",
21
+ "@xyo-network/hash": "^2.89.0-rc.12",
22
+ "@xyo-network/module-abstract-mongodb": "~2.84.0-rc.1",
23
+ "@xyo-network/payload-builder": "^2.89.0-rc.12",
24
+ "@xyo-network/payload-model": "^2.89.0-rc.12",
25
+ "@xyo-network/payload-mongodb": "~2.84.0-rc.1",
26
+ "@xyo-network/payload-wrapper": "^2.89.0-rc.12"
25
27
  },
26
28
  "devDependencies": {
27
- "@xylabs/arraybuffer": "^2.13.23",
28
- "@xylabs/jest-helpers": "^2.13.23",
29
- "@xylabs/ts-scripts-yarn3": "^3.2.28",
30
- "@xylabs/tsconfig": "^3.2.28",
31
- "@xyo-network/account": "^2.86.1",
32
- "@xyo-network/account-model": "^2.86.1",
33
- "@xyo-network/archivist-wrapper": "^2.86.1",
34
- "@xyo-network/payload-builder": "^2.86.1",
35
- "@xyo-network/sdk-xyo-mongo-js": "~2.83.0",
29
+ "@xylabs/arraybuffer": "^2.14.0",
30
+ "@xylabs/jest-helpers": "^2.14.0",
31
+ "@xylabs/ts-scripts-yarn3": "^3.2.42",
32
+ "@xylabs/tsconfig": "^3.2.42",
33
+ "@xyo-network/account": "^2.89.0-rc.12",
34
+ "@xyo-network/account-model": "^2.89.0-rc.12",
35
+ "@xyo-network/archivist-wrapper": "^2.89.0-rc.12",
36
+ "@xyo-network/payload-builder": "^2.89.0-rc.12",
37
+ "@xyo-network/sdk-xyo-mongo-js": "~2.84.0-rc.1",
36
38
  "fake-indexeddb": "^4.0.2",
37
39
  "jest": "^29.7.0",
38
40
  "typescript": "^5.3.3"
@@ -76,6 +78,7 @@
76
78
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
77
79
  },
78
80
  "sideEffects": false,
79
- "version": "2.83.0",
80
- "type": "module"
81
+ "version": "2.84.0-rc.1",
82
+ "type": "module",
83
+ "stableVersion": "2.83.0"
81
84
  }
package/src/Archivist.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  import { exists } from '@xylabs/exists'
2
- import { fulfilledValues } from '@xylabs/promise'
2
+ import { Hash } from '@xylabs/hex'
3
3
  import { AbstractArchivist } from '@xyo-network/archivist-abstract'
4
4
  import { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'
5
5
  import { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'
6
6
  import { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'
7
7
  import { Payload } from '@xyo-network/payload-model'
8
- import { PayloadWithPartialMeta } from '@xyo-network/payload-mongodb'
8
+ import { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'
9
9
  import { PayloadWrapper } from '@xyo-network/payload-wrapper'
10
10
 
11
- import { toBoundWitnessWithMeta, toPayloadWithMeta, toReturnValue, validByType } from './lib'
11
+ import { toPayloadWithMongoMeta, toReturnValue, validByType } from './lib'
12
12
 
13
13
  const MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)
14
14
 
@@ -19,32 +19,48 @@ export class MongoDBArchivist extends MongoDBArchivistBase {
19
19
 
20
20
  override async head(): Promise<Payload | undefined> {
21
21
  const head = await (await this.payloads.find({})).sort({ _timestamp: -1 }).limit(1).toArray()
22
- return head[0] ? PayloadWrapper.wrap(head[0]).body() : undefined
22
+ return head[0] ? (await PayloadWrapper.wrap(head[0])).jsonPayload() : undefined
23
23
  }
24
24
 
25
25
  protected override async getHandler(hashes: string[]): Promise<Payload[]> {
26
- const payloads = hashes.map((_hash) => this.payloads.findOne({ _hash }))
27
- const bws = hashes.map((_hash) => this.boundWitnesses.findOne({ _hash }))
28
- const gets = await Promise.allSettled([payloads, bws].flat())
29
- const succeeded = gets.reduce<(PayloadWithPartialMeta | null)[]>(fulfilledValues, []) as Payload[]
30
- return succeeded.filter(exists).map(toReturnValue)
26
+ let remainingHashes = [...hashes]
27
+
28
+ const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({ _$hash })))).filter(exists)
29
+ const dataPayloadsHashes = dataPayloads.map((payload) => payload._$hash)
30
+ remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.includes(hash))
31
+
32
+ const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({ _$hash })))).filter(exists)
33
+ const dataBwsHashes = dataBws.map((payload) => payload._$hash)
34
+ remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.includes(hash))
35
+
36
+ const payloads = (await Promise.all(remainingHashes.map((_hash) => this.payloads.findOne({ _hash })))).filter(exists)
37
+ const payloadsHashes = payloads.map((payload) => payload._hash)
38
+ remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.includes(hash))
39
+
40
+ const bws = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({ _hash })))).filter(exists)
41
+ const bwsHashes = bws.map((payload) => payload._hash)
42
+ remainingHashes = remainingHashes.filter((hash) => !bwsHashes.includes(hash))
43
+
44
+ const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload & { _$hash: Hash; _$meta?: unknown }>[]
45
+ return foundPayloads.map(({ _$hash, _$meta, ...other }) => ({ $hash: _$hash, $meta: _$meta, ...other })).map(toReturnValue)
31
46
  }
32
47
 
33
- protected override async insertHandler(payloads?: Payload[]): Promise<Payload[]> {
48
+ protected override async insertHandler(payloads: Payload[]): Promise<Payload[]> {
34
49
  const [bw, p] = await validByType(payloads)
35
- const payloadsWithMeta = await Promise.all(p.map((x) => toPayloadWithMeta(x)))
36
- if (payloadsWithMeta.length) {
37
- const payloadsResult = await this.payloads.insertMany(payloadsWithMeta)
38
- if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithMeta.length)
50
+ const payloadsWithExternalMeta = await Promise.all(p.map((x) => toPayloadWithMongoMeta(x)))
51
+ if (payloadsWithExternalMeta.length) {
52
+ const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)
53
+ if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)
39
54
  throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')
40
55
  }
41
- const boundWitnesses = await Promise.all(bw.map((x) => toBoundWitnessWithMeta(x)))
42
- if (boundWitnesses.length) {
43
- const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnesses)
44
- if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnesses.length)
56
+ const boundWitnessesWithExternalMeta = await Promise.all(bw.map((x) => toPayloadWithMongoMeta(x)))
57
+ if (boundWitnessesWithExternalMeta.length) {
58
+ const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta)
59
+ if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)
45
60
  throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')
46
61
  }
47
- return payloads ?? []
62
+
63
+ return [...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta]
48
64
  }
49
65
 
50
66
  protected override async startHandler() {
package/src/lib/index.ts CHANGED
@@ -1,4 +1,3 @@
1
- export * from './toBoundWitnessWithMeta'
2
- export * from './toPayloadWithMeta'
1
+ export * from './toPayloadWithMongoMeta'
3
2
  export * from './toReturnValue'
4
3
  export * from './validByType'
@@ -0,0 +1,10 @@
1
+ import { PayloadBuilder } from '@xyo-network/payload-builder'
2
+ import { Payload } from '@xyo-network/payload-model'
3
+ import { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'
4
+
5
+ export const toPayloadWithMongoMeta = async <T extends Payload>(payload: T): Promise<PayloadWithMongoMeta<T>> => {
6
+ const built = await PayloadBuilder.build(payload)
7
+ const _hash = await PayloadBuilder.hash(built)
8
+ const { $hash, $meta, ...fields } = built
9
+ return { ...fields, _$hash: $hash, _$meta: $meta, _hash, _timestamp: Date.now() } as PayloadWithMongoMeta<T>
10
+ }
@@ -1,12 +1,6 @@
1
- import { BoundWitness } from '@xyo-network/boundwitness-model'
1
+ import { deepOmitPrefixedFields } from '@xyo-network/hash'
2
2
  import { Payload } from '@xyo-network/payload-model'
3
- import { PayloadWrapper } from '@xyo-network/payload-wrapper'
4
3
 
5
- export const toReturnValue = (value: Payload | BoundWitness): Payload => {
6
- const _signatures = (value as BoundWitness)?._signatures
7
- if (_signatures) {
8
- return { ...PayloadWrapper.wrap(value).body(), _signatures } as BoundWitness
9
- } else {
10
- return { ...PayloadWrapper.wrap(value).body() }
11
- }
4
+ export const toReturnValue = (value: Payload): Payload => {
5
+ return deepOmitPrefixedFields(value, '_')
12
6
  }