@xyo-network/module-model 2.64.6 → 2.64.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/cjs/Queries/{ModuleAccount → ModuleAddress}/Payload.js.map +1 -1
  2. package/dist/cjs/Queries/ModuleAddress/Query.js +5 -0
  3. package/dist/cjs/Queries/ModuleAddress/Query.js.map +1 -0
  4. package/dist/cjs/Queries/ModuleAddress/index.js.map +1 -0
  5. package/dist/cjs/Queries/index.js +1 -1
  6. package/dist/cjs/asModule.js +28 -0
  7. package/dist/cjs/asModule.js.map +1 -0
  8. package/dist/cjs/index.js +1 -0
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/isModule.js +46 -9
  11. package/dist/cjs/isModule.js.map +1 -1
  12. package/dist/cjs/withModule.js +4 -3
  13. package/dist/cjs/withModule.js.map +1 -1
  14. package/dist/docs.json +5751 -2708
  15. package/dist/esm/Queries/{ModuleAccount → ModuleAddress}/Payload.js.map +1 -1
  16. package/dist/esm/Queries/ModuleAddress/Query.js +2 -0
  17. package/dist/esm/Queries/ModuleAddress/Query.js.map +1 -0
  18. package/dist/esm/Queries/ModuleAddress/index.js.map +1 -0
  19. package/dist/esm/Queries/index.js +1 -1
  20. package/dist/esm/asModule.js +25 -0
  21. package/dist/esm/asModule.js.map +1 -0
  22. package/dist/esm/index.js +1 -0
  23. package/dist/esm/index.js.map +1 -1
  24. package/dist/esm/isModule.js +41 -8
  25. package/dist/esm/isModule.js.map +1 -1
  26. package/dist/esm/withModule.js +4 -3
  27. package/dist/esm/withModule.js.map +1 -1
  28. package/dist/types/Module.d.ts +15 -7
  29. package/dist/types/Module.d.ts.map +1 -1
  30. package/dist/types/Queries/{ModuleAccount → ModuleAddress}/Payload.d.ts.map +1 -1
  31. package/dist/types/Queries/ModuleAddress/Query.d.ts +7 -0
  32. package/dist/types/Queries/{ModuleAccount → ModuleAddress}/Query.d.ts.map +1 -1
  33. package/dist/types/Queries/ModuleAddress/index.d.ts.map +1 -0
  34. package/dist/types/Queries/index.d.ts +3 -3
  35. package/dist/types/Query/QueryBoundWitness.d.ts +2 -0
  36. package/dist/types/Query/QueryBoundWitness.d.ts.map +1 -1
  37. package/dist/types/asModule.d.ts +16 -0
  38. package/dist/types/asModule.d.ts.map +1 -0
  39. package/dist/types/index.d.ts +1 -0
  40. package/dist/types/index.d.ts.map +1 -1
  41. package/dist/types/isModule.d.ts +12 -4
  42. package/dist/types/isModule.d.ts.map +1 -1
  43. package/dist/types/withModule.d.ts +5 -5
  44. package/dist/types/withModule.d.ts.map +1 -1
  45. package/package.json +11 -10
  46. package/src/Module.ts +25 -8
  47. package/src/Queries/ModuleAddress/Query.ts +8 -0
  48. package/src/Queries/index.ts +3 -3
  49. package/src/asModule.ts +39 -0
  50. package/src/index.ts +1 -0
  51. package/src/isModule.ts +59 -14
  52. package/src/withModule.ts +7 -7
  53. package/dist/cjs/Queries/ModuleAccount/Query.js +0 -5
  54. package/dist/cjs/Queries/ModuleAccount/Query.js.map +0 -1
  55. package/dist/cjs/Queries/ModuleAccount/index.js.map +0 -1
  56. package/dist/esm/Queries/ModuleAccount/Query.js +0 -2
  57. package/dist/esm/Queries/ModuleAccount/Query.js.map +0 -1
  58. package/dist/esm/Queries/ModuleAccount/index.js.map +0 -1
  59. package/dist/types/Queries/ModuleAccount/Query.d.ts +0 -7
  60. package/dist/types/Queries/ModuleAccount/index.d.ts.map +0 -1
  61. package/src/Queries/ModuleAccount/Query.ts +0 -8
  62. /package/dist/cjs/Queries/{ModuleAccount → ModuleAddress}/Payload.js +0 -0
  63. /package/dist/cjs/Queries/{ModuleAccount → ModuleAddress}/index.js +0 -0
  64. /package/dist/esm/Queries/{ModuleAccount → ModuleAddress}/Payload.js +0 -0
  65. /package/dist/esm/Queries/{ModuleAccount → ModuleAddress}/index.js +0 -0
  66. /package/dist/types/Queries/{ModuleAccount → ModuleAddress}/Payload.d.ts +0 -0
  67. /package/dist/types/Queries/{ModuleAccount → ModuleAddress}/index.d.ts +0 -0
  68. /package/src/Queries/{ModuleAccount → ModuleAddress}/Payload.ts +0 -0
  69. /package/src/Queries/{ModuleAccount → ModuleAddress}/index.ts +0 -0
