@xyo-network/module-model 2.64.10 → 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.
Files changed (121) hide show
  1. package/dist/cjs/CreatableModuleDictionary.js +3 -0
  2. package/dist/cjs/CreatableModuleDictionary.js.map +1 -0
  3. package/dist/cjs/{Query/Payload.js → Events/ModuleBusy.js} +1 -1
  4. package/dist/cjs/Events/ModuleBusy.js.map +1 -0
  5. package/dist/cjs/Events/ModuleQueried.js +3 -0
  6. package/dist/cjs/Events/ModuleQueried.js.map +1 -0
  7. package/dist/cjs/Events/index.js +6 -0
  8. package/dist/cjs/Events/index.js.map +1 -0
  9. package/dist/cjs/ModuleFactory.js +30 -0
  10. package/dist/cjs/ModuleFactory.js.map +1 -0
  11. package/dist/cjs/Queries/index.js.map +1 -1
  12. package/dist/cjs/index.js +4 -2
  13. package/dist/cjs/index.js.map +1 -1
  14. package/dist/cjs/lib/duplicateModules.js +17 -0
  15. package/dist/cjs/lib/duplicateModules.js.map +1 -0
  16. package/dist/cjs/lib/index.js +6 -0
  17. package/dist/cjs/lib/index.js.map +1 -0
  18. package/dist/cjs/lib/serializable.js +38 -0
  19. package/dist/cjs/lib/serializable.js.map +1 -0
  20. package/dist/esm/CreatableModuleDictionary.js +2 -0
  21. package/dist/esm/CreatableModuleDictionary.js.map +1 -0
  22. package/dist/esm/Events/ModuleBusy.js +2 -0
  23. package/dist/esm/Events/ModuleBusy.js.map +1 -0
  24. package/dist/esm/Events/ModuleQueried.js +2 -0
  25. package/dist/esm/Events/ModuleQueried.js.map +1 -0
  26. package/dist/esm/Events/index.js +3 -0
  27. package/dist/esm/Events/index.js.map +1 -0
  28. package/dist/esm/ModuleFactory.js +28 -0
  29. package/dist/esm/ModuleFactory.js.map +1 -0
  30. package/dist/esm/Queries/index.js.map +1 -1
  31. package/dist/esm/index.js +4 -2
  32. package/dist/esm/index.js.map +1 -1
  33. package/dist/esm/lib/duplicateModules.js +13 -0
  34. package/dist/esm/lib/duplicateModules.js.map +1 -0
  35. package/dist/esm/lib/index.js +3 -0
  36. package/dist/esm/lib/index.js.map +1 -0
  37. package/dist/esm/lib/serializable.js +32 -0
  38. package/dist/esm/lib/serializable.js.map +1 -0
  39. package/dist/types/CreatableModule.d.ts +7 -7
  40. package/dist/types/CreatableModule.d.ts.map +1 -1
  41. package/dist/types/CreatableModuleDictionary.d.ts +5 -0
  42. package/dist/types/CreatableModuleDictionary.d.ts.map +1 -0
  43. package/dist/types/Events/ModuleBusy.d.ts +9 -0
  44. package/dist/types/Events/ModuleBusy.d.ts.map +1 -0
  45. package/dist/types/Events/ModuleQueried.d.ts +14 -0
  46. package/dist/types/Events/ModuleQueried.d.ts.map +1 -0
  47. package/dist/types/Events/index.d.ts +3 -0
  48. package/dist/types/Events/index.d.ts.map +1 -0
  49. package/dist/types/Module.d.ts +11 -22
  50. package/dist/types/Module.d.ts.map +1 -1
  51. package/dist/types/ModuleFactory.d.ts +15 -0
  52. package/dist/types/ModuleFactory.d.ts.map +1 -0
  53. package/dist/types/ModuleQueryResult.d.ts +1 -1
  54. package/dist/types/ModuleQueryResult.d.ts.map +1 -1
  55. package/dist/types/Queries/Describe/Query.d.ts +1 -1
  56. package/dist/types/Queries/Describe/Query.d.ts.map +1 -1
  57. package/dist/types/Queries/Discover.d.ts +1 -1
  58. package/dist/types/Queries/Discover.d.ts.map +1 -1
  59. package/dist/types/Queries/Manifest.d.ts +1 -1
  60. package/dist/types/Queries/Manifest.d.ts.map +1 -1
  61. package/dist/types/Queries/ModuleAddress/Query.d.ts +1 -1
  62. package/dist/types/Queries/ModuleAddress/Query.d.ts.map +1 -1
  63. package/dist/types/Queries/Subscribe.d.ts +1 -1
  64. package/dist/types/Queries/Subscribe.d.ts.map +1 -1
  65. package/dist/types/Queries/index.d.ts +1 -1
  66. package/dist/types/Queries/index.d.ts.map +1 -1
  67. package/dist/types/index.d.ts +4 -2
  68. package/dist/types/index.d.ts.map +1 -1
  69. package/dist/types/lib/duplicateModules.d.ts +12 -0
  70. package/dist/types/lib/duplicateModules.d.ts.map +1 -0
  71. package/dist/types/lib/index.d.ts +3 -0
  72. package/dist/types/lib/index.d.ts.map +1 -0
  73. package/dist/types/lib/serializable.d.ts +3 -0
  74. package/dist/types/lib/serializable.d.ts.map +1 -0
  75. package/package.json +14 -12
  76. package/src/CreatableModule.ts +7 -7
  77. package/src/CreatableModuleDictionary.ts +5 -0
  78. package/src/Events/ModuleBusy.ts +9 -0
  79. package/src/Events/ModuleQueried.ts +19 -0
  80. package/src/Events/index.ts +2 -0
  81. package/src/Module.ts +12 -27
  82. package/src/ModuleFactory.ts +40 -0
  83. package/src/ModuleQueryResult.ts +1 -1
  84. package/src/Queries/Describe/Query.ts +1 -1
  85. package/src/Queries/Discover.ts +1 -1
  86. package/src/Queries/Manifest.ts +1 -1
  87. package/src/Queries/ModuleAddress/Query.ts +1 -1
  88. package/src/Queries/Subscribe.ts +1 -1
  89. package/src/Queries/index.ts +2 -1
  90. package/src/index.ts +4 -2
  91. package/src/lib/duplicateModules.ts +14 -0
  92. package/src/lib/index.ts +2 -0
  93. package/src/lib/serializable.ts +41 -0
  94. package/dist/cjs/Error.js +0 -5
  95. package/dist/cjs/Error.js.map +0 -1
  96. package/dist/cjs/Query/Payload.js.map +0 -1
  97. package/dist/cjs/Query/QueryBoundWitness.js +0 -8
  98. package/dist/cjs/Query/QueryBoundWitness.js.map +0 -1
  99. package/dist/cjs/Query/index.js +0 -6
  100. package/dist/cjs/Query/index.js.map +0 -1
  101. package/dist/docs.json +0 -24709
  102. package/dist/esm/Error.js +0 -2
  103. package/dist/esm/Error.js.map +0 -1
  104. package/dist/esm/Query/Payload.js +0 -2
  105. package/dist/esm/Query/Payload.js.map +0 -1
  106. package/dist/esm/Query/QueryBoundWitness.js +0 -4
  107. package/dist/esm/Query/QueryBoundWitness.js.map +0 -1
  108. package/dist/esm/Query/index.js +0 -3
  109. package/dist/esm/Query/index.js.map +0 -1
  110. package/dist/types/Error.d.ts +0 -11
  111. package/dist/types/Error.d.ts.map +0 -1
  112. package/dist/types/Query/Payload.d.ts +0 -13
  113. package/dist/types/Query/Payload.d.ts.map +0 -1
  114. package/dist/types/Query/QueryBoundWitness.d.ts +0 -17
  115. package/dist/types/Query/QueryBoundWitness.d.ts.map +0 -1
  116. package/dist/types/Query/index.d.ts +0 -3
  117. package/dist/types/Query/index.d.ts.map +0 -1
  118. package/src/Error.ts +0 -12
  119. package/src/Query/Payload.ts +0 -17
  120. package/src/Query/QueryBoundWitness.ts +0 -13
  121. 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,UAAU,CAAA;AAEhC,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
