@xyo-network/diviner-image-thumbnail 2.99.3 → 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
@@ -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
@@ -1,3 +1,6 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
1
4
  // src/Diviner/Diviner.ts
2
5
  import { IndexingDiviner } from "@xyo-network/diviner-indexing";
3
6
 
@@ -8,23 +11,31 @@ var ImageThumbnailDivinerLabels = {
8
11
 
9
12
  // src/Diviner/Diviner.ts
10
13
  var ImageThumbnailDiviner = class extends IndexingDiviner {
11
- static labels = { ...super.labels, ...ImageThumbnailDivinerLabels };
14
+ static {
15
+ __name(this, "ImageThumbnailDiviner");
16
+ }
17
+ static labels = {
18
+ ...super.labels,
19
+ ...ImageThumbnailDivinerLabels
20
+ };
12
21
  };
13
22
 
14
23
  // src/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.ts
15
24
  import { isBoundWitness } from "@xyo-network/boundwitness-model";
16
25
  import { AbstractDiviner } from "@xyo-network/diviner-abstract";
17
26
  import { DivinerConfigSchema } from "@xyo-network/diviner-model";
18
- import {
19
- ImageThumbnailResultIndexSchema,
20
- ImageThumbnailSchema,
21
- isImageThumbnail
22
- } from "@xyo-network/image-thumbnail-payload-plugin";
27
+ import { ImageThumbnailResultIndexSchema, ImageThumbnailSchema, isImageThumbnail } from "@xyo-network/image-thumbnail-payload-plugin";
23
28
  import { PayloadBuilder } from "@xyo-network/payload-builder";
24
29
  import { UrlSchema } from "@xyo-network/url-payload-plugin";
25
30
  import { isTimestamp, TimestampSchema } from "@xyo-network/witness-timestamp";
26
31
  var ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner = class extends AbstractDiviner {
27
- static configSchemas = [...super.configSchemas, DivinerConfigSchema];
32
+ static {
33
+ __name(this, "ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner");
34
+ }
35
+ static configSchemas = [
36
+ ...super.configSchemas,
37
+ DivinerConfigSchema
38
+ ];
28
39
  static defaultConfigSchema = DivinerConfigSchema;
29
40
  static labels = {
30
41
  ...super.labels,
@@ -37,36 +48,53 @@ var ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner = class extends Abs
37
48
  const timestampPayloads = payloads.filter(isTimestamp);
38
49
  if (bws.length > 0 && imageThumbnailPayloads.length > 0 && timestampPayloads.length > 0) {
39
50
  const payloadDictionary = await PayloadBuilder.toDataHashMap(payloads);
40
- const tuples = bws.reduce(
41
- (acc, curr) => {
42
- const imageThumbnailIndex = curr.payload_schemas?.findIndex((schema) => schema === ImageThumbnailSchema);
43
- const timestampIndex = curr.payload_schemas?.findIndex((schema) => schema === TimestampSchema);
44
- const imageThumbnailHash = curr.payload_hashes?.[imageThumbnailIndex];
45
- const timestampHash = curr.payload_hashes?.[timestampIndex];
46
- const imageThumbnailPayload = [payloadDictionary[imageThumbnailHash]].find(isImageThumbnail);
47
- const timestampPayload = [payloadDictionary[timestampHash]].find(isTimestamp);
48
- if (imageThumbnailPayload && timestampPayload) acc.push([curr, imageThumbnailPayload, timestampPayload]);
49
- return acc;
50
- },
51
- []
52
- );
53
- const indexes = await Promise.all(
54
- tuples.map(async ([bw, imageThumbnailPayload, timestampPayload]) => {
55
- const { sourceUrl: url, http } = imageThumbnailPayload;
56
- const { timestamp } = timestampPayload;
57
- const { status } = http ?? {};
58
- const success = !!imageThumbnailPayload.url;
59
- const sources = await PayloadBuilder.dataHashes([bw, imageThumbnailPayload, timestampPayload]);
60
- const urlPayload = { schema: UrlSchema, url };
61
- const key = await PayloadBuilder.dataHash(urlPayload);
62
- const fields = { key, sources, success, timestamp };
63
- if (status) fields.status = status;
64
- const result = await new PayloadBuilder({
65
- schema: ImageThumbnailResultIndexSchema
66
- }).fields(fields).build();
67
- return [result];
68
- })
69
- );
51
+ const tuples = bws.reduce((acc, curr) => {
52
+ const imageThumbnailIndex = curr.payload_schemas?.findIndex((schema) => schema === ImageThumbnailSchema);
53
+ const timestampIndex = curr.payload_schemas?.findIndex((schema) => schema === TimestampSchema);
54
+ const imageThumbnailHash = curr.payload_hashes?.[imageThumbnailIndex];
55
+ const timestampHash = curr.payload_hashes?.[timestampIndex];
56
+ const imageThumbnailPayload = [
57
+ payloadDictionary[imageThumbnailHash]
58
+ ].find(isImageThumbnail);
59
+ const timestampPayload = [
60
+ payloadDictionary[timestampHash]
61
+ ].find(isTimestamp);
62
+ if (imageThumbnailPayload && timestampPayload) acc.push([
63
+ curr,
64
+ imageThumbnailPayload,
65
+ timestampPayload
66
+ ]);
67
+ return acc;
68
+ }, []);
69
+ const indexes = await Promise.all(tuples.map(async ([bw, imageThumbnailPayload, timestampPayload]) => {
70
+ const { sourceUrl: url, http } = imageThumbnailPayload;
71
+ const { timestamp } = timestampPayload;
72
+ const { status } = http ?? {};
73
+ const success = !!imageThumbnailPayload.url;
74
+ const sources = await PayloadBuilder.dataHashes([
75
+ bw,
76
+ imageThumbnailPayload,
77
+ timestampPayload
78
+ ]);
79
+ const urlPayload = {
80
+ schema: UrlSchema,
81
+ url
82
+ };
83
+ const key = await PayloadBuilder.dataHash(urlPayload);
84
+ const fields = {
85
+ key,
86
+ sources,
87
+ success,
88
+ timestamp
89
+ };
90
+ if (status) fields.status = status;
91
+ const result = await new PayloadBuilder({
92
+ schema: ImageThumbnailResultIndexSchema
93
+ }).fields(fields).build();
94
+ return [
95
+ result
96
+ ];
97
+ }));
70
98
  return indexes.flat();
71
99
  }
72
100
  return [];
@@ -77,15 +105,17 @@ var ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner = class extends Abs
77
105
  import { exists } from "@xylabs/exists";
78
106
  import { AbstractDiviner as AbstractDiviner2 } from "@xyo-network/diviner-abstract";
79
107
  import { DivinerConfigSchema as DivinerConfigSchema2 } from "@xyo-network/diviner-model";
80
- import {
81
- ImageThumbnailResultSchema,
82
- isImageThumbnailDivinerQuery,
83
- isImageThumbnailResultIndex
84
- } from "@xyo-network/image-thumbnail-payload-plugin";
108
+ import { ImageThumbnailResultSchema, isImageThumbnailDivinerQuery, isImageThumbnailResultIndex } from "@xyo-network/image-thumbnail-payload-plugin";
85
109
  import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
86
110
  import { UrlSchema as UrlSchema2 } from "@xyo-network/url-payload-plugin";
87
111
  var ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner = class extends AbstractDiviner2 {
88
- static configSchemas = [...super.configSchemas, DivinerConfigSchema2];
112
+ static {
113
+ __name(this, "ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner");
114
+ }
115
+ static configSchemas = [
116
+ ...super.configSchemas,
117
+ DivinerConfigSchema2
118
+ ];
89
119
  static defaultConfigSchema = DivinerConfigSchema2;
90
120
  static labels = {
91
121
  ...super.labels,
@@ -96,26 +126,32 @@ var ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner = class
96
126
  const imageThumbnailDivinerQueries = payloads.filter(isImageThumbnailDivinerQuery);
97
127
  const imageThumbnailResultIndexes = payloads.filter(isImageThumbnailResultIndex);
98
128
  if (imageThumbnailDivinerQueries.length > 0 && imageThumbnailResultIndexes.length > 0) {
99
- const keyToUrlDictionary = Object.fromEntries(
100
- await Promise.all(
101
- imageThumbnailDivinerQueries.map(async (imageThumbnailDivinerQuery) => {
102
- const { url } = imageThumbnailDivinerQuery;
103
- const urlPayload = await new PayloadBuilder2({ schema: UrlSchema2 }).fields({ url }).build();
104
- const key = await PayloadBuilder2.dataHash(urlPayload);
105
- return [key, url];
106
- })
107
- )
108
- );
109
- return (await Promise.all(
110
- imageThumbnailResultIndexes.map(async (imageThumbnailResultIndex) => {
111
- const { key, schema, ...commonFields } = imageThumbnailResultIndex;
112
- const url = keyToUrlDictionary?.[key];
113
- if (url) {
114
- const fields = { ...commonFields, url };
115
- return await new PayloadBuilder2({ schema: ImageThumbnailResultSchema }).fields(fields).build();
116
- }
117
- })
118
- )).filter(exists);
129
+ const keyToUrlDictionary = Object.fromEntries(await Promise.all(imageThumbnailDivinerQueries.map(async (imageThumbnailDivinerQuery) => {
130
+ const { url } = imageThumbnailDivinerQuery;
131
+ const urlPayload = await new PayloadBuilder2({
132
+ schema: UrlSchema2
133
+ }).fields({
134
+ url
135
+ }).build();
136
+ const key = await PayloadBuilder2.dataHash(urlPayload);
137
+ return [
138
+ key,
139
+ url
140
+ ];
141
+ })));
142
+ return (await Promise.all(imageThumbnailResultIndexes.map(async (imageThumbnailResultIndex) => {
143
+ const { key, schema, ...commonFields } = imageThumbnailResultIndex;
144
+ const url = keyToUrlDictionary?.[key];
145
+ if (url) {
146
+ const fields = {
147
+ ...commonFields,
148
+ url
149
+ };
150
+ return await new PayloadBuilder2({
151
+ schema: ImageThumbnailResultSchema
152
+ }).fields(fields).build();
153
+ }
154
+ }))).filter(exists);
119
155
  }
120
156
  return [];
121
157
  }
@@ -129,7 +165,13 @@ import { isImageThumbnailDivinerQuery as isImageThumbnailDivinerQuery2 } from "@
129
165
  import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/payload-builder";
130
166
  import { UrlSchema as UrlSchema3 } from "@xyo-network/url-payload-plugin";
131
167
  var ImageThumbnailQueryToImageThumbnailIndexQueryDiviner = class extends AbstractDiviner3 {
132
- static configSchemas = [...super.configSchemas, DivinerConfigSchema3];
168
+ static {
169
+ __name(this, "ImageThumbnailQueryToImageThumbnailIndexQueryDiviner");
170
+ }
171
+ static configSchemas = [
172
+ ...super.configSchemas,
173
+ DivinerConfigSchema3
174
+ ];
133
175
  static defaultConfigSchema = DivinerConfigSchema3;
134
176
  static labels = {
135
177
  ...super.labels,
@@ -139,25 +181,28 @@ var ImageThumbnailQueryToImageThumbnailIndexQueryDiviner = class extends Abstrac
139
181
  async divineHandler(payloads = []) {
140
182
  const queries = payloads.filter(isImageThumbnailDivinerQuery2);
141
183
  if (queries.length > 0) {
142
- const results = await Promise.all(
143
- queries.map(async (query) => {
144
- const { limit: payloadLimit, offset: payloadOffset, order: payloadOrder, status: payloadStatus, success: payloadSuccess, url } = query;
145
- const limit = payloadLimit ?? 1;
146
- const order2 = payloadOrder ?? "desc";
147
- const offset = payloadOffset ?? 0;
148
- const urlPayload = { schema: UrlSchema3, url };
149
- const key = await PayloadBuilder3.dataHash(urlPayload);
150
- const fields = {
151
- key,
152
- limit,
153
- offset,
154
- order: order2
155
- };
156
- if (payloadSuccess !== void 0) fields.success = payloadSuccess;
157
- if (payloadStatus !== void 0) fields.status = payloadStatus;
158
- return await new PayloadBuilder3({ schema: PayloadDivinerQuerySchema }).fields(fields).build();
159
- })
160
- );
184
+ const results = await Promise.all(queries.map(async (query) => {
185
+ const { limit: payloadLimit, offset: payloadOffset, order: payloadOrder, status: payloadStatus, success: payloadSuccess, url } = query;
186
+ const limit = payloadLimit ?? 1;
187
+ const order2 = payloadOrder ?? "desc";
188
+ const offset = payloadOffset ?? 0;
189
+ const urlPayload = {
190
+ schema: UrlSchema3,
191
+ url
192
+ };
193
+ const key = await PayloadBuilder3.dataHash(urlPayload);
194
+ const fields = {
195
+ key,
196
+ limit,
197
+ offset,
198
+ order: order2
199
+ };
200
+ if (payloadSuccess !== void 0) fields.success = payloadSuccess;
201
+ if (payloadStatus !== void 0) fields.status = payloadStatus;
202
+ return await new PayloadBuilder3({
203
+ schema: PayloadDivinerQuerySchema
204
+ }).fields(fields).build();
205
+ }));
161
206
  return results;
162
207
  }
163
208
  return [];
@@ -188,12 +233,24 @@ import { ImageThumbnailSchema as ImageThumbnailSchema2, isImageThumbnail as isIm
188
233
  import { isModuleState, ModuleStateSchema } from "@xyo-network/module-model";
189
234
  import { PayloadBuilder as PayloadBuilder4 } from "@xyo-network/payload-builder";
190
235
  import { isTimestamp as isTimestamp2, TimestampSchema as TimestampSchema2 } from "@xyo-network/witness-timestamp";
191
- var payload_schemas = [ImageThumbnailSchema2, TimestampSchema2];
192
- var indexCandidateIdentityFunctions = [isImageThumbnail2, isTimestamp2];
236
+ var payload_schemas = [
237
+ ImageThumbnailSchema2,
238
+ TimestampSchema2
239
+ ];
240
+ var indexCandidateIdentityFunctions = [
241
+ isImageThumbnail2,
242
+ isTimestamp2
243
+ ];
193
244
  var order = "asc";
194
245
  var moduleName = "ImageThumbnailStateToIndexCandidateDiviner";
195
246
  var ImageThumbnailStateToIndexCandidateDiviner = class _ImageThumbnailStateToIndexCandidateDiviner extends AbstractDiviner4 {
196
- static configSchemas = [...super.configSchemas, ImageThumbnailStateToIndexCandidateDivinerConfigSchema];
247
+ static {
248
+ __name(this, "ImageThumbnailStateToIndexCandidateDiviner");
249
+ }
250
+ static configSchemas = [
251
+ ...super.configSchemas,
252
+ ImageThumbnailStateToIndexCandidateDivinerConfigSchema
253
+ ];
197
254
  static defaultConfigSchema = ImageThumbnailStateToIndexCandidateDivinerConfigSchema;
198
255
  static labels = {
199
256
  ...super.labels,
@@ -210,41 +267,66 @@ var ImageThumbnailStateToIndexCandidateDiviner = class _ImageThumbnailStateToInd
210
267
  const filteredResults = indexCandidateIdentityFunctions.map((is) => results.find(is));
211
268
  if (filteredResults.includes(void 0)) return void 0;
212
269
  const indexCandidates = filteredResults.filter(exists2);
213
- return [bw, ...indexCandidates];
270
+ return [
271
+ bw,
272
+ ...indexCandidates
273
+ ];
214
274
  }
215
275
  async divineHandler(payloads = []) {
216
276
  const lastState = payloads.find(isModuleState);
217
- if (!lastState) return [{ schema: ModuleStateSchema, state: { offset: 0 } }];
277
+ if (!lastState) return [
278
+ {
279
+ schema: ModuleStateSchema,
280
+ state: {
281
+ offset: 0
282
+ }
283
+ }
284
+ ];
218
285
  const { offset } = lastState.state;
219
286
  const boundWitnessDiviner = await this.getBoundWitnessDivinerForStore();
220
- const query = await new PayloadBuilder4({ schema: BoundWitnessDivinerQuerySchema }).fields({ limit: this.payloadDivinerLimit, offset, order, payload_schemas }).build();
221
- const batch = await boundWitnessDiviner.divine([query]);
222
- if (batch.length === 0) return [lastState];
287
+ const query = await new PayloadBuilder4({
288
+ schema: BoundWitnessDivinerQuerySchema
289
+ }).fields({
290
+ limit: this.payloadDivinerLimit,
291
+ offset,
292
+ order,
293
+ payload_schemas
294
+ }).build();
295
+ const batch = await boundWitnessDiviner.divine([
296
+ query
297
+ ]);
298
+ if (batch.length === 0) return [
299
+ lastState
300
+ ];
223
301
  const sourceArchivist = await this.getArchivistForStore();
224
- const indexCandidates = (await Promise.all(
225
- batch.filter(isBoundWitnessWithMeta).map((bw) => _ImageThumbnailStateToIndexCandidateDiviner.getPayloadsInBoundWitness(bw, sourceArchivist))
226
- )).filter(exists2).flat();
227
- const nextState = { schema: ModuleStateSchema, state: { ...lastState.state, offset: offset + batch.length } };
228
- return [nextState, ...indexCandidates];
302
+ const indexCandidates = (await Promise.all(batch.filter(isBoundWitnessWithMeta).map((bw) => _ImageThumbnailStateToIndexCandidateDiviner.getPayloadsInBoundWitness(bw, sourceArchivist)))).filter(exists2).flat();
303
+ const nextState = {
304
+ schema: ModuleStateSchema,
305
+ state: {
306
+ ...lastState.state,
307
+ offset: offset + batch.length
308
+ }
309
+ };
310
+ return [
311
+ nextState,
312
+ ...indexCandidates
313
+ ];
229
314
  }
230
315
  /**
231
- * Retrieves the archivist for the payloadStore
232
- * @returns The archivist for the payloadStore
233
- */
316
+ * Retrieves the archivist for the payloadStore
317
+ * @returns The archivist for the payloadStore
318
+ */
234
319
  async getArchivistForStore() {
235
320
  const name = assertEx(this.config?.payloadStore?.archivist, () => `${moduleName}: Config for payloadStore.archivist not specified`);
236
321
  const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve payloadStore.archivist`);
237
322
  return ArchivistWrapper.wrap(mod, this.account);
238
323
  }
239
324
  /**
240
- * Retrieves the BoundWitness Diviner for the payloadStore
241
- * @returns The BoundWitness Diviner for the payloadStore
242
- */
325
+ * Retrieves the BoundWitness Diviner for the payloadStore
326
+ * @returns The BoundWitness Diviner for the payloadStore
327
+ */
243
328
  async getBoundWitnessDivinerForStore() {
244
- const name = assertEx(
245
- this.config?.payloadStore?.boundWitnessDiviner,
246
- () => `${moduleName}: Config for payloadStore.boundWitnessDiviner not specified`
247
- );
329
+ const name = assertEx(this.config?.payloadStore?.boundWitnessDiviner, () => `${moduleName}: Config for payloadStore.boundWitnessDiviner not specified`);
248
330
  const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve payloadStore.boundWitnessDiviner`);
249
331
  return DivinerWrapper.wrap(mod, this.account);
250
332
  }
@@ -260,4 +342,4 @@ export {
260
342
  ImageThumbnailStateToIndexCandidateDivinerSchema,
261
343
  isImageThumbnailResultQuery
262
344
  };
263
- //# sourceMappingURL=index.js.map
345
+ //# sourceMappingURL=index.mjs.map