@brightchain/brightchain-lib 0.30.1 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -5
- package/package.json +4 -4
- package/src/browser.d.ts +7 -0
- package/src/browser.d.ts.map +1 -1
- package/src/browser.js +21 -1
- package/src/browser.js.map +1 -1
- package/src/lib/asset/assetAccount.d.ts +66 -0
- package/src/lib/asset/assetAccount.d.ts.map +1 -0
- package/src/lib/asset/assetAccount.js +192 -0
- package/src/lib/asset/assetAccount.js.map +1 -0
- package/src/lib/asset/formatAssetAmount.d.ts +30 -0
- package/src/lib/asset/formatAssetAmount.d.ts.map +1 -0
- package/src/lib/asset/formatAssetAmount.js +54 -0
- package/src/lib/asset/formatAssetAmount.js.map +1 -0
- package/src/lib/asset/index.d.ts +11 -0
- package/src/lib/asset/index.d.ts.map +1 -0
- package/src/lib/asset/index.js +14 -0
- package/src/lib/asset/index.js.map +1 -0
- package/src/lib/asset/jouleConstants.d.ts +21 -0
- package/src/lib/asset/jouleConstants.d.ts.map +1 -0
- package/src/lib/asset/jouleConstants.js +24 -0
- package/src/lib/asset/jouleConstants.js.map +1 -0
- package/src/lib/asset/microunits.d.ts +19 -0
- package/src/lib/asset/microunits.d.ts.map +1 -0
- package/src/lib/asset/microunits.js +36 -0
- package/src/lib/asset/microunits.js.map +1 -0
- package/src/lib/constants.d.ts +3 -1
- package/src/lib/constants.d.ts.map +1 -1
- package/src/lib/constants.js +23 -1
- package/src/lib/constants.js.map +1 -1
- package/src/lib/db/driverBackedHeadRegistry.d.ts +42 -0
- package/src/lib/db/driverBackedHeadRegistry.d.ts.map +1 -0
- package/src/lib/db/driverBackedHeadRegistry.js +146 -0
- package/src/lib/db/driverBackedHeadRegistry.js.map +1 -0
- package/src/lib/db/headRegistryGossipTransport.d.ts +74 -0
- package/src/lib/db/headRegistryGossipTransport.d.ts.map +1 -0
- package/src/lib/db/headRegistryGossipTransport.js +153 -0
- package/src/lib/db/headRegistryGossipTransport.js.map +1 -0
- package/src/lib/db/inMemoryHeadRegistry.d.ts +9 -0
- package/src/lib/db/inMemoryHeadRegistry.d.ts.map +1 -1
- package/src/lib/db/inMemoryHeadRegistry.js +48 -0
- package/src/lib/db/inMemoryHeadRegistry.js.map +1 -1
- package/src/lib/db/inMemoryHeadRegistryDriver.d.ts +13 -0
- package/src/lib/db/inMemoryHeadRegistryDriver.d.ts.map +1 -0
- package/src/lib/db/inMemoryHeadRegistryDriver.js +24 -0
- package/src/lib/db/inMemoryHeadRegistryDriver.js.map +1 -0
- package/src/lib/db/index.d.ts +3 -0
- package/src/lib/db/index.d.ts.map +1 -1
- package/src/lib/db/index.js +3 -0
- package/src/lib/db/index.js.map +1 -1
- package/src/lib/energyAccount.d.ts +15 -62
- package/src/lib/energyAccount.d.ts.map +1 -1
- package/src/lib/energyAccount.js +20 -118
- package/src/lib/energyAccount.js.map +1 -1
- package/src/lib/enumerations/brightChainStrings.d.ts +123 -0
- package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
- package/src/lib/enumerations/brightChainStrings.js +130 -0
- package/src/lib/enumerations/brightChainStrings.js.map +1 -1
- package/src/lib/enumerations/difficultyTier.d.ts +20 -0
- package/src/lib/enumerations/difficultyTier.d.ts.map +1 -0
- package/src/lib/enumerations/difficultyTier.js +25 -0
- package/src/lib/enumerations/difficultyTier.js.map +1 -0
- package/src/lib/enumerations/index.d.ts +2 -1
- package/src/lib/enumerations/index.d.ts.map +1 -1
- package/src/lib/enumerations/index.js +3 -1
- package/src/lib/enumerations/index.js.map +1 -1
- package/src/lib/errors/asset/assetUnknownError.d.ts +12 -0
- package/src/lib/errors/asset/assetUnknownError.d.ts.map +1 -0
- package/src/lib/errors/asset/assetUnknownError.js +21 -0
- package/src/lib/errors/asset/assetUnknownError.js.map +1 -0
- package/src/lib/errors/asset/index.d.ts +13 -0
- package/src/lib/errors/asset/index.d.ts.map +1 -0
- package/src/lib/errors/asset/index.js +16 -0
- package/src/lib/errors/asset/index.js.map +1 -0
- package/src/lib/errors/asset/insufficientAvailableBalanceError.d.ts +13 -0
- package/src/lib/errors/asset/insufficientAvailableBalanceError.d.ts.map +1 -0
- package/src/lib/errors/asset/insufficientAvailableBalanceError.js +25 -0
- package/src/lib/errors/asset/insufficientAvailableBalanceError.js.map +1 -0
- package/src/lib/errors/asset/invalidAmountError.d.ts +11 -0
- package/src/lib/errors/asset/invalidAmountError.d.ts.map +1 -0
- package/src/lib/errors/asset/invalidAmountError.js +20 -0
- package/src/lib/errors/asset/invalidAmountError.js.map +1 -0
- package/src/lib/errors/asset/ledgerAlreadyAttachedError.d.ts +11 -0
- package/src/lib/errors/asset/ledgerAlreadyAttachedError.d.ts.map +1 -0
- package/src/lib/errors/asset/ledgerAlreadyAttachedError.js +19 -0
- package/src/lib/errors/asset/ledgerAlreadyAttachedError.js.map +1 -0
- package/src/lib/errors/asset/mixedAssetError.d.ts +12 -0
- package/src/lib/errors/asset/mixedAssetError.d.ts.map +1 -0
- package/src/lib/errors/asset/mixedAssetError.js +22 -0
- package/src/lib/errors/asset/mixedAssetError.js.map +1 -0
- package/src/lib/errors/asset/reservationExpiredError.d.ts +13 -0
- package/src/lib/errors/asset/reservationExpiredError.d.ts.map +1 -0
- package/src/lib/errors/asset/reservationExpiredError.js +24 -0
- package/src/lib/errors/asset/reservationExpiredError.js.map +1 -0
- package/src/lib/errors/asset/reservationNotFoundError.d.ts +11 -0
- package/src/lib/errors/asset/reservationNotFoundError.d.ts.map +1 -0
- package/src/lib/errors/asset/reservationNotFoundError.js +20 -0
- package/src/lib/errors/asset/reservationNotFoundError.js.map +1 -0
- package/src/lib/errors/encryptionErrors.d.ts.map +1 -1
- package/src/lib/errors/encryptionErrors.js.map +1 -1
- package/src/lib/errors/friendsServiceError.d.ts.map +1 -1
- package/src/lib/errors/friendsServiceError.js.map +1 -1
- package/src/lib/errors/index.d.ts +18 -0
- package/src/lib/errors/index.d.ts.map +1 -1
- package/src/lib/errors/index.js +21 -0
- package/src/lib/errors/index.js.map +1 -1
- package/src/lib/i18n/strings/englishUs.d.ts.map +1 -1
- package/src/lib/i18n/strings/englishUs.js +131 -1
- package/src/lib/i18n/strings/englishUs.js.map +1 -1
- package/src/lib/i18n/strings/french.d.ts.map +1 -1
- package/src/lib/i18n/strings/french.js +133 -3
- package/src/lib/i18n/strings/french.js.map +1 -1
- package/src/lib/i18n/strings/german.d.ts.map +1 -1
- package/src/lib/i18n/strings/german.js +131 -1
- package/src/lib/i18n/strings/german.js.map +1 -1
- package/src/lib/i18n/strings/japanese.d.ts.map +1 -1
- package/src/lib/i18n/strings/japanese.js +131 -1
- package/src/lib/i18n/strings/japanese.js.map +1 -1
- package/src/lib/i18n/strings/mandarin.d.ts.map +1 -1
- package/src/lib/i18n/strings/mandarin.js +131 -1
- package/src/lib/i18n/strings/mandarin.js.map +1 -1
- package/src/lib/i18n/strings/spanish.d.ts.map +1 -1
- package/src/lib/i18n/strings/spanish.js +131 -1
- package/src/lib/i18n/strings/spanish.js.map +1 -1
- package/src/lib/i18n/strings/ukrainian.d.ts.map +1 -1
- package/src/lib/i18n/strings/ukrainian.js +131 -1
- package/src/lib/i18n/strings/ukrainian.js.map +1 -1
- package/src/lib/index.d.ts +36 -1
- package/src/lib/index.d.ts.map +1 -1
- package/src/lib/index.js +48 -1
- package/src/lib/index.js.map +1 -1
- package/src/lib/interfaces/appSubsystemPlugin.d.ts +6 -1
- package/src/lib/interfaces/appSubsystemPlugin.d.ts.map +1 -1
- package/src/lib/interfaces/assetAccount.d.ts +91 -0
- package/src/lib/interfaces/assetAccount.d.ts.map +1 -0
- package/src/lib/interfaces/assetAccount.js +3 -0
- package/src/lib/interfaces/assetAccount.js.map +1 -0
- package/src/lib/interfaces/brightpass/vaultEntry.d.ts +38 -0
- package/src/lib/interfaces/brightpass/vaultEntry.d.ts.map +1 -1
- package/src/lib/interfaces/brightpass/vaultMetadata.d.ts +11 -0
- package/src/lib/interfaces/brightpass/vaultMetadata.d.ts.map +1 -1
- package/src/lib/interfaces/communication/chatStorageProvider.d.ts +1 -1
- package/src/lib/interfaces/communication/chatStorageProvider.d.ts.map +1 -1
- package/src/lib/interfaces/communication/index.d.ts +2 -0
- package/src/lib/interfaces/communication/index.d.ts.map +1 -1
- package/src/lib/interfaces/communication/index.js +2 -0
- package/src/lib/interfaces/communication/index.js.map +1 -1
- package/src/lib/interfaces/communication/server.d.ts +8 -0
- package/src/lib/interfaces/communication/server.d.ts.map +1 -1
- package/src/lib/interfaces/communication/serverIconConfig.d.ts +32 -0
- package/src/lib/interfaces/communication/serverIconConfig.d.ts.map +1 -0
- package/src/lib/interfaces/communication/serverIconConfig.js +35 -0
- package/src/lib/interfaces/communication/serverIconConfig.js.map +1 -0
- package/src/lib/interfaces/communication/serverIconRequest.d.ts +12 -0
- package/src/lib/interfaces/communication/serverIconRequest.d.ts.map +1 -0
- package/src/lib/interfaces/communication/serverIconRequest.js +3 -0
- package/src/lib/interfaces/communication/serverIconRequest.js.map +1 -0
- package/src/lib/interfaces/constants.d.ts +14 -0
- package/src/lib/interfaces/constants.d.ts.map +1 -1
- package/src/lib/interfaces/energyAccount.d.ts +13 -34
- package/src/lib/interfaces/energyAccount.d.ts.map +1 -1
- package/src/lib/interfaces/energyTransaction.d.ts +25 -6
- package/src/lib/interfaces/energyTransaction.d.ts.map +1 -1
- package/src/lib/interfaces/identity/brightChainIdentity.d.ts +29 -0
- package/src/lib/interfaces/identity/brightChainIdentity.d.ts.map +1 -0
- package/src/lib/interfaces/identity/brightChainIdentity.js +3 -0
- package/src/lib/interfaces/identity/brightChainIdentity.js.map +1 -0
- package/src/lib/interfaces/identity/index.d.ts +1 -0
- package/src/lib/interfaces/identity/index.d.ts.map +1 -1
- package/src/lib/interfaces/index.d.ts +5 -0
- package/src/lib/interfaces/index.d.ts.map +1 -1
- package/src/lib/interfaces/index.js +8 -0
- package/src/lib/interfaces/index.js.map +1 -1
- package/src/lib/interfaces/messaging/attachmentMetadata.d.ts +12 -0
- package/src/lib/interfaces/messaging/attachmentMetadata.d.ts.map +1 -1
- package/src/lib/interfaces/messaging/emailMetadata.d.ts +55 -0
- package/src/lib/interfaces/messaging/emailMetadata.d.ts.map +1 -1
- package/src/lib/interfaces/messaging/emailMetadata.js.map +1 -1
- package/src/lib/interfaces/pouw/challengeToken.d.ts +20 -0
- package/src/lib/interfaces/pouw/challengeToken.d.ts.map +1 -0
- package/src/lib/interfaces/pouw/challengeToken.js +3 -0
- package/src/lib/interfaces/pouw/challengeToken.js.map +1 -0
- package/src/lib/interfaces/pouw/index.d.ts +8 -0
- package/src/lib/interfaces/pouw/index.d.ts.map +1 -0
- package/src/lib/interfaces/pouw/index.js +12 -0
- package/src/lib/interfaces/pouw/index.js.map +1 -0
- package/src/lib/interfaces/pouw/pouwConfig.d.ts +91 -0
- package/src/lib/interfaces/pouw/pouwConfig.d.ts.map +1 -0
- package/src/lib/interfaces/pouw/pouwConfig.js +24 -0
- package/src/lib/interfaces/pouw/pouwConfig.js.map +1 -0
- package/src/lib/interfaces/pouw/pouwMetrics.d.ts +23 -0
- package/src/lib/interfaces/pouw/pouwMetrics.d.ts.map +1 -0
- package/src/lib/interfaces/pouw/pouwMetrics.js +3 -0
- package/src/lib/interfaces/pouw/pouwMetrics.js.map +1 -0
- package/src/lib/interfaces/pouw/workResult.d.ts +19 -0
- package/src/lib/interfaces/pouw/workResult.d.ts.map +1 -0
- package/src/lib/interfaces/pouw/workResult.js +3 -0
- package/src/lib/interfaces/pouw/workResult.js.map +1 -0
- package/src/lib/interfaces/pouw/workUnit.d.ts +48 -0
- package/src/lib/interfaces/pouw/workUnit.d.ts.map +1 -0
- package/src/lib/interfaces/pouw/workUnit.js +14 -0
- package/src/lib/interfaces/pouw/workUnit.js.map +1 -0
- package/src/lib/interfaces/responses/adminDashboardResponse.d.ts +7 -0
- package/src/lib/interfaces/responses/adminDashboardResponse.d.ts.map +1 -1
- package/src/lib/interfaces/responses/communicationResponses.d.ts +2 -0
- package/src/lib/interfaces/responses/communicationResponses.d.ts.map +1 -1
- package/src/lib/interfaces/responses/identityResponseData.d.ts +10 -0
- package/src/lib/interfaces/responses/identityResponseData.d.ts.map +1 -0
- package/src/lib/interfaces/responses/identityResponseData.js +3 -0
- package/src/lib/interfaces/responses/identityResponseData.js.map +1 -0
- package/src/lib/interfaces/responses/index.d.ts +1 -0
- package/src/lib/interfaces/responses/index.d.ts.map +1 -1
- package/src/lib/interfaces/staging/commitRequest.d.ts +28 -0
- package/src/lib/interfaces/staging/commitRequest.d.ts.map +1 -0
- package/src/lib/interfaces/staging/commitRequest.js +3 -0
- package/src/lib/interfaces/staging/commitRequest.js.map +1 -0
- package/src/lib/interfaces/staging/commitResponse.d.ts +17 -0
- package/src/lib/interfaces/staging/commitResponse.d.ts.map +1 -0
- package/src/lib/interfaces/staging/commitResponse.js +3 -0
- package/src/lib/interfaces/staging/commitResponse.js.map +1 -0
- package/src/lib/interfaces/staging/index.d.ts +7 -0
- package/src/lib/interfaces/staging/index.d.ts.map +1 -0
- package/src/lib/interfaces/staging/index.js +6 -0
- package/src/lib/interfaces/staging/index.js.map +1 -0
- package/src/lib/interfaces/staging/processingParams.d.ts +16 -0
- package/src/lib/interfaces/staging/processingParams.d.ts.map +1 -0
- package/src/lib/interfaces/staging/processingParams.js +3 -0
- package/src/lib/interfaces/staging/processingParams.js.map +1 -0
- package/src/lib/interfaces/staging/stagedFileRecord.d.ts +23 -0
- package/src/lib/interfaces/staging/stagedFileRecord.d.ts.map +1 -0
- package/src/lib/interfaces/staging/stagedFileRecord.js +3 -0
- package/src/lib/interfaces/staging/stagedFileRecord.js.map +1 -0
- package/src/lib/interfaces/staging/stagingConfig.d.ts +19 -0
- package/src/lib/interfaces/staging/stagingConfig.d.ts.map +1 -0
- package/src/lib/interfaces/staging/stagingConfig.js +11 -0
- package/src/lib/interfaces/staging/stagingConfig.js.map +1 -0
- package/src/lib/interfaces/staging/tempUploadResponse.d.ts +19 -0
- package/src/lib/interfaces/staging/tempUploadResponse.d.ts.map +1 -0
- package/src/lib/interfaces/staging/tempUploadResponse.js +3 -0
- package/src/lib/interfaces/staging/tempUploadResponse.js.map +1 -0
- package/src/lib/interfaces/storage/blockStore.d.ts +22 -4
- package/src/lib/interfaces/storage/blockStore.d.ts.map +1 -1
- package/src/lib/interfaces/storage/headRegistry.d.ts +38 -0
- package/src/lib/interfaces/storage/headRegistry.d.ts.map +1 -1
- package/src/lib/interfaces/storage/headRegistryDriver.d.ts +47 -0
- package/src/lib/interfaces/storage/headRegistryDriver.d.ts.map +1 -0
- package/src/lib/interfaces/storage/headRegistryDriver.js +15 -0
- package/src/lib/interfaces/storage/headRegistryDriver.js.map +1 -0
- package/src/lib/interfaces/storage/index.d.ts +1 -0
- package/src/lib/interfaces/storage/index.d.ts.map +1 -1
- package/src/lib/interfaces/storage/index.js.map +1 -1
- package/src/lib/joule/formatJoule.d.ts +44 -0
- package/src/lib/joule/formatJoule.d.ts.map +1 -0
- package/src/lib/joule/formatJoule.js +121 -0
- package/src/lib/joule/formatJoule.js.map +1 -0
- package/src/lib/joule/index.d.ts +10 -0
- package/src/lib/joule/index.d.ts.map +1 -0
- package/src/lib/joule/index.js +13 -0
- package/src/lib/joule/index.js.map +1 -0
- package/src/lib/joule/jouleConstants.d.ts +13 -0
- package/src/lib/joule/jouleConstants.d.ts.map +1 -0
- package/src/lib/joule/jouleConstants.js +18 -0
- package/src/lib/joule/jouleConstants.js.map +1 -0
- package/src/lib/joule/rateTable.d.ts +55 -0
- package/src/lib/joule/rateTable.d.ts.map +1 -0
- package/src/lib/joule/rateTable.js +58 -0
- package/src/lib/joule/rateTable.js.map +1 -0
- package/src/lib/joule/resourceClass.d.ts +18 -0
- package/src/lib/joule/resourceClass.d.ts.map +1 -0
- package/src/lib/joule/resourceClass.js +28 -0
- package/src/lib/joule/resourceClass.js.map +1 -0
- package/src/lib/operationCost.d.ts +12 -7
- package/src/lib/operationCost.d.ts.map +1 -1
- package/src/lib/operationCost.js +11 -4
- package/src/lib/operationCost.js.map +1 -1
- package/src/lib/pouw/computeWorkUnit.d.ts +41 -0
- package/src/lib/pouw/computeWorkUnit.d.ts.map +1 -0
- package/src/lib/pouw/computeWorkUnit.js +92 -0
- package/src/lib/pouw/computeWorkUnit.js.map +1 -0
- package/src/lib/pouw/index.d.ts +8 -0
- package/src/lib/pouw/index.d.ts.map +1 -0
- package/src/lib/pouw/index.js +12 -0
- package/src/lib/pouw/index.js.map +1 -0
- package/src/lib/serializers/index.d.ts +2 -0
- package/src/lib/serializers/index.d.ts.map +1 -0
- package/src/lib/serializers/index.js +10 -0
- package/src/lib/serializers/index.js.map +1 -0
- package/src/lib/serializers/workUnitSerializer.d.ts +39 -0
- package/src/lib/serializers/workUnitSerializer.d.ts.map +1 -0
- package/src/lib/serializers/workUnitSerializer.js +150 -0
- package/src/lib/serializers/workUnitSerializer.js.map +1 -0
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts +1 -1
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts.map +1 -1
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.js +5 -3
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.js.map +1 -1
- package/src/lib/services/communication/__tests__/mockStorageProvider.d.ts +6 -0
- package/src/lib/services/communication/__tests__/mockStorageProvider.d.ts.map +1 -0
- package/src/lib/services/communication/__tests__/mockStorageProvider.js +41 -0
- package/src/lib/services/communication/__tests__/mockStorageProvider.js.map +1 -0
- package/src/lib/services/communication/channelService.d.ts +1 -1
- package/src/lib/services/communication/channelService.d.ts.map +1 -1
- package/src/lib/services/communication/channelService.js +2 -2
- package/src/lib/services/communication/channelService.js.map +1 -1
- package/src/lib/services/communication/conversationService.d.ts +1 -1
- package/src/lib/services/communication/conversationService.d.ts.map +1 -1
- package/src/lib/services/communication/conversationService.js +2 -2
- package/src/lib/services/communication/conversationService.js.map +1 -1
- package/src/lib/services/communication/groupService.d.ts +1 -1
- package/src/lib/services/communication/groupService.d.ts.map +1 -1
- package/src/lib/services/communication/groupService.js +2 -2
- package/src/lib/services/communication/groupService.js.map +1 -1
- package/src/lib/services/communication/rehydrationHelpers.d.ts.map +1 -1
- package/src/lib/services/communication/rehydrationHelpers.js +1 -2
- package/src/lib/services/communication/rehydrationHelpers.js.map +1 -1
- package/src/lib/services/communication/serverService.d.ts +13 -115
- package/src/lib/services/communication/serverService.d.ts.map +1 -1
- package/src/lib/services/communication/serverService.js +91 -235
- package/src/lib/services/communication/serverService.js.map +1 -1
- package/src/lib/services/copyOnWrite.service.d.ts.map +1 -1
- package/src/lib/services/copyOnWrite.service.js +1 -2
- package/src/lib/services/copyOnWrite.service.js.map +1 -1
- package/src/lib/services/messaging/emailMessageService.d.ts +89 -0
- package/src/lib/services/messaging/emailMessageService.d.ts.map +1 -1
- package/src/lib/services/messaging/emailMessageService.js +207 -28
- package/src/lib/services/messaging/emailMessageService.js.map +1 -1
- package/src/lib/services/messaging/emailParser.d.ts.map +1 -1
- package/src/lib/services/messaging/emailParser.js +1 -0
- package/src/lib/services/messaging/emailParser.js.map +1 -1
- package/src/lib/stores/assetAccountStore.d.ts +102 -0
- package/src/lib/stores/assetAccountStore.d.ts.map +1 -0
- package/src/lib/stores/assetAccountStore.js +276 -0
- package/src/lib/stores/assetAccountStore.js.map +1 -0
- package/src/lib/stores/blockStoreAdapter.d.ts +2 -0
- package/src/lib/stores/blockStoreAdapter.d.ts.map +1 -1
- package/src/lib/stores/blockStoreAdapter.js +3 -0
- package/src/lib/stores/blockStoreAdapter.js.map +1 -1
- package/src/lib/stores/energyAccountStore.d.ts +22 -36
- package/src/lib/stores/energyAccountStore.d.ts.map +1 -1
- package/src/lib/stores/energyAccountStore.js +33 -63
- package/src/lib/stores/energyAccountStore.js.map +1 -1
- package/src/lib/stores/memoryBlockStore.d.ts +16 -1
- package/src/lib/stores/memoryBlockStore.d.ts.map +1 -1
- package/src/lib/stores/memoryBlockStore.js +42 -6
- package/src/lib/stores/memoryBlockStore.js.map +1 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metadata tracked for each staged file.
|
|
3
|
+
* Persisted as a JSON sidecar file alongside the staged file bytes.
|
|
4
|
+
*
|
|
5
|
+
* TId defaults to string for frontend, GuidV4Buffer for backend.
|
|
6
|
+
*/
|
|
7
|
+
export interface IStagedFileRecord<TId = string> {
|
|
8
|
+
/** Cryptographically random UUID v4 — acts as both ID and bearer credential */
|
|
9
|
+
commitToken: string;
|
|
10
|
+
/** Original filename from the upload */
|
|
11
|
+
originalFilename: string;
|
|
12
|
+
/** MIME type of the uploaded file */
|
|
13
|
+
mimeType: string;
|
|
14
|
+
/** File size in bytes */
|
|
15
|
+
sizeBytes: number;
|
|
16
|
+
/** ISO 8601 timestamp of when the file was staged */
|
|
17
|
+
uploadedAt: Date | string;
|
|
18
|
+
/** ISO 8601 timestamp of when the staged file expires */
|
|
19
|
+
expiresAt: Date | string;
|
|
20
|
+
/** ID of the user who uploaded the file */
|
|
21
|
+
uploaderId: TId;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=stagedFileRecord.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stagedFileRecord.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/staging/stagedFileRecord.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB,CAAC,GAAG,GAAG,MAAM;IAC7C,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,yDAAyD;IACzD,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,2CAA2C;IAC3C,UAAU,EAAE,GAAG,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stagedFileRecord.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/staging/stagedFileRecord.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for the temporary upload staging system.
|
|
3
|
+
* All values have sensible defaults; override via environment variables
|
|
4
|
+
* or constructor injection.
|
|
5
|
+
*/
|
|
6
|
+
export interface IStagingConfig {
|
|
7
|
+
/** Filesystem directory for staged files */
|
|
8
|
+
stagingDir: string;
|
|
9
|
+
/** Default TTL in seconds (default: 3600 = 1 hour) */
|
|
10
|
+
defaultTtlSeconds: number;
|
|
11
|
+
/** Maximum TTL in seconds (default: 86400 = 24 hours) */
|
|
12
|
+
maxTtlSeconds: number;
|
|
13
|
+
/** Maximum upload file size in bytes (default: 52428800 = 50MB) */
|
|
14
|
+
maxFileSizeBytes: number;
|
|
15
|
+
/** Cleanup interval in milliseconds (default: 300000 = 5 minutes) */
|
|
16
|
+
cleanupIntervalMs: number;
|
|
17
|
+
}
|
|
18
|
+
export declare const DEFAULT_STAGING_CONFIG: IStagingConfig;
|
|
19
|
+
//# sourceMappingURL=stagingConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stagingConfig.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/staging/stagingConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,sBAAsB,EAAE,cAMpC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_STAGING_CONFIG = void 0;
|
|
4
|
+
exports.DEFAULT_STAGING_CONFIG = {
|
|
5
|
+
stagingDir: `${process.cwd()}/tmp/staging`,
|
|
6
|
+
defaultTtlSeconds: 3600,
|
|
7
|
+
maxTtlSeconds: 86400,
|
|
8
|
+
maxFileSizeBytes: 50 * 1024 * 1024,
|
|
9
|
+
cleanupIntervalMs: 5 * 60 * 1000,
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=stagingConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stagingConfig.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/staging/stagingConfig.ts"],"names":[],"mappings":";;;AAkBa,QAAA,sBAAsB,GAAmB;IACpD,UAAU,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc;IAC1C,iBAAiB,EAAE,IAAI;IACvB,aAAa,EAAE,KAAK;IACpB,gBAAgB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IAClC,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;CACjC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response body returned after a successful staging upload.
|
|
3
|
+
* Contains everything the client needs to preview, commit, or discard.
|
|
4
|
+
*/
|
|
5
|
+
export interface ITempUploadResponse {
|
|
6
|
+
/** The commit token (UUID v4) for this staged file */
|
|
7
|
+
commitToken: string;
|
|
8
|
+
/** URL to preview the staged file */
|
|
9
|
+
previewUrl: string;
|
|
10
|
+
/** ISO 8601 timestamp when the staged file expires */
|
|
11
|
+
expiresAt: string;
|
|
12
|
+
/** Original filename from the upload */
|
|
13
|
+
originalFilename: string;
|
|
14
|
+
/** MIME type of the uploaded file */
|
|
15
|
+
mimeType: string;
|
|
16
|
+
/** File size in bytes */
|
|
17
|
+
sizeBytes: number;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=tempUploadResponse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tempUploadResponse.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/staging/tempUploadResponse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tempUploadResponse.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/staging/tempUploadResponse.ts"],"names":[],"mappings":""}
|
|
@@ -202,11 +202,29 @@ export interface IBlockStore {
|
|
|
202
202
|
generateCBLMagnetUrl(blockId1: Checksum | string, blockId2: Checksum | string, blockSize: number, block1ParityIds?: string[], block2ParityIds?: string[], isEncrypted?: boolean): string;
|
|
203
203
|
/**
|
|
204
204
|
* Create a head registry backed by this store's persistence layer.
|
|
205
|
-
*
|
|
206
|
-
*
|
|
207
|
-
*
|
|
208
|
-
*
|
|
205
|
+
* - MemoryBlockStore → InMemoryHeadRegistry
|
|
206
|
+
* - DiskBlockStore → DriverBackedHeadRegistry(FileHeadRegistryDriver)
|
|
207
|
+
* - Cloud stores → DriverBackedHeadRegistry(CloudHeadRegistryDriver)
|
|
208
|
+
* Wrappers and adapters may delegate to their inner store or omit this.
|
|
209
209
|
*/
|
|
210
210
|
createHeadRegistry?(): IHeadRegistry;
|
|
211
|
+
/**
|
|
212
|
+
* List all block IDs in the store with optional cursor-based pagination.
|
|
213
|
+
* Used by the block explorer to enumerate blocks in non-pooled stores.
|
|
214
|
+
*
|
|
215
|
+
* @param options - Optional pagination: limit and cursor (last block ID from previous page)
|
|
216
|
+
* @returns Async iterable of block ID hex strings
|
|
217
|
+
*/
|
|
218
|
+
listBlockIds?(options?: {
|
|
219
|
+
limit?: number;
|
|
220
|
+
cursor?: string;
|
|
221
|
+
}): AsyncIterable<string>;
|
|
222
|
+
/**
|
|
223
|
+
* Get the total number of blocks in the store.
|
|
224
|
+
* Used by the block explorer for pagination metadata.
|
|
225
|
+
*
|
|
226
|
+
* @returns Total block count
|
|
227
|
+
*/
|
|
228
|
+
getBlockCount?(): Promise<number>;
|
|
211
229
|
}
|
|
212
230
|
//# sourceMappingURL=blockStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockStore.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/storage/blockStore.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"blockStore.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/storage/blockStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { IWriteProof } from '../auth/writeProof';
|
|
2
|
+
import type { HeadRecord } from './headRegistryDriver';
|
|
2
3
|
/**
|
|
3
4
|
* Represents a deferred head update for a block not yet available locally.
|
|
4
5
|
* When the block is fetched, the deferred update can be applied.
|
|
@@ -128,5 +129,42 @@ export interface IHeadRegistry {
|
|
|
128
129
|
* @returns Array of deferred head updates
|
|
129
130
|
*/
|
|
130
131
|
getDeferredUpdates(): DeferredHeadUpdate[];
|
|
132
|
+
/**
|
|
133
|
+
* Export all current head records (blockId + timestamp) as a snapshot.
|
|
134
|
+
* Suitable for transmission to a remote peer for eventual-consistency sync.
|
|
135
|
+
* The map keys are composite strings in the format "dbName:collectionName".
|
|
136
|
+
*/
|
|
137
|
+
exportSnapshot(): ReadonlyMap<string, HeadRecord>;
|
|
138
|
+
/**
|
|
139
|
+
* Merge a snapshot received from a remote peer using last-writer-wins conflict
|
|
140
|
+
* resolution. Each entry is compared by timestamp; if the remote entry is
|
|
141
|
+
* strictly newer than the local entry, the local record is updated.
|
|
142
|
+
*
|
|
143
|
+
* This is the primary entry point for gossip-based eventual-consistency sync:
|
|
144
|
+
* each node periodically calls exportSnapshot() and sends the result to peers,
|
|
145
|
+
* and peers call mergeSnapshot() to converge toward the same state.
|
|
146
|
+
*
|
|
147
|
+
* @param snapshot - Iterable of [compositeKey, HeadRecord] pairs from the remote peer
|
|
148
|
+
* @returns Counts of merged (updated) and skipped (local was newer or equal) entries
|
|
149
|
+
*/
|
|
150
|
+
mergeSnapshot(snapshot: Iterable<readonly [string, HeadRecord]>): Promise<{
|
|
151
|
+
merged: number;
|
|
152
|
+
skipped: number;
|
|
153
|
+
}>;
|
|
154
|
+
/**
|
|
155
|
+
* Subscribe to external head changes — i.e. updates applied by
|
|
156
|
+
* mergeHeadUpdate() (inbound gossip). The callback is NOT fired for local
|
|
157
|
+
* writes (setHead / removeHead) so Collection instances can distinguish
|
|
158
|
+
* their own writes from remote ones without risk of re-entrancy.
|
|
159
|
+
*
|
|
160
|
+
* @param dbName - Database name to watch
|
|
161
|
+
* @param collectionName - Collection name to watch
|
|
162
|
+
* @param callback - Invoked with the new blockId whenever a remote
|
|
163
|
+
* update is applied for this (db, collection) pair
|
|
164
|
+
* @returns An unsubscribe function — call it to remove the listener
|
|
165
|
+
*
|
|
166
|
+
* @see Requirements 2.2, 7.1
|
|
167
|
+
*/
|
|
168
|
+
onHeadChange(dbName: string, collectionName: string, callback: (blockId: string) => void): () => void;
|
|
131
169
|
}
|
|
132
170
|
//# sourceMappingURL=headRegistry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headRegistry.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/storage/headRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"headRegistry.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/storage/headRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAEpE;;;;;;;;OAQG;IACH,OAAO,CACL,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,WAAW,GACvB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;OAMG;IACH,UAAU,CACR,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,UAAU,CAAC,EAAE,WAAW,GACvB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;;;OAKG;IACH,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC;;;;;;;;OAQG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAE3E;;;;;;;;;;;;;OAaG;IACH,eAAe,CACb,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,IAAI,EACf,UAAU,CAAC,EAAE,WAAW,GACvB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB;;;;;;;;;;;OAWG;IACH,eAAe,CACb,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,IAAI,GACd,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;;;OAQG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvD;;;;OAIG;IACH,kBAAkB,IAAI,kBAAkB,EAAE,CAAC;IAE3C;;;;OAIG;IACH,cAAc,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAElD;;;;;;;;;;;OAWG;IACH,aAAa,CACX,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GAChD,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAEhD;;;;;;;;;;;;;OAaG;IACH,YAAY,CACV,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAClC,MAAM,IAAI,CAAC;CACf"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IHeadRegistryDriver — pluggable per-key storage backend for head registries.
|
|
3
|
+
*
|
|
4
|
+
* Each (dbName, collectionName) pair maps to exactly one record. All operations
|
|
5
|
+
* are O(1) — there is no global lock and no full-collection rewrite.
|
|
6
|
+
*
|
|
7
|
+
* Implementations:
|
|
8
|
+
* - InMemoryHeadRegistryDriver (brightchain-lib) — Map-backed, browser-safe
|
|
9
|
+
* - FileHeadRegistryDriver (brightchain-db) — one .json file per key
|
|
10
|
+
* - AzureBlobHeadRegistryDriver (brightchain-azure-store) — one blob per key
|
|
11
|
+
* - S3HeadRegistryDriver (brightchain-s3-store) — one object per key
|
|
12
|
+
*/
|
|
13
|
+
/** The value stored for a single (dbName, collectionName) head pointer. */
|
|
14
|
+
export interface HeadRecord {
|
|
15
|
+
blockId: string;
|
|
16
|
+
/** ISO 8601 timestamp for last-writer-wins merge. */
|
|
17
|
+
timestamp: string;
|
|
18
|
+
/**
|
|
19
|
+
* Block ID of the previous HeadRecord block written to the block store,
|
|
20
|
+
* forming an immutable audit chain. Optional — set by callers that write
|
|
21
|
+
* head record blocks. Enables conflict resolution via common-ancestor walk
|
|
22
|
+
* (analogous to Git refs) and replicates for free with the block store.
|
|
23
|
+
*/
|
|
24
|
+
prevHeadBlockId?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface IHeadRegistryDriver {
|
|
27
|
+
/**
|
|
28
|
+
* Read the head record for the given composite key.
|
|
29
|
+
* Returns null if no record exists.
|
|
30
|
+
*/
|
|
31
|
+
readRecord(key: string): Promise<HeadRecord | null>;
|
|
32
|
+
/**
|
|
33
|
+
* Write (create or overwrite) the head record for the given key.
|
|
34
|
+
*/
|
|
35
|
+
writeRecord(key: string, record: HeadRecord): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Delete the head record for the given key.
|
|
38
|
+
* Must not throw if the key does not exist.
|
|
39
|
+
*/
|
|
40
|
+
deleteRecord(key: string): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Return all stored keys.
|
|
43
|
+
* Used by load() to hydrate the in-memory cache on startup.
|
|
44
|
+
*/
|
|
45
|
+
listKeys(): Promise<string[]>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=headRegistryDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headRegistryDriver.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/storage/headRegistryDriver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAEpD;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D;;;OAGG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC/B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* IHeadRegistryDriver — pluggable per-key storage backend for head registries.
|
|
4
|
+
*
|
|
5
|
+
* Each (dbName, collectionName) pair maps to exactly one record. All operations
|
|
6
|
+
* are O(1) — there is no global lock and no full-collection rewrite.
|
|
7
|
+
*
|
|
8
|
+
* Implementations:
|
|
9
|
+
* - InMemoryHeadRegistryDriver (brightchain-lib) — Map-backed, browser-safe
|
|
10
|
+
* - FileHeadRegistryDriver (brightchain-db) — one .json file per key
|
|
11
|
+
* - AzureBlobHeadRegistryDriver (brightchain-azure-store) — one blob per key
|
|
12
|
+
* - S3HeadRegistryDriver (brightchain-s3-store) — one object per key
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
//# sourceMappingURL=headRegistryDriver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headRegistryDriver.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/storage/headRegistryDriver.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG"}
|
|
@@ -11,6 +11,7 @@ export type * from './documentStore';
|
|
|
11
11
|
export type * from './encryptedPool';
|
|
12
12
|
export { EncryptionMode } from './encryptedPool';
|
|
13
13
|
export type * from './headRegistry';
|
|
14
|
+
export type * from './headRegistryDriver';
|
|
14
15
|
export type * from './memberIndexSchema';
|
|
15
16
|
export type * from './mnemonicSchema';
|
|
16
17
|
export type * from './pooledBlockStore';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/storage/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,iBAAiB,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,mBAAmB,sBAAsB,CAAC;AAC1C,mBAAmB,cAAc,CAAC;AAClC,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,mBAAmB,YAAY,CAAC;AAChC,mBAAmB,gBAAgB,CAAC;AACpC,mBAAmB,yBAAyB,CAAC;AAC7C,mBAAmB,iBAAiB,CAAC;AACrC,mBAAmB,iBAAiB,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,mBAAmB,gBAAgB,CAAC;AACpC,mBAAmB,qBAAqB,CAAC;AACzC,mBAAmB,kBAAkB,CAAC;AACtC,mBAAmB,oBAAoB,CAAC;AACxC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,mBAAmB,yBAAyB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,mBAAmB,cAAc,CAAC;AAClC,mBAAmB,uBAAuB,CAAC;AAC3C,mBAAmB,kBAAkB,CAAC;AACtC,mBAAmB,cAAc,CAAC;AAGlC,mBAAmB,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/storage/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,iBAAiB,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,mBAAmB,sBAAsB,CAAC;AAC1C,mBAAmB,cAAc,CAAC;AAClC,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,mBAAmB,YAAY,CAAC;AAChC,mBAAmB,gBAAgB,CAAC;AACpC,mBAAmB,yBAAyB,CAAC;AAC7C,mBAAmB,iBAAiB,CAAC;AACrC,mBAAmB,iBAAiB,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,mBAAmB,gBAAgB,CAAC;AACpC,mBAAmB,sBAAsB,CAAC;AAC1C,mBAAmB,qBAAqB,CAAC;AACzC,mBAAmB,kBAAkB,CAAC;AACtC,mBAAmB,oBAAoB,CAAC;AACxC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,mBAAmB,yBAAyB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,mBAAmB,cAAc,CAAC;AAClC,mBAAmB,uBAAuB,CAAC;AAC3C,mBAAmB,kBAAkB,CAAC;AACtC,mBAAmB,cAAc,CAAC;AAGlC,mBAAmB,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/storage/index.ts"],"names":[],"mappings":";;;AACA,iDAA6D;AAApD,2HAAA,0BAA0B,OAAA;AAInC,uCAA2C;AAAlC,yGAAA,aAAa,OAAA;AAMtB,iDAAiD;AAAxC,+GAAA,cAAc,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/storage/index.ts"],"names":[],"mappings":";;;AACA,iDAA6D;AAApD,2HAAA,0BAA0B,OAAA;AAInC,uCAA2C;AAAlC,yGAAA,aAAa,OAAA;AAMtB,iDAAiD;AAAxC,+GAAA,cAAc,OAAA;AAMvB,uDAO4B;AAN1B,gHAAA,YAAY,OAAA;AACZ,sHAAA,kBAAkB,OAAA;AAClB,iHAAA,aAAa,OAAA;AACb,kHAAA,cAAc,OAAA;AACd,mHAAA,eAAe,OAAA;AACf,kHAAA,cAAc,OAAA;AAGhB,iEAAkE;AAAzD,gIAAA,uBAAuB,OAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scale-aware Joule formatter and parser.
|
|
3
|
+
*
|
|
4
|
+
* Rules (Req 7.7):
|
|
5
|
+
* - ≥ 1 J → render in J, up to 6 decimal places (trailing zeros trimmed
|
|
6
|
+
* unless `opts.trim === false`).
|
|
7
|
+
* - ≥ 1 mJ → render in mJ (3 µJ = 1 mJ = 1_000 µJ).
|
|
8
|
+
* - otherwise → render in µJ with no decimal point.
|
|
9
|
+
*
|
|
10
|
+
* All arithmetic is bigint — `Number()` is NEVER used on µJ amounts.
|
|
11
|
+
* `parseJoule` is the exact inverse of `formatJoule` for round-trip fidelity.
|
|
12
|
+
*
|
|
13
|
+
* @see joule-resource-credits spec, Requirement 7.7
|
|
14
|
+
*/
|
|
15
|
+
export interface IFormatJouleOptions {
|
|
16
|
+
/**
|
|
17
|
+
* Trim trailing decimal zeros from fractional parts.
|
|
18
|
+
* Defaults to `true`.
|
|
19
|
+
*/
|
|
20
|
+
trim?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Format a µJ bigint amount as a human-readable string at the most
|
|
24
|
+
* appropriate scale (J, mJ, or µJ).
|
|
25
|
+
*
|
|
26
|
+
* Negative amounts render with a leading `-`.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* formatJoule(2_500_000n) // '2.5 J'
|
|
30
|
+
* formatJoule(1_500n) // '1.5 mJ'
|
|
31
|
+
* formatJoule(42n) // '42 µJ'
|
|
32
|
+
*/
|
|
33
|
+
export declare function formatJoule(microJoules: bigint, opts?: IFormatJouleOptions): string;
|
|
34
|
+
/**
|
|
35
|
+
* Parse a string produced by `formatJoule` back into µJ as a bigint.
|
|
36
|
+
*
|
|
37
|
+
* This is the exact inverse of `formatJoule` with default options (trim=true).
|
|
38
|
+
* Designed for test round-trips and serialization boundaries only;
|
|
39
|
+
* UI display layers should call `formatJoule` exclusively.
|
|
40
|
+
*
|
|
41
|
+
* @throws {Error} if the string cannot be parsed.
|
|
42
|
+
*/
|
|
43
|
+
export declare function parseJoule(formatted: string): bigint;
|
|
44
|
+
//# sourceMappingURL=formatJoule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatJoule.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/joule/formatJoule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,mBAAmB,GACzB,MAAM,CAmCR;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAqBpD"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Scale-aware Joule formatter and parser.
|
|
4
|
+
*
|
|
5
|
+
* Rules (Req 7.7):
|
|
6
|
+
* - ≥ 1 J → render in J, up to 6 decimal places (trailing zeros trimmed
|
|
7
|
+
* unless `opts.trim === false`).
|
|
8
|
+
* - ≥ 1 mJ → render in mJ (3 µJ = 1 mJ = 1_000 µJ).
|
|
9
|
+
* - otherwise → render in µJ with no decimal point.
|
|
10
|
+
*
|
|
11
|
+
* All arithmetic is bigint — `Number()` is NEVER used on µJ amounts.
|
|
12
|
+
* `parseJoule` is the exact inverse of `formatJoule` for round-trip fidelity.
|
|
13
|
+
*
|
|
14
|
+
* @see joule-resource-credits spec, Requirement 7.7
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.formatJoule = formatJoule;
|
|
18
|
+
exports.parseJoule = parseJoule;
|
|
19
|
+
const jouleConstants_1 = require("./jouleConstants");
|
|
20
|
+
/** µJ per mJ */
|
|
21
|
+
const MICROJOULES_PER_MILLIJOULE = 1000n;
|
|
22
|
+
/**
|
|
23
|
+
* Format a µJ bigint amount as a human-readable string at the most
|
|
24
|
+
* appropriate scale (J, mJ, or µJ).
|
|
25
|
+
*
|
|
26
|
+
* Negative amounts render with a leading `-`.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* formatJoule(2_500_000n) // '2.5 J'
|
|
30
|
+
* formatJoule(1_500n) // '1.5 mJ'
|
|
31
|
+
* formatJoule(42n) // '42 µJ'
|
|
32
|
+
*/
|
|
33
|
+
function formatJoule(microJoules, opts) {
|
|
34
|
+
const trim = opts?.trim !== false; // default true
|
|
35
|
+
const negative = microJoules < 0n;
|
|
36
|
+
const abs = negative ? -microJoules : microJoules;
|
|
37
|
+
const sign = negative ? '-' : '';
|
|
38
|
+
if (abs === 0n) {
|
|
39
|
+
return '0.00 J';
|
|
40
|
+
}
|
|
41
|
+
if (abs >= jouleConstants_1.JOULE_MICROUNITS_PER_UNIT) {
|
|
42
|
+
// J scale — 6 decimal places, bigint division
|
|
43
|
+
const wholeJ = abs / jouleConstants_1.JOULE_MICROUNITS_PER_UNIT;
|
|
44
|
+
const remainder = abs % jouleConstants_1.JOULE_MICROUNITS_PER_UNIT;
|
|
45
|
+
const fracStr = remainder.toString().padStart(6, '0');
|
|
46
|
+
const fracTrimmed = trim ? fracStr.replace(/0+$/, '') : fracStr;
|
|
47
|
+
const body = fracTrimmed.length > 0 ? `${wholeJ}.${fracTrimmed}` : wholeJ.toString();
|
|
48
|
+
return `${sign}${body} J`;
|
|
49
|
+
}
|
|
50
|
+
if (abs >= MICROJOULES_PER_MILLIJOULE) {
|
|
51
|
+
// mJ scale — 3 decimal places
|
|
52
|
+
const wholeMJ = abs / MICROJOULES_PER_MILLIJOULE;
|
|
53
|
+
const remainder = abs % MICROJOULES_PER_MILLIJOULE;
|
|
54
|
+
const fracStr = remainder.toString().padStart(3, '0');
|
|
55
|
+
const fracTrimmed = trim ? fracStr.replace(/0+$/, '') : fracStr;
|
|
56
|
+
const body = fracTrimmed.length > 0 ? `${wholeMJ}.${fracTrimmed}` : wholeMJ.toString();
|
|
57
|
+
return `${sign}${body} mJ`;
|
|
58
|
+
}
|
|
59
|
+
// µJ scale — exact integer
|
|
60
|
+
return `${sign}${abs} µJ`;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Parse a string produced by `formatJoule` back into µJ as a bigint.
|
|
64
|
+
*
|
|
65
|
+
* This is the exact inverse of `formatJoule` with default options (trim=true).
|
|
66
|
+
* Designed for test round-trips and serialization boundaries only;
|
|
67
|
+
* UI display layers should call `formatJoule` exclusively.
|
|
68
|
+
*
|
|
69
|
+
* @throws {Error} if the string cannot be parsed.
|
|
70
|
+
*/
|
|
71
|
+
function parseJoule(formatted) {
|
|
72
|
+
const s = formatted.trim();
|
|
73
|
+
if (s.endsWith(' J')) {
|
|
74
|
+
return parseScaled(s.slice(0, -2).trim(), jouleConstants_1.JOULE_MICROUNITS_PER_UNIT, 6);
|
|
75
|
+
}
|
|
76
|
+
if (s.endsWith(' mJ')) {
|
|
77
|
+
return parseScaled(s.slice(0, -3).trim(), MICROJOULES_PER_MILLIJOULE, 3);
|
|
78
|
+
}
|
|
79
|
+
if (s.endsWith(' µJ')) {
|
|
80
|
+
const inner = s.slice(0, -3).trim();
|
|
81
|
+
const negative = inner.startsWith('-');
|
|
82
|
+
const digits = negative ? inner.slice(1) : inner;
|
|
83
|
+
if (!/^\d+$/.test(digits)) {
|
|
84
|
+
throw new Error(`parseJoule: invalid µJ value: ${JSON.stringify(s)}`);
|
|
85
|
+
}
|
|
86
|
+
const val = BigInt(digits);
|
|
87
|
+
return negative ? -val : val;
|
|
88
|
+
}
|
|
89
|
+
throw new Error(`parseJoule: unrecognized format: ${JSON.stringify(s)}`);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Helper: parse `"<integer>[.<fraction>]"` and return the value scaled
|
|
93
|
+
* to µJ using the given multiplier.
|
|
94
|
+
*/
|
|
95
|
+
function parseScaled(numStr, multiplier, maxFracDigits) {
|
|
96
|
+
const negative = numStr.startsWith('-');
|
|
97
|
+
const abs = negative ? numStr.slice(1) : numStr;
|
|
98
|
+
const dotIdx = abs.indexOf('.');
|
|
99
|
+
let intPart;
|
|
100
|
+
let fracPart;
|
|
101
|
+
if (dotIdx === -1) {
|
|
102
|
+
intPart = abs;
|
|
103
|
+
fracPart = '';
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
intPart = abs.slice(0, dotIdx);
|
|
107
|
+
fracPart = abs.slice(dotIdx + 1);
|
|
108
|
+
}
|
|
109
|
+
if (!/^\d*$/.test(intPart) || !/^\d*$/.test(fracPart)) {
|
|
110
|
+
throw new Error(`parseJoule: invalid number: ${JSON.stringify(numStr)}`);
|
|
111
|
+
}
|
|
112
|
+
// Pad or truncate fractional part to maxFracDigits
|
|
113
|
+
const paddedFrac = fracPart
|
|
114
|
+
.padEnd(maxFracDigits, '0')
|
|
115
|
+
.slice(0, maxFracDigits);
|
|
116
|
+
const intBig = intPart.length > 0 ? BigInt(intPart) : 0n;
|
|
117
|
+
const fracBig = paddedFrac.length > 0 ? BigInt(paddedFrac) : 0n;
|
|
118
|
+
const val = intBig * multiplier + fracBig;
|
|
119
|
+
return negative ? -val : val;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=formatJoule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatJoule.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/joule/formatJoule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Joule resource-credit primitives — browser-safe barrel export.
|
|
3
|
+
*
|
|
4
|
+
* @see joule-resource-credits spec, Phase 1
|
|
5
|
+
*/
|
|
6
|
+
export * from './formatJoule';
|
|
7
|
+
export * from './jouleConstants';
|
|
8
|
+
export * from './rateTable';
|
|
9
|
+
export * from './resourceClass';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/joule/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Joule resource-credit primitives — browser-safe barrel export.
|
|
4
|
+
*
|
|
5
|
+
* @see joule-resource-credits spec, Phase 1
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
const tslib_1 = require("tslib");
|
|
9
|
+
tslib_1.__exportStar(require("./formatJoule"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./jouleConstants"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./rateTable"), exports);
|
|
12
|
+
tslib_1.__exportStar(require("./resourceClass"), exports);
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/joule/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,wDAA8B;AAC9B,2DAAiC;AACjC,sDAA4B;AAC5B,0DAAgC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Joule resource-credit constants.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports from the asset primitives module and adds the narrow `as const`
|
|
5
|
+
* type forms required by the joule-resource-credits spec (Req 1.1).
|
|
6
|
+
*
|
|
7
|
+
* All internal arithmetic uses bigint microjoules; these constants are the
|
|
8
|
+
* single source of truth for the Joule asset identity.
|
|
9
|
+
*/
|
|
10
|
+
export { JOULE_ASSET_ID, JOULE_DECIMALS, JOULE_MICROUNITS_PER_UNIT, JOULE_SYMBOL, } from '../asset/jouleConstants';
|
|
11
|
+
/** Narrowly typed assetId literal — use for brand-checked comparisons. */
|
|
12
|
+
export type JouleAssetId = 'joule';
|
|
13
|
+
//# sourceMappingURL=jouleConstants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jouleConstants.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/joule/jouleConstants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,cAAc,EACd,cAAc,EACd,yBAAyB,EACzB,YAAY,GACb,MAAM,yBAAyB,CAAC;AAEjC,0EAA0E;AAC1E,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Joule resource-credit constants.
|
|
4
|
+
*
|
|
5
|
+
* Re-exports from the asset primitives module and adds the narrow `as const`
|
|
6
|
+
* type forms required by the joule-resource-credits spec (Req 1.1).
|
|
7
|
+
*
|
|
8
|
+
* All internal arithmetic uses bigint microjoules; these constants are the
|
|
9
|
+
* single source of truth for the Joule asset identity.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.JOULE_SYMBOL = exports.JOULE_MICROUNITS_PER_UNIT = exports.JOULE_DECIMALS = exports.JOULE_ASSET_ID = void 0;
|
|
13
|
+
var jouleConstants_1 = require("../asset/jouleConstants");
|
|
14
|
+
Object.defineProperty(exports, "JOULE_ASSET_ID", { enumerable: true, get: function () { return jouleConstants_1.JOULE_ASSET_ID; } });
|
|
15
|
+
Object.defineProperty(exports, "JOULE_DECIMALS", { enumerable: true, get: function () { return jouleConstants_1.JOULE_DECIMALS; } });
|
|
16
|
+
Object.defineProperty(exports, "JOULE_MICROUNITS_PER_UNIT", { enumerable: true, get: function () { return jouleConstants_1.JOULE_MICROUNITS_PER_UNIT; } });
|
|
17
|
+
Object.defineProperty(exports, "JOULE_SYMBOL", { enumerable: true, get: function () { return jouleConstants_1.JOULE_SYMBOL; } });
|
|
18
|
+
//# sourceMappingURL=jouleConstants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jouleConstants.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/joule/jouleConstants.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,0DAKiC;AAJ/B,gHAAA,cAAc,OAAA;AACd,gHAAA,cAAc,OAAA;AACd,2HAAA,yBAAyB,OAAA;AACzB,8GAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate table primitives for Joule resource-credit metering.
|
|
3
|
+
*
|
|
4
|
+
* A `IRateTable` maps each `ResourceClass` to a `µJ-per-unit` price.
|
|
5
|
+
* All arithmetic is `bigint`; no floating-point is introduced.
|
|
6
|
+
*
|
|
7
|
+
* @see joule-resource-credits spec, Requirement 1.1, 1.6
|
|
8
|
+
*/
|
|
9
|
+
import { ResourceClass } from './resourceClass';
|
|
10
|
+
/**
|
|
11
|
+
* Per-class pricing row inside a rate table.
|
|
12
|
+
*/
|
|
13
|
+
export interface IRateTableEntry {
|
|
14
|
+
/** Denominator unit string, e.g. `'request'`, `'MB-day'`, `'MB-out'`. */
|
|
15
|
+
unit: string;
|
|
16
|
+
/** Cost per one unit expressed in µJ (bigint). */
|
|
17
|
+
microJoulesPerUnit: bigint;
|
|
18
|
+
/** Human-readable description of what this class covers. */
|
|
19
|
+
description: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Versioned, signed rate table.
|
|
23
|
+
*
|
|
24
|
+
* Once recorded on-ledger, a rate table is immutable.
|
|
25
|
+
* Historical pricing is preserved so that per-request events can
|
|
26
|
+
* reference the version that was active at emit time (Req 1.3).
|
|
27
|
+
*/
|
|
28
|
+
export interface IRateTable {
|
|
29
|
+
/** Monotonically increasing, starting at 1. */
|
|
30
|
+
version: number;
|
|
31
|
+
/** Unix milliseconds at which this table becomes effective. */
|
|
32
|
+
effectiveAt: number;
|
|
33
|
+
/** One entry per resource class. All four v1 classes must be present. */
|
|
34
|
+
entries: Record<ResourceClass, IRateTableEntry>;
|
|
35
|
+
/** Operator quorum key fingerprints that signed this table. */
|
|
36
|
+
signedBy: ReadonlyArray<string>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Compute the µJ cost for `units` of resource class `cls` under `rate`.
|
|
40
|
+
*
|
|
41
|
+
* Formula: `microJoules = units * microJoulesPerUnit` (bigint, exact).
|
|
42
|
+
*
|
|
43
|
+
* @see joule-resource-credits spec, Requirement 1.6
|
|
44
|
+
*/
|
|
45
|
+
export declare function priceMicroJoules(rate: IRateTable, cls: ResourceClass, units: bigint): bigint;
|
|
46
|
+
/**
|
|
47
|
+
* Default bootstrap rate table (version 1).
|
|
48
|
+
*
|
|
49
|
+
* Rates are intentionally conservative placeholders; the operator quorum
|
|
50
|
+
* SHOULD submit a `RateTableUpdateAction` before opening to members.
|
|
51
|
+
*
|
|
52
|
+
* @see joule-resource-credits spec, Requirement 1.1
|
|
53
|
+
*/
|
|
54
|
+
export declare const BOOTSTRAP_RATE_TABLE: Readonly<IRateTable>;
|
|
55
|
+
//# sourceMappingURL=rateTable.d.ts.map
|