@xyo-network/xl1-protocol-sdk 1.26.12 → 1.26.14

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 (331) hide show
  1. package/dist/neutral/config/Actors.d.ts +1 -1
  2. package/dist/neutral/config/Base.d.ts +1 -1
  3. package/dist/neutral/config/Config.d.ts +4 -4
  4. package/dist/neutral/payloads/AddressPairPayload.d.ts +1 -1
  5. package/dist/neutral/payloads/AddressPairPayload.d.ts.map +1 -1
  6. package/dist/neutral/primitives/uncle/findBestUncle.d.ts +13 -13
  7. package/dist/neutral/primitives/uncle/findUncles.d.ts +2 -2
  8. package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts +2 -2
  9. package/dist/neutral/simple/block/SimpleBlockViewer.d.ts +2 -2
  10. package/dist/neutral/simple/chainContractViewer/SimpleChainContractViewer.d.ts +1 -1
  11. package/dist/neutral/simple/datalake/SimpleDataLakeRunner.d.ts +1 -1
  12. package/dist/neutral/simple/finalization/SimpleFinalizationViewer.d.ts +1 -1
  13. package/dist/neutral/simple/windowedBlock/SimpleWindowedBlockViewer.d.ts +10 -10
  14. package/dist/neutral/transaction/TransactionBuilder.d.ts +4 -4
  15. package/dist/neutral/transaction/signTransaction.d.ts +1 -1
  16. package/package.json +24 -21
  17. package/src/ChainContextHelpers.ts +0 -50
  18. package/src/CreatableProvider/AbstractCreatableProvider.ts +0 -97
  19. package/src/CreatableProvider/CreatableProvider.ts +0 -102
  20. package/src/CreatableProvider/CreatableProviderRegistry.ts +0 -94
  21. package/src/CreatableProvider/GetInstanceOptions.ts +0 -11
  22. package/src/CreatableProvider/LabeledCreatableProviderFactory.ts +0 -24
  23. package/src/CreatableProvider/ProviderFactory.ts +0 -138
  24. package/src/CreatableProvider/ProviderFactoryLocator.ts +0 -170
  25. package/src/CreatableProvider/ProviderFactoryLocatorInstance.ts +0 -70
  26. package/src/CreatableProvider/index.ts +0 -8
  27. package/src/SignedBigInt.ts +0 -59
  28. package/src/_internal/context/getTestProviderContext.ts +0 -13
  29. package/src/_internal/context/index.ts +0 -1
  30. package/src/_internal/index.ts +0 -2
  31. package/src/actor/ActorV3.ts +0 -177
  32. package/src/actor/index.ts +0 -1
  33. package/src/amount/ShiftedBigInt.ts +0 -73
  34. package/src/amount/XL1Amount.ts +0 -103
  35. package/src/amount/index.ts +0 -4
  36. package/src/amount/splitOnDecimal.ts +0 -6
  37. package/src/amount/splitOnDecimalToString.ts +0 -40
  38. package/src/block/hydrate/allHashesPresent.ts +0 -8
  39. package/src/block/hydrate/blockPayloadsFromHydratedBlock.ts +0 -12
  40. package/src/block/hydrate/flattenHydratedBlock.ts +0 -28
  41. package/src/block/hydrate/flattenHydratedBlocks.ts +0 -7
  42. package/src/block/hydrate/hydrateBlock.ts +0 -43
  43. package/src/block/hydrate/index.ts +0 -7
  44. package/src/block/hydrate/transactionsFromHydratedBlock.ts +0 -7
  45. package/src/block/hydrate/tryHydrateBlock.ts +0 -26
  46. package/src/block/index.ts +0 -2
  47. package/src/block/primitives/blockFromBlockNumber.ts +0 -69
  48. package/src/block/primitives/frames/calculateFramesFromRange.ts +0 -30
  49. package/src/block/primitives/frames/deepCalculateFramesFromRange.ts +0 -28
  50. package/src/block/primitives/frames/index.ts +0 -2
  51. package/src/block/primitives/hashFromBlockNumber.ts +0 -9
  52. package/src/block/primitives/index.ts +0 -7
  53. package/src/block/primitives/model.ts +0 -18
  54. package/src/block/primitives/payloads/ChainWindow.ts +0 -7
  55. package/src/block/primitives/payloads/index.ts +0 -1
  56. package/src/block/primitives/toStepIdentityString.ts +0 -6
  57. package/src/block/primitives/validateTransactionOpcodes.ts +0 -45
  58. package/src/config/Actor.ts +0 -32
  59. package/src/config/Actors.ts +0 -9
  60. package/src/config/Base.ts +0 -27
  61. package/src/config/Chain.ts +0 -23
  62. package/src/config/Config.ts +0 -24
  63. package/src/config/DataLake/DataLake.ts +0 -12
  64. package/src/config/DataLake/DataLakeRemoteConfig.ts +0 -11
  65. package/src/config/DataLake/RestDataLakeConfig.ts +0 -18
  66. package/src/config/DataLake/RouterDataLakeConfig.ts +0 -22
  67. package/src/config/DataLake/index.ts +0 -4
  68. package/src/config/DeepPartial.ts +0 -4
  69. package/src/config/Evm.ts +0 -38
  70. package/src/config/HostActor.ts +0 -32
  71. package/src/config/Log.ts +0 -25
  72. package/src/config/Provider.ts +0 -20
  73. package/src/config/Providers.ts +0 -9
  74. package/src/config/Remote.ts +0 -59
  75. package/src/config/Telemetry.ts +0 -49
  76. package/src/config/UsageMeta.ts +0 -46
  77. package/src/config/Validation.ts +0 -29
  78. package/src/config/index.ts +0 -12
  79. package/src/config/storage/Storage.ts +0 -16
  80. package/src/config/storage/driver/Mongo.ts +0 -53
  81. package/src/config/storage/driver/index.ts +0 -1
  82. package/src/config/storage/index.ts +0 -2
  83. package/src/constants.ts +0 -4
  84. package/src/context/Actor.ts +0 -20
  85. package/src/context/HostActor.ts +0 -20
  86. package/src/context/getEmptyProviderContext.ts +0 -19
  87. package/src/context/index.ts +0 -3
  88. package/src/createDeclarationPayload.ts +0 -15
  89. package/src/createTransferPayload.ts +0 -16
  90. package/src/driver/cache/LruCacheMap.ts +0 -48
  91. package/src/driver/cache/index.ts +0 -1
  92. package/src/driver/index.ts +0 -2
  93. package/src/driver/memory/MemoryMap.ts +0 -48
  94. package/src/driver/memory/index.ts +0 -1
  95. package/src/eip-712/Payloads/EIP712Data.ts +0 -35
  96. package/src/eip-712/Payloads/EIP712Signature.ts +0 -32
  97. package/src/eip-712/Payloads/index.ts +0 -2
  98. package/src/eip-712/Types.ts +0 -41
  99. package/src/eip-712/index.ts +0 -4
  100. package/src/eip-712/sign.ts +0 -19
  101. package/src/eip-712/spec/fixtures.ts +0 -27
  102. package/src/eip-712/verify.ts +0 -20
  103. package/src/getFileConfig.ts +0 -36
  104. package/src/index.ts +0 -27
  105. package/src/instances/Address.ts +0 -16
  106. package/src/instances/BoundWitness.ts +0 -13
  107. package/src/instances/Data.ts +0 -4
  108. package/src/instances/Fees.ts +0 -9
  109. package/src/instances/HydratedBoundWitness.ts +0 -16
  110. package/src/instances/Object.ts +0 -6
  111. package/src/instances/Payload.ts +0 -7
  112. package/src/instances/Signature.ts +0 -12
  113. package/src/instances/block/BlockFields.ts +0 -18
  114. package/src/instances/block/HydratedBlock.ts +0 -10
  115. package/src/instances/block/index.ts +0 -1
  116. package/src/instances/index.ts +0 -10
  117. package/src/instances/modifiers/BlockWindowInstance.ts +0 -8
  118. package/src/instances/modifiers/BlockWindowState.ts +0 -6
  119. package/src/instances/modifiers/Signed.ts +0 -9
  120. package/src/instances/modifiers/Validatable.ts +0 -6
  121. package/src/instances/modifiers/index.ts +0 -4
  122. package/src/instances/transaction/HydratedTransaction.ts +0 -9
  123. package/src/instances/transaction/TransactionFields.ts +0 -22
  124. package/src/instances/transaction/index.ts +0 -1
  125. package/src/isInternetAvailable.ts +0 -11
  126. package/src/model/ChainFork/ChainForkStatic.ts +0 -9
  127. package/src/model/ChainFork/index.ts +0 -1
  128. package/src/model/ChainIdentity.ts +0 -6
  129. package/src/model/ChainStore.ts +0 -16
  130. package/src/model/CreatableProviderContext.ts +0 -6
  131. package/src/model/CreatableProviderContext.zod.ts +0 -55
  132. package/src/model/PayloadBundle/bundledPayloadToHydratedBlock.ts +0 -15
  133. package/src/model/PayloadBundle/bundledPayloadToHydratedTransaction.ts +0 -15
  134. package/src/model/PayloadBundle/hydratedBlockToPayloadBundle.ts +0 -19
  135. package/src/model/PayloadBundle/hydratedTransactionToPayloadBundle.ts +0 -19
  136. package/src/model/PayloadBundle/index.ts +0 -4
  137. package/src/model/index.ts +0 -6
  138. package/src/multipliers.ts +0 -18
  139. package/src/payloads/AddressPairPayload.ts +0 -27
  140. package/src/payloads/index.ts +0 -4
  141. package/src/payloads/netBalancesForPayloads.ts +0 -24
  142. package/src/payloads/netSchemasForPayloads.ts +0 -24
  143. package/src/payloads/netTransfersForPayloads.ts +0 -27
  144. package/src/primitives/block/index.ts +0 -2
  145. package/src/primitives/block/range/blockRangeSteps.ts +0 -23
  146. package/src/primitives/block/range/index.ts +0 -1
  147. package/src/primitives/block/rate/blockRate.ts +0 -77
  148. package/src/primitives/block/rate/index.ts +0 -4
  149. package/src/primitives/block/rate/stepRate.ts +0 -37
  150. package/src/primitives/block/rate/timeHelpers.ts +0 -61
  151. package/src/primitives/block/rate/timeRate.ts +0 -121
  152. package/src/primitives/chain/getWindowedChain.ts +0 -50
  153. package/src/primitives/chain/index.ts +0 -3
  154. package/src/primitives/chain/step/chainStepRewardAddress.ts +0 -30
  155. package/src/primitives/chain/step/index.ts +0 -4
  156. package/src/primitives/chain/step/stepRewardBlock.ts +0 -13
  157. package/src/primitives/chain/step/stepRewardTotal.ts +0 -46
  158. package/src/primitives/chain/step/stepsRewardTotal.ts +0 -37
  159. package/src/primitives/chain/time/externalBlockNumberFromXL1BlockNumber.ts +0 -32
  160. package/src/primitives/chain/time/externalBlockRangeFromStep.ts +0 -21
  161. package/src/primitives/chain/time/externalBlockRangeFromXL1BlockRange.ts +0 -17
  162. package/src/primitives/chain/time/index.ts +0 -3
  163. package/src/primitives/datalake/addDataLakePayloads.ts +0 -18
  164. package/src/primitives/datalake/addDataLakePayloadsToPayloads.ts +0 -24
  165. package/src/primitives/datalake/index.ts +0 -2
  166. package/src/primitives/index.ts +0 -13
  167. package/src/primitives/mapToMapType.ts +0 -35
  168. package/src/primitives/payload/index.ts +0 -1
  169. package/src/primitives/payload/mergeTransfers.ts +0 -16
  170. package/src/primitives/readPayloadMapFromStore.ts +0 -58
  171. package/src/primitives/rewardFromBlockNumber.ts +0 -19
  172. package/src/primitives/rewards/index.ts +0 -1
  173. package/src/primitives/rewards/networkStakeStepRewardPositionWeight.ts +0 -26
  174. package/src/primitives/stake/activeStakeAtTimeByAddress.ts +0 -27
  175. package/src/primitives/stake/activeStakeAtTimeByPosition.ts +0 -25
  176. package/src/primitives/stake/allStakersForRange.ts +0 -32
  177. package/src/primitives/stake/allStakersForStep.ts +0 -24
  178. package/src/primitives/stake/index.ts +0 -6
  179. package/src/primitives/stake/mergedAddRemoveStakeEventsByPosition.ts +0 -15
  180. package/src/primitives/stake/mergedAddRemoveStakeEventsByStaker.ts +0 -17
  181. package/src/primitives/stake/weightedStakeForRangeByPosition.ts +0 -69
  182. package/src/primitives/state/findMostRecentBlock.ts +0 -44
  183. package/src/primitives/state/hydratedBlockByNumber.ts +0 -25
  184. package/src/primitives/state/index.ts +0 -2
  185. package/src/primitives/step/completedStepRewardAddress.ts +0 -10
  186. package/src/primitives/step/derivedReceiveAddress.ts +0 -9
  187. package/src/primitives/step/index.ts +0 -4
  188. package/src/primitives/step/stepBlockRange.ts +0 -9
  189. package/src/primitives/step/stepTransferIndex.ts +0 -19
  190. package/src/primitives/transaction/elevatedPayloads.ts +0 -24
  191. package/src/primitives/transaction/index.ts +0 -1
  192. package/src/primitives/uncle/findBestUncle.ts +0 -9
  193. package/src/primitives/uncle/findUncles.ts +0 -75
  194. package/src/primitives/uncle/index.ts +0 -3
  195. package/src/primitives/uncle/scoreUncle.ts +0 -7
  196. package/src/services/AccountTransfersService.ts +0 -13
  197. package/src/services/BlockProducerService.ts +0 -11
  198. package/src/services/Chain/BaseChainService.ts +0 -4
  199. package/src/services/Chain/ChainHeadService.ts +0 -8
  200. package/src/services/Chain/ChainService.ts +0 -6
  201. package/src/services/Chain/index.ts +0 -3
  202. package/src/services/Election.ts +0 -14
  203. package/src/services/NetworkStakeService.ts +0 -4
  204. package/src/services/Params.ts +0 -13
  205. package/src/services/PendingTransactionsService.ts +0 -7
  206. package/src/services/SchemasService.ts +0 -11
  207. package/src/services/StakeIntentService/ChainIndexingServiceStateSchema.ts +0 -50
  208. package/src/services/StakeIntentService/StakeIntentService.ts +0 -35
  209. package/src/services/StakeIntentService/index.ts +0 -2
  210. package/src/services/index.ts +0 -8
  211. package/src/simple/StakeEventsViewer/SimpleStakeEventsViewer.ts +0 -93
  212. package/src/simple/StakeEventsViewer/index.ts +0 -1
  213. package/src/simple/StakeTotalsViewer/SimpleStakeTotalsViewer.ts +0 -116
  214. package/src/simple/StakeTotalsViewer/index.ts +0 -1
  215. package/src/simple/StakeViewer/SimpleStakeViewer.ts +0 -164
  216. package/src/simple/StakeViewer/index.ts +0 -1
  217. package/src/simple/TransactionViewer/SimpleTransactionViewer.ts +0 -100
  218. package/src/simple/TransactionViewer/index.ts +0 -1
  219. package/src/simple/accountBalance/SimpleAccountBalanceViewer.ts +0 -271
  220. package/src/simple/accountBalance/index.ts +0 -1
  221. package/src/simple/block/SimpleBlockViewer.ts +0 -231
  222. package/src/simple/block/index.ts +0 -1
  223. package/src/simple/blockInvalidation/SimpleBlockInvalidationViewer.ts +0 -197
  224. package/src/simple/blockInvalidation/index.ts +0 -1
  225. package/src/simple/blockReward/SimpleBlockRewardViewer.ts +0 -27
  226. package/src/simple/blockReward/index.ts +0 -1
  227. package/src/simple/blockValidation/SimpleBlockValidationViewer.ts +0 -194
  228. package/src/simple/blockValidation/index.ts +0 -1
  229. package/src/simple/chainContractViewer/SimpleChainContractViewer.ts +0 -92
  230. package/src/simple/chainContractViewer/index.ts +0 -1
  231. package/src/simple/client/SimpleXyoClient.ts +0 -14
  232. package/src/simple/client/index.ts +0 -1
  233. package/src/simple/datalake/AbstractRestDataLake.ts +0 -70
  234. package/src/simple/datalake/AbstractSimpleDataLake.ts +0 -62
  235. package/src/simple/datalake/RestDataLakeRunner.ts +0 -54
  236. package/src/simple/datalake/RestDataLakeViewer.ts +0 -22
  237. package/src/simple/datalake/SimpleDataLakeRunner.ts +0 -44
  238. package/src/simple/datalake/SimpleDataLakeViewer.ts +0 -24
  239. package/src/simple/datalake/index.ts +0 -4
  240. package/src/simple/finalization/SimpleFinalizationRunner.ts +0 -45
  241. package/src/simple/finalization/SimpleFinalizationViewer.ts +0 -123
  242. package/src/simple/finalization/index.ts +0 -2
  243. package/src/simple/gateway/SimpleXyoGateway.ts +0 -30
  244. package/src/simple/gateway/SimpleXyoGatewayRunner.ts +0 -137
  245. package/src/simple/gateway/index.ts +0 -2
  246. package/src/simple/index.ts +0 -22
  247. package/src/simple/mempool/SimpleMempoolRunner.ts +0 -390
  248. package/src/simple/mempool/SimpleMempoolViewer.ts +0 -215
  249. package/src/simple/mempool/index.ts +0 -2
  250. package/src/simple/network/SimpleXyoNetwork.ts +0 -48
  251. package/src/simple/network/index.ts +0 -1
  252. package/src/simple/network/lib/FailedNetworkStatusPayloads.ts +0 -16
  253. package/src/simple/network/lib/StatusNetworks.ts +0 -32
  254. package/src/simple/network/lib/index.ts +0 -2
  255. package/src/simple/permissions/SimpleXyoPermissions.ts +0 -82
  256. package/src/simple/permissions/index.ts +0 -2
  257. package/src/simple/permissions/store/MemoryPermissions.ts +0 -32
  258. package/src/simple/permissions/store/PermissionsStore.ts +0 -17
  259. package/src/simple/permissions/store/index.ts +0 -2
  260. package/src/simple/runner/SimpleXyoRunner.ts +0 -41
  261. package/src/simple/runner/index.ts +0 -1
  262. package/src/simple/signer/SimpleXyoSigner.ts +0 -78
  263. package/src/simple/signer/index.ts +0 -1
  264. package/src/simple/timeSync2/SimpleTimeSyncViewer.ts +0 -132
  265. package/src/simple/timeSync2/index.ts +0 -1
  266. package/src/simple/transactionInvalidation/SimpleTransactionInvalidationViewer.ts +0 -197
  267. package/src/simple/transactionInvalidation/index.ts +0 -1
  268. package/src/simple/transactionValidation/SimpleTransactionValidationViewer.ts +0 -173
  269. package/src/simple/transactionValidation/index.ts +0 -1
  270. package/src/simple/windowedBlock/SimpleWindowedBlockViewer.ts +0 -207
  271. package/src/simple/windowedBlock/index.ts +0 -1
  272. package/src/status/RuntimeStatusMonitor.ts +0 -120
  273. package/src/status/ServiceStatus.ts +0 -21
  274. package/src/status/index.ts +0 -2
  275. package/src/summary/index.ts +0 -2
  276. package/src/summary/model/BalancesStepSummary.ts +0 -35
  277. package/src/summary/model/SchemasStepSummary.ts +0 -33
  278. package/src/summary/model/StepSummary.ts +0 -20
  279. package/src/summary/model/TransfersSummary.ts +0 -36
  280. package/src/summary/model/index.ts +0 -4
  281. package/src/summary/primitives/balances/balancesStepSummaryFromRange.ts +0 -94
  282. package/src/summary/primitives/balances/balancesSummary.ts +0 -48
  283. package/src/summary/primitives/balances/index.ts +0 -2
  284. package/src/summary/primitives/index.ts +0 -3
  285. package/src/summary/primitives/schemas/index.ts +0 -2
  286. package/src/summary/primitives/schemas/schemasStepSummaryFromRange.ts +0 -86
  287. package/src/summary/primitives/schemas/schemasSummary.ts +0 -44
  288. package/src/summary/primitives/transfers/index.ts +0 -2
  289. package/src/summary/primitives/transfers/transfersStepSummaryFromRange.ts +0 -109
  290. package/src/summary/primitives/transfers/transfersSummary.ts +0 -52
  291. package/src/test/BuildBlockOptions.ts +0 -81
  292. package/src/test/buildBlock.ts +0 -105
  293. package/src/test/buildGenesisBlock.ts +0 -29
  294. package/src/test/buildNextBlock.ts +0 -37
  295. package/src/test/buildRandomChain.ts +0 -92
  296. package/src/test/buildRandomGenesisBlock.ts +0 -47
  297. package/src/test/createGenesisBlock.ts +0 -41
  298. package/src/test/createProducerChainStakeIntentTransaction.ts +0 -48
  299. package/src/test/getSimpleBlockViewerLocator.ts +0 -41
  300. package/src/test/getTestProviderContext.ts +0 -8
  301. package/src/test/index.ts +0 -2
  302. package/src/time/index.ts +0 -1
  303. package/src/time/primitives/index.ts +0 -1
  304. package/src/time/primitives/xl1BlockNumberToEthBlockNumber.ts +0 -13
  305. package/src/transaction/TransactionBuilder.ts +0 -164
  306. package/src/transaction/buildRandomTransaction.ts +0 -38
  307. package/src/transaction/buildTransaction.ts +0 -68
  308. package/src/transaction/buildUnsignedTransaction.ts +0 -56
  309. package/src/transaction/confirmSubmittedTransaction.ts +0 -42
  310. package/src/transaction/hydrateTransaction.ts +0 -117
  311. package/src/transaction/index.ts +0 -9
  312. package/src/transaction/primitives/index.ts +0 -4
  313. package/src/transaction/primitives/transactionBlockByteCount.ts +0 -10
  314. package/src/transaction/primitives/transactionElevatedPayloads.ts +0 -18
  315. package/src/transaction/primitives/transactionOperations.ts +0 -13
  316. package/src/transaction/primitives/transactionRequiredGas.ts +0 -22
  317. package/src/transaction/script.ts +0 -48
  318. package/src/transaction/signTransaction.ts +0 -32
  319. package/src/utils/HydratedCache.ts +0 -39
  320. package/src/utils/index.ts +0 -2
  321. package/src/utils/isZodError.ts +0 -11
  322. package/src/validation/index.ts +0 -2
  323. package/src/validation/lib/getUrl.ts +0 -7
  324. package/src/validation/lib/index.ts +0 -2
  325. package/src/validation/lib/isLocalhost.ts +0 -9
  326. package/src/validation/schema/Address.ts +0 -2
  327. package/src/validation/schema/Mnemonic.ts +0 -21
  328. package/src/validation/schema/index.ts +0 -2
  329. package/src/wallet/generateXyoBaseWalletFromPhrase.ts +0 -13
  330. package/src/wallet/index.ts +0 -2
  331. package/src/wallet/paths.ts +0 -17