+ {"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 '../../Query';
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,aAAa,CAAA;AAEnC,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
+ {"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 '../Query';
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,UAAU,CAAA;AAEhC,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
+ {"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,4 +1,4 @@
1
- import { Query } from '../Query';
1
+ import { Query } from '@xyo-network/payload-model';
2
2
  import { ModuleDescribeQuery } from './Describe';
3
3
  import { ModuleDiscoverQuery } from './Discover';
4
4
  import { ModuleAddressQuery } from './ModuleAddress';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Queries/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,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"}
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"}
@@ -1,15 +1,17 @@
1
1
  export * from './asModule';
2
2
  export * from './Config';
3
3
  export * from './CreatableModule';
4
- export * from './Error';
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,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA"}
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,3 @@
1
+ export * from './duplicateModules';
2
+ export * from './serializable';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ export declare const serializable: (field: unknown, depth?: number) => boolean | null;
2
+ export declare const serializableField: (field: unknown) => boolean;
3
+ //# sourceMappingURL=serializable.d.ts.map
@@ -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.64.10",
15
- "@xyo-network/address-payload-plugin": "^2.64.10",
16
- "@xyo-network/boundwitness-model": "^2.64.10",
17
- "@xyo-network/core": "^2.64.10",
18
- "@xyo-network/manifest-model": "^2.64.10",
19
- "@xyo-network/module-events": "^2.64.10",
20
- "@xyo-network/payload-model": "^2.64.10",
21
- "@xyo-network/promise": "^2.64.10",
22
- "@xyo-network/wallet-model": "^2.64.10"
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.7",
26
- "@xylabs/tsconfig": "^2.18.7",
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.10"
64
+ "version": "2.65.0"
63
65
  }
@@ -1,18 +1,18 @@
1
1
  import { Logger } from '@xyo-network/core'
2
2
 
3
- import { Module } from './Module'
3
+ import { IndirectModule } from './Module'
4
4
 
5
- export interface CreatableModule<T extends Module = Module> {
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 Module>(this: CreatableModule<T>, params?: T['params']): Promise<T>
11
- factory<T extends Module>(this: CreatableModule<T>, params?: T['params']): CreatableModuleFactory<T>
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 Module = Module> = Omit<Omit<CreatableModule<T>, 'new'>, 'create'> & {
15
- create<T extends Module>(this: CreatableModuleFactory<T>, params?: T['params']): Promise<T>
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 Module = Module>() {
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,5 @@
1
+ import { CreatableModuleFactory } from './CreatableModule'
2
+
3
+ export interface CreatableModuleDictionary {
4
+ [key: string]: CreatableModuleFactory
5
+ }
@@ -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
+ }
@@ -0,0 +1,2 @@
1
+ export * from './ModuleBusy'
2
+ export * from './ModuleQueried'
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, EventData, EventFunctions } from '@xyo-network/module-events'
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 ModuleResolver {
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 type ModuleQueriedEventArgs = ModuleEventArgs<
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
+ }
@@ -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<T extends Payload = Payload> = [BoundWitness, T[], Payload[]]
4
+ export type ModuleQueryResult<E extends Payload[] = Payload[]> = [BoundWitness, Payload[], E]
@@ -1,4 +1,4 @@
1
- import { Query } from '../../Query'
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'
@@ -1,4 +1,4 @@
1
- import { Query } from '../Query'
1
+ import { Query } from '@xyo-network/payload-model'
2
2
 
3
3
  export type ModuleDiscoverQuerySchema = 'network.xyo.query.module.discover'
4
4
  export const ModuleDiscoverQuerySchema: ModuleDiscoverQuerySchema = 'network.xyo.query.module.discover'
@@ -1,4 +1,4 @@
1
- import { Query } from '../Query'
1
+ import { Query } from '@xyo-network/payload-model'
2
2
 
3
3
  export type ModuleManifestQuerySchema = 'network.xyo.query.module.manifest'
4
4
  export const ModuleManifestQuerySchema: ModuleManifestQuerySchema = 'network.xyo.query.module.manifest'
@@ -1,4 +1,4 @@
1
- import { Query } from '../../Query'
1
+ import { Query } from '@xyo-network/payload-model'
2
2
 
3
3
  export type ModuleAddressQuerySchema = 'network.xyo.query.module.address'
4
4
  export const ModuleAddressQuerySchema: ModuleAddressQuerySchema = 'network.xyo.query.module.address'
@@ -1,4 +1,4 @@
1
- import { Query } from '../Query'
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'
@@ -1,4 +1,5 @@
1
- import { Query } from '../Query'
1
+ import { Query } from '@xyo-network/payload-model'
2
+
2
3
  import { ModuleDescribeQuery } from './Describe'
3
4
  import { ModuleDiscoverQuery } from './Discover'
4
5
  import { ModuleAddressQuery } from './ModuleAddress'
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 './Error'
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
+ }
@@ -0,0 +1,2 @@
1
+ export * from './duplicateModules'
2
+ export * from './serializable'
@@ -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
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ModuleErrorSchema = void 0;
4
- exports.ModuleErrorSchema = 'network.xyo.error.module';
5
- //# sourceMappingURL=Error.js.map
@@ -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"}
@@ -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"}