@xyo-network/diviner-image-thumbnail 2.78.4 → 2.79.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/Diviner/Diviner.d.cts +4 -44
- package/dist/browser/Diviner/Diviner.d.cts.map +1 -1
- package/dist/browser/Diviner/Diviner.d.mts +4 -44
- package/dist/browser/Diviner/Diviner.d.mts.map +1 -1
- package/dist/browser/Diviner/Diviner.d.ts +4 -44
- package/dist/browser/Diviner/Diviner.d.ts.map +1 -1
- package/dist/browser/Diviner/ImageThumbnailDivinerLabels.d.cts +19 -0
- package/dist/browser/Diviner/ImageThumbnailDivinerLabels.d.cts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailDivinerLabels.d.mts +19 -0
- package/dist/browser/Diviner/ImageThumbnailDivinerLabels.d.mts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailDivinerLabels.d.ts +19 -0
- package/dist/browser/Diviner/ImageThumbnailDivinerLabels.d.ts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailDivinerState.d.cts +5 -0
- package/dist/browser/Diviner/ImageThumbnailDivinerState.d.cts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailDivinerState.d.mts +5 -0
- package/dist/browser/Diviner/ImageThumbnailDivinerState.d.mts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailDivinerState.d.ts +5 -0
- package/dist/browser/Diviner/ImageThumbnailDivinerState.d.ts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.cts +13 -0
- package/dist/browser/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.cts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.mts +13 -0
- package/dist/browser/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.mts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.ts +13 -0
- package/dist/browser/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.ts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.cts +13 -0
- package/dist/browser/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.cts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.mts +13 -0
- package/dist/browser/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.mts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.ts +13 -0
- package/dist/browser/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.ts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.cts +13 -0
- package/dist/browser/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.cts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.mts +13 -0
- package/dist/browser/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.mts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.ts +13 -0
- package/dist/browser/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.ts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailResultQuery.d.cts +17 -0
- package/dist/browser/Diviner/ImageThumbnailResultQuery.d.cts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailResultQuery.d.mts +17 -0
- package/dist/browser/Diviner/ImageThumbnailResultQuery.d.mts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailResultQuery.d.ts +17 -0
- package/dist/browser/Diviner/ImageThumbnailResultQuery.d.ts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.cts +14 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.cts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.mts +14 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.mts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.ts +14 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.ts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.cts +50 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.cts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.mts +50 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.mts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.ts +50 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.ts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.cts +5 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.cts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.mts +5 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.mts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.ts +5 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.ts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Schema.d.cts +4 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Schema.d.cts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Schema.d.mts +4 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Schema.d.mts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Schema.d.ts +4 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Schema.d.ts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.cts +5 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.cts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.mts +5 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.mts.map +1 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.ts +5 -0
- package/dist/browser/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.ts.map +1 -0
- package/dist/browser/Diviner/index.d.cts +7 -0
- package/dist/browser/Diviner/index.d.cts.map +1 -1
- package/dist/browser/Diviner/index.d.mts +7 -0
- package/dist/browser/Diviner/index.d.mts.map +1 -1
- package/dist/browser/Diviner/index.d.ts +7 -0
- package/dist/browser/Diviner/index.d.ts.map +1 -1
- package/dist/browser/index.cjs +224 -196
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +229 -200
- package/dist/browser/index.js.map +1 -1
- package/dist/node/Diviner/Diviner.d.cts +4 -44
- package/dist/node/Diviner/Diviner.d.cts.map +1 -1
- package/dist/node/Diviner/Diviner.d.mts +4 -44
- package/dist/node/Diviner/Diviner.d.mts.map +1 -1
- package/dist/node/Diviner/Diviner.d.ts +4 -44
- package/dist/node/Diviner/Diviner.d.ts.map +1 -1
- package/dist/node/Diviner/ImageThumbnailDivinerLabels.d.cts +19 -0
- package/dist/node/Diviner/ImageThumbnailDivinerLabels.d.cts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailDivinerLabels.d.mts +19 -0
- package/dist/node/Diviner/ImageThumbnailDivinerLabels.d.mts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailDivinerLabels.d.ts +19 -0
- package/dist/node/Diviner/ImageThumbnailDivinerLabels.d.ts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailDivinerState.d.cts +5 -0
- package/dist/node/Diviner/ImageThumbnailDivinerState.d.cts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailDivinerState.d.mts +5 -0
- package/dist/node/Diviner/ImageThumbnailDivinerState.d.mts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailDivinerState.d.ts +5 -0
- package/dist/node/Diviner/ImageThumbnailDivinerState.d.ts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.cts +13 -0
- package/dist/node/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.cts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.mts +13 -0
- package/dist/node/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.mts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.ts +13 -0
- package/dist/node/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.d.ts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.cts +13 -0
- package/dist/node/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.cts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.mts +13 -0
- package/dist/node/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.mts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.ts +13 -0
- package/dist/node/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.d.ts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.cts +13 -0
- package/dist/node/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.cts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.mts +13 -0
- package/dist/node/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.mts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.ts +13 -0
- package/dist/node/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.d.ts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailResultQuery.d.cts +17 -0
- package/dist/node/Diviner/ImageThumbnailResultQuery.d.cts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailResultQuery.d.mts +17 -0
- package/dist/node/Diviner/ImageThumbnailResultQuery.d.mts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailResultQuery.d.ts +17 -0
- package/dist/node/Diviner/ImageThumbnailResultQuery.d.ts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.cts +14 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.cts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.mts +14 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.mts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.ts +14 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.d.ts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.cts +50 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.cts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.mts +50 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.mts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.ts +50 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.d.ts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.cts +5 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.cts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.mts +5 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.mts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.ts +5 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.d.ts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Schema.d.cts +4 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Schema.d.cts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Schema.d.mts +4 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Schema.d.mts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Schema.d.ts +4 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Schema.d.ts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.cts +5 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.cts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.mts +5 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.mts.map +1 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.ts +5 -0
- package/dist/node/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.d.ts.map +1 -0
- package/dist/node/Diviner/index.d.cts +7 -0
- package/dist/node/Diviner/index.d.cts.map +1 -1
- package/dist/node/Diviner/index.d.mts +7 -0
- package/dist/node/Diviner/index.d.mts.map +1 -1
- package/dist/node/Diviner/index.d.ts +7 -0
- package/dist/node/Diviner/index.d.ts.map +1 -1
- package/dist/node/index.js +242 -204
- package/dist/node/index.js.map +1 -1
- package/dist/node/index.mjs +238 -207
- package/dist/node/index.mjs.map +1 -1
- package/package.json +24 -21
- package/src/Diviner/Diviner.ts +4 -300
- package/src/Diviner/ImageThumbnailDivinerLabels.ts +26 -0
- package/src/Diviner/ImageThumbnailDivinerState.ts +5 -0
- package/src/Diviner/ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner.ts +70 -0
- package/src/Diviner/ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner.ts +61 -0
- package/src/Diviner/ImageThumbnailQueryToImageThumbnailIndexQueryDiviner.ts +43 -0
- package/src/Diviner/ImageThumbnailResultQuery.ts +19 -0
- package/src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Config.ts +16 -0
- package/src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Diviner.ts +134 -0
- package/src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Params.ts +6 -0
- package/src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/Schema.ts +4 -0
- package/src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/index.ts +4 -0
- package/src/Diviner/ImageThumbnailStateToIndexCandidateDiviner/spec/ImageThumbnailStateToIndexCandidateDiviner.json +56 -0
- package/src/Diviner/index.ts +7 -0
- package/src/Diviner/spec/ImageThumbnailDivinerManifest.json +159 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert'
|
|
2
|
+
import { exists } from '@xylabs/exists'
|
|
3
|
+
import { AbstractDiviner } from '@xyo-network/abstract-diviner'
|
|
4
|
+
import { ArchivistInstance } from '@xyo-network/archivist-model'
|
|
5
|
+
import { ArchivistWrapper } from '@xyo-network/archivist-wrapper'
|
|
6
|
+
import { BoundWitness, isBoundWitness } from '@xyo-network/boundwitness-model'
|
|
7
|
+
import { BoundWitnessDivinerQueryPayload, BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'
|
|
8
|
+
import { DivinerConfigSchema } from '@xyo-network/diviner-model'
|
|
9
|
+
import { DivinerWrapper } from '@xyo-network/diviner-wrapper'
|
|
10
|
+
import { ImageThumbnail, ImageThumbnailSchema, isImageThumbnail } from '@xyo-network/image-thumbnail-payload-plugin'
|
|
11
|
+
import { isModuleState, ModuleState, ModuleStateSchema } from '@xyo-network/module-model'
|
|
12
|
+
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
13
|
+
import { Payload } from '@xyo-network/payload-model'
|
|
14
|
+
import { isTimestamp, TimeStamp, TimestampSchema } from '@xyo-network/witness-timestamp'
|
|
15
|
+
|
|
16
|
+
import { ImageThumbnailDivinerLabels, ImageThumbnailDivinerStageLabels } from '../ImageThumbnailDivinerLabels'
|
|
17
|
+
import { ImageThumbnailDivinerState } from '../ImageThumbnailDivinerState'
|
|
18
|
+
import { ImageThumbnailStateToIndexCandidateDivinerConfigSchema } from './Config'
|
|
19
|
+
import { ImageThumbnailStateToIndexCandidateDivinerParams } from './Params'
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* All Payload types involved in index candidates for indexing
|
|
23
|
+
*/
|
|
24
|
+
export type IndexCandidate = BoundWitness | ImageThumbnail | TimeStamp
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The response from the ImageThumbnailStateToIndexCandidateDiviner
|
|
28
|
+
*/
|
|
29
|
+
export type ImageThumbnailStateToIndexCandidateDivinerResponse = [
|
|
30
|
+
/**
|
|
31
|
+
* The next state of the diviner
|
|
32
|
+
*/
|
|
33
|
+
nextState: ModuleState<ImageThumbnailDivinerState>,
|
|
34
|
+
/**
|
|
35
|
+
* The index candidates
|
|
36
|
+
*/
|
|
37
|
+
...IndexCandidate[],
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The required payload_schemas within BoundWitnesses to identify index candidates
|
|
42
|
+
*/
|
|
43
|
+
const payload_schemas = [ImageThumbnailSchema, TimestampSchema]
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Index candidate identity functions
|
|
47
|
+
*/
|
|
48
|
+
const indexCandidateIdentityFunctions = [isImageThumbnail, isTimestamp] as const
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The default order to search Bound Witnesses to identify index candidates
|
|
52
|
+
*/
|
|
53
|
+
const order = 'asc'
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The name of the module (for logging purposes)
|
|
57
|
+
*/
|
|
58
|
+
const moduleName = 'ImageThumbnailStateToIndexCandidateDiviner'
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Transforms candidates for image thumbnail indexing into their indexed representation
|
|
62
|
+
*/
|
|
63
|
+
export class ImageThumbnailStateToIndexCandidateDiviner<
|
|
64
|
+
TParams extends ImageThumbnailStateToIndexCandidateDivinerParams = ImageThumbnailStateToIndexCandidateDivinerParams,
|
|
65
|
+
> extends AbstractDiviner<TParams> {
|
|
66
|
+
static override configSchemas = [DivinerConfigSchema, ImageThumbnailStateToIndexCandidateDivinerConfigSchema]
|
|
67
|
+
static labels: ImageThumbnailDivinerStageLabels = {
|
|
68
|
+
...ImageThumbnailDivinerLabels,
|
|
69
|
+
'network.xyo.diviner.stage': 'stateToIndexCandidateDiviner',
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
get payloadDivinerLimit() {
|
|
73
|
+
return this.config.payloadDivinerLimit ?? 1_000
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
protected static async getPayloadsInBoundWitness(bw: BoundWitness, archivist: ArchivistInstance): Promise<IndexCandidate[] | undefined> {
|
|
77
|
+
const indexes = payload_schemas.map((schema) => bw.payload_schemas?.findIndex((s) => s === schema))
|
|
78
|
+
const hashes = indexes.map((index) => bw.payload_hashes?.[index])
|
|
79
|
+
const results = await archivist.get(hashes)
|
|
80
|
+
const filteredResults = indexCandidateIdentityFunctions.map((is) => results.find(is))
|
|
81
|
+
if (filteredResults.some((f) => f === undefined)) return undefined
|
|
82
|
+
const indexCandidates: IndexCandidate[] = filteredResults.filter(exists) as IndexCandidate[]
|
|
83
|
+
return [bw, ...indexCandidates]
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
protected override async divineHandler(payloads: Payload[] = []): Promise<ImageThumbnailStateToIndexCandidateDivinerResponse> {
|
|
87
|
+
// Retrieve the last state from what was passed in
|
|
88
|
+
const lastState = payloads.find(isModuleState<ImageThumbnailDivinerState>)
|
|
89
|
+
// If there is no last state, start from the beginning
|
|
90
|
+
if (!lastState) return [{ schema: ModuleStateSchema, state: { offset: 0 } }]
|
|
91
|
+
// Otherwise, get the last offset
|
|
92
|
+
const { offset } = lastState.state
|
|
93
|
+
// Get next batch of results starting from the offset
|
|
94
|
+
const boundWitnessDiviner = await this.getBoundWitnessDivinerForStore()
|
|
95
|
+
const query = new PayloadBuilder<BoundWitnessDivinerQueryPayload>({ schema: BoundWitnessDivinerQuerySchema })
|
|
96
|
+
.fields({ limit: this.payloadDivinerLimit, offset, order, payload_schemas })
|
|
97
|
+
.build()
|
|
98
|
+
const batch = await boundWitnessDiviner.divine([query])
|
|
99
|
+
if (batch.length === 0) return [lastState]
|
|
100
|
+
// Get source data
|
|
101
|
+
const sourceArchivist = await this.getArchivistForStore()
|
|
102
|
+
const indexCandidates: IndexCandidate[] = (
|
|
103
|
+
await Promise.all(
|
|
104
|
+
batch.filter(isBoundWitness).map((bw) => ImageThumbnailStateToIndexCandidateDiviner.getPayloadsInBoundWitness(bw, sourceArchivist)),
|
|
105
|
+
)
|
|
106
|
+
)
|
|
107
|
+
.filter(exists)
|
|
108
|
+
.flat()
|
|
109
|
+
const nextState = { schema: ModuleStateSchema, state: { ...lastState.state, offset: offset + batch.length } }
|
|
110
|
+
return [nextState, ...indexCandidates]
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Retrieves the archivist for the payloadStore
|
|
114
|
+
* @returns The archivist for the payloadStore
|
|
115
|
+
*/
|
|
116
|
+
protected async getArchivistForStore() {
|
|
117
|
+
const name = assertEx(this.config?.payloadStore?.archivist, () => `${moduleName}: Config for payloadStore.archivist not specified`)
|
|
118
|
+
const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve payloadStore.archivist`)
|
|
119
|
+
return ArchivistWrapper.wrap(mod, this.account)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Retrieves the BoundWitness Diviner for the payloadStore
|
|
124
|
+
* @returns The BoundWitness Diviner for the payloadStore
|
|
125
|
+
*/
|
|
126
|
+
protected async getBoundWitnessDivinerForStore() {
|
|
127
|
+
const name = assertEx(
|
|
128
|
+
this.config?.payloadStore?.boundWitnessDiviner,
|
|
129
|
+
() => `${moduleName}: Config for payloadStore.boundWitnessDiviner not specified`,
|
|
130
|
+
)
|
|
131
|
+
const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve payloadStore.boundWitnessDiviner`)
|
|
132
|
+
return DivinerWrapper.wrap(mod, this.account)
|
|
133
|
+
}
|
|
134
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DivinerParams } from '@xyo-network/diviner-model'
|
|
2
|
+
import { AnyConfigSchema } from '@xyo-network/module-model'
|
|
3
|
+
|
|
4
|
+
import { ImageThumbnailStateToIndexCandidateDivinerConfig } from './Config'
|
|
5
|
+
|
|
6
|
+
export type ImageThumbnailStateToIndexCandidateDivinerParams = DivinerParams<AnyConfigSchema<ImageThumbnailStateToIndexCandidateDivinerConfig>>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ImageThumbnailDivinerSchema } from '@xyo-network/image-thumbnail-payload-plugin'
|
|
2
|
+
|
|
3
|
+
export type ImageThumbnailStateToIndexCandidateDivinerSchema = `${ImageThumbnailDivinerSchema}.stage.stateToIndexCandidateDiviner`
|
|
4
|
+
export const ImageThumbnailStateToIndexCandidateDivinerSchema: ImageThumbnailStateToIndexCandidateDivinerSchema = `${ImageThumbnailDivinerSchema}.stage.stateToIndexCandidateDiviner`
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
|
|
3
|
+
"nodes": [
|
|
4
|
+
{
|
|
5
|
+
"config": {
|
|
6
|
+
"name": "DivinerTest",
|
|
7
|
+
"schema": "network.xyo.node.config"
|
|
8
|
+
},
|
|
9
|
+
"modules": {
|
|
10
|
+
"public": [
|
|
11
|
+
{
|
|
12
|
+
"config": {
|
|
13
|
+
"language": "javascript",
|
|
14
|
+
"name": "ImageThumbnailArchivist",
|
|
15
|
+
"schema": "network.xyo.archivist.config"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"config": {
|
|
20
|
+
"archivist": "ImageThumbnailArchivist",
|
|
21
|
+
"language": "javascript",
|
|
22
|
+
"name": "ImageThumbnailBoundWitnessDiviner",
|
|
23
|
+
"schema": "network.xyo.diviner.boundwitness.config"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"config": {
|
|
28
|
+
"archivist": "ImageThumbnailArchivist",
|
|
29
|
+
"language": "javascript",
|
|
30
|
+
"name": "ImageThumbnailPayloadDiviner",
|
|
31
|
+
"schema": "network.xyo.diviner.payload.config"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
{
|
|
36
|
+
"config": {
|
|
37
|
+
"labels": {
|
|
38
|
+
"network.xyo.image.thumbnail": "diviner",
|
|
39
|
+
"network.xyo.diviner.stage": "stateToIndexCandidateDiviner"
|
|
40
|
+
},
|
|
41
|
+
"language": "javascript",
|
|
42
|
+
"name": "ImageThumbnailStateToIndexCandidateDiviner",
|
|
43
|
+
"schema": "network.xyo.diviner.config",
|
|
44
|
+
"payloadStore": {
|
|
45
|
+
"archivist": "ImageThumbnailArchivist",
|
|
46
|
+
"boundWitnessDiviner": "ImageThumbnailBoundWitnessDiviner",
|
|
47
|
+
"payloadDiviner": "ImageThumbnailPayloadDiviner"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"schema": "network.xyo.manifest"
|
|
56
|
+
}
|
package/src/Diviner/index.ts
CHANGED
|
@@ -1 +1,8 @@
|
|
|
1
1
|
export * from './Diviner'
|
|
2
|
+
export * from './ImageThumbnailDivinerLabels'
|
|
3
|
+
export * from './ImageThumbnailDivinerState'
|
|
4
|
+
export * from './ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner'
|
|
5
|
+
export * from './ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner'
|
|
6
|
+
export * from './ImageThumbnailQueryToImageThumbnailIndexQueryDiviner'
|
|
7
|
+
export * from './ImageThumbnailResultQuery'
|
|
8
|
+
export * from './ImageThumbnailStateToIndexCandidateDiviner'
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
|
|
3
|
+
"nodes": [
|
|
4
|
+
{
|
|
5
|
+
"config": {
|
|
6
|
+
"name": "DivinerTest",
|
|
7
|
+
"schema": "network.xyo.node.config"
|
|
8
|
+
},
|
|
9
|
+
"modules": {
|
|
10
|
+
"public": [
|
|
11
|
+
{
|
|
12
|
+
"config": {
|
|
13
|
+
"language": "javascript",
|
|
14
|
+
"name": "AddressStateArchivist",
|
|
15
|
+
"schema": "network.xyo.archivist.config",
|
|
16
|
+
"storeQueries": false
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"config": {
|
|
21
|
+
"archivist": "AddressStateArchivist",
|
|
22
|
+
"language": "javascript",
|
|
23
|
+
"name": "AddressStateBoundWitnessDiviner",
|
|
24
|
+
"schema": "network.xyo.diviner.boundwitness.config"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"config": {
|
|
29
|
+
"archivist": "AddressStateArchivist",
|
|
30
|
+
"language": "javascript",
|
|
31
|
+
"name": "AddressStatePayloadDiviner",
|
|
32
|
+
"schema": "network.xyo.diviner.payload.config"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"config": {
|
|
37
|
+
"language": "javascript",
|
|
38
|
+
"name": "ImageThumbnailArchivist",
|
|
39
|
+
"schema": "network.xyo.archivist.config"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"config": {
|
|
44
|
+
"archivist": "ImageThumbnailArchivist",
|
|
45
|
+
"language": "javascript",
|
|
46
|
+
"name": "ImageThumbnailBoundWitnessDiviner",
|
|
47
|
+
"schema": "network.xyo.diviner.boundwitness.config"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"config": {
|
|
52
|
+
"archivist": "ImageThumbnailArchivist",
|
|
53
|
+
"language": "javascript",
|
|
54
|
+
"name": "ImageThumbnailPayloadDiviner",
|
|
55
|
+
"schema": "network.xyo.diviner.payload.config"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"config": {
|
|
60
|
+
"language": "javascript",
|
|
61
|
+
"name": "ImageThumbnailDivinerIndexArchivist",
|
|
62
|
+
"schema": "network.xyo.archivist.config"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"config": {
|
|
67
|
+
"archivist": "ImageThumbnailDivinerIndexArchivist",
|
|
68
|
+
"language": "javascript",
|
|
69
|
+
"name": "ImageThumbnailDivinerIndexBoundWitnessDiviner",
|
|
70
|
+
"schema": "network.xyo.diviner.boundwitness.config"
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"config": {
|
|
75
|
+
"archivist": "ImageThumbnailDivinerIndexArchivist",
|
|
76
|
+
"language": "javascript",
|
|
77
|
+
"name": "ImageThumbnailDivinerIndexPayloadDiviner",
|
|
78
|
+
"schema": "network.xyo.diviner.payload.config"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"config": {
|
|
83
|
+
"labels": {
|
|
84
|
+
"network.xyo.image.thumbnail": "diviner",
|
|
85
|
+
"network.xyo.diviner.stage": "stateToIndexCandidateDiviner"
|
|
86
|
+
},
|
|
87
|
+
"language": "javascript",
|
|
88
|
+
"name": "ImageThumbnailStateToIndexCandidateDiviner",
|
|
89
|
+
"schema": "network.xyo.diviner.config",
|
|
90
|
+
"payloadStore": {
|
|
91
|
+
"archivist": "ImageThumbnailArchivist",
|
|
92
|
+
"boundWitnessDiviner": "ImageThumbnailBoundWitnessDiviner",
|
|
93
|
+
"payloadDiviner": "ImageThumbnailPayloadDiviner"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"config": {
|
|
99
|
+
"labels": {
|
|
100
|
+
"network.xyo.image.thumbnail": "diviner",
|
|
101
|
+
"network.xyo.diviner.stage": "indexCandidateToIndexDiviner"
|
|
102
|
+
},
|
|
103
|
+
"language": "javascript",
|
|
104
|
+
"name": "ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner",
|
|
105
|
+
"schema": "network.xyo.diviner.config"
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"config": {
|
|
110
|
+
"labels": {
|
|
111
|
+
"network.xyo.image.thumbnail": "diviner",
|
|
112
|
+
"network.xyo.diviner.stage": "divinerQueryToIndexQueryDiviner"
|
|
113
|
+
},
|
|
114
|
+
"language": "javascript",
|
|
115
|
+
"name": "ImageThumbnailQueryToImageThumbnailIndexQueryDiviner",
|
|
116
|
+
"schema": "network.xyo.diviner.config"
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"config": {
|
|
121
|
+
"labels": {
|
|
122
|
+
"network.xyo.image.thumbnail": "diviner",
|
|
123
|
+
"network.xyo.diviner.stage": "indexQueryResponseToDivinerQueryResponseDiviner"
|
|
124
|
+
},
|
|
125
|
+
"language": "javascript",
|
|
126
|
+
"name": "ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner",
|
|
127
|
+
"schema": "network.xyo.diviner.config"
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"config": {
|
|
132
|
+
"indexingDivinerStages": {
|
|
133
|
+
"divinerQueryToIndexQueryDiviner": "ImageThumbnailQueryToImageThumbnailIndexQueryDiviner",
|
|
134
|
+
"indexCandidateToIndexDiviner": "ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner",
|
|
135
|
+
"indexQueryResponseToDivinerQueryResponseDiviner": "ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner",
|
|
136
|
+
"stateToIndexCandidateDiviner": "ImageThumbnailStateToIndexCandidateDiviner"
|
|
137
|
+
},
|
|
138
|
+
"indexStore": {
|
|
139
|
+
"archivist": "ImageThumbnailDivinerIndexArchivist",
|
|
140
|
+
"boundWitnessDiviner": "ImageThumbnailDivinerIndexBoundWitnessDiviner",
|
|
141
|
+
"payloadDiviner": "ImageThumbnailDivinerIndexPayloadDiviner"
|
|
142
|
+
},
|
|
143
|
+
"language": "javascript",
|
|
144
|
+
"name": "ImageThumbnailDiviner",
|
|
145
|
+
"pollFrequency": 1000,
|
|
146
|
+
"schema": "network.xyo.diviner.indexing.config",
|
|
147
|
+
"stateStore": {
|
|
148
|
+
"archivist": "AddressStateArchivist",
|
|
149
|
+
"boundWitnessDiviner": "AddressStateBoundWitnessDiviner",
|
|
150
|
+
"payloadDiviner": "AddressStatePayloadDiviner"
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
]
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
],
|
|
158
|
+
"schema": "network.xyo.manifest"
|
|
159
|
+
}
|