@bopen-io/wallet-toolbox 1.7.18
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/.claude/settings.local.json +10 -0
- package/.env.template +22 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
- package/.github/ISSUE_TEMPLATE/discussion.md +24 -0
- package/.github/pull_request_template.md +22 -0
- package/.github/workflows/push.yaml +145 -0
- package/.prettierrc +10 -0
- package/CHANGELOG.md +280 -0
- package/CONTRIBUTING.md +89 -0
- package/README.md +43 -0
- package/docs/README.md +85 -0
- package/docs/client.md +19627 -0
- package/docs/monitor.md +953 -0
- package/docs/open-rpc/index.html +46 -0
- package/docs/services.md +6377 -0
- package/docs/setup.md +1268 -0
- package/docs/storage.md +5367 -0
- package/docs/wallet.md +19626 -0
- package/jest.config.ts +25 -0
- package/license.md +28 -0
- package/out/tsconfig.all.tsbuildinfo +1 -0
- package/package.json +63 -0
- package/src/CWIStyleWalletManager.ts +1999 -0
- package/src/Setup.ts +579 -0
- package/src/SetupClient.ts +322 -0
- package/src/SetupWallet.ts +108 -0
- package/src/SimpleWalletManager.ts +526 -0
- package/src/Wallet.ts +1169 -0
- package/src/WalletAuthenticationManager.ts +153 -0
- package/src/WalletLogger.ts +213 -0
- package/src/WalletPermissionsManager.ts +3660 -0
- package/src/WalletSettingsManager.ts +114 -0
- package/src/__tests/CWIStyleWalletManager.test.d.ts.map +1 -0
- package/src/__tests/CWIStyleWalletManager.test.js.map +1 -0
- package/src/__tests/CWIStyleWalletManager.test.ts +675 -0
- package/src/__tests/WalletPermissionsManager.callbacks.test.ts +323 -0
- package/src/__tests/WalletPermissionsManager.checks.test.ts +844 -0
- package/src/__tests/WalletPermissionsManager.encryption.test.ts +412 -0
- package/src/__tests/WalletPermissionsManager.fixtures.ts +307 -0
- package/src/__tests/WalletPermissionsManager.flows.test.ts +462 -0
- package/src/__tests/WalletPermissionsManager.initialization.test.ts +300 -0
- package/src/__tests/WalletPermissionsManager.pmodules.test.ts +798 -0
- package/src/__tests/WalletPermissionsManager.proxying.test.ts +724 -0
- package/src/__tests/WalletPermissionsManager.tokens.test.ts +503 -0
- package/src/index.all.ts +27 -0
- package/src/index.client.ts +25 -0
- package/src/index.mobile.ts +21 -0
- package/src/index.ts +1 -0
- package/src/monitor/Monitor.ts +412 -0
- package/src/monitor/MonitorDaemon.ts +188 -0
- package/src/monitor/README.md +3 -0
- package/src/monitor/__test/MonitorDaemon.man.test.ts +45 -0
- package/src/monitor/tasks/TaskCheckForProofs.ts +243 -0
- package/src/monitor/tasks/TaskCheckNoSends.ts +73 -0
- package/src/monitor/tasks/TaskClock.ts +33 -0
- package/src/monitor/tasks/TaskFailAbandoned.ts +54 -0
- package/src/monitor/tasks/TaskMonitorCallHistory.ts +26 -0
- package/src/monitor/tasks/TaskNewHeader.ts +93 -0
- package/src/monitor/tasks/TaskPurge.ts +68 -0
- package/src/monitor/tasks/TaskReorg.ts +89 -0
- package/src/monitor/tasks/TaskReviewStatus.ts +48 -0
- package/src/monitor/tasks/TaskSendWaiting.ts +122 -0
- package/src/monitor/tasks/TaskSyncWhenIdle.ts +26 -0
- package/src/monitor/tasks/TaskUnFail.ts +151 -0
- package/src/monitor/tasks/WalletMonitorTask.ts +47 -0
- package/src/sdk/CertOpsWallet.ts +18 -0
- package/src/sdk/PrivilegedKeyManager.ts +372 -0
- package/src/sdk/README.md +13 -0
- package/src/sdk/WERR_errors.ts +234 -0
- package/src/sdk/WalletError.ts +170 -0
- package/src/sdk/WalletErrorFromJson.ts +80 -0
- package/src/sdk/WalletServices.interfaces.ts +700 -0
- package/src/sdk/WalletSigner.interfaces.ts +11 -0
- package/src/sdk/WalletStorage.interfaces.ts +606 -0
- package/src/sdk/__test/CertificateLifeCycle.test.ts +131 -0
- package/src/sdk/__test/PrivilegedKeyManager.test.ts +738 -0
- package/src/sdk/__test/WalletError.test.ts +318 -0
- package/src/sdk/__test/validationHelpers.test.ts +21 -0
- package/src/sdk/index.ts +10 -0
- package/src/sdk/types.ts +226 -0
- package/src/services/README.md +11 -0
- package/src/services/ServiceCollection.ts +248 -0
- package/src/services/Services.ts +603 -0
- package/src/services/__tests/ARC.man.test.ts +123 -0
- package/src/services/__tests/ARC.timeout.man.test.ts +79 -0
- package/src/services/__tests/ArcGorillaPool.man.test.ts +108 -0
- package/src/services/__tests/arcServices.test.ts +8 -0
- package/src/services/__tests/bitrails.test.ts +56 -0
- package/src/services/__tests/getMerklePath.test.ts +15 -0
- package/src/services/__tests/getRawTx.test.ts +13 -0
- package/src/services/__tests/postBeef.test.ts +104 -0
- package/src/services/__tests/verifyBeef.test.ts +50 -0
- package/src/services/chaintracker/BHServiceClient.ts +212 -0
- package/src/services/chaintracker/ChaintracksChainTracker.ts +71 -0
- package/src/services/chaintracker/__tests/ChaintracksChainTracker.test.ts +33 -0
- package/src/services/chaintracker/__tests/ChaintracksServiceClient.test.ts +29 -0
- package/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.ts +72 -0
- package/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.ts +83 -0
- package/src/services/chaintracker/chaintracks/Api/BulkStorageApi.ts +92 -0
- package/src/services/chaintracker/chaintracks/Api/ChaintracksApi.ts +64 -0
- package/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.ts +189 -0
- package/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.ts +18 -0
- package/src/services/chaintracker/chaintracks/Api/ChaintracksFsApi.ts +58 -0
- package/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.ts +386 -0
- package/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.ts +25 -0
- package/src/services/chaintracker/chaintracks/Chaintracks.ts +609 -0
- package/src/services/chaintracker/chaintracks/ChaintracksService.ts +199 -0
- package/src/services/chaintracker/chaintracks/ChaintracksServiceClient.ts +154 -0
- package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.ts +176 -0
- package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.ts +174 -0
- package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.ts +18 -0
- package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.ts +113 -0
- package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.ts +81 -0
- package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.ts +86 -0
- package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.ts +59 -0
- package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.ts +104 -0
- package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.ts +66 -0
- package/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.ts +566 -0
- package/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.ts +219 -0
- package/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.ts +54 -0
- package/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.ts +33 -0
- package/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.test.ts +124 -0
- package/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.ts +92 -0
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.ts +104 -0
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.ts +382 -0
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.ts +574 -0
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.ts +438 -0
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.ts +29 -0
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.ts +304 -0
- package/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.ts +102 -0
- package/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.ts +45 -0
- package/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.ts +77 -0
- package/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.ts +192 -0
- package/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.ts +75 -0
- package/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.ts +62 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest349/mainNetBlockHeaders.json +1 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest349/mainNet_0.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest349/mainNet_1.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest349/mainNet_2.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest349/mainNet_3.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest379/mainNetBlockHeaders.json +1 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest379/mainNet_0.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest379/mainNet_1.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest379/mainNet_2.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest379/mainNet_3.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest399/mainNetBlockHeaders.json +1 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest399/mainNet_0.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest399/mainNet_1.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest399/mainNet_2.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest399/mainNet_3.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNetBlockHeaders.json +1 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNet_0.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNet_1.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNet_2.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNet_3.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNet_4.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNetBlockHeaders.json +1 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNet_0.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNet_1.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNet_2.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNet_3.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNet_4.headers +0 -0
- package/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.ts +92 -0
- package/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.ts +111 -0
- package/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.ts +91 -0
- package/src/services/chaintracker/chaintracks/createIdbChaintracks.ts +60 -0
- package/src/services/chaintracker/chaintracks/createKnexChaintracks.ts +65 -0
- package/src/services/chaintracker/chaintracks/createNoDbChaintracks.ts +60 -0
- package/src/services/chaintracker/chaintracks/index.all.ts +12 -0
- package/src/services/chaintracker/chaintracks/index.client.ts +4 -0
- package/src/services/chaintracker/chaintracks/index.mobile.ts +37 -0
- package/src/services/chaintracker/chaintracks/util/BulkFileDataManager.ts +975 -0
- package/src/services/chaintracker/chaintracks/util/BulkFileDataReader.ts +60 -0
- package/src/services/chaintracker/chaintracks/util/BulkFilesReader.ts +336 -0
- package/src/services/chaintracker/chaintracks/util/BulkHeaderFile.ts +247 -0
- package/src/services/chaintracker/chaintracks/util/ChaintracksFetch.ts +69 -0
- package/src/services/chaintracker/chaintracks/util/ChaintracksFs.ts +141 -0
- package/src/services/chaintracker/chaintracks/util/HeightRange.ts +153 -0
- package/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.ts +76 -0
- package/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.ts +304 -0
- package/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.ts +60 -0
- package/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.ts +67 -0
- package/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.ts +49 -0
- package/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.ts +573 -0
- package/src/services/chaintracker/chaintracks/util/dirtyHashes.ts +29 -0
- package/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.ts +432 -0
- package/src/services/chaintracker/index.all.ts +4 -0
- package/src/services/chaintracker/index.client.ts +4 -0
- package/src/services/chaintracker/index.mobile.ts +4 -0
- package/src/services/createDefaultWalletServicesOptions.ts +77 -0
- package/src/services/index.ts +1 -0
- package/src/services/processingErrors/arcSuccessError.json +76 -0
- package/src/services/providers/ARC.ts +350 -0
- package/src/services/providers/Bitails.ts +256 -0
- package/src/services/providers/SdkWhatsOnChain.ts +83 -0
- package/src/services/providers/WhatsOnChain.ts +883 -0
- package/src/services/providers/__tests/WhatsOnChain.test.ts +242 -0
- package/src/services/providers/__tests/exchangeRates.test.ts +18 -0
- package/src/services/providers/exchangeRates.ts +265 -0
- package/src/services/providers/getBeefForTxid.ts +369 -0
- package/src/signer/README.md +5 -0
- package/src/signer/WalletSigner.ts +17 -0
- package/src/signer/methods/acquireDirectCertificate.ts +52 -0
- package/src/signer/methods/buildSignableTransaction.ts +183 -0
- package/src/signer/methods/completeSignedTransaction.ts +117 -0
- package/src/signer/methods/createAction.ts +172 -0
- package/src/signer/methods/internalizeAction.ts +106 -0
- package/src/signer/methods/proveCertificate.ts +43 -0
- package/src/signer/methods/signAction.ts +54 -0
- package/src/storage/README.md +14 -0
- package/src/storage/StorageIdb.ts +2304 -0
- package/src/storage/StorageKnex.ts +1425 -0
- package/src/storage/StorageProvider.ts +810 -0
- package/src/storage/StorageReader.ts +194 -0
- package/src/storage/StorageReaderWriter.ts +432 -0
- package/src/storage/StorageSyncReader.ts +34 -0
- package/src/storage/WalletStorageManager.ts +943 -0
- package/src/storage/__test/StorageIdb.test.ts +43 -0
- package/src/storage/__test/WalletStorageManager.test.ts +275 -0
- package/src/storage/__test/adminStats.man.test.ts +89 -0
- package/src/storage/__test/getBeefForTransaction.test.ts +385 -0
- package/src/storage/index.all.ts +11 -0
- package/src/storage/index.client.ts +7 -0
- package/src/storage/index.mobile.ts +6 -0
- package/src/storage/methods/ListActionsSpecOp.ts +70 -0
- package/src/storage/methods/ListOutputsSpecOp.ts +129 -0
- package/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.ts +1057 -0
- package/src/storage/methods/__test/GenerateChange/randomValsUsed1.ts +20 -0
- package/src/storage/methods/__test/offsetKey.test.ts +274 -0
- package/src/storage/methods/attemptToPostReqsToNetwork.ts +389 -0
- package/src/storage/methods/createAction.ts +947 -0
- package/src/storage/methods/generateChange.ts +556 -0
- package/src/storage/methods/getBeefForTransaction.ts +139 -0
- package/src/storage/methods/getSyncChunk.ts +293 -0
- package/src/storage/methods/internalizeAction.ts +562 -0
- package/src/storage/methods/listActionsIdb.ts +183 -0
- package/src/storage/methods/listActionsKnex.ts +226 -0
- package/src/storage/methods/listCertificates.ts +73 -0
- package/src/storage/methods/listOutputsIdb.ts +203 -0
- package/src/storage/methods/listOutputsKnex.ts +263 -0
- package/src/storage/methods/offsetKey.ts +89 -0
- package/src/storage/methods/processAction.ts +420 -0
- package/src/storage/methods/purgeData.ts +251 -0
- package/src/storage/methods/purgeDataIdb.ts +10 -0
- package/src/storage/methods/reviewStatus.ts +101 -0
- package/src/storage/methods/reviewStatusIdb.ts +43 -0
- package/src/storage/methods/utils.Buffer.ts +33 -0
- package/src/storage/methods/utils.ts +56 -0
- package/src/storage/remoting/StorageClient.ts +567 -0
- package/src/storage/remoting/StorageMobile.ts +544 -0
- package/src/storage/remoting/StorageServer.ts +291 -0
- package/src/storage/remoting/__test/StorageClient.test.ts +113 -0
- package/src/storage/schema/KnexMigrations.ts +489 -0
- package/src/storage/schema/StorageIdbSchema.ts +150 -0
- package/src/storage/schema/entities/EntityBase.ts +210 -0
- package/src/storage/schema/entities/EntityCertificate.ts +188 -0
- package/src/storage/schema/entities/EntityCertificateField.ts +136 -0
- package/src/storage/schema/entities/EntityCommission.ts +148 -0
- package/src/storage/schema/entities/EntityOutput.ts +290 -0
- package/src/storage/schema/entities/EntityOutputBasket.ts +153 -0
- package/src/storage/schema/entities/EntityOutputTag.ts +121 -0
- package/src/storage/schema/entities/EntityOutputTagMap.ts +123 -0
- package/src/storage/schema/entities/EntityProvenTx.ts +319 -0
- package/src/storage/schema/entities/EntityProvenTxReq.ts +580 -0
- package/src/storage/schema/entities/EntitySyncState.ts +389 -0
- package/src/storage/schema/entities/EntityTransaction.ts +306 -0
- package/src/storage/schema/entities/EntityTxLabel.ts +121 -0
- package/src/storage/schema/entities/EntityTxLabelMap.ts +123 -0
- package/src/storage/schema/entities/EntityUser.ts +112 -0
- package/src/storage/schema/entities/MergeEntity.ts +73 -0
- package/src/storage/schema/entities/__tests/CertificateFieldTests.test.ts +353 -0
- package/src/storage/schema/entities/__tests/CertificateTests.test.ts +354 -0
- package/src/storage/schema/entities/__tests/CommissionTests.test.ts +371 -0
- package/src/storage/schema/entities/__tests/OutputBasketTests.test.ts +278 -0
- package/src/storage/schema/entities/__tests/OutputTagMapTests.test.ts +242 -0
- package/src/storage/schema/entities/__tests/OutputTagTests.test.ts +288 -0
- package/src/storage/schema/entities/__tests/OutputTests.test.ts +464 -0
- package/src/storage/schema/entities/__tests/ProvenTxReqTests.test.ts +340 -0
- package/src/storage/schema/entities/__tests/ProvenTxTests.test.ts +504 -0
- package/src/storage/schema/entities/__tests/SyncStateTests.test.ts +288 -0
- package/src/storage/schema/entities/__tests/TransactionTests.test.ts +604 -0
- package/src/storage/schema/entities/__tests/TxLabelMapTests.test.ts +361 -0
- package/src/storage/schema/entities/__tests/TxLabelTests.test.ts +198 -0
- package/src/storage/schema/entities/__tests/stampLogTests.test.ts +90 -0
- package/src/storage/schema/entities/__tests/usersTests.test.ts +340 -0
- package/src/storage/schema/entities/index.ts +16 -0
- package/src/storage/schema/tables/TableCertificate.ts +21 -0
- package/src/storage/schema/tables/TableCertificateField.ts +12 -0
- package/src/storage/schema/tables/TableCommission.ts +13 -0
- package/src/storage/schema/tables/TableMonitorEvent.ts +9 -0
- package/src/storage/schema/tables/TableOutput.ts +64 -0
- package/src/storage/schema/tables/TableOutputBasket.ts +12 -0
- package/src/storage/schema/tables/TableOutputTag.ts +10 -0
- package/src/storage/schema/tables/TableOutputTagMap.ts +9 -0
- package/src/storage/schema/tables/TableProvenTx.ts +14 -0
- package/src/storage/schema/tables/TableProvenTxReq.ts +65 -0
- package/src/storage/schema/tables/TableSettings.ts +17 -0
- package/src/storage/schema/tables/TableSyncState.ts +18 -0
- package/src/storage/schema/tables/TableTransaction.ts +54 -0
- package/src/storage/schema/tables/TableTxLabel.ts +10 -0
- package/src/storage/schema/tables/TableTxLabelMap.ts +9 -0
- package/src/storage/schema/tables/TableUser.ts +16 -0
- package/src/storage/schema/tables/index.ts +16 -0
- package/src/storage/sync/StorageMySQLDojoReader.ts +696 -0
- package/src/storage/sync/index.ts +1 -0
- package/src/utility/Format.ts +133 -0
- package/src/utility/README.md +3 -0
- package/src/utility/ReaderUint8Array.ts +187 -0
- package/src/utility/ScriptTemplateBRC29.ts +73 -0
- package/src/utility/__tests/utilityHelpers.noBuffer.test.ts +109 -0
- package/src/utility/aggregateResults.ts +68 -0
- package/src/utility/identityUtils.ts +159 -0
- package/src/utility/index.all.ts +7 -0
- package/src/utility/index.client.ts +7 -0
- package/src/utility/parseTxScriptOffsets.ts +29 -0
- package/src/utility/stampLog.ts +69 -0
- package/src/utility/tscProofToMerklePath.ts +48 -0
- package/src/utility/utilityHelpers.buffer.ts +34 -0
- package/src/utility/utilityHelpers.noBuffer.ts +60 -0
- package/src/utility/utilityHelpers.ts +275 -0
- package/src/wab-client/WABClient.ts +94 -0
- package/src/wab-client/__tests/WABClient.man.test.ts +59 -0
- package/src/wab-client/auth-method-interactors/AuthMethodInteractor.ts +47 -0
- package/src/wab-client/auth-method-interactors/DevConsoleInteractor.ts +73 -0
- package/src/wab-client/auth-method-interactors/PersonaIDInteractor.ts +35 -0
- package/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.ts +72 -0
- package/syncVersions.js +71 -0
- package/test/Wallet/StorageClient/storageClient.man.test.ts +75 -0
- package/test/Wallet/action/abortAction.test.ts +47 -0
- package/test/Wallet/action/createAction.test.ts +299 -0
- package/test/Wallet/action/createAction2.test.ts +1273 -0
- package/test/Wallet/action/createActionToGenerateBeefs.man.test.ts +293 -0
- package/test/Wallet/action/internalizeAction.a.test.ts +286 -0
- package/test/Wallet/action/internalizeAction.test.ts +682 -0
- package/test/Wallet/action/relinquishOutput.test.ts +37 -0
- package/test/Wallet/certificate/acquireCertificate.test.ts +298 -0
- package/test/Wallet/certificate/listCertificates.test.ts +346 -0
- package/test/Wallet/construct/Wallet.constructor.test.ts +57 -0
- package/test/Wallet/get/getHeaderForHeight.test.ts +82 -0
- package/test/Wallet/get/getHeight.test.ts +52 -0
- package/test/Wallet/get/getKnownTxids.test.ts +86 -0
- package/test/Wallet/get/getNetwork.test.ts +27 -0
- package/test/Wallet/get/getVersion.test.ts +27 -0
- package/test/Wallet/list/listActions.test.ts +279 -0
- package/test/Wallet/list/listActions2.test.ts +1381 -0
- package/test/Wallet/list/listCertificates.test.ts +118 -0
- package/test/Wallet/list/listOutputs.test.ts +447 -0
- package/test/Wallet/live/walletLive.man.test.ts +521 -0
- package/test/Wallet/local/localWallet.man.test.ts +93 -0
- package/test/Wallet/local/localWallet2.man.test.ts +277 -0
- package/test/Wallet/signAction/mountaintop.man.test.ts +130 -0
- package/test/Wallet/specOps/specOps.man.test.ts +220 -0
- package/test/Wallet/support/janitor.man.test.ts +40 -0
- package/test/Wallet/support/operations.man.test.ts +407 -0
- package/test/Wallet/support/reqErrorReview.2025.05.06.man.test.ts +347 -0
- package/test/Wallet/sync/Wallet.sync.test.ts +215 -0
- package/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.ts +203 -0
- package/test/Wallet/sync/setActive.test.ts +170 -0
- package/test/WalletClient/LocalKVStore.man.test.ts +114 -0
- package/test/WalletClient/WERR.man.test.ts +35 -0
- package/test/bsv-ts-sdk/LocalKVStore.test.ts +102 -0
- package/test/checkDB.ts +57 -0
- package/test/checkdb +0 -0
- package/test/examples/backup.man.test.ts +59 -0
- package/test/examples/pushdrop.test.ts +282 -0
- package/test/monitor/Monitor.test.ts +620 -0
- package/test/services/Services.test.ts +263 -0
- package/test/storage/KnexMigrations.test.ts +86 -0
- package/test/storage/StorageMySQLDojoReader.man.test.ts +60 -0
- package/test/storage/count.test.ts +177 -0
- package/test/storage/find.test.ts +195 -0
- package/test/storage/findLegacy.test.ts +67 -0
- package/test/storage/idb/allocateChange.test.ts +251 -0
- package/test/storage/idb/count.test.ts +158 -0
- package/test/storage/idb/find.test.ts +177 -0
- package/test/storage/idb/idbSpeed.test.ts +36 -0
- package/test/storage/idb/insert.test.ts +268 -0
- package/test/storage/idb/transactionAbort.test.ts +108 -0
- package/test/storage/idb/update.test.ts +999 -0
- package/test/storage/insert.test.ts +278 -0
- package/test/storage/update.test.ts +1021 -0
- package/test/storage/update2.test.ts +897 -0
- package/test/utils/TestUtilsWalletStorage.ts +2526 -0
- package/test/utils/localWalletMethods.ts +363 -0
- package/test/utils/removeFailedFromDatabase.sql +17 -0
- package/ts2md.json +44 -0
- package/tsconfig.all.json +31 -0
- package/tsconfig.client.json +29 -0
- package/tsconfig.json +17 -0
- package/tsconfig.mobile.json +28 -0
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
import { EntityUser } from '../EntityUser'
|
|
2
|
+
import { createSyncMap, sdk, SyncMap, TableUser } from '../../../../../src'
|
|
3
|
+
import { TestUtilsWalletStorage as _tu, TestWalletNoSetup } from '../../../../../test/utils/TestUtilsWalletStorage'
|
|
4
|
+
describe('User class method tests', () => {
|
|
5
|
+
jest.setTimeout(99999999) // Extend timeout for database operations
|
|
6
|
+
|
|
7
|
+
const env = _tu.getEnv('test') // Test environment
|
|
8
|
+
const ctxs: TestWalletNoSetup[] = [] // Context for primary databases
|
|
9
|
+
const ctxs2: TestWalletNoSetup[] = [] // Context for secondary databases
|
|
10
|
+
|
|
11
|
+
beforeAll(async () => {
|
|
12
|
+
// Set up MySQL and SQLite databases for testing
|
|
13
|
+
if (env.runMySQL) {
|
|
14
|
+
ctxs.push(await _tu.createLegacyWalletMySQLCopy('userTests_db1'))
|
|
15
|
+
ctxs2.push(await _tu.createLegacyWalletMySQLCopy('userTests_db2'))
|
|
16
|
+
}
|
|
17
|
+
ctxs.push(await _tu.createLegacyWalletSQLiteCopy('userTests_db1'))
|
|
18
|
+
ctxs2.push(await _tu.createLegacyWalletSQLiteCopy('userTests_db2'))
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
afterAll(async () => {
|
|
22
|
+
// Clean up primary databases
|
|
23
|
+
for (const ctx of ctxs) {
|
|
24
|
+
await ctx.storage.destroy()
|
|
25
|
+
}
|
|
26
|
+
// Clean up secondary databases
|
|
27
|
+
for (const ctx of ctxs2) {
|
|
28
|
+
await ctx.storage.destroy()
|
|
29
|
+
}
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
// Test: Default constructor behavior
|
|
33
|
+
test('1_creates_user_with_default_values', () => {
|
|
34
|
+
const user = new EntityUser()
|
|
35
|
+
|
|
36
|
+
// Default values
|
|
37
|
+
expect(user.userId).toBe(0)
|
|
38
|
+
expect(user.identityKey).toBe('')
|
|
39
|
+
expect(user.created_at).toBeInstanceOf(Date)
|
|
40
|
+
expect(user.updated_at).toBeInstanceOf(Date)
|
|
41
|
+
expect(user.created_at <= user.updated_at).toBe(true)
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
// Test: Constructor with provided API object
|
|
45
|
+
test('2_creates_user_with_provided_api_object', () => {
|
|
46
|
+
const now = new Date()
|
|
47
|
+
const apiObject: TableUser = {
|
|
48
|
+
userId: 42,
|
|
49
|
+
created_at: now,
|
|
50
|
+
updated_at: now,
|
|
51
|
+
identityKey: 'testIdentityKey',
|
|
52
|
+
activeStorage: ''
|
|
53
|
+
}
|
|
54
|
+
const user = new EntityUser(apiObject)
|
|
55
|
+
|
|
56
|
+
// Verify all properties match the API object
|
|
57
|
+
expect(user.userId).toBe(42)
|
|
58
|
+
expect(user.identityKey).toBe('testIdentityKey')
|
|
59
|
+
expect(user.created_at).toBe(now)
|
|
60
|
+
expect(user.updated_at).toBe(now)
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
// Test: Getters and setters behavior
|
|
64
|
+
test('3_getters_and_setters_work_correctly', () => {
|
|
65
|
+
const user = new EntityUser()
|
|
66
|
+
|
|
67
|
+
// Test setting values
|
|
68
|
+
const now = new Date()
|
|
69
|
+
user.userId = 1001
|
|
70
|
+
user.identityKey = 'newIdentityKey'
|
|
71
|
+
user.created_at = now
|
|
72
|
+
user.updated_at = now
|
|
73
|
+
user.activeStorage = 'testActiveStorage' // Setting activeStorage
|
|
74
|
+
|
|
75
|
+
// Verify getters return the updated values
|
|
76
|
+
expect(user.userId).toBe(1001)
|
|
77
|
+
expect(user.identityKey).toBe('newIdentityKey')
|
|
78
|
+
expect(user.created_at).toBe(now)
|
|
79
|
+
expect(user.updated_at).toBe(now)
|
|
80
|
+
expect(user.activeStorage).toBe('testActiveStorage') // Getting activeStorage
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
// Test: equals method matching entities
|
|
84
|
+
test('5_equals_identifies_matching_entities', async () => {
|
|
85
|
+
for (const ctx1 of ctxs) {
|
|
86
|
+
for (const ctx2 of ctxs2) {
|
|
87
|
+
// Insert the first user into the first database
|
|
88
|
+
const user1 = new EntityUser({
|
|
89
|
+
userId: 2,
|
|
90
|
+
identityKey: 'key1',
|
|
91
|
+
created_at: new Date('2023-01-01'),
|
|
92
|
+
updated_at: new Date('2023-01-02'),
|
|
93
|
+
activeStorage: ''
|
|
94
|
+
})
|
|
95
|
+
await ctx1.activeStorage.insertUser(user1.toApi())
|
|
96
|
+
|
|
97
|
+
// Insert a matching user into the second database
|
|
98
|
+
const user2 = new EntityUser({
|
|
99
|
+
userId: 3, // Different ID
|
|
100
|
+
identityKey: 'key1', // Same key
|
|
101
|
+
created_at: new Date('2023-01-01'),
|
|
102
|
+
updated_at: new Date('2023-01-02'),
|
|
103
|
+
activeStorage: ''
|
|
104
|
+
})
|
|
105
|
+
await ctx2.activeStorage.insertUser(user2.toApi())
|
|
106
|
+
|
|
107
|
+
const syncMap = createSyncMap()
|
|
108
|
+
|
|
109
|
+
// Verify the entities match across databases
|
|
110
|
+
expect(user1.equals(user2.toApi(), syncMap)).toBe(true) // Should match
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
// Test: equals method non-matching entities
|
|
116
|
+
test('6_equals_identifies_non_matching_entities', async () => {
|
|
117
|
+
for (const ctx1 of ctxs) {
|
|
118
|
+
for (const ctx2 of ctxs2) {
|
|
119
|
+
// Insert the first user into the first database
|
|
120
|
+
const user1 = new EntityUser({
|
|
121
|
+
userId: 4,
|
|
122
|
+
identityKey: 'key2',
|
|
123
|
+
created_at: new Date('2023-01-01'),
|
|
124
|
+
updated_at: new Date('2023-01-02'),
|
|
125
|
+
activeStorage: ''
|
|
126
|
+
})
|
|
127
|
+
await ctx1.activeStorage.insertUser(user1.toApi())
|
|
128
|
+
|
|
129
|
+
// Insert a user with a different key into the second database
|
|
130
|
+
const user2 = new EntityUser({
|
|
131
|
+
userId: 5, // Different ID
|
|
132
|
+
identityKey: 'key3', // Different key
|
|
133
|
+
created_at: new Date('2023-01-01'),
|
|
134
|
+
updated_at: new Date('2023-01-02'),
|
|
135
|
+
activeStorage: ''
|
|
136
|
+
})
|
|
137
|
+
await ctx2.activeStorage.insertUser(user2.toApi())
|
|
138
|
+
|
|
139
|
+
const syncMap = createSyncMap()
|
|
140
|
+
|
|
141
|
+
// Verify the entities do not match across databases
|
|
142
|
+
expect(user1.equals(user2.toApi(), syncMap)).toBe(false) // Should not match
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
})
|
|
146
|
+
|
|
147
|
+
// Test: Handles edge cases in the constructor
|
|
148
|
+
test('7_handles_edge_cases_in_constructor', () => {
|
|
149
|
+
const now = new Date()
|
|
150
|
+
const pastDate = new Date(now.getTime() - 1000000)
|
|
151
|
+
|
|
152
|
+
// Provide incomplete API object
|
|
153
|
+
const partialApiObject: Partial<TableUser> = {
|
|
154
|
+
userId: 123,
|
|
155
|
+
created_at: pastDate
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
const user = new EntityUser(partialApiObject as TableUser)
|
|
159
|
+
|
|
160
|
+
// Default values should fill in missing fields
|
|
161
|
+
expect(user.userId).toBe(123)
|
|
162
|
+
expect(user.identityKey).toBeUndefined() // Default undefined
|
|
163
|
+
expect(user.created_at).toBe(pastDate)
|
|
164
|
+
expect(user.updated_at).toBeUndefined() // Default undefined
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
// Test: Handles large input values
|
|
168
|
+
test('8_handles_large_input_values', () => {
|
|
169
|
+
const now = new Date()
|
|
170
|
+
const largeUserId = Number.MAX_SAFE_INTEGER
|
|
171
|
+
const longIdentityKey = 'x'.repeat(1000)
|
|
172
|
+
|
|
173
|
+
const apiObject: TableUser = {
|
|
174
|
+
userId: largeUserId,
|
|
175
|
+
created_at: now,
|
|
176
|
+
updated_at: now,
|
|
177
|
+
identityKey: longIdentityKey,
|
|
178
|
+
activeStorage: ''
|
|
179
|
+
}
|
|
180
|
+
const user = new EntityUser(apiObject)
|
|
181
|
+
|
|
182
|
+
expect(user.userId).toBe(largeUserId)
|
|
183
|
+
expect(user.identityKey).toBe(longIdentityKey)
|
|
184
|
+
})
|
|
185
|
+
|
|
186
|
+
// Test: Handles empty API object
|
|
187
|
+
test('10_handles_empty_api_object', () => {
|
|
188
|
+
const emptyApiObject: TableUser = {} as TableUser
|
|
189
|
+
const user = new EntityUser(emptyApiObject)
|
|
190
|
+
|
|
191
|
+
// Default values should be applied but constructor does not set default values for empty object
|
|
192
|
+
expect(user.userId).toBeUndefined()
|
|
193
|
+
expect(user.identityKey).toBeUndefined()
|
|
194
|
+
expect(user.created_at).toBeUndefined()
|
|
195
|
+
expect(user.updated_at).toBeUndefined()
|
|
196
|
+
})
|
|
197
|
+
|
|
198
|
+
// Test: `id` getter and setter
|
|
199
|
+
test('11_id_getter_and_setter_work_correctly', () => {
|
|
200
|
+
const user = new EntityUser()
|
|
201
|
+
|
|
202
|
+
user.id = 123 // Test setter
|
|
203
|
+
expect(user.id).toBe(123) // Test getter
|
|
204
|
+
})
|
|
205
|
+
|
|
206
|
+
// Test: `entityName` getter
|
|
207
|
+
test('12_entityName_returns_User', () => {
|
|
208
|
+
const user = new EntityUser()
|
|
209
|
+
|
|
210
|
+
expect(user.entityName).toBe('user')
|
|
211
|
+
})
|
|
212
|
+
|
|
213
|
+
// Test: `entityTable` getter
|
|
214
|
+
test('13_entityTable_returns_users', () => {
|
|
215
|
+
const user = new EntityUser()
|
|
216
|
+
|
|
217
|
+
expect(user.entityTable).toBe('users')
|
|
218
|
+
})
|
|
219
|
+
|
|
220
|
+
// Test: `mergeExisting` updates user when `ei.updated_at` is newer
|
|
221
|
+
test('14_mergeExisting_updates_user_when_ei_updated_at_is_newer', async () => {
|
|
222
|
+
const user = new EntityUser({
|
|
223
|
+
userId: 1,
|
|
224
|
+
created_at: new Date('2023-01-01'),
|
|
225
|
+
updated_at: new Date('2023-01-01'),
|
|
226
|
+
identityKey: 'oldKey',
|
|
227
|
+
activeStorage: 'oldStorage'
|
|
228
|
+
})
|
|
229
|
+
|
|
230
|
+
const updatedEi: TableUser = {
|
|
231
|
+
userId: 1,
|
|
232
|
+
created_at: new Date('2023-01-01'),
|
|
233
|
+
updated_at: new Date('2023-02-01'), // Newer `updated_at`
|
|
234
|
+
identityKey: 'oldKey',
|
|
235
|
+
activeStorage: 'newStorage'
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
const result = await user.mergeExisting(
|
|
239
|
+
{
|
|
240
|
+
updateUser: async (id: number, data: TableUser) => {
|
|
241
|
+
expect(id).toBe(1)
|
|
242
|
+
expect(data.activeStorage).toBe('newStorage')
|
|
243
|
+
expect(data.updated_at).toBeInstanceOf(Date)
|
|
244
|
+
}
|
|
245
|
+
} as any,
|
|
246
|
+
undefined,
|
|
247
|
+
updatedEi,
|
|
248
|
+
undefined
|
|
249
|
+
)
|
|
250
|
+
|
|
251
|
+
expect(result).toBe(true)
|
|
252
|
+
expect(user.activeStorage).toBe('newStorage') // Updated `activeStorage`
|
|
253
|
+
})
|
|
254
|
+
|
|
255
|
+
// Test: `mergeExisting` does not update user when `ei.updated_at` is older
|
|
256
|
+
test('15_mergeExisting_does_not_update_user_when_ei_updated_at_is_older', async () => {
|
|
257
|
+
const user = new EntityUser({
|
|
258
|
+
userId: 1,
|
|
259
|
+
created_at: new Date('2023-01-01'),
|
|
260
|
+
updated_at: new Date('2023-02-01'),
|
|
261
|
+
identityKey: 'oldKey',
|
|
262
|
+
activeStorage: 'oldStorage'
|
|
263
|
+
})
|
|
264
|
+
|
|
265
|
+
const olderEi: TableUser = {
|
|
266
|
+
userId: 1,
|
|
267
|
+
created_at: new Date('2023-01-01'),
|
|
268
|
+
updated_at: new Date('2023-01-01'), // Older `updated_at`
|
|
269
|
+
identityKey: 'oldKey',
|
|
270
|
+
activeStorage: 'newStorage'
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
const result = await user.mergeExisting(
|
|
274
|
+
{
|
|
275
|
+
updateUser: async () => {
|
|
276
|
+
throw new Error('This should not be called')
|
|
277
|
+
}
|
|
278
|
+
} as any,
|
|
279
|
+
undefined,
|
|
280
|
+
olderEi,
|
|
281
|
+
undefined
|
|
282
|
+
)
|
|
283
|
+
|
|
284
|
+
expect(result).toBe(false)
|
|
285
|
+
expect(user.activeStorage).toBe('oldStorage')
|
|
286
|
+
})
|
|
287
|
+
|
|
288
|
+
// Test: `mergeExisting` updates user and uses `trx` when provided
|
|
289
|
+
test('16_mergeExisting_updates_user_with_trx', async () => {
|
|
290
|
+
const user = new EntityUser({
|
|
291
|
+
userId: 1,
|
|
292
|
+
created_at: new Date('2023-01-01'),
|
|
293
|
+
updated_at: new Date('2023-01-01'),
|
|
294
|
+
identityKey: 'oldKey',
|
|
295
|
+
activeStorage: 'oldStorage'
|
|
296
|
+
})
|
|
297
|
+
|
|
298
|
+
const updatedEi: TableUser = {
|
|
299
|
+
userId: 1,
|
|
300
|
+
created_at: new Date('2023-01-01'),
|
|
301
|
+
updated_at: new Date('2023-02-01'), // Newer `updated_at`
|
|
302
|
+
identityKey: 'oldKey',
|
|
303
|
+
activeStorage: 'newStorage'
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
const mockTrx = {}
|
|
307
|
+
|
|
308
|
+
const result = await user.mergeExisting(
|
|
309
|
+
{
|
|
310
|
+
updateUser: async (id: number, data: TableUser, trx: any) => {
|
|
311
|
+
expect(id).toBe(1)
|
|
312
|
+
expect(data.activeStorage).toBe('newStorage')
|
|
313
|
+
expect(data.updated_at).toBeInstanceOf(Date)
|
|
314
|
+
expect(trx).toBe(mockTrx)
|
|
315
|
+
}
|
|
316
|
+
} as any,
|
|
317
|
+
undefined,
|
|
318
|
+
updatedEi,
|
|
319
|
+
undefined,
|
|
320
|
+
mockTrx
|
|
321
|
+
)
|
|
322
|
+
|
|
323
|
+
expect(result).toBe(true)
|
|
324
|
+
expect(user.activeStorage).toBe('newStorage')
|
|
325
|
+
})
|
|
326
|
+
|
|
327
|
+
// Test: `mergeNew` always throws an error
|
|
328
|
+
test('17_mergeNew_always_throws_error', async () => {
|
|
329
|
+
const user = new EntityUser()
|
|
330
|
+
const storage = {} // Placeholder for `storage`, not used in this case.
|
|
331
|
+
const userId = 123 // Example userId
|
|
332
|
+
const syncMap = {} // Placeholder for `syncMap`, not used in this case.
|
|
333
|
+
const trx = undefined // Optional transaction token, set as undefined.
|
|
334
|
+
|
|
335
|
+
// The method should throw an error when called
|
|
336
|
+
await expect(user.mergeNew(storage as any, userId, syncMap as any, trx)).rejects.toThrowError(
|
|
337
|
+
'a sync chunk merge must never create a new user'
|
|
338
|
+
)
|
|
339
|
+
})
|
|
340
|
+
})
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from './EntityBase'
|
|
2
|
+
export * from './EntitySyncState'
|
|
3
|
+
export * from './EntityProvenTx'
|
|
4
|
+
export * from './EntityProvenTxReq'
|
|
5
|
+
export * from './MergeEntity'
|
|
6
|
+
export * from './EntityOutputBasket'
|
|
7
|
+
export * from './EntityUser'
|
|
8
|
+
export * from './EntityTxLabelMap'
|
|
9
|
+
export * from './EntityTxLabel'
|
|
10
|
+
export * from './EntityOutputTag'
|
|
11
|
+
export * from './EntityOutputTagMap'
|
|
12
|
+
export * from './EntityCommission'
|
|
13
|
+
export * from './EntityCertificate'
|
|
14
|
+
export * from './EntityCertificateField'
|
|
15
|
+
export * from './EntityTransaction'
|
|
16
|
+
export * from './EntityOutput'
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Base64String, HexString, OutpointString, PubKeyHex } from '@bsv/sdk'
|
|
2
|
+
import { sdk, TableCertificateField } from '../../../index.client'
|
|
3
|
+
|
|
4
|
+
export interface TableCertificate extends sdk.EntityTimeStamp {
|
|
5
|
+
created_at: Date
|
|
6
|
+
updated_at: Date
|
|
7
|
+
certificateId: number
|
|
8
|
+
userId: number
|
|
9
|
+
type: Base64String
|
|
10
|
+
serialNumber: Base64String
|
|
11
|
+
certifier: PubKeyHex
|
|
12
|
+
subject: PubKeyHex
|
|
13
|
+
verifier?: PubKeyHex
|
|
14
|
+
revocationOutpoint: OutpointString
|
|
15
|
+
signature: HexString
|
|
16
|
+
isDeleted: boolean
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface TableCertificateX extends TableCertificate {
|
|
20
|
+
fields?: TableCertificateField[]
|
|
21
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Base64String } from '@bsv/sdk'
|
|
2
|
+
import { sdk } from '../../../index.client'
|
|
3
|
+
|
|
4
|
+
export interface TableCertificateField extends sdk.EntityTimeStamp {
|
|
5
|
+
created_at: Date
|
|
6
|
+
updated_at: Date
|
|
7
|
+
userId: number
|
|
8
|
+
certificateId: number
|
|
9
|
+
fieldName: string
|
|
10
|
+
fieldValue: string
|
|
11
|
+
masterKey: Base64String
|
|
12
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { sdk } from '../../../index.client'
|
|
2
|
+
|
|
3
|
+
export interface TableCommission extends sdk.EntityTimeStamp {
|
|
4
|
+
created_at: Date
|
|
5
|
+
updated_at: Date
|
|
6
|
+
commissionId: number
|
|
7
|
+
userId: number
|
|
8
|
+
transactionId: number
|
|
9
|
+
satoshis: number
|
|
10
|
+
keyOffset: string
|
|
11
|
+
isRedeemed: boolean
|
|
12
|
+
lockingScript: number[]
|
|
13
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Base64String, DescriptionString5to50Bytes, PubKeyHex } from '@bsv/sdk'
|
|
2
|
+
import { TableOutputBasket, TableOutputTag } from '.'
|
|
3
|
+
import { sdk } from '../../../index.client'
|
|
4
|
+
|
|
5
|
+
export interface TableOutput extends sdk.EntityTimeStamp {
|
|
6
|
+
created_at: Date
|
|
7
|
+
updated_at: Date
|
|
8
|
+
outputId: number
|
|
9
|
+
userId: number
|
|
10
|
+
transactionId: number
|
|
11
|
+
basketId?: number
|
|
12
|
+
spendable: boolean
|
|
13
|
+
change: boolean
|
|
14
|
+
outputDescription: DescriptionString5to50Bytes
|
|
15
|
+
vout: number
|
|
16
|
+
satoshis: number
|
|
17
|
+
providedBy: sdk.StorageProvidedBy
|
|
18
|
+
purpose: string
|
|
19
|
+
type: string
|
|
20
|
+
txid?: string
|
|
21
|
+
senderIdentityKey?: PubKeyHex
|
|
22
|
+
derivationPrefix?: Base64String
|
|
23
|
+
derivationSuffix?: Base64String
|
|
24
|
+
customInstructions?: string
|
|
25
|
+
spentBy?: number
|
|
26
|
+
sequenceNumber?: number
|
|
27
|
+
spendingDescription?: string
|
|
28
|
+
scriptLength?: number
|
|
29
|
+
scriptOffset?: number
|
|
30
|
+
lockingScript?: number[]
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface TableOutputX extends TableOutput {
|
|
34
|
+
basket?: TableOutputBasket
|
|
35
|
+
tags?: TableOutputTag[]
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export const outputColumnsWithoutLockingScript = [
|
|
39
|
+
'created_at',
|
|
40
|
+
'updated_at',
|
|
41
|
+
'outputId',
|
|
42
|
+
'userId',
|
|
43
|
+
'transactionId',
|
|
44
|
+
'basketId',
|
|
45
|
+
'spendable',
|
|
46
|
+
'change',
|
|
47
|
+
'vout',
|
|
48
|
+
'satoshis',
|
|
49
|
+
'providedBy',
|
|
50
|
+
'purpose',
|
|
51
|
+
'type',
|
|
52
|
+
'outputDescription',
|
|
53
|
+
'txid',
|
|
54
|
+
'senderIdentityKey',
|
|
55
|
+
'derivationPrefix',
|
|
56
|
+
'derivationSuffix',
|
|
57
|
+
'customInstructions',
|
|
58
|
+
'spentBy',
|
|
59
|
+
'sequenceNumber',
|
|
60
|
+
'spendingDescription',
|
|
61
|
+
'scriptLength',
|
|
62
|
+
'scriptOffset'
|
|
63
|
+
//'lockingScript',
|
|
64
|
+
]
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { sdk } from '../../../index.client'
|
|
2
|
+
|
|
3
|
+
export interface TableOutputBasket extends sdk.EntityTimeStamp {
|
|
4
|
+
created_at: Date
|
|
5
|
+
updated_at: Date
|
|
6
|
+
basketId: number
|
|
7
|
+
userId: number
|
|
8
|
+
name: string
|
|
9
|
+
numberOfDesiredUTXOs: number
|
|
10
|
+
minimumDesiredUTXOValue: number
|
|
11
|
+
isDeleted: boolean
|
|
12
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { sdk } from '../../../index.client'
|
|
2
|
+
|
|
3
|
+
export interface TableProvenTx extends sdk.EntityTimeStamp {
|
|
4
|
+
created_at: Date
|
|
5
|
+
updated_at: Date
|
|
6
|
+
provenTxId: number
|
|
7
|
+
txid: string
|
|
8
|
+
height: number
|
|
9
|
+
index: number
|
|
10
|
+
merklePath: number[]
|
|
11
|
+
rawTx: number[]
|
|
12
|
+
blockHash: string
|
|
13
|
+
merkleRoot: string
|
|
14
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { sdk } from '../../../index.client'
|
|
2
|
+
|
|
3
|
+
export interface TableProvenTxReq extends TableProvenTxReqDynamics {
|
|
4
|
+
created_at: Date
|
|
5
|
+
updated_at: Date
|
|
6
|
+
provenTxReqId: number
|
|
7
|
+
provenTxId?: number
|
|
8
|
+
status: sdk.ProvenTxReqStatus
|
|
9
|
+
/**
|
|
10
|
+
* Count of how many times a service has been asked about this txid
|
|
11
|
+
*/
|
|
12
|
+
attempts: number
|
|
13
|
+
/**
|
|
14
|
+
* Set to true when a terminal status has been set and notification has occurred.
|
|
15
|
+
*/
|
|
16
|
+
notified: boolean
|
|
17
|
+
txid: string
|
|
18
|
+
/**
|
|
19
|
+
* If valid, a unique string identifying a batch of transactions to be sent together for processing.
|
|
20
|
+
*/
|
|
21
|
+
batch?: string
|
|
22
|
+
/**
|
|
23
|
+
* JSON string of processing history.
|
|
24
|
+
* Parses to `ProvenTxReqHistoryApi`.
|
|
25
|
+
*/
|
|
26
|
+
history: string
|
|
27
|
+
/**
|
|
28
|
+
* JSON string of data to drive notifications when this request completes.
|
|
29
|
+
* Parses to `ProvenTxReqNotifyApi`.
|
|
30
|
+
*/
|
|
31
|
+
notify: string
|
|
32
|
+
rawTx: number[]
|
|
33
|
+
inputBEEF?: number[]
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Table properties that may change after initial record insertion.
|
|
38
|
+
*/
|
|
39
|
+
export interface TableProvenTxReqDynamics extends sdk.EntityTimeStamp {
|
|
40
|
+
updated_at: Date
|
|
41
|
+
provenTxId?: number
|
|
42
|
+
status: sdk.ProvenTxReqStatus
|
|
43
|
+
/**
|
|
44
|
+
* Count of how many times a service has been asked about this txid
|
|
45
|
+
*/
|
|
46
|
+
attempts: number
|
|
47
|
+
/**
|
|
48
|
+
* Set to true when a terminal status has been set and notification has occurred.
|
|
49
|
+
*/
|
|
50
|
+
notified: boolean
|
|
51
|
+
/**
|
|
52
|
+
* If valid, a unique string identifying a batch of transactions to be sent together for processing.
|
|
53
|
+
*/
|
|
54
|
+
batch?: string
|
|
55
|
+
/**
|
|
56
|
+
* JSON string of processing history.
|
|
57
|
+
* Parses to `ProvenTxReqHistoryApi`.
|
|
58
|
+
*/
|
|
59
|
+
history: string
|
|
60
|
+
/**
|
|
61
|
+
* JSON string of data to drive notifications when this request completes.
|
|
62
|
+
* Parses to `ProvenTxReqNotifyApi`.
|
|
63
|
+
*/
|
|
64
|
+
notify: string
|
|
65
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { sdk } from '../../../index.client'
|
|
2
|
+
|
|
3
|
+
export interface TableSettings extends sdk.StorageIdentity, sdk.EntityTimeStamp {
|
|
4
|
+
created_at: Date
|
|
5
|
+
updated_at: Date
|
|
6
|
+
/**
|
|
7
|
+
* The identity key (public key) assigned to this storage
|
|
8
|
+
*/
|
|
9
|
+
storageIdentityKey: string
|
|
10
|
+
/**
|
|
11
|
+
* The human readable name assigned to this storage.
|
|
12
|
+
*/
|
|
13
|
+
storageName: string
|
|
14
|
+
chain: sdk.Chain
|
|
15
|
+
dbtype: 'SQLite' | 'MySQL' | 'IndexedDB'
|
|
16
|
+
maxOutputScript: number
|
|
17
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { sdk } from '../../../index.client'
|
|
2
|
+
|
|
3
|
+
export interface TableSyncState extends sdk.EntityTimeStamp {
|
|
4
|
+
created_at: Date
|
|
5
|
+
updated_at: Date
|
|
6
|
+
syncStateId: number
|
|
7
|
+
userId: number
|
|
8
|
+
storageIdentityKey: string
|
|
9
|
+
storageName: string
|
|
10
|
+
status: sdk.SyncStatus
|
|
11
|
+
init: boolean
|
|
12
|
+
refNum: string
|
|
13
|
+
syncMap: string
|
|
14
|
+
when?: Date
|
|
15
|
+
satoshis?: number
|
|
16
|
+
errorLocal?: string
|
|
17
|
+
errorOther?: string
|
|
18
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Base64String } from '@bsv/sdk'
|
|
2
|
+
import { sdk } from '../../../index.client'
|
|
3
|
+
|
|
4
|
+
export interface TableTransaction extends sdk.EntityTimeStamp {
|
|
5
|
+
created_at: Date
|
|
6
|
+
updated_at: Date
|
|
7
|
+
transactionId: number
|
|
8
|
+
userId: number
|
|
9
|
+
provenTxId?: number
|
|
10
|
+
status: sdk.TransactionStatus
|
|
11
|
+
/**
|
|
12
|
+
* max length of 64, hex encoded
|
|
13
|
+
*/
|
|
14
|
+
reference: Base64String
|
|
15
|
+
/**
|
|
16
|
+
* true if transaction originated in this wallet, change returns to it.
|
|
17
|
+
* false for a transaction created externally and handed in to this wallet.
|
|
18
|
+
*/
|
|
19
|
+
isOutgoing: boolean
|
|
20
|
+
satoshis: number
|
|
21
|
+
description: string
|
|
22
|
+
/**
|
|
23
|
+
* If not undefined, must match value in associated rawTransaction.
|
|
24
|
+
*/
|
|
25
|
+
version?: number
|
|
26
|
+
/**
|
|
27
|
+
* Optional. Default is zero.
|
|
28
|
+
* When the transaction can be processed into a block:
|
|
29
|
+
* >= 500,000,000 values are interpreted as minimum required unix time stamps in seconds
|
|
30
|
+
* < 500,000,000 values are interpreted as minimum required block height
|
|
31
|
+
*/
|
|
32
|
+
lockTime?: number
|
|
33
|
+
txid?: string
|
|
34
|
+
inputBEEF?: number[]
|
|
35
|
+
rawTx?: number[]
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export const transactionColumnsWithoutRawTx = [
|
|
39
|
+
'created_at',
|
|
40
|
+
'updated_at',
|
|
41
|
+
'transactionId',
|
|
42
|
+
'userId',
|
|
43
|
+
'provenTxId',
|
|
44
|
+
'status',
|
|
45
|
+
'reference',
|
|
46
|
+
'isOutgoing',
|
|
47
|
+
'satoshis',
|
|
48
|
+
'version',
|
|
49
|
+
'lockTime',
|
|
50
|
+
'description',
|
|
51
|
+
'txid'
|
|
52
|
+
// 'inputBEEF',
|
|
53
|
+
// 'rawTx',
|
|
54
|
+
]
|