@brightchain/brightchain-lib 0.29.27 → 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 +5 -26
- package/src/lib/constants.d.ts.map +1 -1
- package/src/lib/constants.js +25 -2
- package/src/lib/constants.js.map +1 -1
- package/src/lib/db/collection.d.ts +1 -1
- package/src/lib/db/collection.d.ts.map +1 -1
- package/src/lib/db/collection.js +2 -1
- package/src/lib/db/collection.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 +141 -0
- package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
- package/src/lib/enumerations/brightChainStrings.js +150 -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/friendRequestStatus.d.ts +7 -0
- package/src/lib/enumerations/friendRequestStatus.d.ts.map +1 -0
- package/src/lib/enumerations/friendRequestStatus.js +11 -0
- package/src/lib/enumerations/friendRequestStatus.js.map +1 -0
- package/src/lib/enumerations/friendsErrorCode.d.ts +10 -0
- package/src/lib/enumerations/friendsErrorCode.d.ts.map +1 -0
- package/src/lib/enumerations/friendsErrorCode.js +14 -0
- package/src/lib/enumerations/friendsErrorCode.js.map +1 -0
- package/src/lib/enumerations/friendshipStatus.d.ts +7 -0
- package/src/lib/enumerations/friendshipStatus.d.ts.map +1 -0
- package/src/lib/enumerations/friendshipStatus.js +11 -0
- package/src/lib/enumerations/friendshipStatus.js.map +1 -0
- package/src/lib/enumerations/index.d.ts +4 -0
- package/src/lib/enumerations/index.d.ts.map +1 -1
- package/src/lib/enumerations/index.js +6 -0
- 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 +20 -0
- package/src/lib/errors/friendsServiceError.d.ts.map +1 -0
- package/src/lib/errors/friendsServiceError.js +48 -0
- package/src/lib/errors/friendsServiceError.js.map +1 -0
- package/src/lib/errors/index.d.ts +23 -0
- package/src/lib/errors/index.d.ts.map +1 -1
- package/src/lib/errors/index.js +29 -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 +151 -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 +153 -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 +151 -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 +151 -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 +151 -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 +151 -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 +151 -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 +74 -0
- package/src/lib/interfaces/appSubsystemPlugin.d.ts.map +1 -0
- package/src/lib/interfaces/appSubsystemPlugin.js +3 -0
- package/src/lib/interfaces/appSubsystemPlugin.js.map +1 -0
- 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/communication.d.ts +2 -0
- package/src/lib/interfaces/communication.d.ts.map +1 -1
- package/src/lib/interfaces/constants.d.ts +16 -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/friends/baseFriendRequest.d.ts +13 -0
- package/src/lib/interfaces/friends/baseFriendRequest.d.ts.map +1 -0
- package/src/lib/interfaces/friends/baseFriendRequest.js +3 -0
- package/src/lib/interfaces/friends/baseFriendRequest.js.map +1 -0
- package/src/lib/interfaces/friends/baseFriendship.d.ts +11 -0
- package/src/lib/interfaces/friends/baseFriendship.d.ts.map +1 -0
- package/src/lib/interfaces/friends/baseFriendship.js +3 -0
- package/src/lib/interfaces/friends/baseFriendship.js.map +1 -0
- package/src/lib/interfaces/friends/friendsService.d.ts +32 -0
- package/src/lib/interfaces/friends/friendsService.d.ts.map +1 -0
- package/src/lib/interfaces/friends/friendsService.js +3 -0
- package/src/lib/interfaces/friends/friendsService.js.map +1 -0
- package/src/lib/interfaces/friends/friendsSuggestionProvider.d.ts +17 -0
- package/src/lib/interfaces/friends/friendsSuggestionProvider.d.ts.map +1 -0
- package/src/lib/interfaces/friends/friendsSuggestionProvider.js +3 -0
- package/src/lib/interfaces/friends/friendsSuggestionProvider.js.map +1 -0
- package/src/lib/interfaces/friends/index.d.ts +6 -0
- package/src/lib/interfaces/friends/index.d.ts.map +1 -0
- package/src/lib/interfaces/friends/index.js +3 -0
- package/src/lib/interfaces/friends/index.js.map +1 -0
- package/src/lib/interfaces/friends/pagination.d.ts +11 -0
- package/src/lib/interfaces/friends/pagination.d.ts.map +1 -0
- package/src/lib/interfaces/friends/pagination.js +3 -0
- package/src/lib/interfaces/friends/pagination.js.map +1 -0
- 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 +7 -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/documentTypes.d.ts +4 -0
- package/src/lib/interfaces/storage/documentTypes.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 +17 -3
- package/src/lib/services/communication/channelService.d.ts.map +1 -1
- package/src/lib/services/communication/channelService.js +80 -15
- 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 +34 -4
- 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 +30 -4
- 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 +93 -239
- package/src/lib/services/communication/serverService.js.map +1 -1
- package/src/lib/services/copyOnWrite.service.d.ts +110 -0
- package/src/lib/services/copyOnWrite.service.d.ts.map +1 -0
- package/src/lib/services/copyOnWrite.service.js +255 -0
- package/src/lib/services/copyOnWrite.service.js.map +1 -0
- package/src/lib/services/index.d.ts +1 -0
- package/src/lib/services/index.d.ts.map +1 -1
- package/src/lib/services/index.js +1 -0
- package/src/lib/services/index.js.map +1 -1
- package/src/lib/services/memberStore.d.ts +7 -1
- package/src/lib/services/memberStore.d.ts.map +1 -1
- package/src/lib/services/memberStore.js +57 -1
- package/src/lib/services/memberStore.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
- package/src/lib/utils/index.d.ts +6 -0
- package/src/lib/utils/index.d.ts.map +1 -1
- package/src/lib/utils/index.js +9 -0
- package/src/lib/utils/index.js.map +1 -1
- package/src/lib/utils/sortPair.d.ts +6 -0
- package/src/lib/utils/sortPair.d.ts.map +1 -0
- package/src/lib/utils/sortPair.js +11 -0
- package/src/lib/utils/sortPair.js.map +1 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Rate table primitives for Joule resource-credit metering.
|
|
4
|
+
*
|
|
5
|
+
* A `IRateTable` maps each `ResourceClass` to a `µJ-per-unit` price.
|
|
6
|
+
* All arithmetic is `bigint`; no floating-point is introduced.
|
|
7
|
+
*
|
|
8
|
+
* @see joule-resource-credits spec, Requirement 1.1, 1.6
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.BOOTSTRAP_RATE_TABLE = void 0;
|
|
12
|
+
exports.priceMicroJoules = priceMicroJoules;
|
|
13
|
+
/**
|
|
14
|
+
* Compute the µJ cost for `units` of resource class `cls` under `rate`.
|
|
15
|
+
*
|
|
16
|
+
* Formula: `microJoules = units * microJoulesPerUnit` (bigint, exact).
|
|
17
|
+
*
|
|
18
|
+
* @see joule-resource-credits spec, Requirement 1.6
|
|
19
|
+
*/
|
|
20
|
+
function priceMicroJoules(rate, cls, units) {
|
|
21
|
+
return units * rate.entries[cls].microJoulesPerUnit;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Default bootstrap rate table (version 1).
|
|
25
|
+
*
|
|
26
|
+
* Rates are intentionally conservative placeholders; the operator quorum
|
|
27
|
+
* SHOULD submit a `RateTableUpdateAction` before opening to members.
|
|
28
|
+
*
|
|
29
|
+
* @see joule-resource-credits spec, Requirement 1.1
|
|
30
|
+
*/
|
|
31
|
+
exports.BOOTSTRAP_RATE_TABLE = {
|
|
32
|
+
version: 1,
|
|
33
|
+
effectiveAt: 0, // overridden by bootstrap caller with actual timestamp
|
|
34
|
+
entries: {
|
|
35
|
+
compute: {
|
|
36
|
+
unit: 'request',
|
|
37
|
+
microJoulesPerUnit: 1000n, // 1 mJ per request
|
|
38
|
+
description: 'CPU/compute per API request',
|
|
39
|
+
},
|
|
40
|
+
storage: {
|
|
41
|
+
unit: 'MB-day',
|
|
42
|
+
microJoulesPerUnit: 100n, // 0.1 mJ per MB-day
|
|
43
|
+
description: 'Persistent storage per megabyte per day',
|
|
44
|
+
},
|
|
45
|
+
network: {
|
|
46
|
+
unit: 'MB-out',
|
|
47
|
+
microJoulesPerUnit: 500n, // 0.5 mJ per MB transferred out
|
|
48
|
+
description: 'Outbound bandwidth per megabyte',
|
|
49
|
+
},
|
|
50
|
+
proofOfWork: {
|
|
51
|
+
unit: 'proof',
|
|
52
|
+
microJoulesPerUnit: 10000n, // 10 mJ per proof submission
|
|
53
|
+
description: 'Proof-of-work submission cost',
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
signedBy: [],
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=rateTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rateTable.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/joule/rateTable.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAyCH,4CAMC;AAbD;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAC9B,IAAgB,EAChB,GAAkB,EAClB,KAAa;IAEb,OAAO,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC;AACtD,CAAC;AAED;;;;;;;GAOG;AACU,QAAA,oBAAoB,GAAyB;IACxD,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,CAAC,EAAE,uDAAuD;IACvE,OAAO,EAAE;QACP,OAAO,EAAE;YACP,IAAI,EAAE,SAAS;YACf,kBAAkB,EAAE,KAAM,EAAE,mBAAmB;YAC/C,WAAW,EAAE,6BAA6B;SAC3C;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,kBAAkB,EAAE,IAAI,EAAE,oBAAoB;YAC9C,WAAW,EAAE,yCAAyC;SACvD;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,kBAAkB,EAAE,IAAI,EAAE,gCAAgC;YAC1D,WAAW,EAAE,iCAAiC;SAC/C;QACD,WAAW,EAAE;YACX,IAAI,EAAE,OAAO;YACb,kBAAkB,EAAE,MAAO,EAAE,6BAA6B;YAC1D,WAAW,EAAE,+BAA+B;SAC7C;KACF;IACD,QAAQ,EAAE,EAAE;CACb,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource class taxonomy for Joule metering.
|
|
3
|
+
*
|
|
4
|
+
* v1 classes mirror the fields of `OperationCost` in `brightchain-lib`.
|
|
5
|
+
* Each class maps to one row in the active `IRateTable`.
|
|
6
|
+
*
|
|
7
|
+
* @see joule-resource-credits spec, Requirement 1.1
|
|
8
|
+
*/
|
|
9
|
+
/** Categorical bucket consumed at a per-class rate. */
|
|
10
|
+
export type ResourceClass = 'compute' | 'storage' | 'network' | 'proofOfWork';
|
|
11
|
+
/** Exhaustive list of v1 resource classes, suitable for iteration and
|
|
12
|
+
* validation. Order is stable across versions. */
|
|
13
|
+
export declare const RESOURCE_CLASSES: readonly ResourceClass[];
|
|
14
|
+
/**
|
|
15
|
+
* Type guard that narrows an unknown string to `ResourceClass`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function isResourceClass(value: unknown): value is ResourceClass;
|
|
18
|
+
//# sourceMappingURL=resourceClass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourceClass.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/joule/resourceClass.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,uDAAuD;AACvD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAE9E;mDACmD;AACnD,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAK3C,CAAC;AAEX;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAKtE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Resource class taxonomy for Joule metering.
|
|
4
|
+
*
|
|
5
|
+
* v1 classes mirror the fields of `OperationCost` in `brightchain-lib`.
|
|
6
|
+
* Each class maps to one row in the active `IRateTable`.
|
|
7
|
+
*
|
|
8
|
+
* @see joule-resource-credits spec, Requirement 1.1
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.RESOURCE_CLASSES = void 0;
|
|
12
|
+
exports.isResourceClass = isResourceClass;
|
|
13
|
+
/** Exhaustive list of v1 resource classes, suitable for iteration and
|
|
14
|
+
* validation. Order is stable across versions. */
|
|
15
|
+
exports.RESOURCE_CLASSES = [
|
|
16
|
+
'compute',
|
|
17
|
+
'storage',
|
|
18
|
+
'network',
|
|
19
|
+
'proofOfWork',
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* Type guard that narrows an unknown string to `ResourceClass`.
|
|
23
|
+
*/
|
|
24
|
+
function isResourceClass(value) {
|
|
25
|
+
return (typeof value === 'string' &&
|
|
26
|
+
exports.RESOURCE_CLASSES.includes(value));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=resourceClass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourceClass.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/joule/resourceClass.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAiBH,0CAKC;AAjBD;mDACmD;AACtC,QAAA,gBAAgB,GAA6B;IACxD,SAAS;IACT,SAAS;IACT,SAAS;IACT,aAAa;CACL,CAAC;AAEX;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACxB,wBAAsC,CAAC,QAAQ,CAAC,KAAK,CAAC,CACxD,CAAC;AACJ,CAAC"}
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Operation cost breakdown in
|
|
2
|
+
* Operation cost breakdown in microunits (bigint).
|
|
3
3
|
*/
|
|
4
4
|
export declare class OperationCost {
|
|
5
|
-
readonly computation:
|
|
6
|
-
readonly storage:
|
|
7
|
-
readonly network:
|
|
8
|
-
readonly proofOfWork:
|
|
9
|
-
constructor(computation:
|
|
10
|
-
get
|
|
5
|
+
readonly computation: bigint;
|
|
6
|
+
readonly storage: bigint;
|
|
7
|
+
readonly network: bigint;
|
|
8
|
+
readonly proofOfWork: bigint;
|
|
9
|
+
constructor(computation: bigint, storage: bigint, network: bigint, proofOfWork?: bigint);
|
|
10
|
+
get totalMicrojoules(): bigint;
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated Alias for {@link totalMicrojoules} — retained for grep
|
|
13
|
+
* compatibility. Returns `bigint` microunits, not floating-point joules.
|
|
14
|
+
*/
|
|
15
|
+
get totalJoules(): bigint;
|
|
11
16
|
/**
|
|
12
17
|
* Create zero-cost operation
|
|
13
18
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operationCost.d.ts","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/operationCost.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,aAAa;aAEN,WAAW,EAAE,MAAM;aACnB,OAAO,EAAE,MAAM;aACf,OAAO,EAAE,MAAM;aACf,WAAW,EAAE,MAAM;gBAHnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,
|
|
1
|
+
{"version":3,"file":"operationCost.d.ts","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/operationCost.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,aAAa;aAEN,WAAW,EAAE,MAAM;aACnB,OAAO,EAAE,MAAM;aACf,OAAO,EAAE,MAAM;aACf,WAAW,EAAE,MAAM;gBAHnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAW;IAG1C,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,IAAI,aAAa;IAI5B;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa;CAQzC"}
|
package/src/lib/operationCost.js
CHANGED
|
@@ -2,27 +2,34 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.OperationCost = void 0;
|
|
4
4
|
/**
|
|
5
|
-
* Operation cost breakdown in
|
|
5
|
+
* Operation cost breakdown in microunits (bigint).
|
|
6
6
|
*/
|
|
7
7
|
class OperationCost {
|
|
8
8
|
computation;
|
|
9
9
|
storage;
|
|
10
10
|
network;
|
|
11
11
|
proofOfWork;
|
|
12
|
-
constructor(computation, storage, network, proofOfWork =
|
|
12
|
+
constructor(computation, storage, network, proofOfWork = 0n) {
|
|
13
13
|
this.computation = computation;
|
|
14
14
|
this.storage = storage;
|
|
15
15
|
this.network = network;
|
|
16
16
|
this.proofOfWork = proofOfWork;
|
|
17
17
|
}
|
|
18
|
-
get
|
|
18
|
+
get totalMicrojoules() {
|
|
19
19
|
return this.computation + this.storage + this.network + this.proofOfWork;
|
|
20
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* @deprecated Alias for {@link totalMicrojoules} — retained for grep
|
|
23
|
+
* compatibility. Returns `bigint` microunits, not floating-point joules.
|
|
24
|
+
*/
|
|
25
|
+
get totalJoules() {
|
|
26
|
+
return this.totalMicrojoules;
|
|
27
|
+
}
|
|
21
28
|
/**
|
|
22
29
|
* Create zero-cost operation
|
|
23
30
|
*/
|
|
24
31
|
static zero() {
|
|
25
|
-
return new OperationCost(
|
|
32
|
+
return new OperationCost(0n, 0n, 0n, 0n);
|
|
26
33
|
}
|
|
27
34
|
/**
|
|
28
35
|
* Add two operation costs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operationCost.js","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/operationCost.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,aAAa;IAEN;IACA;IACA;IACA;IAJlB,YACkB,WAAmB,EACnB,OAAe,EACf,OAAe,EACf,cAAsB,
|
|
1
|
+
{"version":3,"file":"operationCost.js","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/operationCost.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,aAAa;IAEN;IACA;IACA;IACA;IAJlB,YACkB,WAAmB,EACnB,OAAe,EACf,OAAe,EACf,cAAsB,EAAE;QAHxB,gBAAW,GAAX,WAAW,CAAQ;QACnB,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAQ;QACf,gBAAW,GAAX,WAAW,CAAa;IACvC,CAAC;IAEJ,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;IAC3E,CAAC;IAED;;;OAGG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI;QACT,OAAO,IAAI,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,KAAoB;QACtB,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,EACpC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,EAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,EAC5B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CACrC,CAAC;IACJ,CAAC;CACF;AAtCD,sCAsCC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Browser-safe client-side computation of PoUW work units.
|
|
3
|
+
*
|
|
4
|
+
* Accepts an IWorkUnit payload, performs the requested SHA3-512 hash operation
|
|
5
|
+
* (LeafHash or InteriorHash), and returns an IWorkResult with the computed
|
|
6
|
+
* hash, timing metadata, and the original challenge token.
|
|
7
|
+
*
|
|
8
|
+
* Uses `@noble/hashes/sha3` directly for browser compatibility.
|
|
9
|
+
*
|
|
10
|
+
* @see Requirements 7.1, 7.2, 7.3, 7.4, 7.5
|
|
11
|
+
*/
|
|
12
|
+
import { IWorkResult } from '../interfaces/pouw/workResult';
|
|
13
|
+
import { IWorkUnit } from '../interfaces/pouw/workUnit';
|
|
14
|
+
/**
|
|
15
|
+
* Callback invoked to report computation progress.
|
|
16
|
+
*
|
|
17
|
+
* @param completed - Number of steps completed so far.
|
|
18
|
+
* @param total - Total number of steps in this work unit.
|
|
19
|
+
*/
|
|
20
|
+
export type ProgressCallback = (completed: number, total: number) => void;
|
|
21
|
+
/**
|
|
22
|
+
* Compute a single PoUW work unit and return the result.
|
|
23
|
+
*
|
|
24
|
+
* For **LeafHash**: decodes the base64 `inputData`, computes SHA3-512, and
|
|
25
|
+
* returns the 128-character lowercase hex digest.
|
|
26
|
+
*
|
|
27
|
+
* For **InteriorHash**: decodes the base64 `inputData` (concatenated child
|
|
28
|
+
* hashes), computes SHA3-512 over the concatenation, and returns the hex
|
|
29
|
+
* digest.
|
|
30
|
+
*
|
|
31
|
+
* @param workUnit - The work unit to compute.
|
|
32
|
+
* @param onProgress - Optional callback for progress reporting.
|
|
33
|
+
* @returns A promise resolving to the computed IWorkResult.
|
|
34
|
+
*
|
|
35
|
+
* @throws {TranslatableBrightChainError} if the operation type is unsupported
|
|
36
|
+
* or the input data is not valid base64.
|
|
37
|
+
*
|
|
38
|
+
* @see Requirements 7.1, 7.2, 7.3, 7.4, 7.5
|
|
39
|
+
*/
|
|
40
|
+
export declare function computeWorkUnit(workUnit: IWorkUnit, onProgress?: ProgressCallback): Promise<IWorkResult>;
|
|
41
|
+
//# sourceMappingURL=computeWorkUnit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeWorkUnit.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/pouw/computeWorkUnit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAqB,MAAM,6BAA6B,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AA+B1E;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,SAAS,EACnB,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,WAAW,CAAC,CAsCtB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Browser-safe client-side computation of PoUW work units.
|
|
4
|
+
*
|
|
5
|
+
* Accepts an IWorkUnit payload, performs the requested SHA3-512 hash operation
|
|
6
|
+
* (LeafHash or InteriorHash), and returns an IWorkResult with the computed
|
|
7
|
+
* hash, timing metadata, and the original challenge token.
|
|
8
|
+
*
|
|
9
|
+
* Uses `@noble/hashes/sha3` directly for browser compatibility.
|
|
10
|
+
*
|
|
11
|
+
* @see Requirements 7.1, 7.2, 7.3, 7.4, 7.5
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.computeWorkUnit = computeWorkUnit;
|
|
15
|
+
const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
|
|
16
|
+
const sha3_1 = require("@noble/hashes/sha3");
|
|
17
|
+
const brightChainStrings_1 = require("../enumerations/brightChainStrings");
|
|
18
|
+
const translatableBrightChainError_1 = require("../errors/translatableBrightChainError");
|
|
19
|
+
const workUnit_1 = require("../interfaces/pouw/workUnit");
|
|
20
|
+
/**
|
|
21
|
+
* Browser-safe base64 decoder.
|
|
22
|
+
*
|
|
23
|
+
* Uses `atob` (available in browsers and Node ≥ 16 via global) with a
|
|
24
|
+
* manual Uint8Array conversion so we avoid depending on Node's `Buffer`.
|
|
25
|
+
*/
|
|
26
|
+
function decodeBase64(base64) {
|
|
27
|
+
// Validate that the string is plausible base64
|
|
28
|
+
// Allow standard base64 characters plus padding
|
|
29
|
+
if (!/^[A-Za-z0-9+/]*={0,2}$/.test(base64)) {
|
|
30
|
+
throw new translatableBrightChainError_1.TranslatableBrightChainError(brightChainStrings_1.BrightChainStrings.Error_PoUW_ComputeWorkUnit_InvalidBase64Input);
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const binaryString = atob(base64);
|
|
34
|
+
const bytes = new Uint8Array(binaryString.length);
|
|
35
|
+
for (let i = 0; i < binaryString.length; i++) {
|
|
36
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
37
|
+
}
|
|
38
|
+
return bytes;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
throw new translatableBrightChainError_1.TranslatableBrightChainError(brightChainStrings_1.BrightChainStrings.Error_PoUW_ComputeWorkUnit_InvalidBase64Input);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Compute a single PoUW work unit and return the result.
|
|
46
|
+
*
|
|
47
|
+
* For **LeafHash**: decodes the base64 `inputData`, computes SHA3-512, and
|
|
48
|
+
* returns the 128-character lowercase hex digest.
|
|
49
|
+
*
|
|
50
|
+
* For **InteriorHash**: decodes the base64 `inputData` (concatenated child
|
|
51
|
+
* hashes), computes SHA3-512 over the concatenation, and returns the hex
|
|
52
|
+
* digest.
|
|
53
|
+
*
|
|
54
|
+
* @param workUnit - The work unit to compute.
|
|
55
|
+
* @param onProgress - Optional callback for progress reporting.
|
|
56
|
+
* @returns A promise resolving to the computed IWorkResult.
|
|
57
|
+
*
|
|
58
|
+
* @throws {TranslatableBrightChainError} if the operation type is unsupported
|
|
59
|
+
* or the input data is not valid base64.
|
|
60
|
+
*
|
|
61
|
+
* @see Requirements 7.1, 7.2, 7.3, 7.4, 7.5
|
|
62
|
+
*/
|
|
63
|
+
async function computeWorkUnit(workUnit, onProgress) {
|
|
64
|
+
const total = 1;
|
|
65
|
+
// Signal start of computation
|
|
66
|
+
onProgress?.(0, total);
|
|
67
|
+
const startTime = Date.now();
|
|
68
|
+
let resultHash;
|
|
69
|
+
switch (workUnit.operation) {
|
|
70
|
+
case workUnit_1.WorkUnitOperation.LeafHash:
|
|
71
|
+
case workUnit_1.WorkUnitOperation.InteriorHash: {
|
|
72
|
+
// Both operations follow the same pattern: decode base64 → SHA3-512 → hex
|
|
73
|
+
const inputBytes = decodeBase64(workUnit.inputData);
|
|
74
|
+
const hashBytes = (0, sha3_1.sha3_512)(inputBytes);
|
|
75
|
+
resultHash = (0, ecies_lib_1.uint8ArrayToHex)(hashBytes);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
default:
|
|
79
|
+
throw new translatableBrightChainError_1.TranslatableBrightChainError(brightChainStrings_1.BrightChainStrings.Error_PoUW_ComputeWorkUnit_InvalidOperationTemplate, { OPERATION: String(workUnit.operation) });
|
|
80
|
+
}
|
|
81
|
+
const computeTimeMs = Date.now() - startTime;
|
|
82
|
+
// Signal completion
|
|
83
|
+
onProgress?.(total, total);
|
|
84
|
+
return {
|
|
85
|
+
workUnitId: workUnit.id,
|
|
86
|
+
resultHash,
|
|
87
|
+
challengeToken: workUnit.challengeToken,
|
|
88
|
+
computeTimeMs,
|
|
89
|
+
completedAt: new Date().toISOString(),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=computeWorkUnit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeWorkUnit.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/pouw/computeWorkUnit.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAiEH,0CAyCC;AAxGD,0DAA6D;AAC7D,6CAA8C;AAC9C,2EAAwE;AACxE,yFAAsF;AAEtF,0DAA2E;AAU3E;;;;;GAKG;AACH,SAAS,YAAY,CAAC,MAAc;IAClC,+CAA+C;IAC/C,gDAAgD;IAChD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,2DAA4B,CACpC,uCAAkB,CAAC,6CAA6C,CACjE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,2DAA4B,CACpC,uCAAkB,CAAC,6CAA6C,CACjE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACI,KAAK,UAAU,eAAe,CACnC,QAAmB,EACnB,UAA6B;IAE7B,MAAM,KAAK,GAAG,CAAC,CAAC;IAEhB,8BAA8B;IAC9B,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEvB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,UAAkB,CAAC;IAEvB,QAAQ,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC3B,KAAK,4BAAiB,CAAC,QAAQ,CAAC;QAChC,KAAK,4BAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;YACpC,0EAA0E;YAC1E,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpD,MAAM,SAAS,GAAG,IAAA,eAAQ,EAAC,UAAU,CAAC,CAAC;YACvC,UAAU,GAAG,IAAA,2BAAe,EAAC,SAAS,CAAC,CAAC;YACxC,MAAM;QACR,CAAC;QACD;YACE,MAAM,IAAI,2DAA4B,CACpC,uCAAkB,CAAC,mDAAmD,EACtE,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAC1C,CAAC;IACN,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAE7C,oBAAoB;IACpB,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAE3B,OAAO;QACL,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,UAAU;QACV,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,aAAa;QACb,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Barrel export for the PoUW (Proof of Useful Work) client module.
|
|
3
|
+
*
|
|
4
|
+
* Exports the browser-safe `computeWorkUnit()` function and the
|
|
5
|
+
* `ProgressCallback` type for use by frontend consumers.
|
|
6
|
+
*/
|
|
7
|
+
export { computeWorkUnit, type ProgressCallback } from './computeWorkUnit';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/pouw/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Barrel export for the PoUW (Proof of Useful Work) client module.
|
|
4
|
+
*
|
|
5
|
+
* Exports the browser-safe `computeWorkUnit()` function and the
|
|
6
|
+
* `ProgressCallback` type for use by frontend consumers.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.computeWorkUnit = void 0;
|
|
10
|
+
var computeWorkUnit_1 = require("./computeWorkUnit");
|
|
11
|
+
Object.defineProperty(exports, "computeWorkUnit", { enumerable: true, get: function () { return computeWorkUnit_1.computeWorkUnit; } });
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/pouw/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,qDAA2E;AAAlE,kHAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/serializers/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.serializeWorkUnit = exports.serializeWorkResult = exports.parseWorkUnit = exports.parseWorkResult = void 0;
|
|
4
|
+
// Serializers for PoUW (Proof of Useful Work) data structures
|
|
5
|
+
var workUnitSerializer_1 = require("./workUnitSerializer");
|
|
6
|
+
Object.defineProperty(exports, "parseWorkResult", { enumerable: true, get: function () { return workUnitSerializer_1.parseWorkResult; } });
|
|
7
|
+
Object.defineProperty(exports, "parseWorkUnit", { enumerable: true, get: function () { return workUnitSerializer_1.parseWorkUnit; } });
|
|
8
|
+
Object.defineProperty(exports, "serializeWorkResult", { enumerable: true, get: function () { return workUnitSerializer_1.serializeWorkResult; } });
|
|
9
|
+
Object.defineProperty(exports, "serializeWorkUnit", { enumerable: true, get: function () { return workUnitSerializer_1.serializeWorkUnit; } });
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/serializers/index.ts"],"names":[],"mappings":";;;AAAA,8DAA8D;AAC9D,2DAK8B;AAJ5B,qHAAA,eAAe,OAAA;AACf,mHAAA,aAAa,OAAA;AACb,yHAAA,mBAAmB,OAAA;AACnB,uHAAA,iBAAiB,OAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview WorkUnitSerializer — JSON round-trip serialization for
|
|
3
|
+
* IWorkUnit and IWorkResult payloads.
|
|
4
|
+
*
|
|
5
|
+
* Provides serialize/parse functions for transmitting work units and results
|
|
6
|
+
* over HTTP as JSON strings. All required fields are validated on parse with
|
|
7
|
+
* descriptive error messages indicating which field is invalid or missing.
|
|
8
|
+
*
|
|
9
|
+
* @see Design: Proof of Useful Work Rate Limiting — WorkUnitSerializer
|
|
10
|
+
* @see Requirements 15.1–15.6
|
|
11
|
+
*/
|
|
12
|
+
import { IWorkResult, IWorkUnit } from '../interfaces/pouw';
|
|
13
|
+
/**
|
|
14
|
+
* Serialize an IWorkUnit to a JSON string.
|
|
15
|
+
*
|
|
16
|
+
* Since `inputData` is already base64-encoded (it's a string), this is a
|
|
17
|
+
* straightforward JSON.stringify. The function exists as a named entry point
|
|
18
|
+
* to pair with `parseWorkUnit` and to keep the serialization contract explicit.
|
|
19
|
+
*/
|
|
20
|
+
export declare function serializeWorkUnit(workUnit: IWorkUnit): string;
|
|
21
|
+
/**
|
|
22
|
+
* Parse a JSON string into an IWorkUnit, validating all required fields.
|
|
23
|
+
*
|
|
24
|
+
* @throws {TranslatableBrightChainError} with a descriptive message if the JSON is malformed or
|
|
25
|
+
* any required field is missing or has the wrong type.
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseWorkUnit(json: string): IWorkUnit;
|
|
28
|
+
/**
|
|
29
|
+
* Serialize an IWorkResult to a JSON string.
|
|
30
|
+
*/
|
|
31
|
+
export declare function serializeWorkResult(workResult: IWorkResult): string;
|
|
32
|
+
/**
|
|
33
|
+
* Parse a JSON string into an IWorkResult, validating all required fields.
|
|
34
|
+
*
|
|
35
|
+
* @throws {TranslatableBrightChainError} with a descriptive message if the JSON is malformed or
|
|
36
|
+
* any required field is missing or has the wrong type.
|
|
37
|
+
*/
|
|
38
|
+
export declare function parseWorkResult(json: string): IWorkResult;
|
|
39
|
+
//# sourceMappingURL=workUnitSerializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workUnitSerializer.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/serializers/workUnitSerializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AAY/E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,GAAG,MAAM,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAyDrD;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,WAAW,GAAG,MAAM,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CA6BzD"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview WorkUnitSerializer — JSON round-trip serialization for
|
|
4
|
+
* IWorkUnit and IWorkResult payloads.
|
|
5
|
+
*
|
|
6
|
+
* Provides serialize/parse functions for transmitting work units and results
|
|
7
|
+
* over HTTP as JSON strings. All required fields are validated on parse with
|
|
8
|
+
* descriptive error messages indicating which field is invalid or missing.
|
|
9
|
+
*
|
|
10
|
+
* @see Design: Proof of Useful Work Rate Limiting — WorkUnitSerializer
|
|
11
|
+
* @see Requirements 15.1–15.6
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.serializeWorkUnit = serializeWorkUnit;
|
|
15
|
+
exports.parseWorkUnit = parseWorkUnit;
|
|
16
|
+
exports.serializeWorkResult = serializeWorkResult;
|
|
17
|
+
exports.parseWorkResult = parseWorkResult;
|
|
18
|
+
const brightChainStrings_1 = require("../enumerations/brightChainStrings");
|
|
19
|
+
const difficultyTier_1 = require("../enumerations/difficultyTier");
|
|
20
|
+
const translatableBrightChainError_1 = require("../errors/translatableBrightChainError");
|
|
21
|
+
const pouw_1 = require("../interfaces/pouw");
|
|
22
|
+
// ── Valid enum value sets for runtime validation ────────────────────────
|
|
23
|
+
const VALID_WORK_UNIT_OPERATIONS = new Set(Object.values(pouw_1.WorkUnitOperation));
|
|
24
|
+
const VALID_DIFFICULTY_TIERS = new Set(Object.values(difficultyTier_1.DifficultyTier));
|
|
25
|
+
// ── WorkUnit serialization ─────────────────────────────────────────────
|
|
26
|
+
/**
|
|
27
|
+
* Serialize an IWorkUnit to a JSON string.
|
|
28
|
+
*
|
|
29
|
+
* Since `inputData` is already base64-encoded (it's a string), this is a
|
|
30
|
+
* straightforward JSON.stringify. The function exists as a named entry point
|
|
31
|
+
* to pair with `parseWorkUnit` and to keep the serialization contract explicit.
|
|
32
|
+
*/
|
|
33
|
+
function serializeWorkUnit(workUnit) {
|
|
34
|
+
return JSON.stringify(workUnit);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Parse a JSON string into an IWorkUnit, validating all required fields.
|
|
38
|
+
*
|
|
39
|
+
* @throws {TranslatableBrightChainError} with a descriptive message if the JSON is malformed or
|
|
40
|
+
* any required field is missing or has the wrong type.
|
|
41
|
+
*/
|
|
42
|
+
function parseWorkUnit(json) {
|
|
43
|
+
let raw;
|
|
44
|
+
try {
|
|
45
|
+
raw = JSON.parse(json);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
throw new translatableBrightChainError_1.TranslatableBrightChainError(brightChainStrings_1.BrightChainStrings.Error_PoUW_WorkUnit_InvalidJSONTemplate, { SNIPPET: json.length > 120 ? json.slice(0, 120) + '…' : json });
|
|
49
|
+
}
|
|
50
|
+
if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) {
|
|
51
|
+
throw new translatableBrightChainError_1.TranslatableBrightChainError(brightChainStrings_1.BrightChainStrings.Error_PoUW_WorkUnit_ExpectedObject);
|
|
52
|
+
}
|
|
53
|
+
const obj = raw;
|
|
54
|
+
// Required string fields
|
|
55
|
+
requireString(obj, 'id', 'WorkUnit');
|
|
56
|
+
requireString(obj, 'treeId', 'WorkUnit');
|
|
57
|
+
requireString(obj, 'inputData', 'WorkUnit');
|
|
58
|
+
requireString(obj, 'challengeToken', 'WorkUnit');
|
|
59
|
+
requireString(obj, 'createdAt', 'WorkUnit');
|
|
60
|
+
requireString(obj, 'expiresAt', 'WorkUnit');
|
|
61
|
+
// Required number fields
|
|
62
|
+
requireNumber(obj, 'treeLevel', 'WorkUnit');
|
|
63
|
+
requireNumber(obj, 'treeIndex', 'WorkUnit');
|
|
64
|
+
requireNumber(obj, 'childCount', 'WorkUnit');
|
|
65
|
+
// Enum: operation
|
|
66
|
+
requireString(obj, 'operation', 'WorkUnit');
|
|
67
|
+
if (!VALID_WORK_UNIT_OPERATIONS.has(obj['operation'])) {
|
|
68
|
+
throw new translatableBrightChainError_1.TranslatableBrightChainError(brightChainStrings_1.BrightChainStrings.Error_PoUW_WorkUnit_InvalidOperationTemplate, {
|
|
69
|
+
VALID_VALUES: [...VALID_WORK_UNIT_OPERATIONS].join(', '),
|
|
70
|
+
VALUE: String(obj['operation']),
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
// Enum: difficulty
|
|
74
|
+
requireString(obj, 'difficulty', 'WorkUnit');
|
|
75
|
+
if (!VALID_DIFFICULTY_TIERS.has(obj['difficulty'])) {
|
|
76
|
+
throw new translatableBrightChainError_1.TranslatableBrightChainError(brightChainStrings_1.BrightChainStrings.Error_PoUW_WorkUnit_InvalidDifficultyTemplate, {
|
|
77
|
+
VALID_VALUES: [...VALID_DIFFICULTY_TIERS].join(', '),
|
|
78
|
+
VALUE: String(obj['difficulty']),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return obj;
|
|
82
|
+
}
|
|
83
|
+
// ── WorkResult serialization ───────────────────────────────────────────
|
|
84
|
+
/**
|
|
85
|
+
* Serialize an IWorkResult to a JSON string.
|
|
86
|
+
*/
|
|
87
|
+
function serializeWorkResult(workResult) {
|
|
88
|
+
return JSON.stringify(workResult);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Parse a JSON string into an IWorkResult, validating all required fields.
|
|
92
|
+
*
|
|
93
|
+
* @throws {TranslatableBrightChainError} with a descriptive message if the JSON is malformed or
|
|
94
|
+
* any required field is missing or has the wrong type.
|
|
95
|
+
*/
|
|
96
|
+
function parseWorkResult(json) {
|
|
97
|
+
let raw;
|
|
98
|
+
try {
|
|
99
|
+
raw = JSON.parse(json);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
throw new translatableBrightChainError_1.TranslatableBrightChainError(brightChainStrings_1.BrightChainStrings.Error_PoUW_WorkResult_InvalidJSONTemplate, { SNIPPET: json.length > 120 ? json.slice(0, 120) + '…' : json });
|
|
103
|
+
}
|
|
104
|
+
if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) {
|
|
105
|
+
throw new translatableBrightChainError_1.TranslatableBrightChainError(brightChainStrings_1.BrightChainStrings.Error_PoUW_WorkResult_ExpectedObject);
|
|
106
|
+
}
|
|
107
|
+
const obj = raw;
|
|
108
|
+
// Required string fields
|
|
109
|
+
requireString(obj, 'workUnitId', 'WorkResult');
|
|
110
|
+
requireString(obj, 'resultHash', 'WorkResult');
|
|
111
|
+
requireString(obj, 'challengeToken', 'WorkResult');
|
|
112
|
+
requireString(obj, 'completedAt', 'WorkResult');
|
|
113
|
+
// Required number fields
|
|
114
|
+
requireNumber(obj, 'computeTimeMs', 'WorkResult');
|
|
115
|
+
return obj;
|
|
116
|
+
}
|
|
117
|
+
// ── Private validation helpers ─────────────────────────────────────────
|
|
118
|
+
/**
|
|
119
|
+
* Validate that `obj[field]` exists and is a string.
|
|
120
|
+
* @throws {TranslatableBrightChainError} with a descriptive message on failure.
|
|
121
|
+
*/
|
|
122
|
+
function requireString(obj, field, context) {
|
|
123
|
+
if (!(field in obj) || obj[field] === undefined || obj[field] === null) {
|
|
124
|
+
throw new translatableBrightChainError_1.TranslatableBrightChainError(context === 'WorkUnit'
|
|
125
|
+
? brightChainStrings_1.BrightChainStrings.Error_PoUW_WorkUnit_MissingFieldTemplate
|
|
126
|
+
: brightChainStrings_1.BrightChainStrings.Error_PoUW_WorkResult_MissingFieldTemplate, { FIELD: field });
|
|
127
|
+
}
|
|
128
|
+
if (typeof obj[field] !== 'string') {
|
|
129
|
+
throw new translatableBrightChainError_1.TranslatableBrightChainError(context === 'WorkUnit'
|
|
130
|
+
? brightChainStrings_1.BrightChainStrings.Error_PoUW_WorkUnit_FieldTypeMismatchTemplate
|
|
131
|
+
: brightChainStrings_1.BrightChainStrings.Error_PoUW_WorkResult_FieldTypeMismatchTemplate, { FIELD: field, EXPECTED_TYPE: 'string', ACTUAL_TYPE: typeof obj[field] });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Validate that `obj[field]` exists and is a number.
|
|
136
|
+
* @throws {TranslatableBrightChainError} with a descriptive message on failure.
|
|
137
|
+
*/
|
|
138
|
+
function requireNumber(obj, field, context) {
|
|
139
|
+
if (!(field in obj) || obj[field] === undefined || obj[field] === null) {
|
|
140
|
+
throw new translatableBrightChainError_1.TranslatableBrightChainError(context === 'WorkUnit'
|
|
141
|
+
? brightChainStrings_1.BrightChainStrings.Error_PoUW_WorkUnit_MissingFieldTemplate
|
|
142
|
+
: brightChainStrings_1.BrightChainStrings.Error_PoUW_WorkResult_MissingFieldTemplate, { FIELD: field });
|
|
143
|
+
}
|
|
144
|
+
if (typeof obj[field] !== 'number') {
|
|
145
|
+
throw new translatableBrightChainError_1.TranslatableBrightChainError(context === 'WorkUnit'
|
|
146
|
+
? brightChainStrings_1.BrightChainStrings.Error_PoUW_WorkUnit_FieldTypeMismatchTemplate
|
|
147
|
+
: brightChainStrings_1.BrightChainStrings.Error_PoUW_WorkResult_FieldTypeMismatchTemplate, { FIELD: field, EXPECTED_TYPE: 'number', ACTUAL_TYPE: typeof obj[field] });
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=workUnitSerializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workUnitSerializer.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/serializers/workUnitSerializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
* Requirements: all (test infrastructure)
|
|
12
12
|
*/
|
|
13
13
|
import fc from 'fast-check';
|
|
14
|
+
import { IChannel, ICommunicationMessage, IConversation, IGroup, IInviteToken } from '../../../interfaces/communication';
|
|
14
15
|
import { IChatCollection, IChatStorageProvider } from '../../../interfaces/communication/chatStorageProvider';
|
|
15
|
-
import { IConversation, ICommunicationMessage, IGroup, IChannel, IInviteToken } from '../../../interfaces/communication';
|
|
16
16
|
import { IServer, IServerInviteToken } from '../../../interfaces/communication/server';
|
|
17
17
|
/**
|
|
18
18
|
* In-memory IChatCollection backed by a plain array.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockChatStorageProvider.d.ts","sourceRoot":"","sources":["../../../../../../../brightchain-lib/src/lib/services/communication/__tests__/mockChatStorageProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"mockChatStorageProvider.d.ts","sourceRoot":"","sources":["../../../../../../../brightchain-lib/src/lib/services/communication/__tests__/mockChatStorageProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAK5B,OAAO,EACL,QAAQ,EAER,qBAAqB,EACrB,aAAa,EACb,MAAM,EAEN,YAAY,EACb,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,eAAe,EACf,oBAAoB,EACrB,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EACL,OAAO,EAEP,kBAAkB,EACnB,MAAM,0CAA0C,CAAC;AAIlD;;;;;GAKG;AACH,qBAAa,kBAAkB,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,eAAe,CAAsB;gBAEjC,YAAY,GAAE,CAAC,EAAO;IAIlC,oFAAoF;IACpF,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIpC,6CAA6C;IAC7C,kBAAkB,IAAI,IAAI;IAIpB,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAUxC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAO5C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC,gEAAgE;IAChE,QAAQ,IAAI,CAAC,EAAE;CAGhB;AAID;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,oBAAoB;IAClE,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC1D,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;IAC7D,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;IAClE,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAChD,QAAQ,CAAC,eAAe,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;IACpE,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACxD,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;gBAEnD,IAAI,CAAC,EAAE;QACjB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;QAChC,QAAQ,CAAC,EAAE,qBAAqB,EAAE,CAAC;QACnC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,aAAa,CAAC,EAAE,qBAAqB,EAAE,CAAC;QACxC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;QACtB,eAAe,CAAC,EAAE,qBAAqB,EAAE,CAAC;QAC1C,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;QAC9B,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;QACpB,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;KACtC;CAWF;AA6BD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,kBAAa,EACb,kBAAa,KACZ,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA2B1C,CAAC;AAkBP;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,CAoBnD,CAAC;AAEN;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAUxC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAa5C,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAkB1C,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU,GACrB,YAAY,MAAM,KACjB,EAAE,CAAC,SAAS,CAAC,qBAAqB,CA0BjC,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,CAQpD,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAUjE,CAAC"}
|