@xyo-network/diviner-temporal-indexing-memory 2.80.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +165 -0
- package/README.md +13 -0
- package/dist/browser/Diviner.d.cts +24 -0
- package/dist/browser/Diviner.d.cts.map +1 -0
- package/dist/browser/Diviner.d.mts +24 -0
- package/dist/browser/Diviner.d.mts.map +1 -0
- package/dist/browser/Diviner.d.ts +24 -0
- package/dist/browser/Diviner.d.ts.map +1 -0
- package/dist/browser/DivinerQueryToIndexQueryDiviner.d.cts +12 -0
- package/dist/browser/DivinerQueryToIndexQueryDiviner.d.cts.map +1 -0
- package/dist/browser/DivinerQueryToIndexQueryDiviner.d.mts +12 -0
- package/dist/browser/DivinerQueryToIndexQueryDiviner.d.mts.map +1 -0
- package/dist/browser/DivinerQueryToIndexQueryDiviner.d.ts +12 -0
- package/dist/browser/DivinerQueryToIndexQueryDiviner.d.ts.map +1 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Config.d.cts +10 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Config.d.cts.map +1 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Config.d.mts +10 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Config.d.mts.map +1 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Config.d.ts +10 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Config.d.ts.map +1 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Diviner.d.cts +46 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Diviner.d.cts.map +1 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Diviner.d.mts +46 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Diviner.d.mts.map +1 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Diviner.d.ts +46 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Diviner.d.ts.map +1 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Params.d.cts +5 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Params.d.cts.map +1 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Params.d.mts +5 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Params.d.mts.map +1 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Params.d.ts +5 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Params.d.ts.map +1 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Schema.d.cts +4 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Schema.d.cts.map +1 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Schema.d.mts +4 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Schema.d.mts.map +1 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Schema.d.ts +4 -0
- package/dist/browser/IndexCandidateToIndexDiviner/Schema.d.ts.map +1 -0
- package/dist/browser/IndexCandidateToIndexDiviner/index.d.cts +5 -0
- package/dist/browser/IndexCandidateToIndexDiviner/index.d.cts.map +1 -0
- package/dist/browser/IndexCandidateToIndexDiviner/index.d.mts +5 -0
- package/dist/browser/IndexCandidateToIndexDiviner/index.d.mts.map +1 -0
- package/dist/browser/IndexCandidateToIndexDiviner/index.d.ts +5 -0
- package/dist/browser/IndexCandidateToIndexDiviner/index.d.ts.map +1 -0
- package/dist/browser/IndexQueryResponseToDivinerQueryResponseDiviner.d.cts +12 -0
- package/dist/browser/IndexQueryResponseToDivinerQueryResponseDiviner.d.cts.map +1 -0
- package/dist/browser/IndexQueryResponseToDivinerQueryResponseDiviner.d.mts +12 -0
- package/dist/browser/IndexQueryResponseToDivinerQueryResponseDiviner.d.mts.map +1 -0
- package/dist/browser/IndexQueryResponseToDivinerQueryResponseDiviner.d.ts +12 -0
- package/dist/browser/IndexQueryResponseToDivinerQueryResponseDiviner.d.ts.map +1 -0
- package/dist/browser/StateToIndexCandidateDiviner/Config.d.cts +19 -0
- package/dist/browser/StateToIndexCandidateDiviner/Config.d.cts.map +1 -0
- package/dist/browser/StateToIndexCandidateDiviner/Config.d.mts +19 -0
- package/dist/browser/StateToIndexCandidateDiviner/Config.d.mts.map +1 -0
- package/dist/browser/StateToIndexCandidateDiviner/Config.d.ts +19 -0
- package/dist/browser/StateToIndexCandidateDiviner/Config.d.ts.map +1 -0
- package/dist/browser/StateToIndexCandidateDiviner/Diviner.d.cts +52 -0
- package/dist/browser/StateToIndexCandidateDiviner/Diviner.d.cts.map +1 -0
- package/dist/browser/StateToIndexCandidateDiviner/Diviner.d.mts +52 -0
- package/dist/browser/StateToIndexCandidateDiviner/Diviner.d.mts.map +1 -0
- package/dist/browser/StateToIndexCandidateDiviner/Diviner.d.ts +52 -0
- package/dist/browser/StateToIndexCandidateDiviner/Diviner.d.ts.map +1 -0
- package/dist/browser/StateToIndexCandidateDiviner/Params.d.cts +5 -0
- package/dist/browser/StateToIndexCandidateDiviner/Params.d.cts.map +1 -0
- package/dist/browser/StateToIndexCandidateDiviner/Params.d.mts +5 -0
- package/dist/browser/StateToIndexCandidateDiviner/Params.d.mts.map +1 -0
- package/dist/browser/StateToIndexCandidateDiviner/Params.d.ts +5 -0
- package/dist/browser/StateToIndexCandidateDiviner/Params.d.ts.map +1 -0
- package/dist/browser/StateToIndexCandidateDiviner/Schema.d.cts +4 -0
- package/dist/browser/StateToIndexCandidateDiviner/Schema.d.cts.map +1 -0
- package/dist/browser/StateToIndexCandidateDiviner/Schema.d.mts +4 -0
- package/dist/browser/StateToIndexCandidateDiviner/Schema.d.mts.map +1 -0
- package/dist/browser/StateToIndexCandidateDiviner/Schema.d.ts +4 -0
- package/dist/browser/StateToIndexCandidateDiviner/Schema.d.ts.map +1 -0
- package/dist/browser/StateToIndexCandidateDiviner/index.d.cts +2 -0
- package/dist/browser/StateToIndexCandidateDiviner/index.d.cts.map +1 -0
- package/dist/browser/StateToIndexCandidateDiviner/index.d.mts +2 -0
- package/dist/browser/StateToIndexCandidateDiviner/index.d.mts.map +1 -0
- package/dist/browser/StateToIndexCandidateDiviner/index.d.ts +2 -0
- package/dist/browser/StateToIndexCandidateDiviner/index.d.ts.map +1 -0
- package/dist/browser/index.cjs +79 -0
- package/dist/browser/index.cjs.map +1 -0
- package/dist/browser/index.d.cts +2 -0
- package/dist/browser/index.d.cts.map +1 -0
- package/dist/browser/index.d.mts +2 -0
- package/dist/browser/index.d.mts.map +1 -0
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +56 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/lib/index.d.cts +2 -0
- package/dist/browser/lib/index.d.cts.map +1 -0
- package/dist/browser/lib/index.d.mts +2 -0
- package/dist/browser/lib/index.d.mts.map +1 -0
- package/dist/browser/lib/index.d.ts +2 -0
- package/dist/browser/lib/index.d.ts.map +1 -0
- package/dist/browser/lib/jsonpath/JsonPathTransformExpression.d.cts +15 -0
- package/dist/browser/lib/jsonpath/JsonPathTransformExpression.d.cts.map +1 -0
- package/dist/browser/lib/jsonpath/JsonPathTransformExpression.d.mts +15 -0
- package/dist/browser/lib/jsonpath/JsonPathTransformExpression.d.mts.map +1 -0
- package/dist/browser/lib/jsonpath/JsonPathTransformExpression.d.ts +15 -0
- package/dist/browser/lib/jsonpath/JsonPathTransformExpression.d.ts.map +1 -0
- package/dist/browser/lib/jsonpath/PayloadTransformer.d.cts +3 -0
- package/dist/browser/lib/jsonpath/PayloadTransformer.d.cts.map +1 -0
- package/dist/browser/lib/jsonpath/PayloadTransformer.d.mts +3 -0
- package/dist/browser/lib/jsonpath/PayloadTransformer.d.mts.map +1 -0
- package/dist/browser/lib/jsonpath/PayloadTransformer.d.ts +3 -0
- package/dist/browser/lib/jsonpath/PayloadTransformer.d.ts.map +1 -0
- package/dist/browser/lib/jsonpath/StringToJsonPathTransformExpressionDictionary.d.cts +12 -0
- package/dist/browser/lib/jsonpath/StringToJsonPathTransformExpressionDictionary.d.cts.map +1 -0
- package/dist/browser/lib/jsonpath/StringToJsonPathTransformExpressionDictionary.d.mts +12 -0
- package/dist/browser/lib/jsonpath/StringToJsonPathTransformExpressionDictionary.d.mts.map +1 -0
- package/dist/browser/lib/jsonpath/StringToJsonPathTransformExpressionDictionary.d.ts +12 -0
- package/dist/browser/lib/jsonpath/StringToJsonPathTransformExpressionDictionary.d.ts.map +1 -0
- package/dist/browser/lib/jsonpath/StringToPayloadTransformersDictionary.d.cts +5 -0
- package/dist/browser/lib/jsonpath/StringToPayloadTransformersDictionary.d.cts.map +1 -0
- package/dist/browser/lib/jsonpath/StringToPayloadTransformersDictionary.d.mts +5 -0
- package/dist/browser/lib/jsonpath/StringToPayloadTransformersDictionary.d.mts.map +1 -0
- package/dist/browser/lib/jsonpath/StringToPayloadTransformersDictionary.d.ts +5 -0
- package/dist/browser/lib/jsonpath/StringToPayloadTransformersDictionary.d.ts.map +1 -0
- package/dist/browser/lib/jsonpath/index.d.cts +5 -0
- package/dist/browser/lib/jsonpath/index.d.cts.map +1 -0
- package/dist/browser/lib/jsonpath/index.d.mts +5 -0
- package/dist/browser/lib/jsonpath/index.d.mts.map +1 -0
- package/dist/browser/lib/jsonpath/index.d.ts +5 -0
- package/dist/browser/lib/jsonpath/index.d.ts.map +1 -0
- package/dist/node/Diviner.d.cts +24 -0
- package/dist/node/Diviner.d.cts.map +1 -0
- package/dist/node/Diviner.d.mts +24 -0
- package/dist/node/Diviner.d.mts.map +1 -0
- package/dist/node/Diviner.d.ts +24 -0
- package/dist/node/Diviner.d.ts.map +1 -0
- package/dist/node/DivinerQueryToIndexQueryDiviner.d.cts +12 -0
- package/dist/node/DivinerQueryToIndexQueryDiviner.d.cts.map +1 -0
- package/dist/node/DivinerQueryToIndexQueryDiviner.d.mts +12 -0
- package/dist/node/DivinerQueryToIndexQueryDiviner.d.mts.map +1 -0
- package/dist/node/DivinerQueryToIndexQueryDiviner.d.ts +12 -0
- package/dist/node/DivinerQueryToIndexQueryDiviner.d.ts.map +1 -0
- package/dist/node/IndexCandidateToIndexDiviner/Config.d.cts +10 -0
- package/dist/node/IndexCandidateToIndexDiviner/Config.d.cts.map +1 -0
- package/dist/node/IndexCandidateToIndexDiviner/Config.d.mts +10 -0
- package/dist/node/IndexCandidateToIndexDiviner/Config.d.mts.map +1 -0
- package/dist/node/IndexCandidateToIndexDiviner/Config.d.ts +10 -0
- package/dist/node/IndexCandidateToIndexDiviner/Config.d.ts.map +1 -0
- package/dist/node/IndexCandidateToIndexDiviner/Diviner.d.cts +46 -0
- package/dist/node/IndexCandidateToIndexDiviner/Diviner.d.cts.map +1 -0
- package/dist/node/IndexCandidateToIndexDiviner/Diviner.d.mts +46 -0
- package/dist/node/IndexCandidateToIndexDiviner/Diviner.d.mts.map +1 -0
- package/dist/node/IndexCandidateToIndexDiviner/Diviner.d.ts +46 -0
- package/dist/node/IndexCandidateToIndexDiviner/Diviner.d.ts.map +1 -0
- package/dist/node/IndexCandidateToIndexDiviner/Params.d.cts +5 -0
- package/dist/node/IndexCandidateToIndexDiviner/Params.d.cts.map +1 -0
- package/dist/node/IndexCandidateToIndexDiviner/Params.d.mts +5 -0
- package/dist/node/IndexCandidateToIndexDiviner/Params.d.mts.map +1 -0
- package/dist/node/IndexCandidateToIndexDiviner/Params.d.ts +5 -0
- package/dist/node/IndexCandidateToIndexDiviner/Params.d.ts.map +1 -0
- package/dist/node/IndexCandidateToIndexDiviner/Schema.d.cts +4 -0
- package/dist/node/IndexCandidateToIndexDiviner/Schema.d.cts.map +1 -0
- package/dist/node/IndexCandidateToIndexDiviner/Schema.d.mts +4 -0
- package/dist/node/IndexCandidateToIndexDiviner/Schema.d.mts.map +1 -0
- package/dist/node/IndexCandidateToIndexDiviner/Schema.d.ts +4 -0
- package/dist/node/IndexCandidateToIndexDiviner/Schema.d.ts.map +1 -0
- package/dist/node/IndexCandidateToIndexDiviner/index.d.cts +5 -0
- package/dist/node/IndexCandidateToIndexDiviner/index.d.cts.map +1 -0
- package/dist/node/IndexCandidateToIndexDiviner/index.d.mts +5 -0
- package/dist/node/IndexCandidateToIndexDiviner/index.d.mts.map +1 -0
- package/dist/node/IndexCandidateToIndexDiviner/index.d.ts +5 -0
- package/dist/node/IndexCandidateToIndexDiviner/index.d.ts.map +1 -0
- package/dist/node/IndexQueryResponseToDivinerQueryResponseDiviner.d.cts +12 -0
- package/dist/node/IndexQueryResponseToDivinerQueryResponseDiviner.d.cts.map +1 -0
- package/dist/node/IndexQueryResponseToDivinerQueryResponseDiviner.d.mts +12 -0
- package/dist/node/IndexQueryResponseToDivinerQueryResponseDiviner.d.mts.map +1 -0
- package/dist/node/IndexQueryResponseToDivinerQueryResponseDiviner.d.ts +12 -0
- package/dist/node/IndexQueryResponseToDivinerQueryResponseDiviner.d.ts.map +1 -0
- package/dist/node/StateToIndexCandidateDiviner/Config.d.cts +19 -0
- package/dist/node/StateToIndexCandidateDiviner/Config.d.cts.map +1 -0
- package/dist/node/StateToIndexCandidateDiviner/Config.d.mts +19 -0
- package/dist/node/StateToIndexCandidateDiviner/Config.d.mts.map +1 -0
- package/dist/node/StateToIndexCandidateDiviner/Config.d.ts +19 -0
- package/dist/node/StateToIndexCandidateDiviner/Config.d.ts.map +1 -0
- package/dist/node/StateToIndexCandidateDiviner/Diviner.d.cts +52 -0
- package/dist/node/StateToIndexCandidateDiviner/Diviner.d.cts.map +1 -0
- package/dist/node/StateToIndexCandidateDiviner/Diviner.d.mts +52 -0
- package/dist/node/StateToIndexCandidateDiviner/Diviner.d.mts.map +1 -0
- package/dist/node/StateToIndexCandidateDiviner/Diviner.d.ts +52 -0
- package/dist/node/StateToIndexCandidateDiviner/Diviner.d.ts.map +1 -0
- package/dist/node/StateToIndexCandidateDiviner/Params.d.cts +5 -0
- package/dist/node/StateToIndexCandidateDiviner/Params.d.cts.map +1 -0
- package/dist/node/StateToIndexCandidateDiviner/Params.d.mts +5 -0
- package/dist/node/StateToIndexCandidateDiviner/Params.d.mts.map +1 -0
- package/dist/node/StateToIndexCandidateDiviner/Params.d.ts +5 -0
- package/dist/node/StateToIndexCandidateDiviner/Params.d.ts.map +1 -0
- package/dist/node/StateToIndexCandidateDiviner/Schema.d.cts +4 -0
- package/dist/node/StateToIndexCandidateDiviner/Schema.d.cts.map +1 -0
- package/dist/node/StateToIndexCandidateDiviner/Schema.d.mts +4 -0
- package/dist/node/StateToIndexCandidateDiviner/Schema.d.mts.map +1 -0
- package/dist/node/StateToIndexCandidateDiviner/Schema.d.ts +4 -0
- package/dist/node/StateToIndexCandidateDiviner/Schema.d.ts.map +1 -0
- package/dist/node/StateToIndexCandidateDiviner/index.d.cts +2 -0
- package/dist/node/StateToIndexCandidateDiviner/index.d.cts.map +1 -0
- package/dist/node/StateToIndexCandidateDiviner/index.d.mts +2 -0
- package/dist/node/StateToIndexCandidateDiviner/index.d.mts.map +1 -0
- package/dist/node/StateToIndexCandidateDiviner/index.d.ts +2 -0
- package/dist/node/StateToIndexCandidateDiviner/index.d.ts.map +1 -0
- package/dist/node/index.d.cts +2 -0
- package/dist/node/index.d.cts.map +1 -0
- package/dist/node/index.d.mts +2 -0
- package/dist/node/index.d.mts.map +1 -0
- package/dist/node/index.d.ts +2 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +83 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/index.mjs +56 -0
- package/dist/node/index.mjs.map +1 -0
- package/dist/node/lib/index.d.cts +2 -0
- package/dist/node/lib/index.d.cts.map +1 -0
- package/dist/node/lib/index.d.mts +2 -0
- package/dist/node/lib/index.d.mts.map +1 -0
- package/dist/node/lib/index.d.ts +2 -0
- package/dist/node/lib/index.d.ts.map +1 -0
- package/dist/node/lib/jsonpath/JsonPathTransformExpression.d.cts +15 -0
- package/dist/node/lib/jsonpath/JsonPathTransformExpression.d.cts.map +1 -0
- package/dist/node/lib/jsonpath/JsonPathTransformExpression.d.mts +15 -0
- package/dist/node/lib/jsonpath/JsonPathTransformExpression.d.mts.map +1 -0
- package/dist/node/lib/jsonpath/JsonPathTransformExpression.d.ts +15 -0
- package/dist/node/lib/jsonpath/JsonPathTransformExpression.d.ts.map +1 -0
- package/dist/node/lib/jsonpath/PayloadTransformer.d.cts +3 -0
- package/dist/node/lib/jsonpath/PayloadTransformer.d.cts.map +1 -0
- package/dist/node/lib/jsonpath/PayloadTransformer.d.mts +3 -0
- package/dist/node/lib/jsonpath/PayloadTransformer.d.mts.map +1 -0
- package/dist/node/lib/jsonpath/PayloadTransformer.d.ts +3 -0
- package/dist/node/lib/jsonpath/PayloadTransformer.d.ts.map +1 -0
- package/dist/node/lib/jsonpath/StringToJsonPathTransformExpressionDictionary.d.cts +12 -0
- package/dist/node/lib/jsonpath/StringToJsonPathTransformExpressionDictionary.d.cts.map +1 -0
- package/dist/node/lib/jsonpath/StringToJsonPathTransformExpressionDictionary.d.mts +12 -0
- package/dist/node/lib/jsonpath/StringToJsonPathTransformExpressionDictionary.d.mts.map +1 -0
- package/dist/node/lib/jsonpath/StringToJsonPathTransformExpressionDictionary.d.ts +12 -0
- package/dist/node/lib/jsonpath/StringToJsonPathTransformExpressionDictionary.d.ts.map +1 -0
- package/dist/node/lib/jsonpath/StringToPayloadTransformersDictionary.d.cts +5 -0
- package/dist/node/lib/jsonpath/StringToPayloadTransformersDictionary.d.cts.map +1 -0
- package/dist/node/lib/jsonpath/StringToPayloadTransformersDictionary.d.mts +5 -0
- package/dist/node/lib/jsonpath/StringToPayloadTransformersDictionary.d.mts.map +1 -0
- package/dist/node/lib/jsonpath/StringToPayloadTransformersDictionary.d.ts +5 -0
- package/dist/node/lib/jsonpath/StringToPayloadTransformersDictionary.d.ts.map +1 -0
- package/dist/node/lib/jsonpath/index.d.cts +5 -0
- package/dist/node/lib/jsonpath/index.d.cts.map +1 -0
- package/dist/node/lib/jsonpath/index.d.mts +5 -0
- package/dist/node/lib/jsonpath/index.d.mts.map +1 -0
- package/dist/node/lib/jsonpath/index.d.ts +5 -0
- package/dist/node/lib/jsonpath/index.d.ts.map +1 -0
- package/package.json +90 -0
- package/src/Diviner.ts +65 -0
- package/src/DivinerQueryToIndexQueryDiviner.ts +34 -0
- package/src/IndexCandidateToIndexDiviner/Config.ts +12 -0
- package/src/IndexCandidateToIndexDiviner/Diviner.ts +144 -0
- package/src/IndexCandidateToIndexDiviner/Params.ts +6 -0
- package/src/IndexCandidateToIndexDiviner/Schema.ts +4 -0
- package/src/IndexCandidateToIndexDiviner/index.ts +4 -0
- package/src/IndexQueryResponseToDivinerQueryResponseDiviner.ts +21 -0
- package/src/StateToIndexCandidateDiviner/Config.ts +21 -0
- package/src/StateToIndexCandidateDiviner/Diviner.ts +128 -0
- package/src/StateToIndexCandidateDiviner/Params.ts +6 -0
- package/src/StateToIndexCandidateDiviner/Schema.ts +4 -0
- package/src/StateToIndexCandidateDiviner/index.ts +1 -0
- package/src/StateToIndexCandidateDiviner/spec/TemporalStateToIndexCandidateDiviner.json +57 -0
- package/src/index.ts +1 -0
- package/src/lib/index.ts +1 -0
- package/src/lib/jsonpath/JsonPathTransformExpression.ts +14 -0
- package/src/lib/jsonpath/PayloadTransformer.ts +3 -0
- package/src/lib/jsonpath/StringToJsonPathTransformExpressionDictionary.ts +8 -0
- package/src/lib/jsonpath/StringToPayloadTransformersDictionary.ts +3 -0
- package/src/lib/jsonpath/index.ts +4 -0
- package/src/spec/ImageThumbnailDivinerManifest.json +159 -0
- package/typedoc.json +5 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { containsAll } from '@xylabs/array'
|
|
2
|
+
import { assertEx } from '@xylabs/assert'
|
|
3
|
+
import { exists } from '@xylabs/exists'
|
|
4
|
+
import { AbstractDiviner } from '@xyo-network/abstract-diviner'
|
|
5
|
+
import { BoundWitness, isBoundWitness } from '@xyo-network/boundwitness-model'
|
|
6
|
+
import { PayloadHasher } from '@xyo-network/core'
|
|
7
|
+
import { DivinerConfigSchema } from '@xyo-network/diviner-model'
|
|
8
|
+
import { TemporalIndexingDivinerResultIndexSchema } from '@xyo-network/diviner-temporal-indexing-model'
|
|
9
|
+
import { Labels } from '@xyo-network/module-model'
|
|
10
|
+
import { Payload } from '@xyo-network/payload-model'
|
|
11
|
+
import { isTimestamp, TimeStamp, TimestampSchema } from '@xyo-network/witness-timestamp'
|
|
12
|
+
import jsonpath from 'jsonpath'
|
|
13
|
+
|
|
14
|
+
import { PayloadTransformer, StringToJsonPathTransformExpressionsDictionary, StringToPayloadTransformersDictionary } from '../lib'
|
|
15
|
+
import { TemporalIndexingDivinerIndexCandidateToIndexDivinerConfigSchema } from './Config'
|
|
16
|
+
import { TemporalIndexCandidateToIndexDivinerParams } from './Params'
|
|
17
|
+
|
|
18
|
+
export type IndexablePayloads = [BoundWitness, TimeStamp, ...Payload[]]
|
|
19
|
+
|
|
20
|
+
const moduleName = 'TemporalIndexingDivinerIndexCandidateToIndexDiviner'
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Transforms candidates for image thumbnail indexing into their indexed representation
|
|
24
|
+
*/
|
|
25
|
+
export class TemporalIndexingDivinerIndexCandidateToIndexDiviner<
|
|
26
|
+
TParams extends TemporalIndexCandidateToIndexDivinerParams = TemporalIndexCandidateToIndexDivinerParams,
|
|
27
|
+
> extends AbstractDiviner<TParams, Payload, Payload> {
|
|
28
|
+
static override configSchema = TemporalIndexingDivinerIndexCandidateToIndexDivinerConfigSchema
|
|
29
|
+
static override configSchemas = [DivinerConfigSchema, TemporalIndexingDivinerIndexCandidateToIndexDivinerConfigSchema]
|
|
30
|
+
static labels: Labels = {
|
|
31
|
+
'network.xyo.diviner.stage': 'indexCandidateToIndexDiviner',
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
private _indexableSchemas: string[] | undefined
|
|
35
|
+
private _schemaToPayloadTransformersDictionary: StringToPayloadTransformersDictionary | undefined
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* List of indexable schemas for this diviner
|
|
39
|
+
*/
|
|
40
|
+
protected get indexableSchemas() {
|
|
41
|
+
// Return the computed result if we've calculated it before as the config
|
|
42
|
+
// shouldn't change after initialization
|
|
43
|
+
if (this._indexableSchemas) return this._indexableSchemas
|
|
44
|
+
this._indexableSchemas = [...Object.keys(this.schemaTransforms)]
|
|
45
|
+
return this._indexableSchemas
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Dictionary of schemas to payload transformers for creating indexes
|
|
50
|
+
* from the payloads within a Bound Witness
|
|
51
|
+
*/
|
|
52
|
+
protected get schemaToPayloadTransformersDictionary(): StringToPayloadTransformersDictionary {
|
|
53
|
+
// Return the computed result if we've calculated it before as the config
|
|
54
|
+
// shouldn't change after initialization
|
|
55
|
+
if (this._schemaToPayloadTransformersDictionary) return this._schemaToPayloadTransformersDictionary
|
|
56
|
+
this._schemaToPayloadTransformersDictionary = Object.fromEntries(
|
|
57
|
+
Object.entries(this.schemaTransforms).map(([schema, jsonPathTransformerExpressions]) => {
|
|
58
|
+
const transformers = jsonPathTransformerExpressions.map((transformExpression) => {
|
|
59
|
+
const { sourcePathExpression, destinationField } = transformExpression
|
|
60
|
+
const transformer: PayloadTransformer = (x: Payload) => {
|
|
61
|
+
// eslint-disable-next-line import/no-named-as-default-member
|
|
62
|
+
const source = jsonpath.value(x, sourcePathExpression)
|
|
63
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
64
|
+
const transformed = {} as { [key: string]: any }
|
|
65
|
+
transformed[destinationField] = source
|
|
66
|
+
return transformed
|
|
67
|
+
}
|
|
68
|
+
return transformer
|
|
69
|
+
})
|
|
70
|
+
return [schema, transformers]
|
|
71
|
+
}),
|
|
72
|
+
)
|
|
73
|
+
return this._schemaToPayloadTransformersDictionary
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* The dictionary of schemas to JSON Path transform expressions for creating indexes
|
|
78
|
+
* from the payloads within a Bound Witness
|
|
79
|
+
*/
|
|
80
|
+
protected get schemaTransforms(): StringToJsonPathTransformExpressionsDictionary {
|
|
81
|
+
return assertEx(this.config?.schemaTransforms, () => `${moduleName}: Missing config.schemaTransforms section`)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
protected override async divineHandler(payloads: Payload[] = []): Promise<Payload[]> {
|
|
85
|
+
const bws: BoundWitness[] = payloads.filter(isBoundWitness)
|
|
86
|
+
const timestampPayloads: TimeStamp[] = payloads.filter(isTimestamp)
|
|
87
|
+
const indexablePayloads: Payload[] = payloads.filter((p) => this.isIndexablePayload(p))
|
|
88
|
+
if (bws.length && timestampPayloads.length && indexablePayloads.length) {
|
|
89
|
+
const payloadDictionary = await PayloadHasher.toMap(payloads)
|
|
90
|
+
const validIndexableTuples: IndexablePayloads[] = bws.reduce<IndexablePayloads[]>((indexableTuples, bw) => {
|
|
91
|
+
// If this Bound Witness doesn't contain all the required schemas don't index it
|
|
92
|
+
if (!containsAll(bw.payload_schemas, this.indexableSchemas)) return indexableTuples
|
|
93
|
+
// Find the timestamp
|
|
94
|
+
const timestampPosition = bw.payload_schemas?.findIndex((schema) => schema === TimestampSchema)
|
|
95
|
+
const timestampHash = bw.payload_hashes?.[timestampPosition]
|
|
96
|
+
const timestamp = [payloadDictionary[timestampHash]].find(isTimestamp)
|
|
97
|
+
// Find the remaining indexable payloads
|
|
98
|
+
const indexablePayloadPositions = this.indexableSchemas.map((schema) => bw.payload_schemas.indexOf(schema))
|
|
99
|
+
const indexablePayloadHashes = indexablePayloadPositions.map((index) => bw.payload_hashes?.[index])
|
|
100
|
+
const indexablePayloads = indexablePayloadHashes.map((hash) => payloadDictionary[hash]).filter(exists)
|
|
101
|
+
// If we found a timestamp and the right amount of indexable payloads (of the
|
|
102
|
+
// correct schema as checked above) in this BW, then index it
|
|
103
|
+
if (timestamp && indexablePayloads.length === this.indexableSchemas.length) indexableTuples.push([bw, timestamp, ...indexablePayloads])
|
|
104
|
+
return indexableTuples
|
|
105
|
+
}, [])
|
|
106
|
+
// Create the indexes from the tuples
|
|
107
|
+
const indexes = await Promise.all(
|
|
108
|
+
validIndexableTuples.map(async ([bw, timestampPayload, ...remainingPayloads]) => {
|
|
109
|
+
const partials = remainingPayloads
|
|
110
|
+
.map((payload) => {
|
|
111
|
+
const transforms = this.schemaToPayloadTransformersDictionary[payload.schema]
|
|
112
|
+
const transformed: Partial<Payload>[] = transforms.map((transform) => transform(payload))
|
|
113
|
+
return transformed
|
|
114
|
+
})
|
|
115
|
+
.flat()
|
|
116
|
+
const transformed = Object.assign({}, ...partials, { schema: TemporalIndexingDivinerResultIndexSchema })
|
|
117
|
+
const { timestamp } = timestampPayload
|
|
118
|
+
const sources = (await PayloadHasher.hashPairs([bw, timestampPayload, ...remainingPayloads])).map(([, hash]) => hash)
|
|
119
|
+
return [{ ...transformed, sources, timestamp }]
|
|
120
|
+
}),
|
|
121
|
+
)
|
|
122
|
+
return indexes.flat()
|
|
123
|
+
}
|
|
124
|
+
return Promise.resolve([])
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Identifies if a payload is one that is indexed by this diviner
|
|
129
|
+
* @param x The candidate payload
|
|
130
|
+
* @returns True if the payload is one indexed by this diviner, false otherwise
|
|
131
|
+
*/
|
|
132
|
+
protected isIndexablePayload = (x: Payload) => {
|
|
133
|
+
return this.indexableSchemas.includes(x?.schema)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Identifies if a schema is one that is indexed by this diviner
|
|
138
|
+
* @param schema The candidate schema
|
|
139
|
+
* @returns True if this schema is one indexed by this diviner, false otherwise
|
|
140
|
+
*/
|
|
141
|
+
protected isIndexableSchema = (schema?: string | null) => {
|
|
142
|
+
return this.indexableSchemas.some((s) => s === schema)
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DivinerParams } from '@xyo-network/diviner-model'
|
|
2
|
+
import { AnyConfigSchema } from '@xyo-network/module-model'
|
|
3
|
+
|
|
4
|
+
import { TemporalIndexingDivinerIndexCandidateToIndexDivinerConfig } from './Config'
|
|
5
|
+
|
|
6
|
+
export type TemporalIndexCandidateToIndexDivinerParams = DivinerParams<AnyConfigSchema<TemporalIndexingDivinerIndexCandidateToIndexDivinerConfig>>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { TemporalIndexingDivinerSchema } from '@xyo-network/diviner-temporal-indexing-model'
|
|
2
|
+
|
|
3
|
+
export type TemporalIndexingDivinerIndexCandidateToIndexDivinerSchema = `${TemporalIndexingDivinerSchema}.stage.indexCandidateToIndexDiviner`
|
|
4
|
+
export const TemporalIndexingDivinerIndexCandidateToIndexDivinerSchema: TemporalIndexingDivinerIndexCandidateToIndexDivinerSchema = `${TemporalIndexingDivinerSchema}.stage.indexCandidateToIndexDiviner`
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AbstractDiviner } from '@xyo-network/abstract-diviner'
|
|
2
|
+
import { DivinerConfigSchema } from '@xyo-network/diviner-model'
|
|
3
|
+
import { isPayloadDivinerQueryPayload } from '@xyo-network/diviner-payload-model'
|
|
4
|
+
import { Labels } from '@xyo-network/module-model'
|
|
5
|
+
import { Payload } from '@xyo-network/payload-model'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Transforms an ImageThumbnailIndex response into an ImageThumbnailResponse response
|
|
9
|
+
*/
|
|
10
|
+
export class TemporalIndexingDivinerIndexQueryResponseToDivinerQueryResponseDiviner extends AbstractDiviner {
|
|
11
|
+
static override configSchemas = [DivinerConfigSchema]
|
|
12
|
+
static labels: Labels = {
|
|
13
|
+
'network.xyo.diviner.stage': 'indexQueryResponseToDivinerQueryResponseDiviner',
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
protected override async divineHandler(payloads: Payload[] = []): Promise<Payload[]> {
|
|
17
|
+
await Promise.resolve()
|
|
18
|
+
const imageThumbnailDivinerQueries = payloads.filter(isPayloadDivinerQueryPayload)
|
|
19
|
+
return imageThumbnailDivinerQueries
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BoundWitnessDivinerPredicate } from '@xyo-network/diviner-boundwitness-model'
|
|
2
|
+
import { SearchableStorage } from '@xyo-network/diviner-indexing-model'
|
|
3
|
+
import { DivinerConfig } from '@xyo-network/diviner-model'
|
|
4
|
+
|
|
5
|
+
import { TemporalStateToIndexCandidateDivinerSchema } from './Schema'
|
|
6
|
+
|
|
7
|
+
export type TemporalStateToIndexCandidateDivinerConfigSchema = `${TemporalStateToIndexCandidateDivinerSchema}.config`
|
|
8
|
+
export const TemporalStateToIndexCandidateDivinerConfigSchema: TemporalStateToIndexCandidateDivinerConfigSchema = `${TemporalStateToIndexCandidateDivinerSchema}.config`
|
|
9
|
+
|
|
10
|
+
export type TemporalStateToIndexCandidateDivinerConfig = DivinerConfig<{
|
|
11
|
+
/**
|
|
12
|
+
* The filter to use to identify index candidates
|
|
13
|
+
*/
|
|
14
|
+
filter: BoundWitnessDivinerPredicate
|
|
15
|
+
payloadDivinerLimit?: number
|
|
16
|
+
/**
|
|
17
|
+
* Where the diviner should look for stored thumbnails
|
|
18
|
+
*/
|
|
19
|
+
payloadStore?: SearchableStorage
|
|
20
|
+
schema: TemporalStateToIndexCandidateDivinerConfigSchema
|
|
21
|
+
}>
|
|
@@ -0,0 +1,128 @@
|
|
|
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 { IndexingDivinerState } from '@xyo-network/diviner-indexing-model'
|
|
9
|
+
import { DivinerConfigSchema } from '@xyo-network/diviner-model'
|
|
10
|
+
import { DivinerWrapper } from '@xyo-network/diviner-wrapper'
|
|
11
|
+
import { isModuleState, Labels, ModuleState, ModuleStateSchema } from '@xyo-network/module-model'
|
|
12
|
+
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
13
|
+
import { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'
|
|
14
|
+
import { TimeStamp, TimestampSchema } from '@xyo-network/witness-timestamp'
|
|
15
|
+
|
|
16
|
+
import { TemporalStateToIndexCandidateDivinerConfigSchema } from './Config'
|
|
17
|
+
import { TemporalStateToIndexCandidateDivinerParams as TemporalIndexingDivinerStateToIndexCandidateDiviner } from './Params'
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* All Payload types involved in index candidates for indexing
|
|
21
|
+
*/
|
|
22
|
+
export type IndexCandidate = BoundWitness | Payload | TimeStamp
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The response from the TemporalStateToIndexCandidateDiviner
|
|
26
|
+
*/
|
|
27
|
+
export type TemporalStateToIndexCandidateDivinerResponse = [
|
|
28
|
+
/**
|
|
29
|
+
* The next state of the diviner
|
|
30
|
+
*/
|
|
31
|
+
nextState: ModuleState<IndexingDivinerState>,
|
|
32
|
+
/**
|
|
33
|
+
* The index candidates
|
|
34
|
+
*/
|
|
35
|
+
...IndexCandidate[],
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* The default order to search Bound Witnesses to identify index candidates
|
|
40
|
+
*/
|
|
41
|
+
const order = 'asc'
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The name of the module (for logging purposes)
|
|
45
|
+
*/
|
|
46
|
+
const moduleName = 'TemporalStateToIndexCandidateDiviner'
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Transforms candidates for image thumbnail indexing into their indexed representation
|
|
50
|
+
*/
|
|
51
|
+
export class TemporalStateToIndexCandidateDiviner<
|
|
52
|
+
TParams extends TemporalIndexingDivinerStateToIndexCandidateDiviner = TemporalIndexingDivinerStateToIndexCandidateDiviner,
|
|
53
|
+
> extends AbstractDiviner<TParams> {
|
|
54
|
+
static override configSchemas = [DivinerConfigSchema, TemporalStateToIndexCandidateDivinerConfigSchema]
|
|
55
|
+
static labels: Labels = {
|
|
56
|
+
'network.xyo.diviner.stage': 'stateToIndexCandidateDiviner',
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
get payloadDivinerLimit() {
|
|
60
|
+
return this.config.payloadDivinerLimit ?? 1_000
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* The required payload_schemas within BoundWitnesses to identify index candidates
|
|
65
|
+
*/
|
|
66
|
+
protected get payload_schemas(): string[] {
|
|
67
|
+
const schemas = this.config.filter?.payload_schemas
|
|
68
|
+
return [TimestampSchema, ...(schemas ?? [])]
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
protected override async divineHandler(payloads: Payload[] = []): Promise<[ModuleState, ...IndexCandidate[]]> {
|
|
72
|
+
// Retrieve the last state from what was passed in
|
|
73
|
+
const lastState = payloads.find(isModuleState<IndexingDivinerState>)
|
|
74
|
+
// If there is no last state, start from the beginning
|
|
75
|
+
if (!lastState) return [{ schema: ModuleStateSchema, state: { offset: 0 } }]
|
|
76
|
+
// Otherwise, get the last offset
|
|
77
|
+
const { offset } = lastState.state
|
|
78
|
+
// Get next batch of results starting from the offset
|
|
79
|
+
const boundWitnessDiviner = await this.getBoundWitnessDivinerForStore()
|
|
80
|
+
const query = new PayloadBuilder<BoundWitnessDivinerQueryPayload>({ schema: BoundWitnessDivinerQuerySchema })
|
|
81
|
+
.fields({ limit: this.payloadDivinerLimit, offset, order, payload_schemas: this.payload_schemas })
|
|
82
|
+
.build()
|
|
83
|
+
const batch = await boundWitnessDiviner.divine([query])
|
|
84
|
+
if (batch.length === 0) return [lastState]
|
|
85
|
+
// Get source data
|
|
86
|
+
const sourceArchivist = await this.getArchivistForStore()
|
|
87
|
+
const indexCandidates: IndexCandidate[] = (
|
|
88
|
+
await Promise.all(batch.filter(isBoundWitness).map((bw) => this.getPayloadsInBoundWitness(bw, sourceArchivist)))
|
|
89
|
+
)
|
|
90
|
+
.filter(exists)
|
|
91
|
+
.flat()
|
|
92
|
+
const nextState = { schema: ModuleStateSchema, state: { ...lastState.state, offset: offset + batch.length } }
|
|
93
|
+
return [nextState, ...indexCandidates]
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Retrieves the archivist for the payloadStore
|
|
97
|
+
* @returns The archivist for the payloadStore
|
|
98
|
+
*/
|
|
99
|
+
protected async getArchivistForStore() {
|
|
100
|
+
const name: string = assertEx(this.config?.payloadStore?.archivist, () => `${moduleName}: Config for payloadStore.archivist not specified`)
|
|
101
|
+
const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve payloadStore.archivist`)
|
|
102
|
+
return ArchivistWrapper.wrap(mod, this.account)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Retrieves the BoundWitness Diviner for the payloadStore
|
|
107
|
+
* @returns The BoundWitness Diviner for the payloadStore
|
|
108
|
+
*/
|
|
109
|
+
protected async getBoundWitnessDivinerForStore() {
|
|
110
|
+
const name: string = assertEx(
|
|
111
|
+
this.config?.payloadStore?.boundWitnessDiviner,
|
|
112
|
+
() => `${moduleName}: Config for payloadStore.boundWitnessDiviner not specified`,
|
|
113
|
+
)
|
|
114
|
+
const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve payloadStore.boundWitnessDiviner`)
|
|
115
|
+
return DivinerWrapper.wrap(mod, this.account)
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
protected async getPayloadsInBoundWitness(bw: BoundWitness, archivist: ArchivistInstance): Promise<IndexCandidate[] | undefined> {
|
|
119
|
+
const indexes = this.payload_schemas.map((schema) => bw.payload_schemas?.findIndex((s) => s === schema))
|
|
120
|
+
const hashes = indexes.map((index) => bw.payload_hashes?.[index])
|
|
121
|
+
const results = await archivist.get(hashes)
|
|
122
|
+
const indexCandidateIdentityFunctions = this.payload_schemas.map(isPayloadOfSchemaType)
|
|
123
|
+
const filteredResults = indexCandidateIdentityFunctions.map((is) => results.find(is))
|
|
124
|
+
if (filteredResults.some((f) => f === undefined)) return undefined
|
|
125
|
+
const indexCandidates: IndexCandidate[] = filteredResults.filter(exists) as IndexCandidate[]
|
|
126
|
+
return [bw, ...indexCandidates]
|
|
127
|
+
}
|
|
128
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DivinerParams } from '@xyo-network/diviner-model'
|
|
2
|
+
import { AnyConfigSchema } from '@xyo-network/module-model'
|
|
3
|
+
|
|
4
|
+
import { TemporalStateToIndexCandidateDivinerConfig } from './Config'
|
|
5
|
+
|
|
6
|
+
export type TemporalStateToIndexCandidateDivinerParams = DivinerParams<AnyConfigSchema<TemporalStateToIndexCandidateDivinerConfig>>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { TemporalIndexingDivinerSchema } from '@xyo-network/diviner-temporal-indexing-model'
|
|
2
|
+
|
|
3
|
+
export type TemporalStateToIndexCandidateDivinerSchema = `${TemporalIndexingDivinerSchema}.stage.stateToIndexCandidateDiviner`
|
|
4
|
+
export const TemporalStateToIndexCandidateDivinerSchema: TemporalStateToIndexCandidateDivinerSchema = `${TemporalIndexingDivinerSchema}.stage.stateToIndexCandidateDiviner`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Diviner'
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
"config": {
|
|
36
|
+
"filter": {
|
|
37
|
+
"payload_schemas": ["network.xyo.image.thumbnail"]
|
|
38
|
+
},
|
|
39
|
+
"labels": {
|
|
40
|
+
"network.xyo.diviner.stage": "stateToIndexCandidateDiviner"
|
|
41
|
+
},
|
|
42
|
+
"language": "javascript",
|
|
43
|
+
"name": "TemporalStateToIndexCandidateDiviner",
|
|
44
|
+
"payloadStore": {
|
|
45
|
+
"archivist": "ImageThumbnailArchivist",
|
|
46
|
+
"boundWitnessDiviner": "ImageThumbnailBoundWitnessDiviner",
|
|
47
|
+
"payloadDiviner": "ImageThumbnailPayloadDiviner"
|
|
48
|
+
},
|
|
49
|
+
"schema": "network.xyo.diviner.config"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"schema": "network.xyo.manifest"
|
|
57
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Diviner'
|
package/src/lib/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './jsonpath'
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Describes the JSON-path transformation to retrieve a field on a source object
|
|
3
|
+
* and the target field to store the value to on a destination object
|
|
4
|
+
*/
|
|
5
|
+
export interface JsonPathTransformExpression {
|
|
6
|
+
/**
|
|
7
|
+
* The target field to store the source field into on the destination object
|
|
8
|
+
*/
|
|
9
|
+
destinationField: string
|
|
10
|
+
/**
|
|
11
|
+
* The JSON path expressions for the source field on the source object
|
|
12
|
+
*/
|
|
13
|
+
sourcePathExpression: string
|
|
14
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { JsonPathTransformExpression } from './JsonPathTransformExpression'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A dictionary of string keys to JsonPathTransformExpressions.
|
|
5
|
+
*/
|
|
6
|
+
export type StringToJsonPathTransformExpressionsDictionary<T extends { [key: string]: unknown } = { [key: string]: unknown }> = {
|
|
7
|
+
[key in keyof T]: JsonPathTransformExpression[]
|
|
8
|
+
}
|
|
@@ -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.diviner.stage": "stateToIndexCandidateDiviner",
|
|
85
|
+
"network.xyo.image.thumbnail": "diviner"
|
|
86
|
+
},
|
|
87
|
+
"language": "javascript",
|
|
88
|
+
"name": "ImageThumbnailStateToIndexCandidateDiviner",
|
|
89
|
+
"payloadStore": {
|
|
90
|
+
"archivist": "ImageThumbnailArchivist",
|
|
91
|
+
"boundWitnessDiviner": "ImageThumbnailBoundWitnessDiviner",
|
|
92
|
+
"payloadDiviner": "ImageThumbnailPayloadDiviner"
|
|
93
|
+
},
|
|
94
|
+
"schema": "network.xyo.diviner.config"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"config": {
|
|
99
|
+
"labels": {
|
|
100
|
+
"network.xyo.diviner.stage": "indexCandidateToIndexDiviner",
|
|
101
|
+
"network.xyo.image.thumbnail": "diviner"
|
|
102
|
+
},
|
|
103
|
+
"language": "javascript",
|
|
104
|
+
"name": "ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner",
|
|
105
|
+
"schema": "network.xyo.diviner.config"
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"config": {
|
|
110
|
+
"labels": {
|
|
111
|
+
"network.xyo.diviner.stage": "divinerQueryToIndexQueryDiviner",
|
|
112
|
+
"network.xyo.image.thumbnail": "diviner"
|
|
113
|
+
},
|
|
114
|
+
"language": "javascript",
|
|
115
|
+
"name": "ImageThumbnailQueryToImageThumbnailIndexQueryDiviner",
|
|
116
|
+
"schema": "network.xyo.diviner.config"
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"config": {
|
|
121
|
+
"labels": {
|
|
122
|
+
"network.xyo.diviner.stage": "indexQueryResponseToDivinerQueryResponseDiviner",
|
|
123
|
+
"network.xyo.image.thumbnail": "diviner"
|
|
124
|
+
},
|
|
125
|
+
"language": "javascript",
|
|
126
|
+
"name": "ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner",
|
|
127
|
+
"schema": "network.xyo.diviner.config"
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"config": {
|
|
132
|
+
"indexStore": {
|
|
133
|
+
"archivist": "ImageThumbnailDivinerIndexArchivist",
|
|
134
|
+
"boundWitnessDiviner": "ImageThumbnailDivinerIndexBoundWitnessDiviner",
|
|
135
|
+
"payloadDiviner": "ImageThumbnailDivinerIndexPayloadDiviner"
|
|
136
|
+
},
|
|
137
|
+
"indexingDivinerStages": {
|
|
138
|
+
"divinerQueryToIndexQueryDiviner": "ImageThumbnailQueryToImageThumbnailIndexQueryDiviner",
|
|
139
|
+
"indexCandidateToIndexDiviner": "ImageThumbnailIndexCandidateToImageThumbnailIndexDiviner",
|
|
140
|
+
"indexQueryResponseToDivinerQueryResponseDiviner": "ImageThumbnailIndexQueryResponseToImageThumbnailQueryResponseDiviner",
|
|
141
|
+
"stateToIndexCandidateDiviner": "ImageThumbnailStateToIndexCandidateDiviner"
|
|
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
|
+
}
|