@xyo-network/diviner-image-thumbnail 2.99.4 → 2.99.5

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 (135) hide show
  1. package/dist/browser/Diviner/Diviner.d.cts +1 -1
  2. package/dist/browser/Diviner/Diviner.d.mts +1 -1
  3. package/dist/browser/Diviner/Diviner.d.ts +1 -1
  4. package/dist/browser/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.cts +1 -1
  5. package/dist/browser/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.mts +1 -1
  6. package/dist/browser/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.ts +1 -1
  7. package/dist/browser/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.cts +1 -1
  8. package/dist/browser/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.mts +1 -1
  9. package/dist/browser/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.ts +1 -1
  10. package/dist/browser/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.cts +2 -2
  11. package/dist/browser/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.cts.map +1 -1
  12. package/dist/browser/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.mts +2 -2
  13. package/dist/browser/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.mts.map +1 -1
  14. package/dist/browser/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.ts +2 -2
  15. package/dist/browser/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.ts.map +1 -1
  16. package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.cts +1 -1
  17. package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.mts +1 -1
  18. package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.ts +1 -1
  19. package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.cts +3 -3
  20. package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.cts.map +1 -1
  21. package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.mts +3 -3
  22. package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.mts.map +1 -1
  23. package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.ts +3 -3
  24. package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.ts.map +1 -1
  25. package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.cts +1 -1
  26. package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.mts +1 -1
  27. package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.ts +1 -1
  28. package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.cts +4 -4
  29. package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.mts +4 -4
  30. package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.ts +4 -4
  31. package/dist/browser/Diviner/index.d.cts +8 -8
  32. package/dist/browser/Diviner/index.d.mts +8 -8
  33. package/dist/browser/Diviner/index.d.ts +8 -8
  34. package/dist/browser/index.cjs +184 -96
  35. package/dist/browser/index.cjs.map +1 -1
  36. package/dist/browser/index.d.cts +1 -1
  37. package/dist/browser/index.d.mts +1 -1
  38. package/dist/browser/index.d.ts +1 -1
  39. package/dist/browser/{index.js → index.mjs} +189 -107
  40. package/dist/browser/index.mjs.map +1 -0
  41. package/dist/neutral/Diviner/Diviner.d.cts +1 -1
  42. package/dist/neutral/Diviner/Diviner.d.mts +1 -1
  43. package/dist/neutral/Diviner/Diviner.d.ts +1 -1
  44. package/dist/neutral/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.cts +1 -1
  45. package/dist/neutral/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.mts +1 -1
  46. package/dist/neutral/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.ts +1 -1
  47. package/dist/neutral/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.cts +1 -1
  48. package/dist/neutral/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.mts +1 -1
  49. package/dist/neutral/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.ts +1 -1
  50. package/dist/neutral/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.cts +2 -2
  51. package/dist/neutral/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.cts.map +1 -1
  52. package/dist/neutral/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.mts +2 -2
  53. package/dist/neutral/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.mts.map +1 -1
  54. package/dist/neutral/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.ts +2 -2
  55. package/dist/neutral/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.ts.map +1 -1
  56. package/dist/neutral/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.cts +1 -1
  57. package/dist/neutral/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.mts +1 -1
  58. package/dist/neutral/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.ts +1 -1
  59. package/dist/neutral/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.cts +3 -3
  60. package/dist/neutral/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.cts.map +1 -1
  61. package/dist/neutral/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.mts +3 -3
  62. package/dist/neutral/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.mts.map +1 -1
  63. package/dist/neutral/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.ts +3 -3
  64. package/dist/neutral/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.ts.map +1 -1
  65. package/dist/neutral/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.cts +1 -1
  66. package/dist/neutral/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.mts +1 -1
  67. package/dist/neutral/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.ts +1 -1
  68. package/dist/neutral/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.cts +4 -4
  69. package/dist/neutral/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.mts +4 -4
  70. package/dist/neutral/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.ts +4 -4
  71. package/dist/neutral/Diviner/index.d.cts +8 -8
  72. package/dist/neutral/Diviner/index.d.mts +8 -8
  73. package/dist/neutral/Diviner/index.d.ts +8 -8
  74. package/dist/neutral/index.cjs +184 -96
  75. package/dist/neutral/index.cjs.map +1 -1
  76. package/dist/neutral/index.d.cts +1 -1
  77. package/dist/neutral/index.d.mts +1 -1
  78. package/dist/neutral/index.d.ts +1 -1
  79. package/dist/neutral/{index.js → index.mjs} +189 -107
  80. package/dist/neutral/index.mjs.map +1 -0
  81. package/dist/node/Diviner/Diviner.d.cts +1 -1
  82. package/dist/node/Diviner/Diviner.d.mts +1 -1
  83. package/dist/node/Diviner/Diviner.d.ts +1 -1
  84. package/dist/node/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.cts +1 -1
  85. package/dist/node/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.mts +1 -1
  86. package/dist/node/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.ts +1 -1
  87. package/dist/node/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.cts +1 -1
  88. package/dist/node/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.mts +1 -1
  89. package/dist/node/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.ts +1 -1
  90. package/dist/node/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.cts +2 -2
  91. package/dist/node/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.cts.map +1 -1
  92. package/dist/node/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.mts +2 -2
  93. package/dist/node/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.mts.map +1 -1
  94. package/dist/node/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.ts +2 -2
  95. package/dist/node/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.ts.map +1 -1
  96. package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.cts +1 -1
  97. package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.mts +1 -1
  98. package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.ts +1 -1
  99. package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.cts +3 -3
  100. package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.cts.map +1 -1
  101. package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.mts +3 -3
  102. package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.mts.map +1 -1
  103. package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.ts +3 -3
  104. package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.ts.map +1 -1
  105. package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.cts +1 -1
  106. package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.mts +1 -1
  107. package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.ts +1 -1
  108. package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.cts +4 -4
  109. package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.mts +4 -4
  110. package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.ts +4 -4
  111. package/dist/node/Diviner/index.d.cts +8 -8
  112. package/dist/node/Diviner/index.d.mts +8 -8
  113. package/dist/node/Diviner/index.d.ts +8 -8
  114. package/dist/node/index.cjs +214 -126
  115. package/dist/node/index.cjs.map +1 -1
  116. package/dist/node/index.d.cts +1 -1
  117. package/dist/node/index.d.mts +1 -1
  118. package/dist/node/index.d.ts +1 -1
  119. package/dist/node/index.mjs +354 -0
  120. package/dist/node/index.mjs.map +1 -0
  121. package/package.json +35 -35
  122. package/src/Diviner/Diviner.ts +1 -1
  123. package/src/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.ts +3 -3
  124. package/src/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.ts +1 -1
  125. package/src/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.ts +3 -2
  126. package/src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.ts +1 -1
  127. package/src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.ts +9 -8
  128. package/src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.ts +1 -1
  129. package/src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.ts +4 -4
  130. package/src/Diviner/index.ts +8 -8
  131. package/src/index.ts +1 -1
  132. package/dist/browser/index.js.map +0 -1
  133. package/dist/neutral/index.js.map +0 -1
  134. package/dist/node/index.js +0 -272
  135. package/dist/node/index.js.map +0 -1
