@xyo-network/module-model 2.64.9 → 2.65.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/cjs/CreatableModuleDictionary.js +3 -0
- package/dist/cjs/CreatableModuleDictionary.js.map +1 -0
- package/dist/cjs/{Query/Payload.js → Events/ModuleBusy.js} +1 -1
- package/dist/cjs/Events/ModuleBusy.js.map +1 -0
- package/dist/cjs/Events/ModuleQueried.js +3 -0
- package/dist/cjs/Events/ModuleQueried.js.map +1 -0
- package/dist/cjs/Events/index.js +6 -0
- package/dist/cjs/Events/index.js.map +1 -0
- package/dist/cjs/ModuleFactory.js +30 -0
- package/dist/cjs/ModuleFactory.js.map +1 -0
- package/dist/cjs/Queries/index.js.map +1 -1
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/duplicateModules.js +17 -0
- package/dist/cjs/lib/duplicateModules.js.map +1 -0
- package/dist/cjs/lib/index.js +6 -0
- package/dist/cjs/lib/index.js.map +1 -0
- package/dist/cjs/lib/serializable.js +38 -0
- package/dist/cjs/lib/serializable.js.map +1 -0
- package/dist/esm/CreatableModuleDictionary.js +2 -0
- package/dist/esm/CreatableModuleDictionary.js.map +1 -0
- package/dist/esm/Events/ModuleBusy.js +2 -0
- package/dist/esm/Events/ModuleBusy.js.map +1 -0
- package/dist/esm/Events/ModuleQueried.js +2 -0
- package/dist/esm/Events/ModuleQueried.js.map +1 -0
- package/dist/esm/Events/index.js +3 -0
- package/dist/esm/Events/index.js.map +1 -0
- package/dist/esm/ModuleFactory.js +28 -0
- package/dist/esm/ModuleFactory.js.map +1 -0
- package/dist/esm/Queries/index.js.map +1 -1
- package/dist/esm/index.js +4 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/duplicateModules.js +13 -0
- package/dist/esm/lib/duplicateModules.js.map +1 -0
- package/dist/esm/lib/index.js +3 -0
- package/dist/esm/lib/index.js.map +1 -0
- package/dist/esm/lib/serializable.js +32 -0
- package/dist/esm/lib/serializable.js.map +1 -0
- package/dist/types/CreatableModule.d.ts +7 -7
- package/dist/types/CreatableModule.d.ts.map +1 -1
- package/dist/types/CreatableModuleDictionary.d.ts +5 -0
- package/dist/types/CreatableModuleDictionary.d.ts.map +1 -0
- package/dist/types/Events/ModuleBusy.d.ts +9 -0
- package/dist/types/Events/ModuleBusy.d.ts.map +1 -0
- package/dist/types/Events/ModuleQueried.d.ts +14 -0
- package/dist/types/Events/ModuleQueried.d.ts.map +1 -0
- package/dist/types/Events/index.d.ts +3 -0
- package/dist/types/Events/index.d.ts.map +1 -0
- package/dist/types/Module.d.ts +11 -22
- package/dist/types/Module.d.ts.map +1 -1
- package/dist/types/ModuleFactory.d.ts +15 -0
- package/dist/types/ModuleFactory.d.ts.map +1 -0
- package/dist/types/ModuleQueryResult.d.ts +1 -1
- package/dist/types/ModuleQueryResult.d.ts.map +1 -1
- package/dist/types/Queries/Describe/Query.d.ts +1 -1
- package/dist/types/Queries/Describe/Query.d.ts.map +1 -1
- package/dist/types/Queries/Discover.d.ts +1 -1
- package/dist/types/Queries/Discover.d.ts.map +1 -1
- package/dist/types/Queries/Manifest.d.ts +1 -1
- package/dist/types/Queries/Manifest.d.ts.map +1 -1
- package/dist/types/Queries/ModuleAddress/Query.d.ts +1 -1
- package/dist/types/Queries/ModuleAddress/Query.d.ts.map +1 -1
- package/dist/types/Queries/Subscribe.d.ts +1 -1
- package/dist/types/Queries/Subscribe.d.ts.map +1 -1
- package/dist/types/Queries/index.d.ts +1 -1
- package/dist/types/Queries/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/duplicateModules.d.ts +12 -0
- package/dist/types/lib/duplicateModules.d.ts.map +1 -0
- package/dist/types/lib/index.d.ts +3 -0
- package/dist/types/lib/index.d.ts.map +1 -0
- package/dist/types/lib/serializable.d.ts +3 -0
- package/dist/types/lib/serializable.d.ts.map +1 -0
- package/package.json +14 -12
- package/src/CreatableModule.ts +7 -7
- package/src/CreatableModuleDictionary.ts +5 -0
- package/src/Events/ModuleBusy.ts +9 -0
- package/src/Events/ModuleQueried.ts +19 -0
- package/src/Events/index.ts +2 -0
- package/src/Module.ts +12 -27
- package/src/ModuleFactory.ts +40 -0
- package/src/ModuleQueryResult.ts +1 -1
- package/src/Queries/Describe/Query.ts +1 -1
- package/src/Queries/Discover.ts +1 -1
- package/src/Queries/Manifest.ts +1 -1
- package/src/Queries/ModuleAddress/Query.ts +1 -1
- package/src/Queries/Subscribe.ts +1 -1
- package/src/Queries/index.ts +2 -1
- package/src/index.ts +4 -2
- package/src/lib/duplicateModules.ts +14 -0
- package/src/lib/index.ts +2 -0
- package/src/lib/serializable.ts +41 -0
- package/dist/cjs/Error.js +0 -5
- package/dist/cjs/Error.js.map +0 -1
- package/dist/cjs/Query/Payload.js.map +0 -1
- package/dist/cjs/Query/QueryBoundWitness.js +0 -8
- package/dist/cjs/Query/QueryBoundWitness.js.map +0 -1
- package/dist/cjs/Query/index.js +0 -6
- package/dist/cjs/Query/index.js.map +0 -1
- package/dist/docs.json +0 -24709
- package/dist/esm/Error.js +0 -2
- package/dist/esm/Error.js.map +0 -1
- package/dist/esm/Query/Payload.js +0 -2
- package/dist/esm/Query/Payload.js.map +0 -1
- package/dist/esm/Query/QueryBoundWitness.js +0 -4
- package/dist/esm/Query/QueryBoundWitness.js.map +0 -1
- package/dist/esm/Query/index.js +0 -3
- package/dist/esm/Query/index.js.map +0 -1
- package/dist/types/Error.d.ts +0 -11
- package/dist/types/Error.d.ts.map +0 -1
- package/dist/types/Query/Payload.d.ts +0 -13
- package/dist/types/Query/Payload.d.ts.map +0 -1
- package/dist/types/Query/QueryBoundWitness.d.ts +0 -17
- package/dist/types/Query/QueryBoundWitness.d.ts.map +0 -1
- package/dist/types/Query/index.d.ts +0 -3
- package/dist/types/Query/index.d.ts.map +0 -1
- package/src/Error.ts +0 -12
- package/src/Query/Payload.ts +0 -17
- package/src/Query/QueryBoundWitness.ts +0 -13
- package/src/Query/index.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Manifest.d.ts","sourceRoot":"","sources":["../../../src/Queries/Manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Manifest.d.ts","sourceRoot":"","sources":["../../../src/Queries/Manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,MAAM,MAAM,yBAAyB,GAAG,mCAAmC,CAAA;AAC3E,eAAO,MAAM,yBAAyB,EAAE,yBAA+D,CAAA;AAEvG,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC;IACtC,MAAM,EAAE,yBAAyB,CAAA;CAClC,CAAC,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Query } from '
|
|
1
|
+
import { Query } from '@xyo-network/payload-model';
|
|
2
2
|
export type ModuleAddressQuerySchema = 'network.xyo.query.module.address';
|
|
3
3
|
export declare const ModuleAddressQuerySchema: ModuleAddressQuerySchema;
|
|
4
4
|
export type ModuleAddressQuery = Query<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Query.d.ts","sourceRoot":"","sources":["../../../../src/Queries/ModuleAddress/Query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Query.d.ts","sourceRoot":"","sources":["../../../../src/Queries/ModuleAddress/Query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,MAAM,MAAM,wBAAwB,GAAG,kCAAkC,CAAA;AACzE,eAAO,MAAM,wBAAwB,EAAE,wBAA6D,CAAA;AAEpG,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC;IACrC,MAAM,EAAE,wBAAwB,CAAA;CACjC,CAAC,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Query } from '
|
|
1
|
+
import { Query } from '@xyo-network/payload-model';
|
|
2
2
|
export type ModuleSubscribeQuerySchema = 'network.xyo.query.module.subscribe';
|
|
3
3
|
export declare const ModuleSubscribeQuerySchema: ModuleSubscribeQuerySchema;
|
|
4
4
|
export interface ModuleSubscribeFilter {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Subscribe.d.ts","sourceRoot":"","sources":["../../../src/Queries/Subscribe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Subscribe.d.ts","sourceRoot":"","sources":["../../../src/Queries/Subscribe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,MAAM,MAAM,0BAA0B,GAAG,oCAAoC,CAAA;AAC7E,eAAO,MAAM,0BAA0B,EAAE,0BAAiE,CAAA;AAE1G,MAAM,WAAW,qBAAqB;IACpC,qHAAqH;IACrH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAGD,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC;IACvC,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAA;IACf,kEAAkE;IAClE,MAAM,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACrC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,0BAA0B,CAAA;CACnC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Queries/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Queries/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAElD,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAE3B,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,mBAAmB,CAAA;AAEnH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG,eAAe,GAAG,CAAC,GAAG,eAAe,CAAA"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
export * from './asModule';
|
|
2
2
|
export * from './Config';
|
|
3
3
|
export * from './CreatableModule';
|
|
4
|
-
export * from './
|
|
4
|
+
export * from './CreatableModuleDictionary';
|
|
5
|
+
export * from './Events';
|
|
5
6
|
export * from './isModule';
|
|
7
|
+
export * from './lib';
|
|
6
8
|
export * from './Module';
|
|
7
9
|
export * from './ModuleDescription';
|
|
10
|
+
export * from './ModuleFactory';
|
|
8
11
|
export * from './ModuleFilter';
|
|
9
12
|
export * from './ModuleParams';
|
|
10
13
|
export * from './ModuleQueryResult';
|
|
11
14
|
export * from './ModuleRepository';
|
|
12
15
|
export * from './Queries';
|
|
13
|
-
export * from './Query';
|
|
14
16
|
export * from './withModule';
|
|
15
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IndirectModule } from '../Module';
|
|
2
|
+
/**
|
|
3
|
+
* Used to filter duplicates from an array of modules
|
|
4
|
+
* @example: modulesArray.filter(duplicateModules)
|
|
5
|
+
* @param value Current Module
|
|
6
|
+
* @param index Current Module's index
|
|
7
|
+
* @param array Module Array
|
|
8
|
+
* @returns True if the Module's address is the first occurrence of
|
|
9
|
+
* that address in the array, false otherwise
|
|
10
|
+
*/
|
|
11
|
+
export declare const duplicateModules: (value: IndirectModule, index: number, array: IndirectModule[]) => value is IndirectModule;
|
|
12
|
+
//# sourceMappingURL=duplicateModules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplicateModules.d.ts","sourceRoot":"","sources":["../../../src/lib/duplicateModules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE1C;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,UAAW,cAAc,SAAS,MAAM,SAAS,cAAc,EAAE,4BAE7F,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializable.d.ts","sourceRoot":"","sources":["../../../src/lib/serializable.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,YAAY,UAAW,OAAO,UAAU,MAAM,KAAG,OAAO,GAAG,IAqBvE,CAAA;AAED,eAAO,MAAM,iBAAiB,UAAW,OAAO,YAE/C,CAAA"}
|
package/package.json
CHANGED
|
@@ -11,19 +11,21 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@xylabs/assert": "^2.9.3",
|
|
14
|
-
"@xyo-network/account-model": "^2.
|
|
15
|
-
"@xyo-network/address-payload-plugin": "^2.
|
|
16
|
-
"@xyo-network/boundwitness-
|
|
17
|
-
"@xyo-network/
|
|
18
|
-
"@xyo-network/
|
|
19
|
-
"@xyo-network/
|
|
20
|
-
"@xyo-network/
|
|
21
|
-
"@xyo-network/
|
|
22
|
-
"@xyo-network/
|
|
14
|
+
"@xyo-network/account-model": "^2.65.0",
|
|
15
|
+
"@xyo-network/address-payload-plugin": "^2.65.0",
|
|
16
|
+
"@xyo-network/boundwitness-builder": "^2.65.0",
|
|
17
|
+
"@xyo-network/boundwitness-model": "^2.65.0",
|
|
18
|
+
"@xyo-network/core": "^2.65.0",
|
|
19
|
+
"@xyo-network/manifest-model": "^2.65.0",
|
|
20
|
+
"@xyo-network/module-events": "^2.65.0",
|
|
21
|
+
"@xyo-network/payload-model": "^2.65.0",
|
|
22
|
+
"@xyo-network/promise": "^2.65.0",
|
|
23
|
+
"@xyo-network/wallet-model": "^2.65.0",
|
|
24
|
+
"lodash": "^4.17.21"
|
|
23
25
|
},
|
|
24
26
|
"devDependencies": {
|
|
25
|
-
"@xylabs/ts-scripts-yarn3": "^2.18.
|
|
26
|
-
"@xylabs/tsconfig": "^2.18.
|
|
27
|
+
"@xylabs/ts-scripts-yarn3": "^2.18.10",
|
|
28
|
+
"@xylabs/tsconfig": "^2.18.10",
|
|
27
29
|
"typescript": "^5.1.6"
|
|
28
30
|
},
|
|
29
31
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
@@ -59,5 +61,5 @@
|
|
|
59
61
|
},
|
|
60
62
|
"sideEffects": false,
|
|
61
63
|
"types": "dist/types/index.d.ts",
|
|
62
|
-
"version": "2.
|
|
64
|
+
"version": "2.65.0"
|
|
63
65
|
}
|
package/src/CreatableModule.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { Logger } from '@xyo-network/core'
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { IndirectModule } from './Module'
|
|
4
4
|
|
|
5
|
-
export interface CreatableModule<T extends
|
|
5
|
+
export interface CreatableModule<T extends IndirectModule = IndirectModule> {
|
|
6
6
|
configSchema: string
|
|
7
7
|
configSchemas: string[]
|
|
8
8
|
defaultLogger?: Logger
|
|
9
9
|
new (privateConstructorKey: string, params: T['params']): T
|
|
10
|
-
create<T extends
|
|
11
|
-
factory<T extends
|
|
10
|
+
create<T extends IndirectModule>(this: CreatableModule<T>, params?: T['params']): Promise<T>
|
|
11
|
+
factory<T extends IndirectModule>(this: CreatableModule<T>, params?: T['params']): CreatableModuleFactory<T>
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export type CreatableModuleFactory<T extends
|
|
15
|
-
create<T extends
|
|
14
|
+
export type CreatableModuleFactory<T extends IndirectModule = IndirectModule> = Omit<Omit<CreatableModule<T>, 'new'>, 'create'> & {
|
|
15
|
+
create<T extends IndirectModule>(this: CreatableModuleFactory<T>, params?: T['params']): Promise<T>
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
/**
|
|
@@ -21,7 +21,7 @@ export type CreatableModuleFactory<T extends Module = Module> = Omit<Omit<Creata
|
|
|
21
21
|
* @returns The decorated Module requiring it implement the members
|
|
22
22
|
* of the CreatableModule as statics properties/methods
|
|
23
23
|
*/
|
|
24
|
-
export function creatableModule<TModule extends
|
|
24
|
+
export function creatableModule<TModule extends IndirectModule = IndirectModule>() {
|
|
25
25
|
return <U extends CreatableModule<TModule>>(constructor: U) => {
|
|
26
26
|
constructor
|
|
27
27
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { EventData } from '@xyo-network/module-events'
|
|
2
|
+
|
|
3
|
+
import { IndirectModule, ModuleEventArgs } from '../Module'
|
|
4
|
+
|
|
5
|
+
export type ModuleBusyEventArgs<TModule extends IndirectModule = IndirectModule> = ModuleEventArgs<TModule, { busy: boolean }>
|
|
6
|
+
|
|
7
|
+
export interface ModuleBusyEventData extends EventData {
|
|
8
|
+
moduleBusy: ModuleBusyEventArgs
|
|
9
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { QueryBoundWitness } from '@xyo-network/boundwitness-builder'
|
|
2
|
+
import { EventData } from '@xyo-network/module-events'
|
|
3
|
+
import { Payload } from '@xyo-network/payload-model'
|
|
4
|
+
|
|
5
|
+
import { IndirectModule, ModuleEventArgs } from '../Module'
|
|
6
|
+
import { ModuleQueryResult } from '../ModuleQueryResult'
|
|
7
|
+
|
|
8
|
+
export type ModuleQueriedEventArgs = ModuleEventArgs<
|
|
9
|
+
IndirectModule,
|
|
10
|
+
{
|
|
11
|
+
payloads?: Payload[]
|
|
12
|
+
query: QueryBoundWitness
|
|
13
|
+
result: ModuleQueryResult
|
|
14
|
+
}
|
|
15
|
+
>
|
|
16
|
+
|
|
17
|
+
export interface ModuleQueriedEventData extends EventData {
|
|
18
|
+
moduleQueried: ModuleQueriedEventArgs
|
|
19
|
+
}
|
package/src/Module.ts
CHANGED
|
@@ -1,32 +1,28 @@
|
|
|
1
1
|
import { AccountInstance } from '@xyo-network/account-model'
|
|
2
|
+
import { QueryBoundWitness } from '@xyo-network/boundwitness-builder'
|
|
2
3
|
import { ModuleManifestPayload } from '@xyo-network/manifest-model'
|
|
3
|
-
import { EventArgs,
|
|
4
|
+
import { EventArgs, EventFunctions } from '@xyo-network/module-events'
|
|
4
5
|
import { Payload } from '@xyo-network/payload-model'
|
|
5
6
|
import { Promisable } from '@xyo-network/promise'
|
|
6
7
|
|
|
7
8
|
import { AnyConfigSchema, ModuleConfig } from './Config'
|
|
9
|
+
import { ModuleBusyEventData, ModuleQueriedEventData } from './Events'
|
|
8
10
|
import { ModuleDescription } from './ModuleDescription'
|
|
9
11
|
import { ModuleFilter } from './ModuleFilter'
|
|
10
12
|
import { ModuleParams } from './ModuleParams'
|
|
11
13
|
import { ModuleQueryResult } from './ModuleQueryResult'
|
|
12
14
|
import { AddressPreviousHashPayload } from './Queries'
|
|
13
|
-
import { QueryBoundWitness } from './Query'
|
|
14
15
|
|
|
15
|
-
export interface
|
|
16
|
+
export interface ResolveFunctions {
|
|
17
|
+
resolve<TModule extends Module = Module>(filter?: ModuleFilter): Promisable<TModule[]>
|
|
18
|
+
resolve<TModule extends Module = Module>(nameOrAddress: string): Promisable<TModule | undefined>
|
|
19
|
+
resolve<TModule extends Module = Module>(nameOrAddressOrFilter?: ModuleFilter | string): Promisable<TModule | TModule[] | undefined>
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface ModuleResolver extends ResolveFunctions {
|
|
16
23
|
addResolver: (resolver: ModuleResolver) => this
|
|
17
24
|
isModuleResolver: boolean
|
|
18
25
|
removeResolver: (resolver: ModuleResolver) => this
|
|
19
|
-
/**
|
|
20
|
-
* Resolves all modules matching the supplied filter. If no filter
|
|
21
|
-
* is supplied, all modules are returned
|
|
22
|
-
* @param filter Filter criteria for the desired modules
|
|
23
|
-
*/
|
|
24
|
-
resolve<T extends IndirectModule = IndirectModule>(filter?: ModuleFilter): Promisable<T[]>
|
|
25
|
-
/**
|
|
26
|
-
* Resolves a single module, or undefined if no modules matched the filter.
|
|
27
|
-
* @param filter The desired Module's Address or Name
|
|
28
|
-
*/
|
|
29
|
-
resolveOne<T extends IndirectModule = IndirectModule>(filter: string): Promisable<T | undefined>
|
|
30
26
|
}
|
|
31
27
|
|
|
32
28
|
export type ModuleEventArgs<
|
|
@@ -40,18 +36,7 @@ export type ModuleEventArgs<
|
|
|
40
36
|
module: TModule
|
|
41
37
|
}
|
|
42
38
|
|
|
43
|
-
export
|
|
44
|
-
IndirectModule,
|
|
45
|
-
{
|
|
46
|
-
payloads?: Payload[]
|
|
47
|
-
query: QueryBoundWitness
|
|
48
|
-
result: ModuleQueryResult
|
|
49
|
-
}
|
|
50
|
-
>
|
|
51
|
-
|
|
52
|
-
export interface ModuleEventData extends EventData {
|
|
53
|
-
moduleQueried: ModuleQueriedEventArgs
|
|
54
|
-
}
|
|
39
|
+
export interface ModuleEventData extends ModuleQueriedEventData, ModuleBusyEventData {}
|
|
55
40
|
|
|
56
41
|
export type ModuleQueryFunctions = {
|
|
57
42
|
addressPreviousHash: () => Promisable<AddressPreviousHashPayload>
|
|
@@ -100,7 +85,7 @@ export type IndirectModule<
|
|
|
100
85
|
export type DirectModule<
|
|
101
86
|
TParams extends ModuleParams<AnyConfigSchema<ModuleConfig>> = ModuleParams<AnyConfigSchema<ModuleConfig>>,
|
|
102
87
|
TEventData extends ModuleEventData = ModuleEventData,
|
|
103
|
-
> = IndirectModule<TParams, TEventData> & ModuleQueryFunctions
|
|
88
|
+
> = IndirectModule<TParams, TEventData> & ModuleQueryFunctions & ResolveFunctions
|
|
104
89
|
|
|
105
90
|
export type ModuleInstance<
|
|
106
91
|
TParams extends ModuleParams<AnyConfigSchema<ModuleConfig>> = ModuleParams<AnyConfigSchema<ModuleConfig>>,
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Logger } from '@xyo-network/core'
|
|
2
|
+
import merge from 'lodash/merge'
|
|
3
|
+
|
|
4
|
+
import { CreatableModule, CreatableModuleFactory } from './CreatableModule'
|
|
5
|
+
import { IndirectModule } from './Module'
|
|
6
|
+
|
|
7
|
+
export class ModuleFactory<TModule extends IndirectModule> implements CreatableModuleFactory<TModule> {
|
|
8
|
+
configSchemas: CreatableModuleFactory<TModule>['configSchemas']
|
|
9
|
+
|
|
10
|
+
creatableModule: CreatableModule<TModule>
|
|
11
|
+
|
|
12
|
+
defaultLogger?: Logger | undefined
|
|
13
|
+
|
|
14
|
+
defaultParams?: TModule['params']
|
|
15
|
+
|
|
16
|
+
constructor(creatableModule: CreatableModule<TModule>, params?: TModule['params']) {
|
|
17
|
+
this.creatableModule = creatableModule
|
|
18
|
+
this.defaultParams = params
|
|
19
|
+
this.configSchemas = creatableModule.configSchemas
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
get configSchema(): string {
|
|
23
|
+
return this.configSchemas[0]
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
static withParams<T extends IndirectModule>(creatableModule: CreatableModule<T>, params?: T['params']) {
|
|
27
|
+
return new ModuleFactory(creatableModule, params)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
create<T extends IndirectModule>(this: CreatableModuleFactory<T>, params?: TModule['params'] | undefined): Promise<T> {
|
|
31
|
+
const factory = this as ModuleFactory<T>
|
|
32
|
+
const schema = factory.creatableModule.configSchema
|
|
33
|
+
const mergedParams: TModule['params'] = merge(factory.defaultParams ?? {}, params, { config: { schema } })
|
|
34
|
+
return factory.creatableModule.create<T>(mergedParams)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
factory<T extends IndirectModule>(this: CreatableModule<T>, _params?: T['params'] | undefined): CreatableModuleFactory<T> {
|
|
38
|
+
throw new Error('Method not implemented.')
|
|
39
|
+
}
|
|
40
|
+
}
|
package/src/ModuleQueryResult.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { BoundWitness } from '@xyo-network/boundwitness-model'
|
|
2
2
|
import { Payload } from '@xyo-network/payload-model'
|
|
3
3
|
|
|
4
|
-
export type ModuleQueryResult<
|
|
4
|
+
export type ModuleQueryResult<E extends Payload[] = Payload[]> = [BoundWitness, Payload[], E]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Query } from '
|
|
1
|
+
import { Query } from '@xyo-network/payload-model'
|
|
2
2
|
|
|
3
3
|
export type ModuleDescribeQuerySchema = 'network.xyo.query.module.describe'
|
|
4
4
|
export const ModuleDescribeQuerySchema: ModuleDescribeQuerySchema = 'network.xyo.query.module.describe'
|
package/src/Queries/Discover.ts
CHANGED
package/src/Queries/Manifest.ts
CHANGED
package/src/Queries/Subscribe.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Query } from '
|
|
1
|
+
import { Query } from '@xyo-network/payload-model'
|
|
2
2
|
|
|
3
3
|
export type ModuleSubscribeQuerySchema = 'network.xyo.query.module.subscribe'
|
|
4
4
|
export const ModuleSubscribeQuerySchema: ModuleSubscribeQuerySchema = 'network.xyo.query.module.subscribe'
|
package/src/Queries/index.ts
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
export * from './asModule'
|
|
2
2
|
export * from './Config'
|
|
3
3
|
export * from './CreatableModule'
|
|
4
|
-
export * from './
|
|
4
|
+
export * from './CreatableModuleDictionary'
|
|
5
|
+
export * from './Events'
|
|
5
6
|
export * from './isModule'
|
|
7
|
+
export * from './lib'
|
|
6
8
|
export * from './Module'
|
|
7
9
|
export * from './ModuleDescription'
|
|
10
|
+
export * from './ModuleFactory'
|
|
8
11
|
export * from './ModuleFilter'
|
|
9
12
|
export * from './ModuleParams'
|
|
10
13
|
export * from './ModuleQueryResult'
|
|
11
14
|
export * from './ModuleRepository'
|
|
12
15
|
export * from './Queries'
|
|
13
|
-
export * from './Query'
|
|
14
16
|
export * from './withModule'
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IndirectModule } from '../Module'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Used to filter duplicates from an array of modules
|
|
5
|
+
* @example: modulesArray.filter(duplicateModules)
|
|
6
|
+
* @param value Current Module
|
|
7
|
+
* @param index Current Module's index
|
|
8
|
+
* @param array Module Array
|
|
9
|
+
* @returns True if the Module's address is the first occurrence of
|
|
10
|
+
* that address in the array, false otherwise
|
|
11
|
+
*/
|
|
12
|
+
export const duplicateModules = (value: IndirectModule, index: number, array: IndirectModule[]): value is IndirectModule => {
|
|
13
|
+
return array.findIndex((v) => v.address === value.address) === index
|
|
14
|
+
}
|
package/src/lib/index.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Inspired by https://stackoverflow.com/a/49079549/2803259
|
|
2
|
+
|
|
3
|
+
import every from 'lodash/every'
|
|
4
|
+
import isArray from 'lodash/isArray'
|
|
5
|
+
import isBoolean from 'lodash/isBoolean'
|
|
6
|
+
import isNull from 'lodash/isNull'
|
|
7
|
+
import isNumber from 'lodash/isNumber'
|
|
8
|
+
import isPlainObject from 'lodash/isPlainObject'
|
|
9
|
+
import isString from 'lodash/isString'
|
|
10
|
+
import isUndefined from 'lodash/isUndefined'
|
|
11
|
+
import overSome from 'lodash/overSome'
|
|
12
|
+
|
|
13
|
+
const JSONPrimitiveChecks = [isUndefined, isNull, isBoolean, isNumber, isString]
|
|
14
|
+
const JSONComplexChecks = [isPlainObject, isArray]
|
|
15
|
+
|
|
16
|
+
export const serializable = (field: unknown, depth?: number): boolean | null => {
|
|
17
|
+
let depthExceeded = false
|
|
18
|
+
const decrementDepth = () => (depth ? depth-- : undefined)
|
|
19
|
+
|
|
20
|
+
const recursiveSerializable = (field: unknown) => {
|
|
21
|
+
if (depth !== undefined && depth < 1) {
|
|
22
|
+
depthExceeded = true
|
|
23
|
+
return false
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// decrement during every recursion
|
|
27
|
+
decrementDepth()
|
|
28
|
+
|
|
29
|
+
const nestedSerializable = (field: unknown): boolean => overSome(JSONComplexChecks)(field) && every(field as object, recursiveSerializable)
|
|
30
|
+
|
|
31
|
+
return overSome([...JSONPrimitiveChecks, nestedSerializable])(field)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const valid = recursiveSerializable(field)
|
|
35
|
+
|
|
36
|
+
return depthExceeded ? null : valid
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export const serializableField = (field: unknown) => {
|
|
40
|
+
return overSome([...JSONPrimitiveChecks, ...JSONComplexChecks])(field)
|
|
41
|
+
}
|
package/dist/cjs/Error.js
DELETED
package/dist/cjs/Error.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Error.js","sourceRoot":"","sources":["../../src/Error.ts"],"names":[],"mappings":";;;AAGa,QAAA,iBAAiB,GAAsB,0BAA0B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Payload.js","sourceRoot":"","sources":["../../../src/Query/Payload.ts"],"names":[],"mappings":""}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isQueryBoundWitness = exports.QueryBoundWitnessSchema = void 0;
|
|
4
|
-
const boundwitness_model_1 = require("@xyo-network/boundwitness-model");
|
|
5
|
-
exports.QueryBoundWitnessSchema = boundwitness_model_1.BoundWitnessSchema;
|
|
6
|
-
const isQueryBoundWitness = (x) => (0, boundwitness_model_1.isBoundWitness)(x) && (x === null || x === void 0 ? void 0 : x.query) !== undefined;
|
|
7
|
-
exports.isQueryBoundWitness = isQueryBoundWitness;
|
|
8
|
-
//# sourceMappingURL=QueryBoundWitness.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitness.js","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitness.ts"],"names":[],"mappings":";;;AAAA,wEAAkG;AAIrF,QAAA,uBAAuB,GAA4B,uCAAkB,CAAA;AAQ3E,MAAM,mBAAmB,GAAG,CAAC,CAAkB,EAA0B,EAAE,CAAC,IAAA,mCAAc,EAAC,CAAC,CAAC,IAAI,CAAC,CAAuB,aAAvB,CAAC,uBAAD,CAAC,CAAwB,KAAK,MAAK,SAAS,CAAA;AAAxI,QAAA,mBAAmB,uBAAqH"}
|
package/dist/cjs/Query/index.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./Payload"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./QueryBoundWitness"), exports);
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Query/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB;AACzB,8DAAmC"}
|