@@ -1,102 +0,0 @@
1
- import type {
2
- Creatable, CreatableInstance, CreatableParams,
3
- EventData,
4
- Labels, WithOptionalLabels,
5
- } from '@xylabs/sdk-js'
6
- import type { Provider, ProviderMoniker } from '@xyo-network/xl1-protocol-lib'
7
-
8
- import type { CreatableProviderContext } from '../model/index.ts'
9
- import type { GetInstanceOptions } from './GetInstanceOptions.ts'
10
- import type { LabeledCreatableProviderFactory } from './LabeledCreatableProviderFactory.ts'
11
-
12
- /** Parameters for CreatableProvider. */
13
- export interface CreatableProviderParams<TContext extends CreatableProviderContext = CreatableProviderContext> extends CreatableParams {
14
- context: TContext
15
- }
16
- /** CreatableProviderEventData interface. */
17
- export interface CreatableProviderEventData extends EventData {}
18
-
19
- /** CreatableProviderInstance type. */
20
- export type CreatableProviderInstance<
21
- TProvider extends Provider<ProviderMoniker> = Provider<ProviderMoniker>,
22
- TDependencies extends ProviderMoniker[] = ProviderMoniker[],
23
- TParams extends CreatableProviderParams = CreatableProviderParams,
24
- TEventData extends CreatableProviderEventData = CreatableProviderEventData>
25
- = CreatableInstance<TParams, TEventData> & TProvider & {
26
- dependencies: ProviderMap<TDependencies[number]>
27
- }
28
-
29
- /** ProviderFactoryScope type. */
30
- export type ProviderFactoryScope = 'global' | 'context' | 'local'
31
-
32
- /** CreatableProviderFactory interface. */
33
- export interface CreatableProviderFactory<T extends CreatableProviderInstance = CreatableProviderInstance,
34
- TDependencies extends ProviderMoniker[] = ProviderMoniker[]>
35
- extends Omit<CreatableProvider<T>, 'create' | 'createHandler' | 'paramsHandler'> {
36
- creatableProvider: CreatableProvider<T>
37
- defaultParams: Omit<T['params'], 'context'>
38
-
39
- readonly dependencies: TDependencies
40
-
41
- labels?: Labels
42
- providerName: string
43
- resolvedMoniker: string
44
- scope: ProviderFactoryScope
45
-
46
- uniqueId: symbol
47
-
48
- getInstance(
49
- this: CreatableProviderFactory<T>,
50
- params: T['params'],
51
- options?: GetInstanceOptions): Promise<T>
52
-
53
- tryGetInstance(
54
- this: CreatableProviderFactory<T>,
55
- params: T['params'],
56
- options?: GetInstanceOptions): Promise<T | undefined>
57
-
58
- }
59
-
60
- /** LabeledCreatableProvider interface. */
61
- export interface LabeledCreatableProvider<T extends CreatableProviderInstance = CreatableProviderInstance,
62
- TDependencies extends ProviderMoniker[] = ProviderMoniker[]> extends CreatableProvider<T>, WithOptionalLabels {
63
- factory(dependencies: TDependencies, params: Omit<T['params'], 'context'>): LabeledCreatableProviderFactory<T>
64
- }
65
-
66
- /** ProviderMap type. */
67
- export type ProviderMap<T extends ProviderMoniker = ProviderMoniker> = Partial<Record<T, CreatableProviderInstance<Provider<T>>>>
68
-
69
- /** CreatableProvider interface. */
70
- export interface CreatableProvider<T extends CreatableProviderInstance = CreatableProviderInstance,
71
- TDependencies extends ProviderMoniker[] = ProviderMoniker[]> extends Creatable<T> {
72
- readonly defaultMoniker: ProviderMoniker
73
- readonly dependencies: TDependencies
74
- readonly monikers: ProviderMoniker[]
75
- factory(dependencies: TDependencies, params: Omit<T['params'], 'context'>): CreatableProviderFactory<T>
76
- }
77
-
78
- /**
79
- * Class annotation to be used to decorate Providers which support
80
- * an asynchronous creation pattern
81
- * @returns The decorated Provider requiring it implement the members
82
- * of the CreatableProvider as statics properties/methods
83
- */
84
- export function creatableProvider<TProvider extends CreatableProviderInstance = CreatableProviderInstance>() {
85
- return <U extends CreatableProvider<TProvider>>(constructor: U) => {
86
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
87
- constructor
88
- }
89
- }
90
-
91
- /**
92
- * Class annotation to be used to decorate Providers which support
93
- * an asynchronous creation pattern
94
- * @returns The decorated Provider requiring it implement the members
95
- * of the CreatableProvider as statics properties/methods
96
- */
97
- export function labeledCreatableProvider<TProvider extends CreatableProviderInstance = CreatableProviderInstance>() {
98
- return <U extends LabeledCreatableProvider<TProvider>>(constructor: U) => {
99
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
100
- constructor
101
- }
102
- }
@@ -1,94 +0,0 @@
1
- import type { Labels } from '@xylabs/sdk-js'
2
- import { isTruthy } from '@xylabs/sdk-js'
3
- import type { ProviderMoniker } from '@xyo-network/xl1-protocol-lib'
4
-
5
- import type { CreatableProviderFactory, CreatableProviderInstance } from './CreatableProvider.ts'
6
- import type { LabeledCreatableProviderFactory } from './LabeledCreatableProviderFactory.ts'
7
- import { providerFactoryDescription } from './ProviderFactory.ts'
8
-
9
- /** CreatableProviderRegistry type. */
10
- export type CreatableProviderRegistry<TMonikers extends ProviderMoniker[] = ProviderMoniker[]>
11
- = Record<TMonikers[number], (CreatableProviderFactory | LabeledCreatableProviderFactory)[] | undefined>
12
-
13
- const buildProviderFactory = <TProvider extends CreatableProviderInstance>(
14
- provider: CreatableProviderFactory<TProvider>,
15
- defaultParams: Omit<TProvider['params'], 'context'>,
16
- labels?: Labels,
17
- ): LabeledCreatableProviderFactory<TProvider> => {
18
- const factory = {
19
- monikers: provider.monikers,
20
- uniqueId: Symbol(providerFactoryDescription(provider, labels)),
21
- // Merge module & supplied labels
22
- labels: { ...(provider as LabeledCreatableProviderFactory).labels, ...labels },
23
- creatableProvider: provider.creatableProvider,
24
- dependencies: provider.dependencies,
25
- resolvedMoniker: provider.resolvedMoniker,
26
- providerName: provider.providerName,
27
- scope: provider.scope,
28
- defaultParams,
29
- getInstance: provider.getInstance.bind(provider) as LabeledCreatableProviderFactory<TProvider>['getInstance'],
30
- tryGetInstance: provider.tryGetInstance?.bind(provider) as LabeledCreatableProviderFactory<TProvider>['tryGetInstance'],
31
- defaultMoniker: provider.defaultMoniker,
32
- factory: provider.factory.bind(provider) as LabeledCreatableProviderFactory<TProvider>['factory'],
33
- } satisfies LabeledCreatableProviderFactory<TProvider>
34
- return factory
35
- }
36
-
37
- /** registerCreatableProviderFactory constant. */
38
- export const registerCreatableProviderFactory = <TProvider extends CreatableProviderInstance>(
39
- registry: CreatableProviderRegistry,
40
- factory: CreatableProviderFactory<TProvider> | LabeledCreatableProviderFactory<TProvider>,
41
- labels?: Labels,
42
- /** register this as the primary factory for every schema it supports */
43
- primary: boolean | ProviderMoniker | ProviderMoniker[] = false,
44
- ) => {
45
- const primaryMonikers
46
- = primary !== true && isTruthy(primary)
47
- ? Array.isArray(primary)
48
- ? primary
49
- : [primary]
50
- : []
51
-
52
- for (const primaryMoniker of primaryMonikers) {
53
- if (!factory.monikers.includes(primaryMoniker)) {
54
- console.warn(`Primary moniker ${primary} not found in factory monikers`)
55
- }
56
- }
57
-
58
- const isPrimaryForMoniker = (moniker: ProviderMoniker) => {
59
- switch (typeof primary) {
60
- case 'boolean': {
61
- return primary
62
- }
63
- case 'string': {
64
- return moniker === primary
65
- }
66
- case 'object': {
67
- if (Array.isArray(primary)) {
68
- return primary.includes(moniker)
69
- }
70
- }
71
- }
72
- throw new Error(`Invalid primary value: ${primary}`)
73
- }
74
-
75
- const factoryClone: LabeledCreatableProviderFactory<TProvider> = buildProviderFactory(factory, factory.defaultParams, labels)
76
-
77
- // add this default moniker as the first entry
78
- registry[factoryClone.defaultMoniker] = [factoryClone, ...(registry[factoryClone.defaultMoniker] ?? [])]
79
- for (const moniker of factoryClone.monikers) {
80
- registry[moniker] = isPrimaryForMoniker(moniker) ? [factoryClone, ...(registry[moniker] ?? [])] : [...(registry[moniker] ?? []), factoryClone]
81
- }
82
- }
83
-
84
- /** registerCreatableProviderFactories constant. */
85
- export const registerCreatableProviderFactories = (
86
- factories: (CreatableProviderFactory | LabeledCreatableProviderFactory)[],
87
- registry: CreatableProviderRegistry = {},
88
- primary = false,
89
- ) => {
90
- for (const factory of factories) {
91
- registerCreatableProviderFactory(registry, factory, undefined, primary)
92
- }
93
- return registry
94
- }
@@ -1,11 +0,0 @@
1
- import type { Labels } from '@xylabs/sdk-js'
2
-
3
- /** Options for GetInstance. */
4
- export interface GetInstanceOptions {
5
- start?: boolean
6
- }
7
-
8
- /** Options for ProviderFactoryGetInstance. */
9
- export interface ProviderFactoryGetInstanceOptions extends GetInstanceOptions {
10
- labels?: Labels
11
- }
@@ -1,24 +0,0 @@
1
- import type { WithOptionalLabels } from '@xylabs/sdk-js'
2
-
3
- import type { CreatableProviderFactory, CreatableProviderInstance } from './CreatableProvider.ts'
4
-
5
- /** LabeledCreatableProviderFactory type. */
6
- export type LabeledCreatableProviderFactory<T extends CreatableProviderInstance = CreatableProviderInstance> = CreatableProviderFactory<T> & WithOptionalLabels
7
-
8
- /** hasLabels constant. */
9
- export const hasLabels = (factory: CreatableProviderFactory | LabeledCreatableProviderFactory): factory is LabeledCreatableProviderFactory => {
10
- return (factory as LabeledCreatableProviderFactory).labels !== undefined
11
- }
12
-
13
- /**
14
- * Class annotation to be used to decorate Providers which support
15
- * an asynchronous labeled creation factory pattern
16
- * @returns The decorated Provider requiring it implement the members
17
- * of the CreatableProvider as statics properties/methods
18
- */
19
- export function labeledCreatableProviderFactory<TProvider extends CreatableProviderInstance = CreatableProviderInstance>() {
20
- return <U extends LabeledCreatableProviderFactory<TProvider>>(constructor: U) => {
21
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
22
- constructor
23
- }
24
- }
@@ -1,138 +0,0 @@
1
- import type { Labels, WithOptionalLabels } from '@xylabs/sdk-js'
2
- import { assertEx } from '@xylabs/sdk-js'
3
- import type { ProviderMoniker } from '@xyo-network/xl1-protocol-lib'
4
-
5
- import type {
6
- CreatableProvider, CreatableProviderFactory, CreatableProviderInstance,
7
- ProviderFactoryScope,
8
- } from './CreatableProvider.ts'
9
- import type { GetInstanceOptions } from './GetInstanceOptions.ts'
10
-
11
- declare global {
12
- var xyoServiceSingletons: Record<string, unknown>
13
- }
14
-
15
- /** ProviderFactoryDescription helper function. */
16
- export function providerFactoryDescription(factory: CreatableProviderFactory, labels?: Labels) {
17
- return `${factory.providerName}:${factory.defaultMoniker}:${JSON.stringify(labels ?? (factory as WithOptionalLabels).labels ?? {})}`
18
- }
19
-
20
- /** ProviderFactory implementation. */
21
- export class ProviderFactory<TProvider extends CreatableProviderInstance,
22
- TDependencies extends ProviderMoniker[]> implements CreatableProviderFactory<TProvider> {
23
- creatableProvider: CreatableProvider<TProvider>
24
-
25
- defaultMoniker: CreatableProvider<TProvider>['monikers'][number]
26
-
27
- defaultParams: Omit<TProvider['params'], 'context'>
28
-
29
- dependencies: TDependencies
30
-
31
- labels?: Labels
32
-
33
- monikers: CreatableProvider<TProvider>['monikers']
34
-
35
- providerName: string
36
-
37
- scope: ProviderFactoryScope
38
-
39
- private _uniqueId: symbol
40
-
41
- constructor(
42
- creatableProvider: CreatableProvider<TProvider>,
43
- dependencies: TDependencies,
44
- params: Omit<TProvider['params'], 'context'>,
45
- labels: Labels = {},
46
- scope: ProviderFactoryScope = 'context',
47
- ) {
48
- this.creatableProvider = creatableProvider
49
- this.defaultParams = params
50
- this.defaultMoniker = creatableProvider.defaultMoniker
51
- this.dependencies = dependencies
52
- this.monikers = creatableProvider.monikers
53
- this.scope = scope
54
- assertEx(this.monikers.includes(this.defaultMoniker), () => 'defaultMoniker must be in monikers')
55
- this.labels = Object.assign({}, (creatableProvider as WithOptionalLabels).labels ?? {}, labels ?? {})
56
- this.providerName = creatableProvider.name
57
- this._uniqueId = Symbol(providerFactoryDescription(this))
58
- }
59
-
60
- get resolvedMoniker() {
61
- const labels: Labels = this.labels ?? {}
62
- const labelString = Object.entries(labels).map(([key, value]) => `${key}=${value}`).join(',')
63
- return labelString.length === 0 ? `${this.defaultMoniker}` : `${this.defaultMoniker}|${labelString}`
64
- }
65
-
66
- get uniqueId(): symbol {
67
- return this._uniqueId
68
- }
69
-
70
- static withParams<TInstance extends CreatableProviderInstance, TDependencies extends ProviderMoniker[]>(
71
- creatableProvider: CreatableProvider<TInstance>,
72
- dependencies: TDependencies,
73
- params: Omit<TInstance['params'], 'context'>,
74
- labels: Labels = {},
75
- ) {
76
- return new ProviderFactory<TInstance, TDependencies>(creatableProvider, dependencies, params, labels)
77
- }
78
-
79
- factory<TInstance extends CreatableProviderInstance, TDependencies extends ProviderMoniker[]>(
80
- this: CreatableProviderFactory<TInstance, TDependencies>,
81
- dependencies: TDependencies,
82
- params: Omit<TInstance['params'], 'context'>,
83
- labels: Labels = {},
84
- ) {
85
- return new ProviderFactory<TInstance, TDependencies>(this.creatableProvider, dependencies, params, labels)
86
- }
87
-
88
- async getInstance(this: CreatableProviderFactory<TProvider>, params: TProvider['params'], { start = true }: GetInstanceOptions): Promise<TProvider> {
89
- let scopeObject: Record<string, unknown> = {}
90
- switch (this.scope) {
91
- case 'global': {
92
- if (globalThis.xyoServiceSingletons === undefined) {
93
- globalThis.xyoServiceSingletons = {}
94
- }
95
- scopeObject = globalThis.xyoServiceSingletons
96
- break
97
- }
98
- case 'context': {
99
- const context = assertEx(
100
- params?.context,
101
- () => 'Context is required for context-scoped providers',
102
- )
103
- if (context.singletons === undefined) {
104
- context.singletons = {}
105
- }
106
- scopeObject = context.singletons
107
- break
108
- }
109
- default: {
110
- scopeObject = {}
111
- break
112
- }
113
- }
114
- const mergedParams: TProvider['params'] = {
115
- ...this.defaultParams,
116
- ...params,
117
- } as TProvider['params']
118
- const resultPromise = scopeObject[this.resolvedMoniker] as Promise<TProvider> ?? this.creatableProvider.create<TProvider>(mergedParams)
119
- scopeObject[this.resolvedMoniker] = resultPromise
120
- const result = await resultPromise
121
- if (start) {
122
- assertEx(await result.start(), () => `Failed to start provider instance [${this.resolvedMoniker}]`)
123
- }
124
- return result
125
- }
126
-
127
- async tryGetInstance(
128
- this: CreatableProviderFactory<TProvider>,
129
- params: TProvider['params'],
130
- options?: GetInstanceOptions,
131
- ): Promise<TProvider | undefined> {
132
- try {
133
- return await this.getInstance(params, options)
134
- } catch {
135
- return
136
- }
137
- }
138
- }
@@ -1,170 +0,0 @@
1
- import { hasAllLabels, type Labels } from '@xylabs/sdk-js'
2
- import { assertEx } from '@xylabs/sdk-js'
3
- import type { Provider, ProviderMoniker } from '@xyo-network/xl1-protocol-lib'
4
-
5
- import type { CreatableProviderContext } from '../model/index.ts'
6
- import type { CreatableProviderFactory, CreatableProviderInstance } from './CreatableProvider.ts'
7
- import { type CreatableProviderRegistry, registerCreatableProviderFactory } from './CreatableProviderRegistry.ts'
8
- import type { ProviderFactoryGetInstanceOptions } from './GetInstanceOptions.ts'
9
- import { hasLabels, type LabeledCreatableProviderFactory } from './LabeledCreatableProviderFactory.ts'
10
- import type { ProviderFactoryLocatorInstance } from './ProviderFactoryLocatorInstance.ts'
11
-
12
- /**
13
- * A class which encapsulates the Service Locator Pattern for Provider Factories
14
- */
15
- export class ProviderFactoryLocator<TContext extends CreatableProviderContext = CreatableProviderContext,
16
- TMonikers extends ProviderMoniker[] = ProviderMoniker[]> implements ProviderFactoryLocatorInstance<TContext> {
17
- protected readonly _context: TContext
18
- protected readonly _registry: CreatableProviderRegistry<TMonikers>
19
-
20
- private _frozen = false
21
- private _parent?: ProviderFactoryLocatorInstance<TContext>
22
- private _validateDepsOnRegister: boolean
23
-
24
- constructor(context: (Omit<TContext, 'locator'> & { locator?: TContext['locator'] }), registry: CreatableProviderRegistry = {}, validateDepsOnRegister = false) {
25
- this._registry = registry
26
- this._context = { ...context, locator: this } as unknown as TContext
27
- this._parent = context.locator as ProviderFactoryLocatorInstance<TContext>
28
- this._validateDepsOnRegister = validateDepsOnRegister
29
- }
30
-
31
- get context() {
32
- return this._context
33
- }
34
-
35
- get logger() {
36
- return this.context.logger
37
- }
38
-
39
- /**
40
- * The current registry for the module factory
41
- */
42
- get registry(): Readonly<CreatableProviderRegistry> {
43
- return this._registry
44
- }
45
-
46
- protected get validateDepsOnRegister() {
47
- return this._validateDepsOnRegister
48
- }
49
-
50
- freeze() {
51
- this._frozen = true
52
- }
53
-
54
- async getInstance<TProvider extends Provider<ProviderMoniker>>(
55
- moniker: TProvider['moniker'],
56
- { start = true, labels }: ProviderFactoryGetInstanceOptions = {},
57
- ) {
58
- return assertEx(
59
- await this.tryGetInstance<TProvider>(moniker, { start, labels }),
60
- () => `No provider instance for the supplied config moniker [${moniker}]${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} could be created`,
61
- )
62
- }
63
-
64
- has(moniker: TMonikers[number]): boolean {
65
- return !!this._registry[moniker]
66
- }
67
-
68
- /**
69
- * Locates a provider factory that matches the supplied moniker and labels
70
- * @param moniker The config moniker for the provider
71
- * @param labels The labels for the provider factory
72
- * @returns A provider factory that matches the supplied moniker and labels or throws if one is not found
73
- */
74
- locate<TProvider extends Provider<ProviderMoniker>>(moniker: TProvider['moniker'], labels?: Labels):
75
- CreatableProviderFactory<CreatableProviderInstance<TProvider>> | LabeledCreatableProviderFactory<CreatableProviderInstance<TProvider>> {
76
- return assertEx(
77
- this.tryLocate<TProvider>(moniker, labels),
78
-
79
- () => `No module factory for the supplied config moniker [${moniker}]${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} registered`,
80
- )
81
- }
82
-
83
- merge(locator: ProviderFactoryLocatorInstance): ProviderFactoryLocatorInstance {
84
- const registry = { ...this.registry }
85
- for (const moniker in locator.registry) {
86
- if (registry[moniker]) {
87
- registry[moniker].push(...(locator.registry[moniker] ?? []))
88
- } else {
89
- registry[moniker] = locator.registry[moniker]
90
- }
91
- }
92
- return new ProviderFactoryLocator(this.context, registry)
93
- }
94
-
95
- /**
96
- * Registers a single module factory (with optional tags) with the locator
97
- * @param factory The factory to register
98
- * @param labels The labels for the module factory
99
- */
100
- register(factory: CreatableProviderFactory, labels?: Labels, primary: boolean | ProviderMoniker | ProviderMoniker[] = false): this {
101
- assertEx(!this._frozen, () => 'Cannot register a module factory after the locator has been frozen')
102
- if (this.validateDepsOnRegister) {
103
- const missingDeps = factory.dependencies.filter(dep => !this.registered(dep))
104
- assertEx(missingDeps.length === 0, () => `Cannot register module factory [${factory.uniqueId.description}] due to missing dependencies: ${missingDeps.join(', ')}`)
105
- }
106
- registerCreatableProviderFactory(this._registry, factory, labels, primary)
107
- return this
108
- }
109
-
110
- /**
111
- * Registers multiple module factories with the locator
112
- * @param factories The factories to register
113
- */
114
- registerMany(factories: CreatableProviderFactory[]): this {
115
- for (const factory of factories) {
116
- this.register(factory)
117
- }
118
- return this
119
- }
120
-
121
- registered(moniker: ProviderMoniker) {
122
- return !!this.registry[moniker] || (this._parent?.registered(moniker) ?? false)
123
- }
124
-
125
- async tryGetInstance<TProvider extends Provider<ProviderMoniker>>(
126
- moniker: TProvider['moniker'],
127
- { start = true, labels }: ProviderFactoryGetInstanceOptions = {},
128
- ) {
129
- const resolvedParams = { context: this.context } as CreatableProviderInstance<TProvider>['params']
130
- const factory = this.tryLocate<TProvider>(moniker, labels)
131
- if (factory) {
132
- if (this.context.singletons[factory.uniqueId]) {
133
- return this.context.singletons[factory.uniqueId] as CreatableProviderInstance<TProvider>
134
- }
135
- this.logger?.info(`Creating provider instance for moniker [${moniker}]${labels ? ` with labels [${JSON.stringify(labels)}]` : ''} using factory [${factory.uniqueId.description}]`)
136
- const result = await factory.getInstance(resolvedParams, { start })
137
- this.context.singletons[factory.uniqueId] = result
138
- return result
139
- }
140
- }
141
-
142
- /**
143
- * Tries to locate a module factory that matches the supplied moniker and labels
144
- * @param moniker The config moniker for the module
145
- * @param labels The labels for the module factory
146
- * @returns A module factory that matches the supplied moniker and labels or undefined
147
- */
148
- tryLocate<TProvider extends Provider<ProviderMoniker>>(moniker: TProvider['moniker'], labels?: Labels) {
149
- const result = (labels
150
- // Find the first factory that has labels and has all the labels provided
151
- ? (this._registry[moniker]?.filter(hasLabels).find(factory => hasAllLabels(factory?.labels, labels)) ?? this._registry[moniker]?.[0])
152
- // Otherwise, return the first factory
153
- : this._registry[moniker]?.[0]) ?? this._parent?.tryLocate<TProvider>(moniker, labels)
154
-
155
- return result as CreatableProviderFactory<CreatableProviderInstance<TProvider>>
156
- | LabeledCreatableProviderFactory<CreatableProviderInstance<TProvider>> | undefined
157
- }
158
-
159
- validateDependencies(recursive = false) {
160
- if (recursive) {
161
- this._parent?.validateDependencies()
162
- }
163
- for (const moniker in this.registry) {
164
- for (const factory of this.registry[moniker] ?? []) {
165
- const missingDeps = factory.dependencies.filter(dep => !this.registered(dep))
166
- assertEx(missingDeps.length === 0, () => `Module factory [${factory.uniqueId.description}] is missing dependencies: ${missingDeps.join(', ')}`)
167
- }
168
- }
169
- }
170
- }
@@ -1,70 +0,0 @@
1
- import type { Labels } from '@xylabs/sdk-js'
2
- import type { Provider, ProviderMoniker } from '@xyo-network/xl1-protocol-lib'
3
-
4
- import type { CreatableProviderContext } from '../model/index.ts'
5
- import type { CreatableProviderFactory, CreatableProviderInstance } from './CreatableProvider.ts'
6
- import type { CreatableProviderRegistry } from './CreatableProviderRegistry.ts'
7
- import type { ProviderFactoryGetInstanceOptions } from './GetInstanceOptions.ts'
8
- import type { LabeledCreatableProviderFactory } from './LabeledCreatableProviderFactory.ts'
9
-
10
- /** Interface for ProviderFactoryLocator instances. */
11
- export interface ProviderFactoryLocatorInstance<T extends CreatableProviderContext = CreatableProviderContext> {
12
-
13
- context: T
14
-
15
- /**
16
- * The current registry for the module factory
17
- */
18
- registry: Readonly<CreatableProviderRegistry>
19
-
20
- freeze(): void
21
-
22
- getInstance<TProvider extends Provider<ProviderMoniker>>(
23
- moniker: TProvider['moniker'],
24
- options?: ProviderFactoryGetInstanceOptions,
25
- ): Promise<CreatableProviderInstance<TProvider>>
26
-
27
- /**
28
- * Locates a module factory that matches the supplied moniker and labels
29
- * @param moniker The config moniker for the module
30
- * @param labels The labels for the module factory
31
- * @returns A module factory that matches the supplied moniker and labels or throws if one is not found
32
- */
33
- locate<TProvider extends Provider<ProviderMoniker>>(moniker: ProviderMoniker, labels?: Labels):
34
- CreatableProviderFactory<CreatableProviderInstance<TProvider>> | LabeledCreatableProviderFactory<CreatableProviderInstance<TProvider>> | undefined
35
-
36
- merge(locator: ProviderFactoryLocatorInstance): ProviderFactoryLocatorInstance
37
-
38
- /**
39
- * Registers a single module factory (with optional tags) with the locator
40
- * @param factory The factory to register
41
- * @param labels The labels for the module factory
42
- */
43
- register(factory: CreatableProviderFactory, labels?: Labels, primary?: boolean | ProviderMoniker | ProviderMoniker[]): ProviderFactoryLocatorInstance
44
-
45
- /**
46
- * Registers multiple module factories with the locator
47
- * @param factories The factories to register
48
- */
49
- registerMany(factories: CreatableProviderFactory[]): ProviderFactoryLocatorInstance
50
-
51
- registered(moniker: ProviderMoniker): boolean
52
-
53
- tryGetInstance<TProvider extends Provider<ProviderMoniker>>(
54
- moniker: TProvider['moniker'],
55
- options?: ProviderFactoryGetInstanceOptions,
56
- ): Promise<CreatableProviderInstance<TProvider> | undefined>
57
-
58
- /**
59
- * Tries to locate a module factory that matches the supplied moniker and labels
60
- * @param moniker The config moniker for the module
61
- * @param labels The labels for the module factory
62
- * @returns A module factory that matches the supplied moniker and labels or undefined
63
- */
64
- tryLocate<TProvider extends Provider<ProviderMoniker>>(
65
- moniker: ProviderMoniker,
66
- labels?: Labels
67
- ): CreatableProviderFactory<CreatableProviderInstance<TProvider>> | LabeledCreatableProviderFactory<CreatableProviderInstance<TProvider>> | undefined
68
-
69
- validateDependencies(): void
70
- }
@@ -1,8 +0,0 @@
1
- export * from './AbstractCreatableProvider.ts'
2
- export * from './CreatableProvider.ts'
3
- export * from './CreatableProviderRegistry.ts'
4
- export * from './GetInstanceOptions.ts'
5
- export * from './LabeledCreatableProviderFactory.ts'
6
- export * from './ProviderFactory.ts'
7
- export * from './ProviderFactoryLocator.ts'
8
- export * from './ProviderFactoryLocatorInstance.ts'
@@ -1,59 +0,0 @@
1
- import {
2
- type Hex,
3
- hexToBigInt,
4
- toHex,
5
- } from '@xylabs/sdk-js'
6
- import { isObject } from '@xylabs/sdk-js'
7
-
8
- /** Represents a negative bigint value stored as a hex string */
9
- export interface NegativeBigInt {
10
- negative: Hex
11
- }
12
-
13
- /** Represents a positive bigint value stored as a hex string */
14
- export interface PositiveBigInt {
15
- positive: Hex
16
- }
17
-
18
- /** A signed bigint value represented as either a negative or positive hex string */
19
- export type SignedBigInt = NegativeBigInt | PositiveBigInt
20
-
21
- /** Type guard that checks if a value is a NegativeBigInt */
22
- export const isNegativeBigInt = (value: unknown): value is NegativeBigInt => {
23
- return isObject(value) && 'negative' in value && typeof value.negative === 'string'
24
- }
25
-
26
- /** Type guard that checks if a value is a PositiveBigInt */
27
- export const isPositiveBigInt = (value: unknown): value is PositiveBigInt => {
28
- return isObject(value) && 'positive' in value && typeof value.positive === 'string'
29
- }
30
-
31
- /** parseSignedBigInt constant. */
32
- export const parseSignedBigInt = (value: SignedBigInt): bigint => {
33
- if (isNegativeBigInt(value)) {
34
- return -hexToBigInt(value.negative)
35
- } else if (isPositiveBigInt(value)) {
36
- return hexToBigInt(value.positive)
37
- } else {
38
- throw new Error('Invalid balance type')
39
- }
40
- }
41
-
42
- /** toSignedBigInt constant. */
43
- export const toSignedBigInt = (value: bigint): SignedBigInt => {
44
- return value < 0n ? { negative: toHex(-value) } : { positive: toHex(value) }
45
- }
46
-
47
- /** toPositiveBigInt constant. */
48
- export const toPositiveBigInt = (value: unknown): PositiveBigInt => {
49
- if (isNegativeBigInt(value)) {
50
- return { positive: toHex(0n) }
51
- }
52
- if (isPositiveBigInt(value)) {
53
- return { positive: value.positive }
54
- }
55
- if (typeof value === 'bigint') {
56
- return { positive: toHex(value) }
57
- }
58
- throw new Error('Invalid value for positive big int')
59
- }