package/src/isModule.ts CHANGED
@@ -1,24 +1,69 @@
1
- import { Module } from './Module'
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { Module, ModuleInstance } from './Module'
2
3
 
3
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
- export type ModuleTypeCheck<T extends Module = Module> = (module: any) => module is T
4
+ export type InstanceTypeCheck<T extends object = object> = (module: object) => module is T
5
+
6
+ export type ModuleTypeCheck<T extends Module = Module> = InstanceTypeCheck<T>
7
+
8
+ export type FieldType = 'string' | 'number' | 'object' | 'symbol' | 'symbol' | 'undefined' | 'null' | 'array' | 'function' | 'payload'
9
+
10
+ export type InstanceTypeShape = Record<string | number | symbol, FieldType>
11
+
12
+ export const isType = (value: any, expectedType: FieldType) => {
13
+ if (expectedType === 'array') {
14
+ return Array.isArray(value)
15
+ } else if (expectedType === 'payload') {
16
+ return typeof value === 'object' && typeof value.schema === 'string'
17
+ } else {
18
+ return typeof value === expectedType
19
+ }
20
+ }
21
+
22
+ export const IsInstanceFactory = {
23
+ create: <T extends object = object>(shape?: InstanceTypeShape, additionalCheck?: (module: any) => boolean): InstanceTypeCheck<T> => {
24
+ return (module: any = {}): module is T => {
25
+ return (
26
+ (additionalCheck?.(module) ?? true) &&
27
+ (Object.entries(shape ?? {}).reduce((prev, [key, type]) => prev && isType(module[key], type), true) ?? true)
28
+ )
29
+ }
30
+ },
31
+ }
5
32
 