@@ -3,6 +3,7 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
7
  var __export = (target, all) => {
7
8
  for (var name in all)
8
9
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -42,7 +43,13 @@ var ImageThumbnailDivinerLabels = {
42
43
 
43
44
  // src/Diviner/Diviner.ts
44
45
  var ImageThumbnailDiviner = class extends import_diviner_indexing.IndexingDiviner {
45
- static labels = { ...super.labels, ...ImageThumbnailDivinerLabels };
46
+ static {
47
+ __name(this, "ImageThumbnailDiviner");
48
+ }
49
+ static labels = {
50
+ ...super.labels,
51
+ ...ImageThumbnailDivinerLabels
52
+ };
46
53
  };
47
54
 
48
55
  // src/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.ts
@@ -54,7 +61,13 @@ var import_payload_builder = require("@xyo-network/payload-builder");
54
61
  var import_url_payload_plugin = require("@xyo-network/url-payload-plugin");
55
62
  var import_witness_timestamp = require("@xyo-network/witness-timestamp");
56
63
  var ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner = class extends import_diviner_abstract.AbstractDiviner {
57
- static configSchemas = [...super.configSchemas, import_diviner_model.DivinerConfigSchema];
64
+ static {
65
+ __name(this, "ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner");
66
+ }
67
+ static configSchemas = [
68
+ ...super.configSchemas,
69
+ import_diviner_model.DivinerConfigSchema
70
+ ];
58
71
  static defaultConfigSchema = import_diviner_model.DivinerConfigSchema;
59
72
  static labels = {
60
73
  ...super.labels,
@@ -67,36 +80,53 @@ var ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner = class extends imp
67
80
  const timestampPayloads = payloads.filter(import_witness_timestamp.isTimestamp);
68
81
  if (bws.length > 0 && imageThumbnailPayloads.length > 0 && timestampPayloads.length > 0) {
69
82
  const payloadDictionary = await import_payload_builder.PayloadBuilder.toDataHashMap(payloads);
70
- const tuples = bws.reduce(
71
- (acc, curr) => {
72
- const imageThumbnailIndex = curr.payload_schemas?.findIndex((schema) => schema === import_image_thumbnail_payload_plugin.ImageThumbnailSchema);
73
- const timestampIndex = curr.payload_schemas?.findIndex((schema) => schema === import_witness_timestamp.TimestampSchema);
74
- const imageThumbnailHash = curr.payload_hashes?.[imageThumbnailIndex];
75
- const timestampHash = curr.payload_hashes?.[timestampIndex];
76
- const imageThumbnailPayload = [payloadDictionary[imageThumbnailHash]].find(import_image_thumbnail_payload_plugin.isImageThumbnail);
77
- const timestampPayload = [payloadDictionary[timestampHash]].find(import_witness_timestamp.isTimestamp);
78
- if (imageThumbnailPayload && timestampPayload) acc.push([curr, imageThumbnailPayload, timestampPayload]);
79
- return acc;
80
- },
81
- []
82
- );
83
- const indexes = await Promise.all(
84
- tuples.map(async ([bw, imageThumbnailPayload, timestampPayload]) => {
85
- const { sourceUrl: url, http } = imageThumbnailPayload;
86
- const { timestamp } = timestampPayload;
87
- const { status } = http ?? {};
88
- const success = !!imageThumbnailPayload.url;
89
- const sources = await import_payload_builder.PayloadBuilder.dataHashes([bw, imageThumbnailPayload, timestampPayload]);
90
- const urlPayload = { schema: import_url_payload_plugin.UrlSchema, url };
91
- const key = await import_payload_builder.PayloadBuilder.dataHash(urlPayload);
92
- const fields = { key, sources, success, timestamp };
93
- if (status) fields.status = status;
94
- const result = await new import_payload_builder.PayloadBuilder({
95
- schema: import_image_thumbnail_payload_plugin.ImageThumbnailResultIndexSchema
96
- }).fields(fields).build();
97
- return [result];
98
- })
99
- );
83
+ const tuples = bws.reduce((acc, curr) => {
84
+ const imageThumbnailIndex = curr.payload_schemas?.findIndex((schema) => schema === import_image_thumbnail_payload_plugin.ImageThumbnailSchema);
85
+ const timestampIndex = curr.payload_schemas?.findIndex((schema) => schema === import_witness_timestamp.TimestampSchema);
86
+ const imageThumbnailHash = curr.payload_hashes?.[imageThumbnailIndex];
87
+ const timestampHash = curr.payload_hashes?.[timestampIndex];
88
+ const imageThumbnailPayload = [
89
+ payloadDictionary[imageThumbnailHash]
90
+ ].find(import_image_thumbnail_payload_plugin.isImageThumbnail);
91
+ const timestampPayload = [
92
+ payloadDictionary[timestampHash]
93
+ ].find(import_witness_timestamp.isTimestamp);
94
+ if (imageThumbnailPayload && timestampPayload) acc.push([
95
+ curr,
96
+ imageThumbnailPayload,
97
+ timestampPayload
98
+ ]);
99
+ return acc;
100
+ }, []);
101
+ const indexes = await Promise.all(tuples.map(async ([bw, imageThumbnailPayload, timestampPayload]) => {
102
+ const { sourceUrl: url, http } = imageThumbnailPayload;
103
+ const { timestamp } = timestampPayload;
104
+ const { status } = http ?? {};
105
+ const success = !!imageThumbnailPayload.url;
106
+ const sources = await import_payload_builder.PayloadBuilder.dataHashes([
107
+ bw,
108
+ imageThumbnailPayload,
109
+ timestampPayload
110
+ ]);
111
+ const urlPayload = {
112
+ schema: import_url_payload_plugin.UrlSchema,
113
+ url
114
+ };
115
+ const key = await import_payload_builder.PayloadBuilder.dataHash(urlPayload);
116
+ const fields = {
117
+ key,
118
+ sources,
119
+ success,
120
+ timestamp
121
+ };
122
+ if (status) fields.status = status;
123
+ const result = await new import_payload_builder.PayloadBuilder({
124
+ schema: import_image_thumbnail_payload_plugin.ImageThumbnailResultIndexSchema
125
+ }).fields(fields).build();
126
+ return [
127
+ result
128
+ ];
129
+ }));
100
130
  return indexes.flat();
101
131
  }
102
132
  return [];
@@ -111,7 +141,13 @@ var import_image_thumbnail_payload_plugin2 = require("@xyo-network/image-thumbna
111
141
  var import_payload_builder2 = require("@xyo-network/payload-builder");
112
142
  var import_url_payload_plugin2 = require("@xyo-network/url-payload-plugin");
113
143
  var ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner = class extends import_diviner_abstract2.AbstractDiviner {
114
- static configSchemas = [...super.configSchemas, import_diviner_model2.DivinerConfigSchema];
144
+ static {
145
+ __name(this, "ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner");
146
+ }
147
+ static configSchemas = [
148
+ ...super.configSchemas,
149
+ import_diviner_model2.DivinerConfigSchema
150
+ ];
115
151
  static defaultConfigSchema = import_diviner_model2.DivinerConfigSchema;
116
152
  static labels = {
117
153
  ...super.labels,
@@ -122,26 +158,32 @@ var ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner = class
122
158
  const imageThumbnailDivinerQueries = payloads.filter(import_image_thumbnail_payload_plugin2.isImageThumbnailDivinerQuery);
123
159
  const imageThumbnailResultIndexes = payloads.filter(import_image_thumbnail_payload_plugin2.isImageThumbnailResultIndex);
124
160
  if (imageThumbnailDivinerQueries.length > 0 && imageThumbnailResultIndexes.length > 0) {
125
- const keyToUrlDictionary = Object.fromEntries(
126
- await Promise.all(
127
- imageThumbnailDivinerQueries.map(async (imageThumbnailDivinerQuery) => {
128
- const { url } = imageThumbnailDivinerQuery;
129
- const urlPayload = await new import_payload_builder2.PayloadBuilder({ schema: import_url_payload_plugin2.UrlSchema }).fields({ url }).build();
130
- const key = await import_payload_builder2.PayloadBuilder.dataHash(urlPayload);
131
- return [key, url];
132
- })
133
- )
134
- );
135
- return (await Promise.all(
136
- imageThumbnailResultIndexes.map(async (imageThumbnailResultIndex) => {
137
- const { key, schema, ...commonFields } = imageThumbnailResultIndex;
138
- const url = keyToUrlDictionary?.[key];
139
- if (url) {
140
- const fields = { ...commonFields, url };
141
- return await new import_payload_builder2.PayloadBuilder({ schema: import_image_thumbnail_payload_plugin2.ImageThumbnailResultSchema }).fields(fields).build();
142
- }
143
- })
144
- )).filter(import_exists.exists);
161
+ const keyToUrlDictionary = Object.fromEntries(await Promise.all(imageThumbnailDivinerQueries.map(async (imageThumbnailDivinerQuery) => {
162
+ const { url } = imageThumbnailDivinerQuery;
163
+ const urlPayload = await new import_payload_builder2.PayloadBuilder({
164
+ schema: import_url_payload_plugin2.UrlSchema
165
+ }).fields({
166
+ url
167
+ }).build();
168
+ const key = await import_payload_builder2.PayloadBuilder.dataHash(urlPayload);
169
+ return [
170
+ key,
171
+ url
172
+ ];
173
+ })));
174
+ return (await Promise.all(imageThumbnailResultIndexes.map(async (imageThumbnailResultIndex) => {
175
+ const { key, schema, ...commonFields } = imageThumbnailResultIndex;
176
+ const url = keyToUrlDictionary?.[key];
177
+ if (url) {
178
+ const fields = {
179
+ ...commonFields,
180
+ url
181
+ };
182
+ return await new import_payload_builder2.PayloadBuilder({
183
+ schema: import_image_thumbnail_payload_plugin2.ImageThumbnailResultSchema
184
+ }).fields(fields).build();
185
+ }
186
+ }))).filter(import_exists.exists);
145
187
  }
146
188
  return [];
147
189
  }
@@ -155,7 +197,13 @@ var import_image_thumbnail_payload_plugin3 = require("@xyo-network/image-thumbna
155
197
  var import_payload_builder3 = require("@xyo-network/payload-builder");
156
198
  var import_url_payload_plugin3 = require("@xyo-network/url-payload-plugin");
157
199
  var ImageThumbnailQueryToImageThumbnailIndexQueryDiviner = class extends import_diviner_abstract3.AbstractDiviner {
158
- static configSchemas = [...super.configSchemas, import_diviner_model3.DivinerConfigSchema];
200
+ static {
201
+ __name(this, "ImageThumbnailQueryToImageThumbnailIndexQueryDiviner");
202
+ }
203
+ static configSchemas = [
204
+ ...super.configSchemas,
205
+ import_diviner_model3.DivinerConfigSchema
206
+ ];
159
207
  static defaultConfigSchema = import_diviner_model3.DivinerConfigSchema;
160
208
  static labels = {
161
209
  ...super.labels,
@@ -165,25 +213,28 @@ var ImageThumbnailQueryToImageThumbnailIndexQueryDiviner = class extends import_
165
213
  async divineHandler(payloads = []) {
166
214
  const queries = payloads.filter(import_image_thumbnail_payload_plugin3.isImageThumbnailDivinerQuery);
167
215
  if (queries.length > 0) {
168
- const results = await Promise.all(
169
- queries.map(async (query) => {
170
- const { limit: payloadLimit, offset: payloadOffset, order: payloadOrder, status: payloadStatus, success: payloadSuccess, url } = query;
171
- const limit = payloadLimit ?? 1;
172
- const order2 = payloadOrder ?? "desc";
173
- const offset = payloadOffset ?? 0;
174
- const urlPayload = { schema: import_url_payload_plugin3.UrlSchema, url };
175
- const key = await import_payload_builder3.PayloadBuilder.dataHash(urlPayload);
176
- const fields = {
177
- key,
178
- limit,
179
- offset,
180
- order: order2
181
- };
182
- if (payloadSuccess !== void 0) fields.success = payloadSuccess;
183
- if (payloadStatus !== void 0) fields.status = payloadStatus;
184
- return await new import_payload_builder3.PayloadBuilder({ schema: import_diviner_payload_model.PayloadDivinerQuerySchema }).fields(fields).build();
185
- })
186
- );
216
+ const results = await Promise.all(queries.map(async (query) => {
217
+ const { limit: payloadLimit, offset: payloadOffset, order: payloadOrder, status: payloadStatus, success: payloadSuccess, url } = query;
218
+ const limit = payloadLimit ?? 1;
219
+ const order2 = payloadOrder ?? "desc";
220
+ const offset = payloadOffset ?? 0;
221
+ const urlPayload = {
222
+ schema: import_url_payload_plugin3.UrlSchema,
223
+ url
224
+ };
225
+ const key = await import_payload_builder3.PayloadBuilder.dataHash(urlPayload);
226
+ const fields = {
227
+ key,
228
+ limit,
229
+ offset,
230
+ order: order2
231
+ };
232
+ if (payloadSuccess !== void 0) fields.success = payloadSuccess;
233
+ if (payloadStatus !== void 0) fields.status = payloadStatus;
234
+ return await new import_payload_builder3.PayloadBuilder({
235
+ schema: import_diviner_payload_model.PayloadDivinerQuerySchema
236
+ }).fields(fields).build();
237
+ }));
187
238
  return results;
188
239
  }
189
240
  return [];
@@ -214,12 +265,24 @@ var import_image_thumbnail_payload_plugin5 = require("@xyo-network/image-thumbna
214
265
  var import_module_model = require("@xyo-network/module-model");
215
266
  var import_payload_builder4 = require("@xyo-network/payload-builder");
216
267
  var import_witness_timestamp2 = require("@xyo-network/witness-timestamp");
217
- var payload_schemas = [import_image_thumbnail_payload_plugin5.ImageThumbnailSchema, import_witness_timestamp2.TimestampSchema];
218
- var indexCandidateIdentityFunctions = [import_image_thumbnail_payload_plugin5.isImageThumbnail, import_witness_timestamp2.isTimestamp];
268
+ var payload_schemas = [
269
+ import_image_thumbnail_payload_plugin5.ImageThumbnailSchema,
270
+ import_witness_timestamp2.TimestampSchema
271
+ ];
272
+ var indexCandidateIdentityFunctions = [
273
+ import_image_thumbnail_payload_plugin5.isImageThumbnail,
274
+ import_witness_timestamp2.isTimestamp
275
+ ];
219
276
  var order = "asc";
220
277
  var moduleName = "ImageThumbnailStateToIndexCandidateDiviner";
221
278
  var ImageThumbnailStateToIndexCandidateDiviner = class _ImageThumbnailStateToIndexCandidateDiviner extends import_diviner_abstract4.AbstractDiviner {
222
- static configSchemas = [...super.configSchemas, ImageThumbnailStateToIndexCandidateDivinerConfigSchema];
279
+ static {
280
+ __name(this, "ImageThumbnailStateToIndexCandidateDiviner");
281
+ }
282
+ static configSchemas = [
283
+ ...super.configSchemas,
284
+ ImageThumbnailStateToIndexCandidateDivinerConfigSchema
285
+ ];
223
286
  static defaultConfigSchema = ImageThumbnailStateToIndexCandidateDivinerConfigSchema;
224
287
  static labels = {
225
288
  ...super.labels,
@@ -236,41 +299,66 @@ var ImageThumbnailStateToIndexCandidateDiviner = class _ImageThumbnailStateToInd
236
299
  const filteredResults = indexCandidateIdentityFunctions.map((is) => results.find(is));
237
300
  if (filteredResults.includes(void 0)) return void 0;
238
301
  const indexCandidates = filteredResults.filter(import_exists2.exists);
239
- return [bw, ...indexCandidates];
302
+ return [
303
+ bw,
304
+ ...indexCandidates
305
+ ];
240
306
  }
241
307
  async divineHandler(payloads = []) {
242
308
  const lastState = payloads.find(import_module_model.isModuleState);
243
- if (!lastState) return [{ schema: import_module_model.ModuleStateSchema, state: { offset: 0 } }];
309
+ if (!lastState) return [
310
+ {
311
+ schema: import_module_model.ModuleStateSchema,
312
+ state: {
313
+ offset: 0
314
+ }
315
+ }
316
+ ];
244
317
  const { offset } = lastState.state;
245
318
  const boundWitnessDiviner = await this.getBoundWitnessDivinerForStore();
246
- const query = await new import_payload_builder4.PayloadBuilder({ schema: import_diviner_boundwitness_model.BoundWitnessDivinerQuerySchema }).fields({ limit: this.payloadDivinerLimit, offset, order, payload_schemas }).build();
247
- const batch = await boundWitnessDiviner.divine([query]);
248
- if (batch.length === 0) return [lastState];
319
+ const query = await new import_payload_builder4.PayloadBuilder({
320
+ schema: import_diviner_boundwitness_model.BoundWitnessDivinerQuerySchema
321
+ }).fields({
322
+ limit: this.payloadDivinerLimit,
323
+ offset,
324
+ order,
325
+ payload_schemas
326
+ }).build();
327
+ const batch = await boundWitnessDiviner.divine([
328
+ query
329
+ ]);
330
+ if (batch.length === 0) return [
331
+ lastState
332
+ ];
249
333
  const sourceArchivist = await this.getArchivistForStore();
250
- const indexCandidates = (await Promise.all(
251
- batch.filter(import_boundwitness_model2.isBoundWitnessWithMeta).map((bw) => _ImageThumbnailStateToIndexCandidateDiviner.getPayloadsInBoundWitness(bw, sourceArchivist))
252
- )).filter(import_exists2.exists).flat();
253
- const nextState = { schema: import_module_model.ModuleStateSchema, state: { ...lastState.state, offset: offset + batch.length } };
254
- return [nextState, ...indexCandidates];
334
+ const indexCandidates = (await Promise.all(batch.filter(import_boundwitness_model2.isBoundWitnessWithMeta).map((bw) => _ImageThumbnailStateToIndexCandidateDiviner.getPayloadsInBoundWitness(bw, sourceArchivist)))).filter(import_exists2.exists).flat();
335
+ const nextState = {
336
+ schema: import_module_model.ModuleStateSchema,
337
+ state: {
338
+ ...lastState.state,
339
+ offset: offset + batch.length
340
+ }
341
+ };
342
+ return [
343
+ nextState,
344
+ ...indexCandidates
345
+ ];
255
346
  }
256
347
  /**
257
- * Retrieves the archivist for the payloadStore
258
- * @returns The archivist for the payloadStore
259
- */
348
+ * Retrieves the archivist for the payloadStore
349
+ * @returns The archivist for the payloadStore
350
+ */
260
351
  async getArchivistForStore() {
261
352
  const name = (0, import_assert.assertEx)(this.config?.payloadStore?.archivist, () => `${moduleName}: Config for payloadStore.archivist not specified`);
262
353
  const mod = (0, import_assert.assertEx)(await this.resolve(name), () => `${moduleName}: Failed to resolve payloadStore.archivist`);
263
354
  return import_archivist_wrapper.ArchivistWrapper.wrap(mod, this.account);
264
355
  }
265
356
  /**
266
- * Retrieves the BoundWitness Diviner for the payloadStore
267
- * @returns The BoundWitness Diviner for the payloadStore
268
- */
357
+ * Retrieves the BoundWitness Diviner for the payloadStore
358
+ * @returns The BoundWitness Diviner for the payloadStore
359
+ */
269
360
  async getBoundWitnessDivinerForStore() {
270
- const name = (0, import_assert.assertEx)(
271
- this.config?.payloadStore?.boundWitnessDiviner,
272
- () => `${moduleName}: Config for payloadStore.boundWitnessDiviner not specified`
273
- );
361
+ const name = (0, import_assert.assertEx)(this.config?.payloadStore?.boundWitnessDiviner, () => `${moduleName}: Config for payloadStore.boundWitnessDiviner not specified`);
274
362
  const mod = (0, import_assert.assertEx)(await this.resolve(name), () => `${moduleName}: Failed to resolve payloadStore.boundWitnessDiviner`);
275
363
  return import_diviner_wrapper.DivinerWrapper.wrap(mod, this.account);
276
364
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Diviner/Diviner.ts","../../src/Diviner/ImageThumbnailDivinerLabels.ts","../../src/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.ts","../../src/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.ts","../../src/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.ts","../../src/Diviner/ImageThumbnailResultQuery.ts","../../src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Schema.ts","../../src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.ts","../../src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.ts"],"sourcesContent":["export * from './Diviner/index.js'\n","import { IndexingDiviner } from '@xyo-network/diviner-indexing'\nimport { AttachableDivinerInstance } from '@xyo-network/diviner-model'\n\nimport { ImageThumbnailDivinerLabels } from './ImageThumbnailDivinerLabels.js'\n\nexport class ImageThumbnailDiviner extends IndexingDiviner implements AttachableDivinerInstance {\n static override labels: ImageThumbnailDivinerLabels = { ...super.labels, ...ImageThumbnailDivinerLabels }\n}\n","import { DivinerStageSchema, IndexingDivinerStage } from '@xyo-network/diviner-indexing'\nimport { Labels } from '@xyo-network/module-model'\n\n/**\n * Labels for Image Thumbnail Diviner components\n */\nexport interface ImageThumbnailDivinerLabels extends Labels {\n 'network.xyo.image.thumbnail': 'diviner'\n}\n\n/**\n * Labels for Image Thumbnail Diviner components\n */\nexport const ImageThumbnailDivinerLabels: ImageThumbnailDivinerLabels = {\n 'network.xyo.image.thumbnail': 'diviner',\n}\n\n/**\n * Labels for Image Thumbnail Diviner Stage Diviners\n */\nexport type ImageThumbnailDivinerStageLabels = ImageThumbnailDivinerLabels & {\n /**\n * Labels for the stage of the Image Thumbnail Diviner Stage Diviner\n */\n [key in DivinerStageSchema]: IndexingDivinerStage\n}\n","import { Hash } from '@xylabs/hex'\nimport { BoundWitness, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerConfigSchema } from '@xyo-network/diviner-model'\nimport {\n ImageThumbnail,\n ImageThumbnailResultIndex,\n ImageThumbnailResultIndexFields,\n ImageThumbnailResultIndexSchema,\n ImageThumbnailSchema,\n isImageThumbnail,\n} from '@xyo-network/image-thumbnail-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema, WithMeta, WithSources } from '@xyo-network/payload-model'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\nimport { isTimestamp, TimeStamp, TimestampSchema } from '@xyo-network/witness-timestamp'\n\nimport { ImageThumbnailDivinerLabels, ImageThumbnailDivinerStageLabels } from './ImageThumbnailDivinerLabels.js'\n\n/**\n * Transforms candidates for image thumbnail indexing into their indexed representation\n */\nexport class ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner extends AbstractDiviner {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, DivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = DivinerConfigSchema\n static override labels: ImageThumbnailDivinerStageLabels = {\n ...super.labels,\n ...ImageThumbnailDivinerLabels,\n 'network.xyo.diviner.stage': 'indexCandidateToIndexDiviner',\n }\n\n protected override async divineHandler(payloads: Payload[] = []): Promise<WithSources<ImageThumbnailResultIndex>[]> {\n const bws: BoundWitness[] = payloads.filter(isBoundWitness)\n const imageThumbnailPayloads: ImageThumbnail[] = payloads.filter(isImageThumbnail)\n const timestampPayloads: TimeStamp[] = payloads.filter(isTimestamp)\n if (bws.length > 0 && imageThumbnailPayloads.length > 0 && timestampPayloads.length > 0) {\n const payloadDictionary = await PayloadBuilder.toDataHashMap(payloads)\n // eslint-disable-next-line unicorn/no-array-reduce\n const tuples: [BoundWitness, ImageThumbnail, TimeStamp][] = bws.reduce<[BoundWitness, ImageThumbnail, TimeStamp][]>(\n (acc, curr) => {\n const imageThumbnailIndex = curr.payload_schemas?.findIndex((schema) => schema === ImageThumbnailSchema)\n const timestampIndex = curr.payload_schemas?.findIndex((schema) => schema === TimestampSchema)\n const imageThumbnailHash = curr.payload_hashes?.[imageThumbnailIndex]\n const timestampHash = curr.payload_hashes?.[timestampIndex]\n const imageThumbnailPayload = [payloadDictionary[imageThumbnailHash]].find(isImageThumbnail) as WithMeta<ImageThumbnail> | undefined\n const timestampPayload = [payloadDictionary[timestampHash]].find(isTimestamp) as WithMeta<TimeStamp>\n if (imageThumbnailPayload && timestampPayload) acc.push([curr, imageThumbnailPayload, timestampPayload])\n return acc\n },\n [] as [BoundWitness, ImageThumbnail, TimeStamp][],\n )\n const indexes = await Promise.all(\n tuples.map(async ([bw, imageThumbnailPayload, timestampPayload]) => {\n const { sourceUrl: url, http } = imageThumbnailPayload\n const { timestamp } = timestampPayload\n const { status } = http ?? {}\n const success = !!imageThumbnailPayload.url // Call anything with a thumbnail url a success\n const sources: Hash[] = await PayloadBuilder.dataHashes([bw, imageThumbnailPayload, timestampPayload])\n const urlPayload = { schema: UrlSchema, url }\n const key: Hash = await PayloadBuilder.dataHash(urlPayload)\n const fields: ImageThumbnailResultIndexFields = { key, sources, success, timestamp }\n if (status) fields.status = status\n const result = await new PayloadBuilder<WithSources<ImageThumbnailResultIndex>>({\n schema: ImageThumbnailResultIndexSchema,\n })\n .fields(fields)\n .build()\n return [result]\n }),\n )\n return indexes.flat()\n }\n return []\n }\n}\n","import { exists } from '@xylabs/exists'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerConfigSchema } from '@xyo-network/diviner-model'\nimport {\n ImageThumbnailResult,\n ImageThumbnailResultFields,\n ImageThumbnailResultSchema,\n isImageThumbnailDivinerQuery,\n isImageThumbnailResultIndex,\n} from '@xyo-network/image-thumbnail-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { ImageThumbnailDivinerLabels, ImageThumbnailDivinerStageLabels } from './ImageThumbnailDivinerLabels.js'\n\n/**\n * Transforms an ImageThumbnailIndex response into an ImageThumbnailResponse response\n */\nexport class ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner extends AbstractDiviner {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, DivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = DivinerConfigSchema\n static override labels: ImageThumbnailDivinerStageLabels = {\n ...super.labels,\n ...ImageThumbnailDivinerLabels,\n 'network.xyo.diviner.stage': 'indexQueryResponseToDivinerQueryResponseDiviner',\n }\n\n protected override async divineHandler(payloads: Payload[] = []): Promise<ImageThumbnailResult[]> {\n // Filter out the two operands\n const imageThumbnailDivinerQueries = payloads.filter(isImageThumbnailDivinerQuery)\n const imageThumbnailResultIndexes = payloads.filter(isImageThumbnailResultIndex)\n\n // If we have operands\n if (imageThumbnailDivinerQueries.length > 0 && imageThumbnailResultIndexes.length > 0) {\n // Create a dictionary to translate index keys to the urls that represent them\n const keyToUrlDictionary = Object.fromEntries(\n await Promise.all(\n imageThumbnailDivinerQueries.map(async (imageThumbnailDivinerQuery) => {\n const { url } = imageThumbnailDivinerQuery\n const urlPayload = await new PayloadBuilder<Omit<ImageThumbnailResult, 'timestamp' | 'success' | 'sources'>>({ schema: UrlSchema })\n .fields({ url })\n .build()\n const key = await PayloadBuilder.dataHash(urlPayload)\n return [key, url] as const\n }),\n ),\n )\n // Map the indexes to responses using the dictionary\n return (\n await Promise.all(\n imageThumbnailResultIndexes.map(async (imageThumbnailResultIndex) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { key, schema, ...commonFields } = imageThumbnailResultIndex\n const url = keyToUrlDictionary?.[key]\n if (url) {\n const fields: ImageThumbnailResultFields = { ...commonFields, url }\n return await new PayloadBuilder<ImageThumbnailResult>({ schema: ImageThumbnailResultSchema }).fields(fields).build()\n }\n }),\n )\n ).filter(exists)\n }\n return []\n }\n}\n","import { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerConfigSchema } from '@xyo-network/diviner-model'\nimport { PayloadDivinerQuerySchema } from '@xyo-network/diviner-payload-model'\nimport { isImageThumbnailDivinerQuery } from '@xyo-network/image-thumbnail-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { ImageThumbnailDivinerLabels, ImageThumbnailDivinerStageLabels } from './ImageThumbnailDivinerLabels.js'\nimport { ImageThumbnailResultQuery } from './ImageThumbnailResultQuery.js'\n\n/**\n * A diviner that converts ImageThumbnailDivinerQuery to ImageThumbnailResultQuery\n */\nexport class ImageThumbnailQueryToImageThumbnailIndexQueryDiviner extends AbstractDiviner {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, DivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = DivinerConfigSchema\n static override labels: ImageThumbnailDivinerStageLabels = {\n ...super.labels,\n ...ImageThumbnailDivinerLabels,\n 'network.xyo.diviner.stage': 'divinerQueryToIndexQueryDiviner',\n }\n protected override async divineHandler(\n payloads: Payload[] = [],\n ): Promise<Omit<Omit<ImageThumbnailResultQuery, 'timestamp' | 'success'> & Partial<Pick<ImageThumbnailResultQuery, 'success'>>, 'timestamp'>[]> {\n const queries = payloads.filter(isImageThumbnailDivinerQuery)\n if (queries.length > 0) {\n const results = await Promise.all(\n queries.map(async (query) => {\n const { limit: payloadLimit, offset: payloadOffset, order: payloadOrder, status: payloadStatus, success: payloadSuccess, url } = query\n const limit = payloadLimit ?? 1\n const order = payloadOrder ?? 'desc'\n const offset = payloadOffset ?? 0\n const urlPayload = { schema: UrlSchema, url }\n const key = await PayloadBuilder.dataHash(urlPayload)\n const fields: Omit<ImageThumbnailResultQuery, 'schema' | 'timestamp' | 'success'> & Partial<Pick<ImageThumbnailResultQuery, 'success'>> = {\n key,\n limit,\n offset,\n order,\n }\n if (payloadSuccess !== undefined) fields.success = payloadSuccess\n if (payloadStatus !== undefined) fields.status = payloadStatus\n return await new PayloadBuilder<\n Omit<ImageThumbnailResultQuery, 'timestamp' | 'success'> & Partial<Pick<ImageThumbnailResultQuery, 'success'>>\n >({ schema: PayloadDivinerQuerySchema })\n .fields(fields)\n .build()\n }),\n )\n return results\n }\n return []\n }\n}\n","import { PayloadDivinerQueryPayload, PayloadDivinerQuerySchema } from '@xyo-network/diviner-payload-model'\nimport { ImageThumbnailResultIndex } from '@xyo-network/image-thumbnail-payload-plugin'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\n/**\n * The fields that will need to be indexed on in the underlying store\n */\nexport type QueryableImageThumbnailResultProperties = Extract<keyof ImageThumbnailResultIndex, 'status' | 'success' | 'timestamp' | 'key'>\n\n/**\n * The query that will be used to retrieve the results from the underlying store\n */\nexport type ImageThumbnailResultQuery = PayloadDivinerQueryPayload & Pick<ImageThumbnailResultIndex, QueryableImageThumbnailResultProperties>\n\n/**\n * A type guard for ImageThumbnailResultQuery\n */\n// TODO: Use a more derived schema than PayloadDivinerQuerySchema\nexport const isImageThumbnailResultQuery = isPayloadOfSchemaType<ImageThumbnailResultQuery>(PayloadDivinerQuerySchema)\n","import { ImageThumbnailDivinerSchema } from '@xyo-network/image-thumbnail-payload-plugin'\n\nexport type ImageThumbnailStateToIndexCandidateDivinerSchema = `${ImageThumbnailDivinerSchema}.stage.stateToIndexCandidateDiviner`\nexport const ImageThumbnailStateToIndexCandidateDivinerSchema: ImageThumbnailStateToIndexCandidateDivinerSchema = `${ImageThumbnailDivinerSchema}.stage.stateToIndexCandidateDiviner`\n","import { DivinerConfig } from '@xyo-network/diviner-model'\nimport { SearchableStorage } from '@xyo-network/image-thumbnail-payload-plugin'\n\nimport { ImageThumbnailStateToIndexCandidateDivinerSchema } from './Schema.js'\n\nexport type ImageThumbnailStateToIndexCandidateDivinerConfigSchema = `${ImageThumbnailStateToIndexCandidateDivinerSchema}.config`\nexport const ImageThumbnailStateToIndexCandidateDivinerConfigSchema: ImageThumbnailStateToIndexCandidateDivinerConfigSchema = `${ImageThumbnailStateToIndexCandidateDivinerSchema}.config`\n\nexport type ImageThumbnailStateToIndexCandidateDivinerConfig = DivinerConfig<{\n payloadDivinerLimit?: number\n /**\n * Where the diviner should look for stored thumbnails\n */\n payloadStore?: SearchableStorage\n schema: ImageThumbnailStateToIndexCandidateDivinerConfigSchema\n}>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BoundWitness, isBoundWitnessWithMeta } from '@xyo-network/boundwitness-model'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { BoundWitnessDivinerQueryPayload, BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport { DivinerWrapper } from '@xyo-network/diviner-wrapper'\nimport { ImageThumbnail, ImageThumbnailSchema, isImageThumbnail } from '@xyo-network/image-thumbnail-payload-plugin'\nimport { isModuleState, ModuleState, ModuleStateSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema, WithMeta, WithSources } from '@xyo-network/payload-model'\nimport { isTimestamp, TimeStamp, TimestampSchema } from '@xyo-network/witness-timestamp'\n\nimport { ImageThumbnailDivinerLabels, ImageThumbnailDivinerStageLabels } from '../ImageThumbnailDivinerLabels.js'\nimport { ImageThumbnailDivinerState } from '../ImageThumbnailDivinerState.js'\nimport { ImageThumbnailStateToIndexCandidateDivinerConfigSchema } from './Config.js'\nimport { ImageThumbnailStateToIndexCandidateDivinerParams } from './Params.js'\n\n/**\n * All Payload types involved in index candidates for indexing\n */\nexport type IndexCandidate = BoundWitness | ImageThumbnail | TimeStamp\n\n/**\n * The response from the ImageThumbnailStateToIndexCandidateDiviner\n */\nexport type ImageThumbnailStateToIndexCandidateDivinerResponse = [\n /**\n * The next state of the diviner\n */\n nextState: ModuleState<ImageThumbnailDivinerState>,\n /**\n * The index candidates\n */\n ...IndexCandidate[],\n]\n\n/**\n * The required payload_schemas within BoundWitnesses to identify index candidates\n */\nconst payload_schemas = [ImageThumbnailSchema, TimestampSchema]\n\n/**\n * Index candidate identity functions\n */\nconst indexCandidateIdentityFunctions = [isImageThumbnail, isTimestamp] as const\n\n/**\n * The default order to search Bound Witnesses to identify index candidates\n */\nconst order = 'asc'\n\n/**\n * The name of the module (for logging purposes)\n */\nconst moduleName = 'ImageThumbnailStateToIndexCandidateDiviner'\n\n/**\n * Transforms candidates for image thumbnail indexing into their indexed representation\n */\nexport class ImageThumbnailStateToIndexCandidateDiviner<\n TParams extends ImageThumbnailStateToIndexCandidateDivinerParams = ImageThumbnailStateToIndexCandidateDivinerParams,\n> extends AbstractDiviner<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, ImageThumbnailStateToIndexCandidateDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = ImageThumbnailStateToIndexCandidateDivinerConfigSchema\n static override labels: ImageThumbnailDivinerStageLabels = {\n ...super.labels,\n ...ImageThumbnailDivinerLabels,\n 'network.xyo.diviner.stage': 'stateToIndexCandidateDiviner',\n }\n\n get payloadDivinerLimit() {\n return this.config.payloadDivinerLimit ?? 1000\n }\n\n protected static async getPayloadsInBoundWitness(bw: BoundWitness, archivist: ArchivistInstance): Promise<IndexCandidate[] | undefined> {\n const indexes = payload_schemas.map((schema) => bw.payload_schemas?.findIndex((s) => s === schema))\n const hashes = indexes.map((index) => bw.payload_hashes?.[index])\n const results = await archivist.get(hashes)\n const filteredResults = indexCandidateIdentityFunctions.map((is) => results.find(is))\n if (filteredResults.includes(undefined)) return undefined\n const indexCandidates: IndexCandidate[] = filteredResults.filter(exists) as WithMeta<IndexCandidate>[]\n return [bw, ...indexCandidates]\n }\n\n protected override async divineHandler(payloads: Payload[] = []): Promise<ImageThumbnailStateToIndexCandidateDivinerResponse> {\n // Retrieve the last state from what was passed in\n const lastState = payloads.find(isModuleState<ImageThumbnailDivinerState>)\n // If there is no last state, start from the beginning\n if (!lastState) return [{ schema: ModuleStateSchema, state: { offset: 0 } }]\n // Otherwise, get the last offset\n const { offset } = lastState.state\n // Get next batch of results starting from the offset\n const boundWitnessDiviner = await this.getBoundWitnessDivinerForStore()\n const query = await new PayloadBuilder<BoundWitnessDivinerQueryPayload>({ schema: BoundWitnessDivinerQuerySchema })\n .fields({ limit: this.payloadDivinerLimit, offset, order, payload_schemas })\n .build()\n const batch = (await boundWitnessDiviner.divine([query])) as WithSources<WithMeta<BoundWitness>>[]\n if (batch.length === 0) return [lastState]\n // Get source data\n const sourceArchivist = await this.getArchivistForStore()\n const indexCandidates: IndexCandidate[] = (\n await Promise.all(\n batch.filter(isBoundWitnessWithMeta).map((bw) => ImageThumbnailStateToIndexCandidateDiviner.getPayloadsInBoundWitness(bw, sourceArchivist)),\n )\n )\n .filter(exists)\n .flat()\n const nextState = { schema: ModuleStateSchema, state: { ...lastState.state, offset: offset + batch.length } }\n return [nextState, ...indexCandidates]\n }\n /**\n * Retrieves the archivist for the payloadStore\n * @returns The archivist for the payloadStore\n */\n protected async getArchivistForStore() {\n const name = assertEx(this.config?.payloadStore?.archivist, () => `${moduleName}: Config for payloadStore.archivist not specified`)\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve payloadStore.archivist`)\n return ArchivistWrapper.wrap(mod, this.account)\n }\n\n /**\n * Retrieves the BoundWitness Diviner for the payloadStore\n * @returns The BoundWitness Diviner for the payloadStore\n */\n protected async getBoundWitnessDivinerForStore() {\n const name = assertEx(\n this.config?.payloadStore?.boundWitnessDiviner,\n () => `${moduleName}: Config for payloadStore.boundWitnessDiviner not specified`,\n )\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve payloadStore.boundWitnessDiviner`)\n return DivinerWrapper.wrap(mod, this.account)\n }\n}\n"],"mappings":"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","names":["import_diviner_abstract","import_diviner_model","import_image_thumbnail_payload_plugin","import_payload_builder","import_url_payload_plugin","import_diviner_abstract","import_diviner_model","import_image_thumbnail_payload_plugin","import_payload_builder","import_url_payload_plugin","order","import_diviner_payload_model","import_image_thumbnail_payload_plugin","import_exists","import_boundwitness_model","import_diviner_abstract","import_image_thumbnail_payload_plugin","import_payload_builder","import_witness_timestamp"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Diviner/Diviner.ts","../../src/Diviner/ImageThumbnailDivinerLabels.ts","../../src/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.ts","../../src/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.ts","../../src/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.ts","../../src/Diviner/ImageThumbnailResultQuery.ts","../../src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Schema.ts","../../src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.ts","../../src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.ts"],"sourcesContent":["export * from './Diviner/index.ts'\n","import { IndexingDiviner } from '@xyo-network/diviner-indexing'\nimport { AttachableDivinerInstance } from '@xyo-network/diviner-model'\n\nimport { ImageThumbnailDivinerLabels } from './ImageThumbnailDivinerLabels.ts'\n\nexport class ImageThumbnailDiviner extends IndexingDiviner implements AttachableDivinerInstance {\n static override labels: ImageThumbnailDivinerLabels = { ...super.labels, ...ImageThumbnailDivinerLabels }\n}\n","import { DivinerStageSchema, IndexingDivinerStage } from '@xyo-network/diviner-indexing'\nimport { Labels } from '@xyo-network/module-model'\n\n/**\n * Labels for Image Thumbnail Diviner components\n */\nexport interface ImageThumbnailDivinerLabels extends Labels {\n 'network.xyo.image.thumbnail': 'diviner'\n}\n\n/**\n * Labels for Image Thumbnail Diviner components\n */\nexport const ImageThumbnailDivinerLabels: ImageThumbnailDivinerLabels = {\n 'network.xyo.image.thumbnail': 'diviner',\n}\n\n/**\n * Labels for Image Thumbnail Diviner Stage Diviners\n */\nexport type ImageThumbnailDivinerStageLabels = ImageThumbnailDivinerLabels & {\n /**\n * Labels for the stage of the Image Thumbnail Diviner Stage Diviner\n */\n [key in DivinerStageSchema]: IndexingDivinerStage\n}\n","import { Hash } from '@xylabs/hex'\nimport { BoundWitness, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerConfigSchema } from '@xyo-network/diviner-model'\nimport {\n ImageThumbnail,\n ImageThumbnailResultIndex,\n ImageThumbnailResultIndexFields,\n ImageThumbnailResultIndexSchema,\n ImageThumbnailSchema,\n isImageThumbnail,\n} from '@xyo-network/image-thumbnail-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema, WithMeta, WithSources } from '@xyo-network/payload-model'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\nimport { isTimestamp, TimeStamp, TimestampSchema } from '@xyo-network/witness-timestamp'\n\nimport { ImageThumbnailDivinerLabels, ImageThumbnailDivinerStageLabels } from './ImageThumbnailDivinerLabels.ts'\n\n/**\n * Transforms candidates for image thumbnail indexing into their indexed representation\n */\nexport class ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner extends AbstractDiviner {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, DivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = DivinerConfigSchema\n static override labels: ImageThumbnailDivinerStageLabels = {\n ...super.labels,\n ...ImageThumbnailDivinerLabels,\n 'network.xyo.diviner.stage': 'indexCandidateToIndexDiviner',\n }\n\n protected override async divineHandler(payloads: Payload[] = []): Promise<WithSources<ImageThumbnailResultIndex>[]> {\n const bws: BoundWitness[] = payloads.filter(isBoundWitness)\n const imageThumbnailPayloads: ImageThumbnail[] = payloads.filter(isImageThumbnail)\n const timestampPayloads: TimeStamp[] = payloads.filter(isTimestamp)\n if (bws.length > 0 && imageThumbnailPayloads.length > 0 && timestampPayloads.length > 0) {\n const payloadDictionary = await PayloadBuilder.toDataHashMap(payloads)\n // eslint-disable-next-line unicorn/no-array-reduce\n const tuples: [BoundWitness, ImageThumbnail, TimeStamp][] = bws.reduce<[BoundWitness, ImageThumbnail, TimeStamp][]>(\n (acc, curr) => {\n const imageThumbnailIndex = curr.payload_schemas?.findIndex(schema => schema === ImageThumbnailSchema)\n const timestampIndex = curr.payload_schemas?.findIndex(schema => schema === TimestampSchema)\n const imageThumbnailHash = curr.payload_hashes?.[imageThumbnailIndex]\n const timestampHash = curr.payload_hashes?.[timestampIndex]\n const imageThumbnailPayload = [payloadDictionary[imageThumbnailHash]].find(isImageThumbnail) as WithMeta<ImageThumbnail> | undefined\n const timestampPayload = [payloadDictionary[timestampHash]].find(isTimestamp) as WithMeta<TimeStamp>\n if (imageThumbnailPayload && timestampPayload) acc.push([curr, imageThumbnailPayload, timestampPayload])\n return acc\n },\n [] as [BoundWitness, ImageThumbnail, TimeStamp][],\n )\n const indexes = await Promise.all(\n tuples.map(async ([bw, imageThumbnailPayload, timestampPayload]) => {\n const { sourceUrl: url, http } = imageThumbnailPayload\n const { timestamp } = timestampPayload\n const { status } = http ?? {}\n const success = !!imageThumbnailPayload.url // Call anything with a thumbnail url a success\n const sources: Hash[] = await PayloadBuilder.dataHashes([bw, imageThumbnailPayload, timestampPayload])\n const urlPayload = { schema: UrlSchema, url }\n const key: Hash = await PayloadBuilder.dataHash(urlPayload)\n const fields: ImageThumbnailResultIndexFields = { key, sources, success, timestamp }\n if (status) fields.status = status\n const result = await new PayloadBuilder<WithSources<ImageThumbnailResultIndex>>({\n schema: ImageThumbnailResultIndexSchema,\n })\n .fields(fields)\n .build()\n return [result]\n }),\n )\n return indexes.flat()\n }\n return []\n }\n}\n","import { exists } from '@xylabs/exists'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerConfigSchema } from '@xyo-network/diviner-model'\nimport {\n ImageThumbnailResult,\n ImageThumbnailResultFields,\n ImageThumbnailResultSchema,\n isImageThumbnailDivinerQuery,\n isImageThumbnailResultIndex,\n} from '@xyo-network/image-thumbnail-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { ImageThumbnailDivinerLabels, ImageThumbnailDivinerStageLabels } from './ImageThumbnailDivinerLabels.ts'\n\n/**\n * Transforms an ImageThumbnailIndex response into an ImageThumbnailResponse response\n */\nexport class ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner extends AbstractDiviner {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, DivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = DivinerConfigSchema\n static override labels: ImageThumbnailDivinerStageLabels = {\n ...super.labels,\n ...ImageThumbnailDivinerLabels,\n 'network.xyo.diviner.stage': 'indexQueryResponseToDivinerQueryResponseDiviner',\n }\n\n protected override async divineHandler(payloads: Payload[] = []): Promise<ImageThumbnailResult[]> {\n // Filter out the two operands\n const imageThumbnailDivinerQueries = payloads.filter(isImageThumbnailDivinerQuery)\n const imageThumbnailResultIndexes = payloads.filter(isImageThumbnailResultIndex)\n\n // If we have operands\n if (imageThumbnailDivinerQueries.length > 0 && imageThumbnailResultIndexes.length > 0) {\n // Create a dictionary to translate index keys to the urls that represent them\n const keyToUrlDictionary = Object.fromEntries(\n await Promise.all(\n imageThumbnailDivinerQueries.map(async (imageThumbnailDivinerQuery) => {\n const { url } = imageThumbnailDivinerQuery\n const urlPayload = await new PayloadBuilder<Omit<ImageThumbnailResult, 'timestamp' | 'success' | 'sources'>>({ schema: UrlSchema })\n .fields({ url })\n .build()\n const key = await PayloadBuilder.dataHash(urlPayload)\n return [key, url] as const\n }),\n ),\n )\n // Map the indexes to responses using the dictionary\n return (\n await Promise.all(\n imageThumbnailResultIndexes.map(async (imageThumbnailResultIndex) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { key, schema, ...commonFields } = imageThumbnailResultIndex\n const url = keyToUrlDictionary?.[key]\n if (url) {\n const fields: ImageThumbnailResultFields = { ...commonFields, url }\n return await new PayloadBuilder<ImageThumbnailResult>({ schema: ImageThumbnailResultSchema }).fields(fields).build()\n }\n }),\n )\n ).filter(exists)\n }\n return []\n }\n}\n","import { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerConfigSchema } from '@xyo-network/diviner-model'\nimport { PayloadDivinerQuerySchema } from '@xyo-network/diviner-payload-model'\nimport { isImageThumbnailDivinerQuery } from '@xyo-network/image-thumbnail-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { ImageThumbnailDivinerLabels, ImageThumbnailDivinerStageLabels } from './ImageThumbnailDivinerLabels.ts'\nimport { ImageThumbnailResultQuery } from './ImageThumbnailResultQuery.ts'\n\n/**\n * A diviner that converts ImageThumbnailDivinerQuery to ImageThumbnailResultQuery\n */\nexport class ImageThumbnailQueryToImageThumbnailIndexQueryDiviner extends AbstractDiviner {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, DivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = DivinerConfigSchema\n static override labels: ImageThumbnailDivinerStageLabels = {\n ...super.labels,\n ...ImageThumbnailDivinerLabels,\n 'network.xyo.diviner.stage': 'divinerQueryToIndexQueryDiviner',\n }\n\n protected override async divineHandler(\n payloads: Payload[] = [],\n ): Promise<Omit<Omit<ImageThumbnailResultQuery, 'timestamp' | 'success'> & Partial<Pick<ImageThumbnailResultQuery, 'success'>>, 'timestamp'>[]> {\n const queries = payloads.filter(isImageThumbnailDivinerQuery)\n if (queries.length > 0) {\n const results = await Promise.all(\n queries.map(async (query) => {\n const { limit: payloadLimit, offset: payloadOffset, order: payloadOrder, status: payloadStatus, success: payloadSuccess, url } = query\n const limit = payloadLimit ?? 1\n const order = payloadOrder ?? 'desc'\n const offset = payloadOffset ?? 0\n const urlPayload = { schema: UrlSchema, url }\n const key = await PayloadBuilder.dataHash(urlPayload)\n const fields: Omit<ImageThumbnailResultQuery, 'schema' | 'timestamp' | 'success'> & Partial<Pick<ImageThumbnailResultQuery, 'success'>> = {\n key,\n limit,\n offset,\n order,\n }\n if (payloadSuccess !== undefined) fields.success = payloadSuccess\n if (payloadStatus !== undefined) fields.status = payloadStatus\n return await new PayloadBuilder<\n Omit<ImageThumbnailResultQuery, 'timestamp' | 'success'> & Partial<Pick<ImageThumbnailResultQuery, 'success'>>\n >({ schema: PayloadDivinerQuerySchema })\n .fields(fields)\n .build()\n }),\n )\n return results\n }\n return []\n }\n}\n","import { PayloadDivinerQueryPayload, PayloadDivinerQuerySchema } from '@xyo-network/diviner-payload-model'\nimport { ImageThumbnailResultIndex } from '@xyo-network/image-thumbnail-payload-plugin'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\n/**\n * The fields that will need to be indexed on in the underlying store\n */\nexport type QueryableImageThumbnailResultProperties = Extract<keyof ImageThumbnailResultIndex, 'status' | 'success' | 'timestamp' | 'key'>\n\n/**\n * The query that will be used to retrieve the results from the underlying store\n */\nexport type ImageThumbnailResultQuery = PayloadDivinerQueryPayload & Pick<ImageThumbnailResultIndex, QueryableImageThumbnailResultProperties>\n\n/**\n * A type guard for ImageThumbnailResultQuery\n */\n// TODO: Use a more derived schema than PayloadDivinerQuerySchema\nexport const isImageThumbnailResultQuery = isPayloadOfSchemaType<ImageThumbnailResultQuery>(PayloadDivinerQuerySchema)\n","import { ImageThumbnailDivinerSchema } from '@xyo-network/image-thumbnail-payload-plugin'\n\nexport type ImageThumbnailStateToIndexCandidateDivinerSchema = `${ImageThumbnailDivinerSchema}.stage.stateToIndexCandidateDiviner`\nexport const ImageThumbnailStateToIndexCandidateDivinerSchema: ImageThumbnailStateToIndexCandidateDivinerSchema = `${ImageThumbnailDivinerSchema}.stage.stateToIndexCandidateDiviner`\n","import { DivinerConfig } from '@xyo-network/diviner-model'\nimport { SearchableStorage } from '@xyo-network/image-thumbnail-payload-plugin'\n\nimport { ImageThumbnailStateToIndexCandidateDivinerSchema } from './Schema.ts'\n\nexport type ImageThumbnailStateToIndexCandidateDivinerConfigSchema = `${ImageThumbnailStateToIndexCandidateDivinerSchema}.config`\nexport const ImageThumbnailStateToIndexCandidateDivinerConfigSchema: ImageThumbnailStateToIndexCandidateDivinerConfigSchema = `${ImageThumbnailStateToIndexCandidateDivinerSchema}.config`\n\nexport type ImageThumbnailStateToIndexCandidateDivinerConfig = DivinerConfig<{\n payloadDivinerLimit?: number\n /**\n * Where the diviner should look for stored thumbnails\n */\n payloadStore?: SearchableStorage\n schema: ImageThumbnailStateToIndexCandidateDivinerConfigSchema\n}>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BoundWitness, isBoundWitnessWithMeta } from '@xyo-network/boundwitness-model'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { BoundWitnessDivinerQueryPayload, BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport { DivinerWrapper } from '@xyo-network/diviner-wrapper'\nimport { ImageThumbnail, ImageThumbnailSchema, isImageThumbnail } from '@xyo-network/image-thumbnail-payload-plugin'\nimport { isModuleState, ModuleState, ModuleStateSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema, WithMeta, WithSources } from '@xyo-network/payload-model'\nimport { isTimestamp, TimeStamp, TimestampSchema } from '@xyo-network/witness-timestamp'\n\nimport { ImageThumbnailDivinerLabels, ImageThumbnailDivinerStageLabels } from '../ImageThumbnailDivinerLabels.ts'\nimport { ImageThumbnailDivinerState } from '../ImageThumbnailDivinerState.ts'\nimport { ImageThumbnailStateToIndexCandidateDivinerConfigSchema } from './Config.ts'\nimport { ImageThumbnailStateToIndexCandidateDivinerParams } from './Params.ts'\n\n/**\n * All Payload types involved in index candidates for indexing\n */\nexport type IndexCandidate = BoundWitness | ImageThumbnail | TimeStamp\n\n/**\n * The response from the ImageThumbnailStateToIndexCandidateDiviner\n */\nexport type ImageThumbnailStateToIndexCandidateDivinerResponse = [\n /**\n * The next state of the diviner\n */\n nextState: ModuleState<ImageThumbnailDivinerState>,\n /**\n * The index candidates\n */\n ...IndexCandidate[],\n]\n\n/**\n * The required payload_schemas within BoundWitnesses to identify index candidates\n */\nconst payload_schemas = [ImageThumbnailSchema, TimestampSchema]\n\n/**\n * Index candidate identity functions\n */\nconst indexCandidateIdentityFunctions = [isImageThumbnail, isTimestamp] as const\n\n/**\n * The default order to search Bound Witnesses to identify index candidates\n */\nconst order = 'asc'\n\n/**\n * The name of the module (for logging purposes)\n */\nconst moduleName = 'ImageThumbnailStateToIndexCandidateDiviner'\n\n/**\n * Transforms candidates for image thumbnail indexing into their indexed representation\n */\nexport class ImageThumbnailStateToIndexCandidateDiviner<\n TParams extends ImageThumbnailStateToIndexCandidateDivinerParams = ImageThumbnailStateToIndexCandidateDivinerParams,\n> extends AbstractDiviner<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, ImageThumbnailStateToIndexCandidateDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = ImageThumbnailStateToIndexCandidateDivinerConfigSchema\n static override labels: ImageThumbnailDivinerStageLabels = {\n ...super.labels,\n ...ImageThumbnailDivinerLabels,\n 'network.xyo.diviner.stage': 'stateToIndexCandidateDiviner',\n }\n\n get payloadDivinerLimit() {\n return this.config.payloadDivinerLimit ?? 1000\n }\n\n protected static async getPayloadsInBoundWitness(bw: BoundWitness, archivist: ArchivistInstance): Promise<IndexCandidate[] | undefined> {\n const indexes = payload_schemas.map(schema => bw.payload_schemas?.findIndex(s => s === schema))\n const hashes = indexes.map(index => bw.payload_hashes?.[index])\n const results = await archivist.get(hashes)\n const filteredResults = indexCandidateIdentityFunctions.map(is => results.find(is))\n if (filteredResults.includes(undefined)) return undefined\n const indexCandidates: IndexCandidate[] = filteredResults.filter(exists) as WithMeta<IndexCandidate>[]\n return [bw, ...indexCandidates]\n }\n\n protected override async divineHandler(payloads: Payload[] = []): Promise<ImageThumbnailStateToIndexCandidateDivinerResponse> {\n // Retrieve the last state from what was passed in\n const lastState = payloads.find(isModuleState<ImageThumbnailDivinerState>)\n // If there is no last state, start from the beginning\n if (!lastState) return [{ schema: ModuleStateSchema, state: { offset: 0 } }]\n // Otherwise, get the last offset\n const { offset } = lastState.state\n // Get next batch of results starting from the offset\n const boundWitnessDiviner = await this.getBoundWitnessDivinerForStore()\n const query = await new PayloadBuilder<BoundWitnessDivinerQueryPayload>({ schema: BoundWitnessDivinerQuerySchema })\n .fields({ limit: this.payloadDivinerLimit, offset, order, payload_schemas })\n .build()\n const batch = (await boundWitnessDiviner.divine([query])) as WithSources<WithMeta<BoundWitness>>[]\n if (batch.length === 0) return [lastState]\n // Get source data\n const sourceArchivist = await this.getArchivistForStore()\n const indexCandidates: IndexCandidate[] = (\n await Promise.all(\n batch.filter(isBoundWitnessWithMeta).map(bw => ImageThumbnailStateToIndexCandidateDiviner.getPayloadsInBoundWitness(bw, sourceArchivist)),\n )\n )\n .filter(exists)\n .flat()\n const nextState = { schema: ModuleStateSchema, state: { ...lastState.state, offset: offset + batch.length } }\n return [nextState, ...indexCandidates]\n }\n\n /**\n * Retrieves the archivist for the payloadStore\n * @returns The archivist for the payloadStore\n */\n protected async getArchivistForStore() {\n const name = assertEx(this.config?.payloadStore?.archivist, () => `${moduleName}: Config for payloadStore.archivist not specified`)\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve payloadStore.archivist`)\n return ArchivistWrapper.wrap(mod, this.account)\n }\n\n /**\n * Retrieves the BoundWitness Diviner for the payloadStore\n * @returns The BoundWitness Diviner for the payloadStore\n */\n protected async getBoundWitnessDivinerForStore() {\n const name = assertEx(\n this.config?.payloadStore?.boundWitnessDiviner,\n () => `${moduleName}: Config for payloadStore.boundWitnessDiviner not specified`,\n )\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve payloadStore.boundWitnessDiviner`)\n return DivinerWrapper.wrap(mod, this.account)\n }\n}\n"],"mappings":"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","names":["ImageThumbnailDivinerLabels","ImageThumbnailDiviner","IndexingDiviner","labels","ImageThumbnailDivinerLabels","ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner","AbstractDiviner","configSchemas","DivinerConfigSchema","defaultConfigSchema","labels","ImageThumbnailDivinerLabels","divineHandler","payloads","bws","filter","isBoundWitness","imageThumbnailPayloads","isImageThumbnail","timestampPayloads","isTimestamp","length","payloadDictionary","PayloadBuilder","toDataHashMap","tuples","reduce","acc","curr","imageThumbnailIndex","payload_schemas","findIndex","schema","ImageThumbnailSchema","timestampIndex","TimestampSchema","imageThumbnailHash","payload_hashes","timestampHash","imageThumbnailPayload","find","timestampPayload","push","indexes","Promise","all","map","bw","sourceUrl","url","http","timestamp","status","success","sources","dataHashes","urlPayload","UrlSchema","key","dataHash","fields","result","ImageThumbnailResultIndexSchema","build","flat","import_diviner_abstract","import_diviner_model","import_image_thumbnail_payload_plugin","import_payload_builder","import_url_payload_plugin","ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner","AbstractDiviner","configSchemas","DivinerConfigSchema","defaultConfigSchema","labels","ImageThumbnailDivinerLabels","divineHandler","payloads","imageThumbnailDivinerQueries","filter","isImageThumbnailDivinerQuery","imageThumbnailResultIndexes","isImageThumbnailResultIndex","length","keyToUrlDictionary","Object","fromEntries","Promise","all","map","imageThumbnailDivinerQuery","url","urlPayload","PayloadBuilder","schema","UrlSchema","fields","build","key","dataHash","imageThumbnailResultIndex","commonFields","ImageThumbnailResultSchema","exists","import_diviner_abstract","import_diviner_model","import_image_thumbnail_payload_plugin","import_payload_builder","import_url_payload_plugin","ImageThumbnailQueryToImageThumbnailIndexQueryDiviner","AbstractDiviner","configSchemas","DivinerConfigSchema","defaultConfigSchema","labels","ImageThumbnailDivinerLabels","divineHandler","payloads","queries","filter","isImageThumbnailDivinerQuery","length","results","Promise","all","map","query","limit","payloadLimit","offset","payloadOffset","order","payloadOrder","status","payloadStatus","success","payloadSuccess","url","urlPayload","schema","UrlSchema","key","PayloadBuilder","dataHash","fields","undefined","PayloadDivinerQuerySchema","build","import_diviner_payload_model","isImageThumbnailResultQuery","isPayloadOfSchemaType","PayloadDivinerQuerySchema","import_image_thumbnail_payload_plugin","ImageThumbnailStateToIndexCandidateDivinerSchema","ImageThumbnailDivinerSchema","ImageThumbnailStateToIndexCandidateDivinerConfigSchema","ImageThumbnailStateToIndexCandidateDivinerSchema","import_exists","import_boundwitness_model","import_diviner_abstract","import_image_thumbnail_payload_plugin","import_payload_builder","import_witness_timestamp","payload_schemas","ImageThumbnailSchema","TimestampSchema","indexCandidateIdentityFunctions","isImageThumbnail","isTimestamp","order","moduleName","ImageThumbnailStateToIndexCandidateDiviner","AbstractDiviner","configSchemas","ImageThumbnailStateToIndexCandidateDivinerConfigSchema","defaultConfigSchema","labels","ImageThumbnailDivinerLabels","payloadDivinerLimit","config","getPayloadsInBoundWitness","bw","archivist","indexes","map","schema","findIndex","s","hashes","index","payload_hashes","results","get","filteredResults","is","find","includes","undefined","indexCandidates","filter","exists","divineHandler","payloads","lastState","isModuleState","ModuleStateSchema","state","offset","boundWitnessDiviner","getBoundWitnessDivinerForStore","query","PayloadBuilder","BoundWitnessDivinerQuerySchema","fields","limit","build","batch","divine","length","sourceArchivist","getArchivistForStore","Promise","all","isBoundWitnessWithMeta","flat","nextState","name","assertEx","payloadStore","mod","resolve","ArchivistWrapper","wrap","account","DivinerWrapper"]}
@@ -1,2 +1,2 @@
1
- export * from './Diviner/index.js';
1
+ export * from './Diviner/index.ts';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './Diviner/index.js';
1
+ export * from './Diviner/index.ts';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './Diviner/index.js';
1
+ export * from './Diviner/index.ts';
2
2
  //# sourceMappingURL=index.d.ts.map