6
33
  export const IsModuleFactory = {
7
- create: <T extends Module = Module>(
8
- baseCheck?: ModuleTypeCheck,
9
- expectedFunctions?: string[],
10
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
- additionalCheck?: (module: any) => boolean,
12
- ): ModuleTypeCheck<T> => {
13
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
- return (module: any): module is T => {
34
+ create: <T extends ModuleInstance = ModuleInstance>(expectedQueries?: string[], additionalCheck?: (module: any) => boolean): ModuleTypeCheck<T> => {
35
+ return (module: any = {}): module is T => {
15
36
  return (
16
- (baseCheck?.(module) || true) &&
37
+ isModuleInstance(module) &&
17
38
  (additionalCheck?.(module) ?? true) &&
18
- (expectedFunctions?.reduce((prev, value) => prev && typeof module[value] === 'function', true) ?? true)
39
+ (expectedQueries?.reduce((prev, query) => prev && module.queries.includes(query), true) ?? true)
19
40
  )
20
41
  }
21
42
  },
22
43
  }
23
44
 
24
- export const isModule: ModuleTypeCheck<Module> = IsModuleFactory.create<Module>(undefined, ['query'], (module) => typeof module.config === 'object')
45
+ export const isModuleInstance: InstanceTypeCheck<ModuleInstance> = IsInstanceFactory.create<ModuleInstance>({
46
+ account: 'object',
47
+ address: 'string',
48
+ config: 'object',
49
+ discover: 'function',
50
+ downResolver: 'object',
51
+ manifest: 'function',
52
+ params: 'object',
53
+ queries: 'array',
54
+ query: 'function',
55
+ queryable: 'function',
56
+ upResolver: 'object',
57
+ })
58
+
59
+ export const isModule = <T extends Module = Module>(
60
+ module: any = {},
61
+ expectedQueries?: string[],
62
+ additionalCheck?: (module: any) => boolean,
63
+ ): module is T => {
64
+ return (
65
+ isModuleInstance(module) &&
66
+ (additionalCheck?.(module) ?? true) &&
67
+ (expectedQueries?.reduce((prev, query) => prev && module.queries.includes(query), true) ?? true)
68
+ )
69
+ }
package/src/withModule.ts CHANGED
@@ -1,17 +1,17 @@
1
- import { isModule, ModuleTypeCheck } from './isModule'
2
- import { Module } from './Module'
1
+ import { InstanceTypeCheck, isModule, isModuleInstance } from './isModule'
3
2
 
4
- export const WithModuleFactory = {
5
- create: <T extends Module = Module>(typeCheck: ModuleTypeCheck<T>) => {
6
- return <R extends void = void>(
3
+ export const WithFactory = {
4
+ create: <T extends object>(typeCheck: InstanceTypeCheck<T>) => {
5
+ return <R>(
7
6
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
7
  module: any,
9
8
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
- closure: (module: any) => R,
9
+ closure: (module: T) => R,
11
10
  ): R | undefined => {
12
11
  return typeCheck(module) ? closure(module) : undefined
13
12
  }
14
13
  },
15
14
  }
16
15
 
17
- export const withModule = WithModuleFactory.create(isModule)
16
+ export const withModule = WithFactory.create(isModule)
17
+ export const withModuleInstance = WithFactory.create(isModuleInstance)
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ModuleAccountQuerySchema = void 0;
4
- exports.ModuleAccountQuerySchema = 'network.xyo.query.module.account';
5
- //# sourceMappingURL=Query.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Query.js","sourceRoot":"","sources":["../../../../src/Queries/ModuleAccount/Query.ts"],"names":[],"mappings":";;;AAGa,QAAA,wBAAwB,GAA6B,kCAAkC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Queries/ModuleAccount/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB;AACzB,kDAAuB"}
@@ -1,2 +0,0 @@
1
- export const ModuleAccountQuerySchema = 'network.xyo.query.module.account';
2
- //# sourceMappingURL=Query.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Query.js","sourceRoot":"","sources":["../../../../src/Queries/ModuleAccount/Query.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,wBAAwB,GAA6B,kCAAkC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Queries/ModuleAccount/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA"}
@@ -1,7 +0,0 @@
1
- import { Query } from '../../Query';
2
- export type ModuleAccountQuerySchema = 'network.xyo.query.module.account';
3
- export declare const ModuleAccountQuerySchema: ModuleAccountQuerySchema;
4
- export type ModuleAccountQuery = Query<{
5
- schema: ModuleAccountQuerySchema;
6
- }>;
7
- //# sourceMappingURL=Query.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Queries/ModuleAccount/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA"}
@@ -1,8 +0,0 @@
1
- import { Query } from '../../Query'
2
-
3
- export type ModuleAccountQuerySchema = 'network.xyo.query.module.account'
4
- export const ModuleAccountQuerySchema: ModuleAccountQuerySchema = 'network.xyo.query.module.account'
5
-
6
- export type ModuleAccountQuery = Query<{
7
- schema: ModuleAccountQuerySchema
8
- }>