@audius/sdk 15.0.1 → 15.3.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/.turbo/turbo-build.log +8 -9
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-test.log +24 -23
- package/.turbo/turbo-typecheck.log +1 -1
- package/CHANGELOG.md +35 -0
- package/package.json +22 -8
- package/rollup.config.ts +23 -3
- package/src/sdk/api/chats/ChatsApi.ts +1 -1
- package/src/sdk/api/comments/CommentsAPI.ts +214 -13
- package/src/sdk/api/comments/types.ts +61 -8
- package/src/sdk/api/developer-apps/types.ts +2 -20
- package/src/sdk/api/events/EventsApi.ts +96 -4
- package/src/sdk/api/events/types.ts +17 -0
- package/src/sdk/api/generated/default/.openapi-generator/FILES +14 -0
- package/src/sdk/api/generated/default/apis/ChallengesApi.ts +10 -6
- package/src/sdk/api/generated/default/apis/CommentsApi.ts +61 -43
- package/src/sdk/api/generated/default/apis/DeveloperAppsApi.ts +7 -5
- package/src/sdk/api/generated/default/apis/EventsApi.ts +451 -9
- package/src/sdk/api/generated/default/apis/ExploreApi.ts +5 -3
- package/src/sdk/api/generated/default/apis/FanClubApi.ts +152 -0
- package/src/sdk/api/generated/default/apis/NotificationsApi.ts +4 -1
- package/src/sdk/api/generated/default/apis/PlaylistsApi.ts +151 -61
- package/src/sdk/api/generated/default/apis/SearchApi.ts +15 -9
- package/src/sdk/api/generated/default/apis/TipsApi.ts +5 -3
- package/src/sdk/api/generated/default/apis/TracksApi.ts +285 -144
- package/src/sdk/api/generated/default/apis/UsersApi.ts +386 -206
- package/src/sdk/api/generated/default/apis/index.ts +1 -0
- package/src/sdk/api/generated/default/models/AnnouncementNotificationActionData.ts +8 -0
- package/src/sdk/api/generated/default/models/Comment.ts +16 -0
- package/src/sdk/api/generated/default/models/CommentEntityType.ts +3 -1
- package/src/sdk/api/generated/default/models/CreateCommentRequestBody.ts +8 -0
- package/src/sdk/api/generated/default/models/EventFollowState.ts +75 -0
- package/src/sdk/api/generated/default/models/EventFollowStateResponse.ts +72 -0
- package/src/sdk/api/generated/default/models/FanClubTextPostNotification.ts +108 -0
- package/src/sdk/api/generated/default/models/FanClubTextPostNotificationAction.ts +100 -0
- package/src/sdk/api/generated/default/models/FanClubTextPostNotificationActionData.ts +75 -0
- package/src/sdk/api/generated/default/models/FanRemixContestSubmissionNotification.ts +108 -0
- package/src/sdk/api/generated/default/models/FanRemixContestSubmissionNotificationAction.ts +100 -0
- package/src/sdk/api/generated/default/models/FanRemixContestSubmissionNotificationActionData.ts +102 -0
- package/src/sdk/api/generated/default/models/Notification.ts +34 -1
- package/src/sdk/api/generated/default/models/RemixContestUpdateNotification.ts +108 -0
- package/src/sdk/api/generated/default/models/RemixContestUpdateNotificationAction.ts +100 -0
- package/src/sdk/api/generated/default/models/RemixContestUpdateNotificationActionData.ts +93 -0
- package/src/sdk/api/generated/default/models/RemixContestsRelated.ts +94 -0
- package/src/sdk/api/generated/default/models/RemixContestsResponse.ts +86 -0
- package/src/sdk/api/generated/default/models/ReplyComment.ts +8 -0
- package/src/sdk/api/generated/default/models/UserCoin.ts +15 -0
- package/src/sdk/api/generated/default/models/index.ts +13 -0
- package/src/sdk/api/generated/default/runtime.ts +2 -2
- package/src/sdk/api/generator/{gen.cjs → gen.js} +1 -0
- package/src/sdk/api/generator/templates/typescript-fetch/apis.mustache +7 -5
- package/src/sdk/api/generator/templates/typescript-fetch/runtime.mustache +2 -2
- package/src/sdk/api/playlists/PlaylistsApi.ts +5 -5
- package/src/sdk/api/tracks/types.ts +1 -0
- package/src/sdk/createSdk.ts +24 -5
- package/src/sdk/createSdkWithServices.ts +39 -9
- package/src/sdk/index.ts +1 -0
- package/src/sdk/middleware/addSolanaWalletSignatureMiddleware.ts +44 -0
- package/src/sdk/middleware/index.ts +1 -0
- package/src/sdk/oauth/OAuth.test.ts +110 -4
- package/src/sdk/oauth/OAuth.ts +51 -12
- package/src/sdk/oauth/TokenStoreAsyncStorage.ts +48 -4
- package/src/sdk/oauth/TokenStoreLocalStorage.ts +48 -1
- package/src/sdk/oauth/TokenStoreMemory.ts +22 -1
- package/src/sdk/oauth/tokenStore.test.ts +32 -3
- package/src/sdk/oauth/tokenStore.ts +10 -1
- package/src/sdk/oauth/tokenStoreAsyncStorage.test.ts +130 -0
- package/src/sdk/oauth/tokenStoreLocalStorage.test.ts +45 -1
- package/src/sdk/scripts/generateServicesConfig.ts +1 -2
- package/src/sdk/services/EntityManager/EntityManagerClient.ts +27 -4
- package/src/sdk/services/EntityManager/types.ts +8 -0
- package/src/sdk/services/Solana/programs/ClaimableTokensClient/ClaimableTokensClient.ts +92 -12
- package/src/sdk/services/Solana/programs/ClaimableTokensClient/types.ts +5 -1
- package/src/sdk/services/Storage/Storage.ts +12 -1
- package/src/sdk/solanaWallet/SolanaWallet.ts +61 -0
- package/src/sdk/solanaWallet/index.ts +8 -0
- package/src/sdk/utils/mergeConfigs.ts +55 -11
- package/src/sdk/utils/objectUtils.ts +30 -0
- package/dist/browser-15461226.js +0 -2732
- package/dist/browser-15461226.js.map +0 -1
- package/dist/index.browser.esm.js +0 -51254
- package/dist/index.browser.esm.js.map +0 -1
- package/dist/index.d.ts +0 -52
- package/dist/index.esm.js +0 -48732
- package/dist/index.esm.js.map +0 -1
- package/dist/index.native.d.ts +0 -15
- package/dist/index.native.js +0 -48803
- package/dist/index.native.js.map +0 -1
- package/dist/sdk/api/ResolveApi.d.ts +0 -24
- package/dist/sdk/api/albums/AlbumsApi.d.ts +0 -71
- package/dist/sdk/api/albums/AlbumsApi.test.d.ts +0 -1
- package/dist/sdk/api/albums/types.d.ts +0 -3109
- package/dist/sdk/api/challenges/types.d.ts +0 -26
- package/dist/sdk/api/chats/ChatsApi.d.ts +0 -233
- package/dist/sdk/api/chats/clientTypes.d.ts +0 -270
- package/dist/sdk/api/chats/serverTypes.d.ts +0 -199
- package/dist/sdk/api/comments/CommentsAPI.d.ts +0 -58
- package/dist/sdk/api/comments/types.d.ts +0 -118
- package/dist/sdk/api/dashboard-wallet-users/DashboardWalletUsersApi.d.ts +0 -19
- package/dist/sdk/api/dashboard-wallet-users/types.d.ts +0 -87
- package/dist/sdk/api/developer-apps/DeveloperAppsApi.d.ts +0 -62
- package/dist/sdk/api/developer-apps/types.d.ts +0 -59
- package/dist/sdk/api/events/EventsApi.d.ts +0 -19
- package/dist/sdk/api/events/types.d.ts +0 -124
- package/dist/sdk/api/generated/default/apis/ChallengesApi.d.ts +0 -64
- package/dist/sdk/api/generated/default/apis/CidDataApi.d.ts +0 -29
- package/dist/sdk/api/generated/default/apis/CoinsApi.d.ts +0 -220
- package/dist/sdk/api/generated/default/apis/CommentsApi.d.ts +0 -162
- package/dist/sdk/api/generated/default/apis/DashboardWalletUsersApi.d.ts +0 -29
- package/dist/sdk/api/generated/default/apis/DeveloperAppsApi.d.ts +0 -130
- package/dist/sdk/api/generated/default/apis/EventsApi.d.ts +0 -112
- package/dist/sdk/api/generated/default/apis/ExploreApi.d.ts +0 -43
- package/dist/sdk/api/generated/default/apis/NotificationsApi.d.ts +0 -94
- package/dist/sdk/api/generated/default/apis/PlaylistsApi.d.ts +0 -296
- package/dist/sdk/api/generated/default/apis/PrizesApi.d.ts +0 -50
- package/dist/sdk/api/generated/default/apis/ReactionsApi.d.ts +0 -30
- package/dist/sdk/api/generated/default/apis/ResolveApi.d.ts +0 -30
- package/dist/sdk/api/generated/default/apis/RewardsApi.d.ts +0 -41
- package/dist/sdk/api/generated/default/apis/SearchApi.d.ts +0 -157
- package/dist/sdk/api/generated/default/apis/TipsApi.d.ts +0 -55
- package/dist/sdk/api/generated/default/apis/TracksApi.d.ts +0 -846
- package/dist/sdk/api/generated/default/apis/TransactionsApi.d.ts +0 -71
- package/dist/sdk/api/generated/default/apis/UsersApi.d.ts +0 -1737
- package/dist/sdk/api/generated/default/apis/WalletApi.d.ts +0 -31
- package/dist/sdk/api/generated/default/apis/index.d.ts +0 -20
- package/dist/sdk/api/generated/default/index.d.ts +0 -3
- package/dist/sdk/api/generated/default/models/Access.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/AccessGate.d.ts +0 -23
- package/dist/sdk/api/generated/default/models/AccessInfoResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/Account.d.ts +0 -51
- package/dist/sdk/api/generated/default/models/AccountCollection.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/AccountCollectionUser.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/Activity.d.ts +0 -56
- package/dist/sdk/api/generated/default/models/AddManagerRequestBody.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/AlbumBacklink.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/AlbumsResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/AnnouncementNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/AnnouncementNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/AnnouncementNotificationActionData.d.ts +0 -54
- package/dist/sdk/api/generated/default/models/ApproveGrantRequestBody.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/ApproveManagerRequestNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/ApproveManagerRequestNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/ApproveManagerRequestNotificationActionData.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/ArtistCoinFees.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/ArtistLocker.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/ArtistRemixContestEndedNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/ArtistRemixContestEndedNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/ArtistRemixContestEndedNotificationActionData.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/ArtistRemixContestEndingSoonNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/ArtistRemixContestEndingSoonNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/ArtistRemixContestEndingSoonNotificationActionData.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/ArtistRemixContestSubmissionsNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/ArtistRemixContestSubmissionsNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/ArtistRemixContestSubmissionsNotificationActionData.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/Attestation.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/AttestationReponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/AuthorizedApp.d.ts +0 -66
- package/dist/sdk/api/generated/default/models/AuthorizedApps.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/BalanceHistoryDataPoint.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/BalanceHistoryResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/BestSellingItem.d.ts +0 -56
- package/dist/sdk/api/generated/default/models/BestSellingResponse.d.ts +0 -81
- package/dist/sdk/api/generated/default/models/BlobInfo.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/BulkSubscribersResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/ChallengeResponse.d.ts +0 -102
- package/dist/sdk/api/generated/default/models/ChallengeRewardNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/ChallengeRewardNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/ChallengeRewardNotificationActionData.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/CidData.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/CidDataResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/ClaimRewardsRequestBody.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/ClaimRewardsResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/ClaimRewardsResponseDataInner.d.ts +0 -54
- package/dist/sdk/api/generated/default/models/ClaimableRewardNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/ClaimableRewardNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/ClaimableRewardNotificationActionData.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/ClaimedPrize.d.ts +0 -78
- package/dist/sdk/api/generated/default/models/ClaimedPrizesResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/Coin.d.ts +0 -232
- package/dist/sdk/api/generated/default/models/CoinInsights.d.ts +0 -352
- package/dist/sdk/api/generated/default/models/CoinInsightsDynamicBondingCurve.d.ts +0 -72
- package/dist/sdk/api/generated/default/models/CoinInsightsExtensions.d.ts +0 -54
- package/dist/sdk/api/generated/default/models/CoinInsightsResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/CoinMember.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/CoinMembersCountResponse.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/CoinMembersResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/CoinResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/CoinsResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/CoinsVolumeLeadersResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/CoinsVolumeLeadersResponseDataInner.d.ts +0 -43
- package/dist/sdk/api/generated/default/models/Collectibles.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/CollectiblesResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/CollectionActivityWithoutTracks.d.ts +0 -45
- package/dist/sdk/api/generated/default/models/CollectionLibraryResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/Comment.d.ts +0 -135
- package/dist/sdk/api/generated/default/models/CommentEntityType.d.ts +0 -21
- package/dist/sdk/api/generated/default/models/CommentMention.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/CommentMentionNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/CommentMentionNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/CommentMentionNotificationActionData.d.ts +0 -63
- package/dist/sdk/api/generated/default/models/CommentNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/CommentNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/CommentNotificationActionData.d.ts +0 -57
- package/dist/sdk/api/generated/default/models/CommentNotificationSetting.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/CommentReactionNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/CommentReactionNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/CommentReactionNotificationActionData.d.ts +0 -63
- package/dist/sdk/api/generated/default/models/CommentRepliesResponse.d.ts +0 -81
- package/dist/sdk/api/generated/default/models/CommentResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/CommentThreadNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/CommentThreadNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/CommentThreadNotificationActionData.d.ts +0 -63
- package/dist/sdk/api/generated/default/models/ConnectedWallets.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/ConnectedWalletsResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/CosignNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/CosignNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/CosignNotificationActionData.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/CoverArt.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/CoverPhoto.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/CreateAccessKeyResponse.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/CreateCoinRequest.d.ts +0 -90
- package/dist/sdk/api/generated/default/models/CreateCoinResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/CreateCoinResponseData.d.ts +0 -102
- package/dist/sdk/api/generated/default/models/CreateCommentRequestBody.d.ts +0 -67
- package/dist/sdk/api/generated/default/models/CreateCommentResponse.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/CreateDeveloperAppRequestBody.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/CreateDeveloperAppResponse.d.ts +0 -60
- package/dist/sdk/api/generated/default/models/CreateGrantRequestBody.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/CreateNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/CreateNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/CreateNotificationActionData.d.ts +0 -21
- package/dist/sdk/api/generated/default/models/CreatePlaylistNotificationActionData.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/CreatePlaylistRequestBody.d.ts +0 -171
- package/dist/sdk/api/generated/default/models/CreatePlaylistRequestBodyCopyrightLine.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/CreatePlaylistRequestBodyProducerCopyrightLine.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/CreatePlaylistResponse.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/CreateRewardCodeRequest.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/CreateRewardCodeResponse.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/CreateTrackNotificationActionData.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/CreateTrackRequestBody.d.ts +0 -292
- package/dist/sdk/api/generated/default/models/CreateTrackResponse.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/CreateUserRequestBody.d.ts +0 -153
- package/dist/sdk/api/generated/default/models/CreateUserResponse.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/DashboardWalletUser.d.ts +0 -37
- package/dist/sdk/api/generated/default/models/DashboardWalletUsersResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/DataAndType.d.ts +0 -37
- package/dist/sdk/api/generated/default/models/DdexCopyright.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/DdexResourceContributor.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/DdexRightsController.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/DeactivateAccessKeyRequestBody.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/DeactivateAccessKeyResponse.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/DecodedUserToken.d.ts +0 -79
- package/dist/sdk/api/generated/default/models/DeveloperApp.d.ts +0 -60
- package/dist/sdk/api/generated/default/models/DeveloperAppResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/DeveloperAppsResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/DynamicBondingCurveInsights.d.ts +0 -72
- package/dist/sdk/api/generated/default/models/EmailAccess.d.ts +0 -72
- package/dist/sdk/api/generated/default/models/EmailAccessResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/Event.d.ts +0 -102
- package/dist/sdk/api/generated/default/models/EventsResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/ExtendedAccessGate.d.ts +0 -23
- package/dist/sdk/api/generated/default/models/ExtendedPaymentSplit.d.ts +0 -54
- package/dist/sdk/api/generated/default/models/ExtendedPurchaseGate.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/ExtendedTokenGate.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/ExtendedUsdcGate.d.ts +0 -37
- package/dist/sdk/api/generated/default/models/FanRemixContestEndedNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/FanRemixContestEndedNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/FanRemixContestEndedNotificationActionData.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/FanRemixContestEndingSoonNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/FanRemixContestEndingSoonNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/FanRemixContestEndingSoonNotificationActionData.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/FanRemixContestStartedNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/FanRemixContestStartedNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/FanRemixContestStartedNotificationActionData.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/FanRemixContestWinnersSelectedNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/FanRemixContestWinnersSelectedNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/FanRemixContestWinnersSelectedNotificationActionData.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/Favorite.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/FavoriteRequestBody.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/FavoritesResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/FieldVisibility.d.ts +0 -60
- package/dist/sdk/api/generated/default/models/FollowGate.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/FollowNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/FollowNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/FollowNotificationActionData.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/FollowersResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/FollowingResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/Genre.d.ts +0 -71
- package/dist/sdk/api/generated/default/models/GetChallenges.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/GetSupportedUsers.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/GetSupporter.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/GetSupporters.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/GetSupporting.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/GetTipsResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/Grant.d.ts +0 -60
- package/dist/sdk/api/generated/default/models/HistoryResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/ListenCount.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/ListenStreakReminderNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/ListenStreakReminderNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/ListenStreakReminderNotificationActionData.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/ManagedUser.d.ts +0 -38
- package/dist/sdk/api/generated/default/models/ManagedUsersResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/ManagersResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/MilestoneNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/MilestoneNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/MilestoneNotificationActionData.d.ts +0 -22
- package/dist/sdk/api/generated/default/models/MonthlyAggregatePlay.d.ts +0 -43
- package/dist/sdk/api/generated/default/models/Mood.d.ts +0 -43
- package/dist/sdk/api/generated/default/models/MutualFollowersResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/NftCollection.d.ts +0 -76
- package/dist/sdk/api/generated/default/models/NftGate.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/Notification.d.ts +0 -141
- package/dist/sdk/api/generated/default/models/Notifications.d.ts +0 -37
- package/dist/sdk/api/generated/default/models/NotificationsResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/PaymentSplit.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/PinCommentRequestBody.d.ts +0 -37
- package/dist/sdk/api/generated/default/models/Playlist.d.ts +0 -272
- package/dist/sdk/api/generated/default/models/PlaylistAddedTimestamp.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/PlaylistArtwork.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/PlaylistFeedItem.d.ts +0 -37
- package/dist/sdk/api/generated/default/models/PlaylistLibrary.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/PlaylistLibraryExplorePlaylistIdentifier.d.ts +0 -43
- package/dist/sdk/api/generated/default/models/PlaylistLibraryFolder.d.ts +0 -56
- package/dist/sdk/api/generated/default/models/PlaylistLibraryPlaylistIdentifier.d.ts +0 -43
- package/dist/sdk/api/generated/default/models/PlaylistMilestoneNotificationActionData.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/PlaylistResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/PlaylistSearchResult.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/PlaylistTracksResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/PlaylistUpdate.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/PlaylistUpdates.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/PlaylistUpdatesResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/PlaylistWithoutTracks.d.ts +0 -272
- package/dist/sdk/api/generated/default/models/PlaylistsResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/PrizeClaimRequestBody.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/PrizeClaimResponse.d.ts +0 -56
- package/dist/sdk/api/generated/default/models/PrizePublic.d.ts +0 -56
- package/dist/sdk/api/generated/default/models/PrizesResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/ProfilePicture.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/Purchase.d.ts +0 -97
- package/dist/sdk/api/generated/default/models/PurchaseGate.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/PurchaseSplit.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/PurchasersCountResponse.d.ts +0 -73
- package/dist/sdk/api/generated/default/models/PurchasersResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/PurchasesCountResponse.d.ts +0 -73
- package/dist/sdk/api/generated/default/models/PurchasesResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/ReactCommentRequestBody.d.ts +0 -37
- package/dist/sdk/api/generated/default/models/Reaction.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/ReactionNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/ReactionNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/ReactionNotificationActionData.d.ts +0 -66
- package/dist/sdk/api/generated/default/models/Reactions.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/ReceiveTipNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/ReceiveTipNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/ReceiveTipNotificationActionData.d.ts +0 -54
- package/dist/sdk/api/generated/default/models/RedeemAmountResponse.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/RegisterApiKeyRequestBody.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/RegisterApiKeyResponse.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/Related.d.ts +0 -45
- package/dist/sdk/api/generated/default/models/RelatedArtistResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/Remix.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/RemixNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/RemixNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/RemixNotificationActionData.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/RemixParent.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/RemixParentWrite.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/RemixablesResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/RemixedTrackAggregate.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/RemixersCountResponse.d.ts +0 -73
- package/dist/sdk/api/generated/default/models/RemixersResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/RemixesResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/RemixesResponseData.d.ts +0 -37
- package/dist/sdk/api/generated/default/models/RemixingResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/ReplyComment.d.ts +0 -110
- package/dist/sdk/api/generated/default/models/Repost.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/RepostNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/RepostNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/RepostNotificationActionData.d.ts +0 -51
- package/dist/sdk/api/generated/default/models/RepostOfRepostNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/RepostOfRepostNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/RepostOfRepostNotificationActionData.d.ts +0 -51
- package/dist/sdk/api/generated/default/models/RepostRequestBody.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/Reposts.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/RequestManagerNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/RequestManagerNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/RequestManagerNotificationActionData.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/RewardCodeErrorResponse.d.ts +0 -38
- package/dist/sdk/api/generated/default/models/RewardCodeResponse.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/RewardPool.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/SaleJson.d.ts +0 -108
- package/dist/sdk/api/generated/default/models/SalesAggregate.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/SalesAggregateResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/SalesJsonContent.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/SalesJsonResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/SaveNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/SaveNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/SaveNotificationActionData.d.ts +0 -51
- package/dist/sdk/api/generated/default/models/SaveOfRepostNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/SaveOfRepostNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/SaveOfRepostNotificationActionData.d.ts +0 -51
- package/dist/sdk/api/generated/default/models/SearchAutocompleteResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/SearchModel.d.ts +0 -75
- package/dist/sdk/api/generated/default/models/SearchPlaylist.d.ts +0 -272
- package/dist/sdk/api/generated/default/models/SearchResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/SearchTrack.d.ts +0 -520
- package/dist/sdk/api/generated/default/models/SendTipNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/SendTipNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/SendTipNotificationActionData.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/Stem.d.ts +0 -66
- package/dist/sdk/api/generated/default/models/StemParent.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/StemsResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/StreamUrlResponse.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/SubscribersResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/Supporter.d.ts +0 -43
- package/dist/sdk/api/generated/default/models/SupporterDethronedNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/SupporterDethronedNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/SupporterDethronedNotificationActionData.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/SupporterRankUpNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/SupporterRankUpNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/SupporterRankUpNotificationActionData.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/SupporterReference.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/Supporting.d.ts +0 -43
- package/dist/sdk/api/generated/default/models/TagsResponse.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/TastemakerNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/TastemakerNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/TastemakerNotificationActionData.d.ts +0 -54
- package/dist/sdk/api/generated/default/models/TierChangeNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/TierChangeNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/TierChangeNotificationActionData.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/Tip.d.ts +0 -68
- package/dist/sdk/api/generated/default/models/TipGate.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/TokenGate.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/TopGenreUsersResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/TopListener.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/TopUsersResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/Track.d.ts +0 -526
- package/dist/sdk/api/generated/default/models/TrackAccessInfo.d.ts +0 -68
- package/dist/sdk/api/generated/default/models/TrackActivity.d.ts +0 -45
- package/dist/sdk/api/generated/default/models/TrackAddedToPlaylistNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/TrackAddedToPlaylistNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/TrackAddedToPlaylistNotificationActionData.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/TrackAddedToPurchasedAlbumNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/TrackAddedToPurchasedAlbumNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/TrackAddedToPurchasedAlbumNotificationActionData.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/TrackArtwork.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/TrackCommentCountResponse.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/TrackCommentNotificationResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/TrackCommentsResponse.d.ts +0 -81
- package/dist/sdk/api/generated/default/models/TrackDownloadCountResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/TrackDownloadCountResponseData.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/TrackDownloadCountsResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/TrackDownloadRequestBody.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/TrackElementWrite.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/TrackFavoritesResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/TrackFeedItem.d.ts +0 -37
- package/dist/sdk/api/generated/default/models/TrackId.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/TrackInspect.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/TrackInspectList.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/TrackLibraryResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/TrackMilestoneNotificationActionData.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/TrackRepostsResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/TrackResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/TrackSearch.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/TrackSegment.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/Tracks.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/TracksCountResponse.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/TracksResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/TransactionDetails.d.ts +0 -72
- package/dist/sdk/api/generated/default/models/TransactionHistoryCountResponse.d.ts +0 -73
- package/dist/sdk/api/generated/default/models/TransactionHistoryResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/TrendingIdsResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/TrendingNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/TrendingNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/TrendingNotificationActionData.d.ts +0 -57
- package/dist/sdk/api/generated/default/models/TrendingPlaylistNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/TrendingPlaylistNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/TrendingPlaylistNotificationActionData.d.ts +0 -57
- package/dist/sdk/api/generated/default/models/TrendingPlaylistsResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/TrendingTimesIds.d.ts +0 -43
- package/dist/sdk/api/generated/default/models/TrendingUndergroundNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/TrendingUndergroundNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/TrendingUndergroundNotificationActionData.d.ts +0 -57
- package/dist/sdk/api/generated/default/models/UnclaimedIdResponse.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/UndisbursedChallenge.d.ts +0 -84
- package/dist/sdk/api/generated/default/models/UndisbursedChallenges.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/UpdateCoinRequest.d.ts +0 -60
- package/dist/sdk/api/generated/default/models/UpdateCoinResponse.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/UpdateCommentRequestBody.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/UpdateDeveloperAppRequestBody.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/UpdatePlaylistRequestBody.d.ts +0 -165
- package/dist/sdk/api/generated/default/models/UpdateTrackRequestBody.d.ts +0 -210
- package/dist/sdk/api/generated/default/models/UpdateUserRequestBody.d.ts +0 -159
- package/dist/sdk/api/generated/default/models/UpdateUserRequestBodyEvents.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/UrlWithMirrors.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/UsdcGate.d.ts +0 -37
- package/dist/sdk/api/generated/default/models/UsdcPurchaseBuyerNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/UsdcPurchaseBuyerNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/UsdcPurchaseBuyerNotificationActionData.d.ts +0 -60
- package/dist/sdk/api/generated/default/models/UsdcPurchaseSellerNotification.d.ts +0 -55
- package/dist/sdk/api/generated/default/models/UsdcPurchaseSellerNotificationAction.d.ts +0 -49
- package/dist/sdk/api/generated/default/models/UsdcPurchaseSellerNotificationActionData.d.ts +0 -60
- package/dist/sdk/api/generated/default/models/User.d.ts +0 -388
- package/dist/sdk/api/generated/default/models/UserAccountResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/UserArtistCoinBadge.d.ts +0 -48
- package/dist/sdk/api/generated/default/models/UserCoin.d.ts +0 -78
- package/dist/sdk/api/generated/default/models/UserCoinAccount.d.ts +0 -54
- package/dist/sdk/api/generated/default/models/UserCoinResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/UserCoinWithAccounts.d.ts +0 -67
- package/dist/sdk/api/generated/default/models/UserCoinsResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/UserCommentsResponse.d.ts +0 -81
- package/dist/sdk/api/generated/default/models/UserFeedItem.d.ts +0 -25
- package/dist/sdk/api/generated/default/models/UserFeedResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/UserIdAddress.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/UserIdsAddressesResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/UserManager.d.ts +0 -38
- package/dist/sdk/api/generated/default/models/UserMilestoneNotificationActionData.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/UserPlaylistLibrary.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/UserPlaylistLibraryContentsInner.d.ts +0 -22
- package/dist/sdk/api/generated/default/models/UserResponse.d.ts +0 -74
- package/dist/sdk/api/generated/default/models/UserResponseSingle.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/UserSearch.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/UserSubscribers.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/UserTrackListenCountsResponse.d.ts +0 -33
- package/dist/sdk/api/generated/default/models/UserTracksDownloadCountResponse.d.ts +0 -30
- package/dist/sdk/api/generated/default/models/UserTracksRemixedResponse.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/VerifyToken.d.ts +0 -31
- package/dist/sdk/api/generated/default/models/VersionMetadata.d.ts +0 -36
- package/dist/sdk/api/generated/default/models/WriteResponse.d.ts +0 -42
- package/dist/sdk/api/generated/default/models/index.d.ts +0 -401
- package/dist/sdk/api/generated/default/runtime.d.ts +0 -172
- package/dist/sdk/api/grants/GrantsApi.d.ts +0 -19
- package/dist/sdk/api/grants/types.d.ts +0 -65
- package/dist/sdk/api/notifications/NotificationsApi.d.ts +0 -14
- package/dist/sdk/api/notifications/NotificationsApi.test.d.ts +0 -1
- package/dist/sdk/api/notifications/types.d.ts +0 -32
- package/dist/sdk/api/playlists/PlaylistsApi.d.ts +0 -106
- package/dist/sdk/api/playlists/PlaylistsApi.test.d.ts +0 -1
- package/dist/sdk/api/playlists/types.d.ts +0 -3942
- package/dist/sdk/api/tracks/TrackUploadHelper.d.ts +0 -133
- package/dist/sdk/api/tracks/TracksApi.d.ts +0 -122
- package/dist/sdk/api/tracks/TracksApi.test.d.ts +0 -1
- package/dist/sdk/api/tracks/constants.d.ts +0 -2
- package/dist/sdk/api/tracks/types.d.ts +0 -4431
- package/dist/sdk/api/uploads/UploadsApi.d.ts +0 -49
- package/dist/sdk/api/uploads/types.d.ts +0 -4
- package/dist/sdk/api/users/UsersApi.d.ts +0 -134
- package/dist/sdk/api/users/UsersApi.test.d.ts +0 -1
- package/dist/sdk/api/users/types.d.ts +0 -1009
- package/dist/sdk/config/development.d.ts +0 -2
- package/dist/sdk/config/production.d.ts +0 -2
- package/dist/sdk/config/types.d.ts +0 -45
- package/dist/sdk/createSdk.d.ts +0 -26
- package/dist/sdk/createSdkWithServices.d.ts +0 -50
- package/dist/sdk/errors.d.ts +0 -3
- package/dist/sdk/index.d.ts +0 -40
- package/dist/sdk/middleware/addAppInfoMiddleware.d.ts +0 -16
- package/dist/sdk/middleware/addRequestSignatureMiddleware.d.ts +0 -12
- package/dist/sdk/middleware/addRequestSignatureMiddleware.test.d.ts +0 -1
- package/dist/sdk/middleware/addTokenRefreshMiddleware.d.ts +0 -16
- package/dist/sdk/middleware/addTokenRefreshMiddleware.test.d.ts +0 -1
- package/dist/sdk/middleware/index.d.ts +0 -3
- package/dist/sdk/oauth/OAuth.d.ts +0 -131
- package/dist/sdk/oauth/OAuth.test.d.ts +0 -1
- package/dist/sdk/oauth/TokenStoreAsyncStorage.d.ts +0 -7
- package/dist/sdk/oauth/TokenStoreLocalStorage.d.ts +0 -11
- package/dist/sdk/oauth/TokenStoreMemory.d.ts +0 -18
- package/dist/sdk/oauth/index.d.ts +0 -3
- package/dist/sdk/oauth/pkce.d.ts +0 -18
- package/dist/sdk/oauth/pkce.test.d.ts +0 -1
- package/dist/sdk/oauth/tokenStore.d.ts +0 -11
- package/dist/sdk/oauth/tokenStore.test.d.ts +0 -1
- package/dist/sdk/oauth/tokenStoreLocalStorage.test.d.ts +0 -1
- package/dist/sdk/oauth/types.d.ts +0 -5
- package/dist/sdk/scripts/generateServicesConfig.d.ts +0 -1
- package/dist/sdk/scripts/manageRewardsLookupTable.d.ts +0 -1
- package/dist/sdk/scripts/verifyUser.d.ts +0 -1
- package/dist/sdk/sdk.d.ts +0 -5
- package/dist/sdk/sdkBrowserDist.d.ts +0 -51
- package/dist/sdk/services/AntiAbuseOracle/AntiAbuseOracle.d.ts +0 -10
- package/dist/sdk/services/AntiAbuseOracle/index.d.ts +0 -2
- package/dist/sdk/services/AntiAbuseOracle/types.d.ts +0 -70
- package/dist/sdk/services/AntiAbuseOracleSelector/AntiAbuseOracleSelector.d.ts +0 -26
- package/dist/sdk/services/AntiAbuseOracleSelector/AntiAbuseOracleSelector.test.d.ts +0 -1
- package/dist/sdk/services/AntiAbuseOracleSelector/getDefaultConfig.d.ts +0 -3
- package/dist/sdk/services/AntiAbuseOracleSelector/index.d.ts +0 -3
- package/dist/sdk/services/AntiAbuseOracleSelector/types.d.ts +0 -37
- package/dist/sdk/services/Archiver/Archiver.d.ts +0 -21
- package/dist/sdk/services/Archiver/index.d.ts +0 -1
- package/dist/sdk/services/AudiusWalletClient/actions/getSharedSecret.d.ts +0 -7
- package/dist/sdk/services/AudiusWalletClient/actions/sign.d.ts +0 -7
- package/dist/sdk/services/AudiusWalletClient/createAppWalletClient.d.ts +0 -5
- package/dist/sdk/services/AudiusWalletClient/createHedgehogWalletClient.d.ts +0 -9
- package/dist/sdk/services/AudiusWalletClient/decorators/audiusWallet.d.ts +0 -184
- package/dist/sdk/services/AudiusWalletClient/index.d.ts +0 -4
- package/dist/sdk/services/AudiusWalletClient/localTransport.d.ts +0 -10
- package/dist/sdk/services/AudiusWalletClient/privateKeyToAudiusAccount.d.ts +0 -6
- package/dist/sdk/services/AudiusWalletClient/types.d.ts +0 -24
- package/dist/sdk/services/AudiusWalletClient/utils.d.ts +0 -7
- package/dist/sdk/services/Encryption/EmailEncryptionService.d.ts +0 -107
- package/dist/sdk/services/Encryption/index.d.ts +0 -2
- package/dist/sdk/services/Encryption/types.d.ts +0 -13
- package/dist/sdk/services/EntityManager/EntityManager.test.d.ts +0 -1
- package/dist/sdk/services/EntityManager/EntityManagerClient.d.ts +0 -48
- package/dist/sdk/services/EntityManager/contract/EntityManagerContract.d.ts +0 -168
- package/dist/sdk/services/EntityManager/contract/abi.d.ts +0 -131
- package/dist/sdk/services/EntityManager/getDefaultConfig.d.ts +0 -3
- package/dist/sdk/services/EntityManager/index.d.ts +0 -5
- package/dist/sdk/services/EntityManager/types.d.ts +0 -131
- package/dist/sdk/services/Ethereum/ethereum.d.ts +0 -86
- package/dist/sdk/services/Ethereum/getDefaultConfig.d.ts +0 -3
- package/dist/sdk/services/Ethereum/index.d.ts +0 -2
- package/dist/sdk/services/Ethereum/types.d.ts +0 -26
- package/dist/sdk/services/Logger/Logger.d.ts +0 -18
- package/dist/sdk/services/Logger/index.d.ts +0 -2
- package/dist/sdk/services/Logger/types.d.ts +0 -7
- package/dist/sdk/services/Solana/SolanaRelay.d.ts +0 -84
- package/dist/sdk/services/Solana/SolanaRelayWalletAdapter.d.ts +0 -42
- package/dist/sdk/services/Solana/constants.d.ts +0 -3
- package/dist/sdk/services/Solana/index.d.ts +0 -7
- package/dist/sdk/services/Solana/programs/ClaimableTokensClient/ClaimableTokensClient.d.ts +0 -77
- package/dist/sdk/services/Solana/programs/ClaimableTokensClient/getDefaultConfig.d.ts +0 -3
- package/dist/sdk/services/Solana/programs/ClaimableTokensClient/index.d.ts +0 -2
- package/dist/sdk/services/Solana/programs/ClaimableTokensClient/types.d.ts +0 -98
- package/dist/sdk/services/Solana/programs/CustomInstructionError.d.ts +0 -7
- package/dist/sdk/services/Solana/programs/PaymentRouterClient/PaymentRouterClient.d.ts +0 -23
- package/dist/sdk/services/Solana/programs/PaymentRouterClient/getDefaultConfig.d.ts +0 -3
- package/dist/sdk/services/Solana/programs/PaymentRouterClient/index.d.ts +0 -3
- package/dist/sdk/services/Solana/programs/PaymentRouterClient/types.d.ts +0 -136
- package/dist/sdk/services/Solana/programs/RewardManagerClient/RewardManagerClient.d.ts +0 -44
- package/dist/sdk/services/Solana/programs/RewardManagerClient/getDefaultConfig.d.ts +0 -3
- package/dist/sdk/services/Solana/programs/RewardManagerClient/index.d.ts +0 -2
- package/dist/sdk/services/Solana/programs/RewardManagerClient/types.d.ts +0 -113
- package/dist/sdk/services/Solana/programs/SolanaClient.d.ts +0 -47
- package/dist/sdk/services/Solana/programs/getDefaultConfig.d.ts +0 -3
- package/dist/sdk/services/Solana/programs/types.d.ts +0 -276
- package/dist/sdk/services/Solana/types.d.ts +0 -208
- package/dist/sdk/services/Storage/Storage.d.ts +0 -42
- package/dist/sdk/services/Storage/getDefaultConfig.d.ts +0 -3
- package/dist/sdk/services/Storage/index.d.ts +0 -3
- package/dist/sdk/services/Storage/types.d.ts +0 -127
- package/dist/sdk/services/StorageNodeSelector/StorageNodeSelector.d.ts +0 -17
- package/dist/sdk/services/StorageNodeSelector/StorageNodeSelector.test.d.ts +0 -1
- package/dist/sdk/services/StorageNodeSelector/getDefaultConfig.d.ts +0 -3
- package/dist/sdk/services/StorageNodeSelector/getNStorageNodes.d.ts +0 -14
- package/dist/sdk/services/StorageNodeSelector/index.d.ts +0 -3
- package/dist/sdk/services/StorageNodeSelector/types.d.ts +0 -30
- package/dist/sdk/services/index.d.ts +0 -11
- package/dist/sdk/types/ChainAddress.d.ts +0 -21
- package/dist/sdk/types/DDEX.d.ts +0 -37
- package/dist/sdk/types/Env.d.ts +0 -1
- package/dist/sdk/types/EthAddress.d.ts +0 -2
- package/dist/sdk/types/File.d.ts +0 -210
- package/dist/sdk/types/Genre.d.ts +0 -54
- package/dist/sdk/types/HashId.d.ts +0 -5
- package/dist/sdk/types/Hex.d.ts +0 -2
- package/dist/sdk/types/Mood.d.ts +0 -25
- package/dist/sdk/types/SolanaAddress.d.ts +0 -2
- package/dist/sdk/types/StemCategory.d.ts +0 -14
- package/dist/sdk/types/Timeout.d.ts +0 -1
- package/dist/sdk/types.d.ts +0 -267
- package/dist/sdk/utils/EventEmitterTarget.d.ts +0 -6
- package/dist/sdk/utils/apiKey.d.ts +0 -1
- package/dist/sdk/utils/cid.d.ts +0 -2
- package/dist/sdk/utils/crypto.d.ts +0 -26
- package/dist/sdk/utils/deepPartial.d.ts +0 -3
- package/dist/sdk/utils/errors.d.ts +0 -8
- package/dist/sdk/utils/fetch.d.ts +0 -16
- package/dist/sdk/utils/getPathFromUrl.d.ts +0 -4
- package/dist/sdk/utils/hashId.d.ts +0 -8
- package/dist/sdk/utils/hashId.test.d.ts +0 -1
- package/dist/sdk/utils/localStorage.d.ts +0 -6
- package/dist/sdk/utils/location.d.ts +0 -16
- package/dist/sdk/utils/mergeConfigs.d.ts +0 -7
- package/dist/sdk/utils/mergeConfigs.test.d.ts +0 -1
- package/dist/sdk/utils/oauthScope.d.ts +0 -1
- package/dist/sdk/utils/object.d.ts +0 -4
- package/dist/sdk/utils/parseMint.d.ts +0 -10
- package/dist/sdk/utils/parseParams.d.ts +0 -13
- package/dist/sdk/utils/preparePaymentSplits.d.ts +0 -19
- package/dist/sdk/utils/prettify.d.ts +0 -3
- package/dist/sdk/utils/promiseAny.d.ts +0 -6
- package/dist/sdk/utils/reactionsMap.d.ts +0 -11
- package/dist/sdk/utils/rendezvous.d.ts +0 -12
- package/dist/sdk/utils/retry.d.ts +0 -4
- package/dist/sdk/utils/signatureSchemas.d.ts +0 -54
- package/dist/sdk/utils/uuid.d.ts +0 -1
- package/dist/sdk/utils/wait.d.ts +0 -1
- package/dist/sdk.browser.esm.html +0 -5000
- package/dist/sdk.min.js +0 -30
- package/dist/sdk.min.js.map +0 -1
package/dist/browser-15461226.js
DELETED
|
@@ -1,2732 +0,0 @@
|
|
|
1
|
-
import require$$0 from 'readable-stream';
|
|
2
|
-
|
|
3
|
-
function _mergeNamespaces(n, m) {
|
|
4
|
-
m.forEach(function (e) {
|
|
5
|
-
e && typeof e !== 'string' && !Array.isArray(e) && Object.keys(e).forEach(function (k) {
|
|
6
|
-
if (k !== 'default' && !(k in n)) {
|
|
7
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
8
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function () { return e[k]; }
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
return Object.freeze(n);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
var browser$2 = {exports: {}};
|
|
19
|
-
|
|
20
|
-
var lib$2 = {};
|
|
21
|
-
|
|
22
|
-
Object.defineProperty(lib$2, "__esModule", {
|
|
23
|
-
value: true
|
|
24
|
-
});
|
|
25
|
-
lib$2.ReadableWebToNodeStream = void 0;
|
|
26
|
-
const readable_stream_1 = require$$0;
|
|
27
|
-
/**
|
|
28
|
-
* Converts a Web-API stream into Node stream.Readable class
|
|
29
|
-
* Node stream readable: https://nodejs.org/api/stream.html#stream_readable_streams
|
|
30
|
-
* Web API readable-stream: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream
|
|
31
|
-
* Node readable stream: https://nodejs.org/api/stream.html#stream_readable_streams
|
|
32
|
-
*/
|
|
33
|
-
class ReadableWebToNodeStream extends readable_stream_1.Readable {
|
|
34
|
-
/**
|
|
35
|
-
*
|
|
36
|
-
* @param stream ReadableStream: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream
|
|
37
|
-
*/
|
|
38
|
-
constructor(stream) {
|
|
39
|
-
super();
|
|
40
|
-
this.bytesRead = 0;
|
|
41
|
-
this.released = false;
|
|
42
|
-
this.reader = stream.getReader();
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Implementation of readable._read(size).
|
|
46
|
-
* When readable._read() is called, if data is available from the resource,
|
|
47
|
-
* the implementation should begin pushing that data into the read queue
|
|
48
|
-
* https://nodejs.org/api/stream.html#stream_readable_read_size_1
|
|
49
|
-
*/
|
|
50
|
-
async _read() {
|
|
51
|
-
// Should start pushing data into the queue
|
|
52
|
-
// Read data from the underlying Web-API-readable-stream
|
|
53
|
-
if (this.released) {
|
|
54
|
-
this.push(null); // Signal EOF
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
this.pendingRead = this.reader.read();
|
|
58
|
-
const data = await this.pendingRead;
|
|
59
|
-
// clear the promise before pushing pushing new data to the queue and allow sequential calls to _read()
|
|
60
|
-
delete this.pendingRead;
|
|
61
|
-
if (data.done || this.released) {
|
|
62
|
-
this.push(null); // Signal EOF
|
|
63
|
-
} else {
|
|
64
|
-
this.bytesRead += data.value.length;
|
|
65
|
-
this.push(data.value); // Push new data to the queue
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* If there is no unresolved read call to Web-API ReadableStream immediately returns;
|
|
70
|
-
* otherwise will wait until the read is resolved.
|
|
71
|
-
*/
|
|
72
|
-
async waitForReadToComplete() {
|
|
73
|
-
if (this.pendingRead) {
|
|
74
|
-
await this.pendingRead;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Close wrapper
|
|
79
|
-
*/
|
|
80
|
-
async close() {
|
|
81
|
-
await this.syncAndRelease();
|
|
82
|
-
}
|
|
83
|
-
async syncAndRelease() {
|
|
84
|
-
this.released = true;
|
|
85
|
-
await this.waitForReadToComplete();
|
|
86
|
-
await this.reader.releaseLock();
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
lib$2.ReadableWebToNodeStream = ReadableWebToNodeStream;
|
|
90
|
-
|
|
91
|
-
var lib$1 = {};
|
|
92
|
-
|
|
93
|
-
var ieee754 = {};
|
|
94
|
-
|
|
95
|
-
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
|
96
|
-
ieee754.read = function (buffer, offset, isLE, mLen, nBytes) {
|
|
97
|
-
var e, m;
|
|
98
|
-
var eLen = nBytes * 8 - mLen - 1;
|
|
99
|
-
var eMax = (1 << eLen) - 1;
|
|
100
|
-
var eBias = eMax >> 1;
|
|
101
|
-
var nBits = -7;
|
|
102
|
-
var i = isLE ? nBytes - 1 : 0;
|
|
103
|
-
var d = isLE ? -1 : 1;
|
|
104
|
-
var s = buffer[offset + i];
|
|
105
|
-
i += d;
|
|
106
|
-
e = s & (1 << -nBits) - 1;
|
|
107
|
-
s >>= -nBits;
|
|
108
|
-
nBits += eLen;
|
|
109
|
-
for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
|
|
110
|
-
m = e & (1 << -nBits) - 1;
|
|
111
|
-
e >>= -nBits;
|
|
112
|
-
nBits += mLen;
|
|
113
|
-
for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
|
|
114
|
-
if (e === 0) {
|
|
115
|
-
e = 1 - eBias;
|
|
116
|
-
} else if (e === eMax) {
|
|
117
|
-
return m ? NaN : (s ? -1 : 1) * Infinity;
|
|
118
|
-
} else {
|
|
119
|
-
m = m + Math.pow(2, mLen);
|
|
120
|
-
e = e - eBias;
|
|
121
|
-
}
|
|
122
|
-
return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
|
|
123
|
-
};
|
|
124
|
-
ieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) {
|
|
125
|
-
var e, m, c;
|
|
126
|
-
var eLen = nBytes * 8 - mLen - 1;
|
|
127
|
-
var eMax = (1 << eLen) - 1;
|
|
128
|
-
var eBias = eMax >> 1;
|
|
129
|
-
var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
|
|
130
|
-
var i = isLE ? 0 : nBytes - 1;
|
|
131
|
-
var d = isLE ? 1 : -1;
|
|
132
|
-
var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
|
|
133
|
-
value = Math.abs(value);
|
|
134
|
-
if (isNaN(value) || value === Infinity) {
|
|
135
|
-
m = isNaN(value) ? 1 : 0;
|
|
136
|
-
e = eMax;
|
|
137
|
-
} else {
|
|
138
|
-
e = Math.floor(Math.log(value) / Math.LN2);
|
|
139
|
-
if (value * (c = Math.pow(2, -e)) < 1) {
|
|
140
|
-
e--;
|
|
141
|
-
c *= 2;
|
|
142
|
-
}
|
|
143
|
-
if (e + eBias >= 1) {
|
|
144
|
-
value += rt / c;
|
|
145
|
-
} else {
|
|
146
|
-
value += rt * Math.pow(2, 1 - eBias);
|
|
147
|
-
}
|
|
148
|
-
if (value * c >= 2) {
|
|
149
|
-
e++;
|
|
150
|
-
c /= 2;
|
|
151
|
-
}
|
|
152
|
-
if (e + eBias >= eMax) {
|
|
153
|
-
m = 0;
|
|
154
|
-
e = eMax;
|
|
155
|
-
} else if (e + eBias >= 1) {
|
|
156
|
-
m = (value * c - 1) * Math.pow(2, mLen);
|
|
157
|
-
e = e + eBias;
|
|
158
|
-
} else {
|
|
159
|
-
m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
|
|
160
|
-
e = 0;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
|
|
164
|
-
e = e << mLen | m;
|
|
165
|
-
eLen += mLen;
|
|
166
|
-
for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
|
|
167
|
-
buffer[offset + i - d] |= s * 128;
|
|
168
|
-
};
|
|
169
|
-
|
|
170
|
-
(function (exports) {
|
|
171
|
-
|
|
172
|
-
Object.defineProperty(exports, "__esModule", {
|
|
173
|
-
value: true
|
|
174
|
-
});
|
|
175
|
-
exports.AnsiStringType = exports.StringType = exports.BufferType = exports.Uint8ArrayType = exports.IgnoreType = exports.Float80_LE = exports.Float80_BE = exports.Float64_LE = exports.Float64_BE = exports.Float32_LE = exports.Float32_BE = exports.Float16_LE = exports.Float16_BE = exports.INT64_BE = exports.UINT64_BE = exports.INT64_LE = exports.UINT64_LE = exports.INT32_LE = exports.INT32_BE = exports.INT24_BE = exports.INT24_LE = exports.INT16_LE = exports.INT16_BE = exports.INT8 = exports.UINT32_BE = exports.UINT32_LE = exports.UINT24_BE = exports.UINT24_LE = exports.UINT16_BE = exports.UINT16_LE = exports.UINT8 = void 0;
|
|
176
|
-
const ieee754$1 = ieee754;
|
|
177
|
-
// Primitive types
|
|
178
|
-
function dv(array) {
|
|
179
|
-
return new DataView(array.buffer, array.byteOffset);
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* 8-bit unsigned integer
|
|
183
|
-
*/
|
|
184
|
-
exports.UINT8 = {
|
|
185
|
-
len: 1,
|
|
186
|
-
get(array, offset) {
|
|
187
|
-
return dv(array).getUint8(offset);
|
|
188
|
-
},
|
|
189
|
-
put(array, offset, value) {
|
|
190
|
-
dv(array).setUint8(offset, value);
|
|
191
|
-
return offset + 1;
|
|
192
|
-
}
|
|
193
|
-
};
|
|
194
|
-
/**
|
|
195
|
-
* 16-bit unsigned integer, Little Endian byte order
|
|
196
|
-
*/
|
|
197
|
-
exports.UINT16_LE = {
|
|
198
|
-
len: 2,
|
|
199
|
-
get(array, offset) {
|
|
200
|
-
return dv(array).getUint16(offset, true);
|
|
201
|
-
},
|
|
202
|
-
put(array, offset, value) {
|
|
203
|
-
dv(array).setUint16(offset, value, true);
|
|
204
|
-
return offset + 2;
|
|
205
|
-
}
|
|
206
|
-
};
|
|
207
|
-
/**
|
|
208
|
-
* 16-bit unsigned integer, Big Endian byte order
|
|
209
|
-
*/
|
|
210
|
-
exports.UINT16_BE = {
|
|
211
|
-
len: 2,
|
|
212
|
-
get(array, offset) {
|
|
213
|
-
return dv(array).getUint16(offset);
|
|
214
|
-
},
|
|
215
|
-
put(array, offset, value) {
|
|
216
|
-
dv(array).setUint16(offset, value);
|
|
217
|
-
return offset + 2;
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
/**
|
|
221
|
-
* 24-bit unsigned integer, Little Endian byte order
|
|
222
|
-
*/
|
|
223
|
-
exports.UINT24_LE = {
|
|
224
|
-
len: 3,
|
|
225
|
-
get(array, offset) {
|
|
226
|
-
const dataView = dv(array);
|
|
227
|
-
return dataView.getUint8(offset) + (dataView.getUint16(offset + 1, true) << 8);
|
|
228
|
-
},
|
|
229
|
-
put(array, offset, value) {
|
|
230
|
-
const dataView = dv(array);
|
|
231
|
-
dataView.setUint8(offset, value & 0xff);
|
|
232
|
-
dataView.setUint16(offset + 1, value >> 8, true);
|
|
233
|
-
return offset + 3;
|
|
234
|
-
}
|
|
235
|
-
};
|
|
236
|
-
/**
|
|
237
|
-
* 24-bit unsigned integer, Big Endian byte order
|
|
238
|
-
*/
|
|
239
|
-
exports.UINT24_BE = {
|
|
240
|
-
len: 3,
|
|
241
|
-
get(array, offset) {
|
|
242
|
-
const dataView = dv(array);
|
|
243
|
-
return (dataView.getUint16(offset) << 8) + dataView.getUint8(offset + 2);
|
|
244
|
-
},
|
|
245
|
-
put(array, offset, value) {
|
|
246
|
-
const dataView = dv(array);
|
|
247
|
-
dataView.setUint16(offset, value >> 8);
|
|
248
|
-
dataView.setUint8(offset + 2, value & 0xff);
|
|
249
|
-
return offset + 3;
|
|
250
|
-
}
|
|
251
|
-
};
|
|
252
|
-
/**
|
|
253
|
-
* 32-bit unsigned integer, Little Endian byte order
|
|
254
|
-
*/
|
|
255
|
-
exports.UINT32_LE = {
|
|
256
|
-
len: 4,
|
|
257
|
-
get(array, offset) {
|
|
258
|
-
return dv(array).getUint32(offset, true);
|
|
259
|
-
},
|
|
260
|
-
put(array, offset, value) {
|
|
261
|
-
dv(array).setUint32(offset, value, true);
|
|
262
|
-
return offset + 4;
|
|
263
|
-
}
|
|
264
|
-
};
|
|
265
|
-
/**
|
|
266
|
-
* 32-bit unsigned integer, Big Endian byte order
|
|
267
|
-
*/
|
|
268
|
-
exports.UINT32_BE = {
|
|
269
|
-
len: 4,
|
|
270
|
-
get(array, offset) {
|
|
271
|
-
return dv(array).getUint32(offset);
|
|
272
|
-
},
|
|
273
|
-
put(array, offset, value) {
|
|
274
|
-
dv(array).setUint32(offset, value);
|
|
275
|
-
return offset + 4;
|
|
276
|
-
}
|
|
277
|
-
};
|
|
278
|
-
/**
|
|
279
|
-
* 8-bit signed integer
|
|
280
|
-
*/
|
|
281
|
-
exports.INT8 = {
|
|
282
|
-
len: 1,
|
|
283
|
-
get(array, offset) {
|
|
284
|
-
return dv(array).getInt8(offset);
|
|
285
|
-
},
|
|
286
|
-
put(array, offset, value) {
|
|
287
|
-
dv(array).setInt8(offset, value);
|
|
288
|
-
return offset + 1;
|
|
289
|
-
}
|
|
290
|
-
};
|
|
291
|
-
/**
|
|
292
|
-
* 16-bit signed integer, Big Endian byte order
|
|
293
|
-
*/
|
|
294
|
-
exports.INT16_BE = {
|
|
295
|
-
len: 2,
|
|
296
|
-
get(array, offset) {
|
|
297
|
-
return dv(array).getInt16(offset);
|
|
298
|
-
},
|
|
299
|
-
put(array, offset, value) {
|
|
300
|
-
dv(array).setInt16(offset, value);
|
|
301
|
-
return offset + 2;
|
|
302
|
-
}
|
|
303
|
-
};
|
|
304
|
-
/**
|
|
305
|
-
* 16-bit signed integer, Little Endian byte order
|
|
306
|
-
*/
|
|
307
|
-
exports.INT16_LE = {
|
|
308
|
-
len: 2,
|
|
309
|
-
get(array, offset) {
|
|
310
|
-
return dv(array).getInt16(offset, true);
|
|
311
|
-
},
|
|
312
|
-
put(array, offset, value) {
|
|
313
|
-
dv(array).setInt16(offset, value, true);
|
|
314
|
-
return offset + 2;
|
|
315
|
-
}
|
|
316
|
-
};
|
|
317
|
-
/**
|
|
318
|
-
* 24-bit signed integer, Little Endian byte order
|
|
319
|
-
*/
|
|
320
|
-
exports.INT24_LE = {
|
|
321
|
-
len: 3,
|
|
322
|
-
get(array, offset) {
|
|
323
|
-
const unsigned = exports.UINT24_LE.get(array, offset);
|
|
324
|
-
return unsigned > 0x7fffff ? unsigned - 0x1000000 : unsigned;
|
|
325
|
-
},
|
|
326
|
-
put(array, offset, value) {
|
|
327
|
-
const dataView = dv(array);
|
|
328
|
-
dataView.setUint8(offset, value & 0xff);
|
|
329
|
-
dataView.setUint16(offset + 1, value >> 8, true);
|
|
330
|
-
return offset + 3;
|
|
331
|
-
}
|
|
332
|
-
};
|
|
333
|
-
/**
|
|
334
|
-
* 24-bit signed integer, Big Endian byte order
|
|
335
|
-
*/
|
|
336
|
-
exports.INT24_BE = {
|
|
337
|
-
len: 3,
|
|
338
|
-
get(array, offset) {
|
|
339
|
-
const unsigned = exports.UINT24_BE.get(array, offset);
|
|
340
|
-
return unsigned > 0x7fffff ? unsigned - 0x1000000 : unsigned;
|
|
341
|
-
},
|
|
342
|
-
put(array, offset, value) {
|
|
343
|
-
const dataView = dv(array);
|
|
344
|
-
dataView.setUint16(offset, value >> 8);
|
|
345
|
-
dataView.setUint8(offset + 2, value & 0xff);
|
|
346
|
-
return offset + 3;
|
|
347
|
-
}
|
|
348
|
-
};
|
|
349
|
-
/**
|
|
350
|
-
* 32-bit signed integer, Big Endian byte order
|
|
351
|
-
*/
|
|
352
|
-
exports.INT32_BE = {
|
|
353
|
-
len: 4,
|
|
354
|
-
get(array, offset) {
|
|
355
|
-
return dv(array).getInt32(offset);
|
|
356
|
-
},
|
|
357
|
-
put(array, offset, value) {
|
|
358
|
-
dv(array).setInt32(offset, value);
|
|
359
|
-
return offset + 4;
|
|
360
|
-
}
|
|
361
|
-
};
|
|
362
|
-
/**
|
|
363
|
-
* 32-bit signed integer, Big Endian byte order
|
|
364
|
-
*/
|
|
365
|
-
exports.INT32_LE = {
|
|
366
|
-
len: 4,
|
|
367
|
-
get(array, offset) {
|
|
368
|
-
return dv(array).getInt32(offset, true);
|
|
369
|
-
},
|
|
370
|
-
put(array, offset, value) {
|
|
371
|
-
dv(array).setInt32(offset, value, true);
|
|
372
|
-
return offset + 4;
|
|
373
|
-
}
|
|
374
|
-
};
|
|
375
|
-
/**
|
|
376
|
-
* 64-bit unsigned integer, Little Endian byte order
|
|
377
|
-
*/
|
|
378
|
-
exports.UINT64_LE = {
|
|
379
|
-
len: 8,
|
|
380
|
-
get(array, offset) {
|
|
381
|
-
return dv(array).getBigUint64(offset, true);
|
|
382
|
-
},
|
|
383
|
-
put(array, offset, value) {
|
|
384
|
-
dv(array).setBigUint64(offset, value, true);
|
|
385
|
-
return offset + 8;
|
|
386
|
-
}
|
|
387
|
-
};
|
|
388
|
-
/**
|
|
389
|
-
* 64-bit signed integer, Little Endian byte order
|
|
390
|
-
*/
|
|
391
|
-
exports.INT64_LE = {
|
|
392
|
-
len: 8,
|
|
393
|
-
get(array, offset) {
|
|
394
|
-
return dv(array).getBigInt64(offset, true);
|
|
395
|
-
},
|
|
396
|
-
put(array, offset, value) {
|
|
397
|
-
dv(array).setBigInt64(offset, value, true);
|
|
398
|
-
return offset + 8;
|
|
399
|
-
}
|
|
400
|
-
};
|
|
401
|
-
/**
|
|
402
|
-
* 64-bit unsigned integer, Big Endian byte order
|
|
403
|
-
*/
|
|
404
|
-
exports.UINT64_BE = {
|
|
405
|
-
len: 8,
|
|
406
|
-
get(array, offset) {
|
|
407
|
-
return dv(array).getBigUint64(offset);
|
|
408
|
-
},
|
|
409
|
-
put(array, offset, value) {
|
|
410
|
-
dv(array).setBigUint64(offset, value);
|
|
411
|
-
return offset + 8;
|
|
412
|
-
}
|
|
413
|
-
};
|
|
414
|
-
/**
|
|
415
|
-
* 64-bit signed integer, Big Endian byte order
|
|
416
|
-
*/
|
|
417
|
-
exports.INT64_BE = {
|
|
418
|
-
len: 8,
|
|
419
|
-
get(array, offset) {
|
|
420
|
-
return dv(array).getBigInt64(offset);
|
|
421
|
-
},
|
|
422
|
-
put(array, offset, value) {
|
|
423
|
-
dv(array).setBigInt64(offset, value);
|
|
424
|
-
return offset + 8;
|
|
425
|
-
}
|
|
426
|
-
};
|
|
427
|
-
/**
|
|
428
|
-
* IEEE 754 16-bit (half precision) float, big endian
|
|
429
|
-
*/
|
|
430
|
-
exports.Float16_BE = {
|
|
431
|
-
len: 2,
|
|
432
|
-
get(dataView, offset) {
|
|
433
|
-
return ieee754$1.read(dataView, offset, false, 10, this.len);
|
|
434
|
-
},
|
|
435
|
-
put(dataView, offset, value) {
|
|
436
|
-
ieee754$1.write(dataView, value, offset, false, 10, this.len);
|
|
437
|
-
return offset + this.len;
|
|
438
|
-
}
|
|
439
|
-
};
|
|
440
|
-
/**
|
|
441
|
-
* IEEE 754 16-bit (half precision) float, little endian
|
|
442
|
-
*/
|
|
443
|
-
exports.Float16_LE = {
|
|
444
|
-
len: 2,
|
|
445
|
-
get(array, offset) {
|
|
446
|
-
return ieee754$1.read(array, offset, true, 10, this.len);
|
|
447
|
-
},
|
|
448
|
-
put(array, offset, value) {
|
|
449
|
-
ieee754$1.write(array, value, offset, true, 10, this.len);
|
|
450
|
-
return offset + this.len;
|
|
451
|
-
}
|
|
452
|
-
};
|
|
453
|
-
/**
|
|
454
|
-
* IEEE 754 32-bit (single precision) float, big endian
|
|
455
|
-
*/
|
|
456
|
-
exports.Float32_BE = {
|
|
457
|
-
len: 4,
|
|
458
|
-
get(array, offset) {
|
|
459
|
-
return dv(array).getFloat32(offset);
|
|
460
|
-
},
|
|
461
|
-
put(array, offset, value) {
|
|
462
|
-
dv(array).setFloat32(offset, value);
|
|
463
|
-
return offset + 4;
|
|
464
|
-
}
|
|
465
|
-
};
|
|
466
|
-
/**
|
|
467
|
-
* IEEE 754 32-bit (single precision) float, little endian
|
|
468
|
-
*/
|
|
469
|
-
exports.Float32_LE = {
|
|
470
|
-
len: 4,
|
|
471
|
-
get(array, offset) {
|
|
472
|
-
return dv(array).getFloat32(offset, true);
|
|
473
|
-
},
|
|
474
|
-
put(array, offset, value) {
|
|
475
|
-
dv(array).setFloat32(offset, value, true);
|
|
476
|
-
return offset + 4;
|
|
477
|
-
}
|
|
478
|
-
};
|
|
479
|
-
/**
|
|
480
|
-
* IEEE 754 64-bit (double precision) float, big endian
|
|
481
|
-
*/
|
|
482
|
-
exports.Float64_BE = {
|
|
483
|
-
len: 8,
|
|
484
|
-
get(array, offset) {
|
|
485
|
-
return dv(array).getFloat64(offset);
|
|
486
|
-
},
|
|
487
|
-
put(array, offset, value) {
|
|
488
|
-
dv(array).setFloat64(offset, value);
|
|
489
|
-
return offset + 8;
|
|
490
|
-
}
|
|
491
|
-
};
|
|
492
|
-
/**
|
|
493
|
-
* IEEE 754 64-bit (double precision) float, little endian
|
|
494
|
-
*/
|
|
495
|
-
exports.Float64_LE = {
|
|
496
|
-
len: 8,
|
|
497
|
-
get(array, offset) {
|
|
498
|
-
return dv(array).getFloat64(offset, true);
|
|
499
|
-
},
|
|
500
|
-
put(array, offset, value) {
|
|
501
|
-
dv(array).setFloat64(offset, value, true);
|
|
502
|
-
return offset + 8;
|
|
503
|
-
}
|
|
504
|
-
};
|
|
505
|
-
/**
|
|
506
|
-
* IEEE 754 80-bit (extended precision) float, big endian
|
|
507
|
-
*/
|
|
508
|
-
exports.Float80_BE = {
|
|
509
|
-
len: 10,
|
|
510
|
-
get(array, offset) {
|
|
511
|
-
return ieee754$1.read(array, offset, false, 63, this.len);
|
|
512
|
-
},
|
|
513
|
-
put(array, offset, value) {
|
|
514
|
-
ieee754$1.write(array, value, offset, false, 63, this.len);
|
|
515
|
-
return offset + this.len;
|
|
516
|
-
}
|
|
517
|
-
};
|
|
518
|
-
/**
|
|
519
|
-
* IEEE 754 80-bit (extended precision) float, little endian
|
|
520
|
-
*/
|
|
521
|
-
exports.Float80_LE = {
|
|
522
|
-
len: 10,
|
|
523
|
-
get(array, offset) {
|
|
524
|
-
return ieee754$1.read(array, offset, true, 63, this.len);
|
|
525
|
-
},
|
|
526
|
-
put(array, offset, value) {
|
|
527
|
-
ieee754$1.write(array, value, offset, true, 63, this.len);
|
|
528
|
-
return offset + this.len;
|
|
529
|
-
}
|
|
530
|
-
};
|
|
531
|
-
/**
|
|
532
|
-
* Ignore a given number of bytes
|
|
533
|
-
*/
|
|
534
|
-
class IgnoreType {
|
|
535
|
-
/**
|
|
536
|
-
* @param len number of bytes to ignore
|
|
537
|
-
*/
|
|
538
|
-
constructor(len) {
|
|
539
|
-
this.len = len;
|
|
540
|
-
}
|
|
541
|
-
// ToDo: don't read, but skip data
|
|
542
|
-
get(array, off) {}
|
|
543
|
-
}
|
|
544
|
-
exports.IgnoreType = IgnoreType;
|
|
545
|
-
class Uint8ArrayType {
|
|
546
|
-
constructor(len) {
|
|
547
|
-
this.len = len;
|
|
548
|
-
}
|
|
549
|
-
get(array, offset) {
|
|
550
|
-
return array.subarray(offset, offset + this.len);
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
exports.Uint8ArrayType = Uint8ArrayType;
|
|
554
|
-
class BufferType {
|
|
555
|
-
constructor(len) {
|
|
556
|
-
this.len = len;
|
|
557
|
-
}
|
|
558
|
-
get(uint8Array, off) {
|
|
559
|
-
return Buffer.from(uint8Array.subarray(off, off + this.len));
|
|
560
|
-
}
|
|
561
|
-
}
|
|
562
|
-
exports.BufferType = BufferType;
|
|
563
|
-
/**
|
|
564
|
-
* Consume a fixed number of bytes from the stream and return a string with a specified encoding.
|
|
565
|
-
*/
|
|
566
|
-
class StringType {
|
|
567
|
-
constructor(len, encoding) {
|
|
568
|
-
this.len = len;
|
|
569
|
-
this.encoding = encoding;
|
|
570
|
-
}
|
|
571
|
-
get(uint8Array, offset) {
|
|
572
|
-
return Buffer.from(uint8Array).toString(this.encoding, offset, offset + this.len);
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
exports.StringType = StringType;
|
|
576
|
-
/**
|
|
577
|
-
* ANSI Latin 1 String
|
|
578
|
-
* Using windows-1252 / ISO 8859-1 decoding
|
|
579
|
-
*/
|
|
580
|
-
class AnsiStringType {
|
|
581
|
-
constructor(len) {
|
|
582
|
-
this.len = len;
|
|
583
|
-
}
|
|
584
|
-
static decode(buffer, offset, until) {
|
|
585
|
-
let str = '';
|
|
586
|
-
for (let i = offset; i < until; ++i) {
|
|
587
|
-
str += AnsiStringType.codePointToString(AnsiStringType.singleByteDecoder(buffer[i]));
|
|
588
|
-
}
|
|
589
|
-
return str;
|
|
590
|
-
}
|
|
591
|
-
static inRange(a, min, max) {
|
|
592
|
-
return min <= a && a <= max;
|
|
593
|
-
}
|
|
594
|
-
static codePointToString(cp) {
|
|
595
|
-
if (cp <= 0xFFFF) {
|
|
596
|
-
return String.fromCharCode(cp);
|
|
597
|
-
} else {
|
|
598
|
-
cp -= 0x10000;
|
|
599
|
-
return String.fromCharCode((cp >> 10) + 0xD800, (cp & 0x3FF) + 0xDC00);
|
|
600
|
-
}
|
|
601
|
-
}
|
|
602
|
-
static singleByteDecoder(bite) {
|
|
603
|
-
if (AnsiStringType.inRange(bite, 0x00, 0x7F)) {
|
|
604
|
-
return bite;
|
|
605
|
-
}
|
|
606
|
-
const codePoint = AnsiStringType.windows1252[bite - 0x80];
|
|
607
|
-
if (codePoint === null) {
|
|
608
|
-
throw Error('invaliding encoding');
|
|
609
|
-
}
|
|
610
|
-
return codePoint;
|
|
611
|
-
}
|
|
612
|
-
get(buffer) {
|
|
613
|
-
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
614
|
-
return AnsiStringType.decode(buffer, offset, offset + this.len);
|
|
615
|
-
}
|
|
616
|
-
}
|
|
617
|
-
exports.AnsiStringType = AnsiStringType;
|
|
618
|
-
AnsiStringType.windows1252 = [8364, 129, 8218, 402, 8222, 8230, 8224, 8225, 710, 8240, 352, 8249, 338, 141, 381, 143, 144, 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732, 8482, 353, 8250, 339, 157, 382, 376, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255];
|
|
619
|
-
})(lib$1);
|
|
620
|
-
|
|
621
|
-
var core$1 = {};
|
|
622
|
-
|
|
623
|
-
var ReadStreamTokenizer$1 = {};
|
|
624
|
-
|
|
625
|
-
var AbstractTokenizer$1 = {};
|
|
626
|
-
|
|
627
|
-
var lib = {};
|
|
628
|
-
|
|
629
|
-
var EndOfFileStream = {};
|
|
630
|
-
|
|
631
|
-
(function (exports) {
|
|
632
|
-
|
|
633
|
-
Object.defineProperty(exports, "__esModule", {
|
|
634
|
-
value: true
|
|
635
|
-
});
|
|
636
|
-
exports.EndOfStreamError = exports.defaultMessages = void 0;
|
|
637
|
-
exports.defaultMessages = 'End-Of-Stream';
|
|
638
|
-
/**
|
|
639
|
-
* Thrown on read operation of the end of file or stream has been reached
|
|
640
|
-
*/
|
|
641
|
-
class EndOfStreamError extends Error {
|
|
642
|
-
constructor() {
|
|
643
|
-
super(exports.defaultMessages);
|
|
644
|
-
}
|
|
645
|
-
}
|
|
646
|
-
exports.EndOfStreamError = EndOfStreamError;
|
|
647
|
-
})(EndOfFileStream);
|
|
648
|
-
|
|
649
|
-
var StreamReader = {};
|
|
650
|
-
|
|
651
|
-
var Deferred$1 = {};
|
|
652
|
-
|
|
653
|
-
Object.defineProperty(Deferred$1, "__esModule", {
|
|
654
|
-
value: true
|
|
655
|
-
});
|
|
656
|
-
Deferred$1.Deferred = void 0;
|
|
657
|
-
class Deferred {
|
|
658
|
-
constructor() {
|
|
659
|
-
this.resolve = () => null;
|
|
660
|
-
this.reject = () => null;
|
|
661
|
-
this.promise = new Promise((resolve, reject) => {
|
|
662
|
-
this.reject = reject;
|
|
663
|
-
this.resolve = resolve;
|
|
664
|
-
});
|
|
665
|
-
}
|
|
666
|
-
}
|
|
667
|
-
Deferred$1.Deferred = Deferred;
|
|
668
|
-
|
|
669
|
-
(function (exports) {
|
|
670
|
-
|
|
671
|
-
Object.defineProperty(exports, "__esModule", {
|
|
672
|
-
value: true
|
|
673
|
-
});
|
|
674
|
-
exports.StreamReader = exports.EndOfStreamError = void 0;
|
|
675
|
-
const EndOfFileStream_1 = EndOfFileStream;
|
|
676
|
-
const Deferred_1 = Deferred$1;
|
|
677
|
-
var EndOfFileStream_2 = EndOfFileStream;
|
|
678
|
-
Object.defineProperty(exports, "EndOfStreamError", {
|
|
679
|
-
enumerable: true,
|
|
680
|
-
get: function () {
|
|
681
|
-
return EndOfFileStream_2.EndOfStreamError;
|
|
682
|
-
}
|
|
683
|
-
});
|
|
684
|
-
const maxStreamReadSize = 1 * 1024 * 1024; // Maximum request length on read-stream operation
|
|
685
|
-
class StreamReader {
|
|
686
|
-
constructor(s) {
|
|
687
|
-
this.s = s;
|
|
688
|
-
/**
|
|
689
|
-
* Deferred used for postponed read request (as not data is yet available to read)
|
|
690
|
-
*/
|
|
691
|
-
this.deferred = null;
|
|
692
|
-
this.endOfStream = false;
|
|
693
|
-
/**
|
|
694
|
-
* Store peeked data
|
|
695
|
-
* @type {Array}
|
|
696
|
-
*/
|
|
697
|
-
this.peekQueue = [];
|
|
698
|
-
if (!s.read || !s.once) {
|
|
699
|
-
throw new Error('Expected an instance of stream.Readable');
|
|
700
|
-
}
|
|
701
|
-
this.s.once('end', () => this.reject(new EndOfFileStream_1.EndOfStreamError()));
|
|
702
|
-
this.s.once('error', err => this.reject(err));
|
|
703
|
-
this.s.once('close', () => this.reject(new Error('Stream closed')));
|
|
704
|
-
}
|
|
705
|
-
/**
|
|
706
|
-
* Read ahead (peek) from stream. Subsequent read or peeks will return the same data
|
|
707
|
-
* @param uint8Array - Uint8Array (or Buffer) to store data read from stream in
|
|
708
|
-
* @param offset - Offset target
|
|
709
|
-
* @param length - Number of bytes to read
|
|
710
|
-
* @returns Number of bytes peeked
|
|
711
|
-
*/
|
|
712
|
-
async peek(uint8Array, offset, length) {
|
|
713
|
-
const bytesRead = await this.read(uint8Array, offset, length);
|
|
714
|
-
this.peekQueue.push(uint8Array.subarray(offset, offset + bytesRead)); // Put read data back to peek buffer
|
|
715
|
-
return bytesRead;
|
|
716
|
-
}
|
|
717
|
-
/**
|
|
718
|
-
* Read chunk from stream
|
|
719
|
-
* @param buffer - Target Uint8Array (or Buffer) to store data read from stream in
|
|
720
|
-
* @param offset - Offset target
|
|
721
|
-
* @param length - Number of bytes to read
|
|
722
|
-
* @returns Number of bytes read
|
|
723
|
-
*/
|
|
724
|
-
async read(buffer, offset, length) {
|
|
725
|
-
if (length === 0) {
|
|
726
|
-
return 0;
|
|
727
|
-
}
|
|
728
|
-
if (this.peekQueue.length === 0 && this.endOfStream) {
|
|
729
|
-
throw new EndOfFileStream_1.EndOfStreamError();
|
|
730
|
-
}
|
|
731
|
-
let remaining = length;
|
|
732
|
-
let bytesRead = 0;
|
|
733
|
-
// consume peeked data first
|
|
734
|
-
while (this.peekQueue.length > 0 && remaining > 0) {
|
|
735
|
-
const peekData = this.peekQueue.pop(); // Front of queue
|
|
736
|
-
if (!peekData) throw new Error('peekData should be defined');
|
|
737
|
-
const lenCopy = Math.min(peekData.length, remaining);
|
|
738
|
-
buffer.set(peekData.subarray(0, lenCopy), offset + bytesRead);
|
|
739
|
-
bytesRead += lenCopy;
|
|
740
|
-
remaining -= lenCopy;
|
|
741
|
-
if (lenCopy < peekData.length) {
|
|
742
|
-
// remainder back to queue
|
|
743
|
-
this.peekQueue.push(peekData.subarray(lenCopy));
|
|
744
|
-
}
|
|
745
|
-
}
|
|
746
|
-
// continue reading from stream if required
|
|
747
|
-
while (remaining > 0 && !this.endOfStream) {
|
|
748
|
-
const reqLen = Math.min(remaining, maxStreamReadSize);
|
|
749
|
-
const chunkLen = await this.readFromStream(buffer, offset + bytesRead, reqLen);
|
|
750
|
-
bytesRead += chunkLen;
|
|
751
|
-
if (chunkLen < reqLen) break;
|
|
752
|
-
remaining -= chunkLen;
|
|
753
|
-
}
|
|
754
|
-
return bytesRead;
|
|
755
|
-
}
|
|
756
|
-
/**
|
|
757
|
-
* Read chunk from stream
|
|
758
|
-
* @param buffer Target Uint8Array (or Buffer) to store data read from stream in
|
|
759
|
-
* @param offset Offset target
|
|
760
|
-
* @param length Number of bytes to read
|
|
761
|
-
* @returns Number of bytes read
|
|
762
|
-
*/
|
|
763
|
-
async readFromStream(buffer, offset, length) {
|
|
764
|
-
const readBuffer = this.s.read(length);
|
|
765
|
-
if (readBuffer) {
|
|
766
|
-
buffer.set(readBuffer, offset);
|
|
767
|
-
return readBuffer.length;
|
|
768
|
-
} else {
|
|
769
|
-
const request = {
|
|
770
|
-
buffer,
|
|
771
|
-
offset,
|
|
772
|
-
length,
|
|
773
|
-
deferred: new Deferred_1.Deferred()
|
|
774
|
-
};
|
|
775
|
-
this.deferred = request.deferred;
|
|
776
|
-
this.s.once('readable', () => {
|
|
777
|
-
this.readDeferred(request);
|
|
778
|
-
});
|
|
779
|
-
return request.deferred.promise;
|
|
780
|
-
}
|
|
781
|
-
}
|
|
782
|
-
/**
|
|
783
|
-
* Process deferred read request
|
|
784
|
-
* @param request Deferred read request
|
|
785
|
-
*/
|
|
786
|
-
readDeferred(request) {
|
|
787
|
-
const readBuffer = this.s.read(request.length);
|
|
788
|
-
if (readBuffer) {
|
|
789
|
-
request.buffer.set(readBuffer, request.offset);
|
|
790
|
-
request.deferred.resolve(readBuffer.length);
|
|
791
|
-
this.deferred = null;
|
|
792
|
-
} else {
|
|
793
|
-
this.s.once('readable', () => {
|
|
794
|
-
this.readDeferred(request);
|
|
795
|
-
});
|
|
796
|
-
}
|
|
797
|
-
}
|
|
798
|
-
reject(err) {
|
|
799
|
-
this.endOfStream = true;
|
|
800
|
-
if (this.deferred) {
|
|
801
|
-
this.deferred.reject(err);
|
|
802
|
-
this.deferred = null;
|
|
803
|
-
}
|
|
804
|
-
}
|
|
805
|
-
}
|
|
806
|
-
exports.StreamReader = StreamReader;
|
|
807
|
-
})(StreamReader);
|
|
808
|
-
|
|
809
|
-
(function (exports) {
|
|
810
|
-
|
|
811
|
-
Object.defineProperty(exports, "__esModule", {
|
|
812
|
-
value: true
|
|
813
|
-
});
|
|
814
|
-
exports.StreamReader = exports.EndOfStreamError = void 0;
|
|
815
|
-
var EndOfFileStream_1 = EndOfFileStream;
|
|
816
|
-
Object.defineProperty(exports, "EndOfStreamError", {
|
|
817
|
-
enumerable: true,
|
|
818
|
-
get: function () {
|
|
819
|
-
return EndOfFileStream_1.EndOfStreamError;
|
|
820
|
-
}
|
|
821
|
-
});
|
|
822
|
-
var StreamReader_1 = StreamReader;
|
|
823
|
-
Object.defineProperty(exports, "StreamReader", {
|
|
824
|
-
enumerable: true,
|
|
825
|
-
get: function () {
|
|
826
|
-
return StreamReader_1.StreamReader;
|
|
827
|
-
}
|
|
828
|
-
});
|
|
829
|
-
})(lib);
|
|
830
|
-
|
|
831
|
-
Object.defineProperty(AbstractTokenizer$1, "__esModule", {
|
|
832
|
-
value: true
|
|
833
|
-
});
|
|
834
|
-
AbstractTokenizer$1.AbstractTokenizer = void 0;
|
|
835
|
-
const peek_readable_1$2 = lib;
|
|
836
|
-
/**
|
|
837
|
-
* Core tokenizer
|
|
838
|
-
*/
|
|
839
|
-
class AbstractTokenizer {
|
|
840
|
-
constructor(fileInfo) {
|
|
841
|
-
/**
|
|
842
|
-
* Tokenizer-stream position
|
|
843
|
-
*/
|
|
844
|
-
this.position = 0;
|
|
845
|
-
this.numBuffer = new Uint8Array(8);
|
|
846
|
-
this.fileInfo = fileInfo ? fileInfo : {};
|
|
847
|
-
}
|
|
848
|
-
/**
|
|
849
|
-
* Read a token from the tokenizer-stream
|
|
850
|
-
* @param token - The token to read
|
|
851
|
-
* @param position - If provided, the desired position in the tokenizer-stream
|
|
852
|
-
* @returns Promise with token data
|
|
853
|
-
*/
|
|
854
|
-
async readToken(token) {
|
|
855
|
-
let position = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.position;
|
|
856
|
-
const uint8Array = Buffer.alloc(token.len);
|
|
857
|
-
const len = await this.readBuffer(uint8Array, {
|
|
858
|
-
position
|
|
859
|
-
});
|
|
860
|
-
if (len < token.len) throw new peek_readable_1$2.EndOfStreamError();
|
|
861
|
-
return token.get(uint8Array, 0);
|
|
862
|
-
}
|
|
863
|
-
/**
|
|
864
|
-
* Peek a token from the tokenizer-stream.
|
|
865
|
-
* @param token - Token to peek from the tokenizer-stream.
|
|
866
|
-
* @param position - Offset where to begin reading within the file. If position is null, data will be read from the current file position.
|
|
867
|
-
* @returns Promise with token data
|
|
868
|
-
*/
|
|
869
|
-
async peekToken(token) {
|
|
870
|
-
let position = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.position;
|
|
871
|
-
const uint8Array = Buffer.alloc(token.len);
|
|
872
|
-
const len = await this.peekBuffer(uint8Array, {
|
|
873
|
-
position
|
|
874
|
-
});
|
|
875
|
-
if (len < token.len) throw new peek_readable_1$2.EndOfStreamError();
|
|
876
|
-
return token.get(uint8Array, 0);
|
|
877
|
-
}
|
|
878
|
-
/**
|
|
879
|
-
* Read a numeric token from the stream
|
|
880
|
-
* @param token - Numeric token
|
|
881
|
-
* @returns Promise with number
|
|
882
|
-
*/
|
|
883
|
-
async readNumber(token) {
|
|
884
|
-
const len = await this.readBuffer(this.numBuffer, {
|
|
885
|
-
length: token.len
|
|
886
|
-
});
|
|
887
|
-
if (len < token.len) throw new peek_readable_1$2.EndOfStreamError();
|
|
888
|
-
return token.get(this.numBuffer, 0);
|
|
889
|
-
}
|
|
890
|
-
/**
|
|
891
|
-
* Read a numeric token from the stream
|
|
892
|
-
* @param token - Numeric token
|
|
893
|
-
* @returns Promise with number
|
|
894
|
-
*/
|
|
895
|
-
async peekNumber(token) {
|
|
896
|
-
const len = await this.peekBuffer(this.numBuffer, {
|
|
897
|
-
length: token.len
|
|
898
|
-
});
|
|
899
|
-
if (len < token.len) throw new peek_readable_1$2.EndOfStreamError();
|
|
900
|
-
return token.get(this.numBuffer, 0);
|
|
901
|
-
}
|
|
902
|
-
/**
|
|
903
|
-
* Ignore number of bytes, advances the pointer in under tokenizer-stream.
|
|
904
|
-
* @param length - Number of bytes to ignore
|
|
905
|
-
* @return resolves the number of bytes ignored, equals length if this available, otherwise the number of bytes available
|
|
906
|
-
*/
|
|
907
|
-
async ignore(length) {
|
|
908
|
-
if (this.fileInfo.size !== undefined) {
|
|
909
|
-
const bytesLeft = this.fileInfo.size - this.position;
|
|
910
|
-
if (length > bytesLeft) {
|
|
911
|
-
this.position += bytesLeft;
|
|
912
|
-
return bytesLeft;
|
|
913
|
-
}
|
|
914
|
-
}
|
|
915
|
-
this.position += length;
|
|
916
|
-
return length;
|
|
917
|
-
}
|
|
918
|
-
async close() {
|
|
919
|
-
// empty
|
|
920
|
-
}
|
|
921
|
-
normalizeOptions(uint8Array, options) {
|
|
922
|
-
if (options && options.position !== undefined && options.position < this.position) {
|
|
923
|
-
throw new Error('`options.position` must be equal or greater than `tokenizer.position`');
|
|
924
|
-
}
|
|
925
|
-
if (options) {
|
|
926
|
-
return {
|
|
927
|
-
mayBeLess: options.mayBeLess === true,
|
|
928
|
-
offset: options.offset ? options.offset : 0,
|
|
929
|
-
length: options.length ? options.length : uint8Array.length - (options.offset ? options.offset : 0),
|
|
930
|
-
position: options.position ? options.position : this.position
|
|
931
|
-
};
|
|
932
|
-
}
|
|
933
|
-
return {
|
|
934
|
-
mayBeLess: false,
|
|
935
|
-
offset: 0,
|
|
936
|
-
length: uint8Array.length,
|
|
937
|
-
position: this.position
|
|
938
|
-
};
|
|
939
|
-
}
|
|
940
|
-
}
|
|
941
|
-
AbstractTokenizer$1.AbstractTokenizer = AbstractTokenizer;
|
|
942
|
-
|
|
943
|
-
Object.defineProperty(ReadStreamTokenizer$1, "__esModule", {
|
|
944
|
-
value: true
|
|
945
|
-
});
|
|
946
|
-
ReadStreamTokenizer$1.ReadStreamTokenizer = void 0;
|
|
947
|
-
const AbstractTokenizer_1$1 = AbstractTokenizer$1;
|
|
948
|
-
const peek_readable_1$1 = lib;
|
|
949
|
-
const maxBufferSize = 256000;
|
|
950
|
-
class ReadStreamTokenizer extends AbstractTokenizer_1$1.AbstractTokenizer {
|
|
951
|
-
constructor(stream, fileInfo) {
|
|
952
|
-
super(fileInfo);
|
|
953
|
-
this.streamReader = new peek_readable_1$1.StreamReader(stream);
|
|
954
|
-
}
|
|
955
|
-
/**
|
|
956
|
-
* Get file information, an HTTP-client may implement this doing a HEAD request
|
|
957
|
-
* @return Promise with file information
|
|
958
|
-
*/
|
|
959
|
-
async getFileInfo() {
|
|
960
|
-
return this.fileInfo;
|
|
961
|
-
}
|
|
962
|
-
/**
|
|
963
|
-
* Read buffer from tokenizer
|
|
964
|
-
* @param uint8Array - Target Uint8Array to fill with data read from the tokenizer-stream
|
|
965
|
-
* @param options - Read behaviour options
|
|
966
|
-
* @returns Promise with number of bytes read
|
|
967
|
-
*/
|
|
968
|
-
async readBuffer(uint8Array, options) {
|
|
969
|
-
const normOptions = this.normalizeOptions(uint8Array, options);
|
|
970
|
-
const skipBytes = normOptions.position - this.position;
|
|
971
|
-
if (skipBytes > 0) {
|
|
972
|
-
await this.ignore(skipBytes);
|
|
973
|
-
return this.readBuffer(uint8Array, options);
|
|
974
|
-
} else if (skipBytes < 0) {
|
|
975
|
-
throw new Error('`options.position` must be equal or greater than `tokenizer.position`');
|
|
976
|
-
}
|
|
977
|
-
if (normOptions.length === 0) {
|
|
978
|
-
return 0;
|
|
979
|
-
}
|
|
980
|
-
const bytesRead = await this.streamReader.read(uint8Array, normOptions.offset, normOptions.length);
|
|
981
|
-
this.position += bytesRead;
|
|
982
|
-
if ((!options || !options.mayBeLess) && bytesRead < normOptions.length) {
|
|
983
|
-
throw new peek_readable_1$1.EndOfStreamError();
|
|
984
|
-
}
|
|
985
|
-
return bytesRead;
|
|
986
|
-
}
|
|
987
|
-
/**
|
|
988
|
-
* Peek (read ahead) buffer from tokenizer
|
|
989
|
-
* @param uint8Array - Uint8Array (or Buffer) to write data to
|
|
990
|
-
* @param options - Read behaviour options
|
|
991
|
-
* @returns Promise with number of bytes peeked
|
|
992
|
-
*/
|
|
993
|
-
async peekBuffer(uint8Array, options) {
|
|
994
|
-
const normOptions = this.normalizeOptions(uint8Array, options);
|
|
995
|
-
let bytesRead = 0;
|
|
996
|
-
if (normOptions.position) {
|
|
997
|
-
const skipBytes = normOptions.position - this.position;
|
|
998
|
-
if (skipBytes > 0) {
|
|
999
|
-
const skipBuffer = new Uint8Array(normOptions.length + skipBytes);
|
|
1000
|
-
bytesRead = await this.peekBuffer(skipBuffer, {
|
|
1001
|
-
mayBeLess: normOptions.mayBeLess
|
|
1002
|
-
});
|
|
1003
|
-
uint8Array.set(skipBuffer.subarray(skipBytes), normOptions.offset);
|
|
1004
|
-
return bytesRead - skipBytes;
|
|
1005
|
-
} else if (skipBytes < 0) {
|
|
1006
|
-
throw new Error('Cannot peek from a negative offset in a stream');
|
|
1007
|
-
}
|
|
1008
|
-
}
|
|
1009
|
-
if (normOptions.length > 0) {
|
|
1010
|
-
try {
|
|
1011
|
-
bytesRead = await this.streamReader.peek(uint8Array, normOptions.offset, normOptions.length);
|
|
1012
|
-
} catch (err) {
|
|
1013
|
-
if (options && options.mayBeLess && err instanceof peek_readable_1$1.EndOfStreamError) {
|
|
1014
|
-
return 0;
|
|
1015
|
-
}
|
|
1016
|
-
throw err;
|
|
1017
|
-
}
|
|
1018
|
-
if (!normOptions.mayBeLess && bytesRead < normOptions.length) {
|
|
1019
|
-
throw new peek_readable_1$1.EndOfStreamError();
|
|
1020
|
-
}
|
|
1021
|
-
}
|
|
1022
|
-
return bytesRead;
|
|
1023
|
-
}
|
|
1024
|
-
async ignore(length) {
|
|
1025
|
-
// debug(`ignore ${this.position}...${this.position + length - 1}`);
|
|
1026
|
-
const bufSize = Math.min(maxBufferSize, length);
|
|
1027
|
-
const buf = new Uint8Array(bufSize);
|
|
1028
|
-
let totBytesRead = 0;
|
|
1029
|
-
while (totBytesRead < length) {
|
|
1030
|
-
const remaining = length - totBytesRead;
|
|
1031
|
-
const bytesRead = await this.readBuffer(buf, {
|
|
1032
|
-
length: Math.min(bufSize, remaining)
|
|
1033
|
-
});
|
|
1034
|
-
if (bytesRead < 0) {
|
|
1035
|
-
return bytesRead;
|
|
1036
|
-
}
|
|
1037
|
-
totBytesRead += bytesRead;
|
|
1038
|
-
}
|
|
1039
|
-
return totBytesRead;
|
|
1040
|
-
}
|
|
1041
|
-
}
|
|
1042
|
-
ReadStreamTokenizer$1.ReadStreamTokenizer = ReadStreamTokenizer;
|
|
1043
|
-
|
|
1044
|
-
var BufferTokenizer$1 = {};
|
|
1045
|
-
|
|
1046
|
-
Object.defineProperty(BufferTokenizer$1, "__esModule", {
|
|
1047
|
-
value: true
|
|
1048
|
-
});
|
|
1049
|
-
BufferTokenizer$1.BufferTokenizer = void 0;
|
|
1050
|
-
const peek_readable_1 = lib;
|
|
1051
|
-
const AbstractTokenizer_1 = AbstractTokenizer$1;
|
|
1052
|
-
class BufferTokenizer extends AbstractTokenizer_1.AbstractTokenizer {
|
|
1053
|
-
/**
|
|
1054
|
-
* Construct BufferTokenizer
|
|
1055
|
-
* @param uint8Array - Uint8Array to tokenize
|
|
1056
|
-
* @param fileInfo - Pass additional file information to the tokenizer
|
|
1057
|
-
*/
|
|
1058
|
-
constructor(uint8Array, fileInfo) {
|
|
1059
|
-
super(fileInfo);
|
|
1060
|
-
this.uint8Array = uint8Array;
|
|
1061
|
-
this.fileInfo.size = this.fileInfo.size ? this.fileInfo.size : uint8Array.length;
|
|
1062
|
-
}
|
|
1063
|
-
/**
|
|
1064
|
-
* Read buffer from tokenizer
|
|
1065
|
-
* @param uint8Array - Uint8Array to tokenize
|
|
1066
|
-
* @param options - Read behaviour options
|
|
1067
|
-
* @returns {Promise<number>}
|
|
1068
|
-
*/
|
|
1069
|
-
async readBuffer(uint8Array, options) {
|
|
1070
|
-
if (options && options.position) {
|
|
1071
|
-
if (options.position < this.position) {
|
|
1072
|
-
throw new Error('`options.position` must be equal or greater than `tokenizer.position`');
|
|
1073
|
-
}
|
|
1074
|
-
this.position = options.position;
|
|
1075
|
-
}
|
|
1076
|
-
const bytesRead = await this.peekBuffer(uint8Array, options);
|
|
1077
|
-
this.position += bytesRead;
|
|
1078
|
-
return bytesRead;
|
|
1079
|
-
}
|
|
1080
|
-
/**
|
|
1081
|
-
* Peek (read ahead) buffer from tokenizer
|
|
1082
|
-
* @param uint8Array
|
|
1083
|
-
* @param options - Read behaviour options
|
|
1084
|
-
* @returns {Promise<number>}
|
|
1085
|
-
*/
|
|
1086
|
-
async peekBuffer(uint8Array, options) {
|
|
1087
|
-
const normOptions = this.normalizeOptions(uint8Array, options);
|
|
1088
|
-
const bytes2read = Math.min(this.uint8Array.length - normOptions.position, normOptions.length);
|
|
1089
|
-
if (!normOptions.mayBeLess && bytes2read < normOptions.length) {
|
|
1090
|
-
throw new peek_readable_1.EndOfStreamError();
|
|
1091
|
-
} else {
|
|
1092
|
-
uint8Array.set(this.uint8Array.subarray(normOptions.position, normOptions.position + bytes2read), normOptions.offset);
|
|
1093
|
-
return bytes2read;
|
|
1094
|
-
}
|
|
1095
|
-
}
|
|
1096
|
-
async close() {
|
|
1097
|
-
// empty
|
|
1098
|
-
}
|
|
1099
|
-
}
|
|
1100
|
-
BufferTokenizer$1.BufferTokenizer = BufferTokenizer;
|
|
1101
|
-
|
|
1102
|
-
(function (exports) {
|
|
1103
|
-
|
|
1104
|
-
Object.defineProperty(exports, "__esModule", {
|
|
1105
|
-
value: true
|
|
1106
|
-
});
|
|
1107
|
-
exports.fromBuffer = exports.fromStream = exports.EndOfStreamError = void 0;
|
|
1108
|
-
const ReadStreamTokenizer_1 = ReadStreamTokenizer$1;
|
|
1109
|
-
const BufferTokenizer_1 = BufferTokenizer$1;
|
|
1110
|
-
var peek_readable_1 = lib;
|
|
1111
|
-
Object.defineProperty(exports, "EndOfStreamError", {
|
|
1112
|
-
enumerable: true,
|
|
1113
|
-
get: function () {
|
|
1114
|
-
return peek_readable_1.EndOfStreamError;
|
|
1115
|
-
}
|
|
1116
|
-
});
|
|
1117
|
-
/**
|
|
1118
|
-
* Construct ReadStreamTokenizer from given Stream.
|
|
1119
|
-
* Will set fileSize, if provided given Stream has set the .path property/
|
|
1120
|
-
* @param stream - Read from Node.js Stream.Readable
|
|
1121
|
-
* @param fileInfo - Pass the file information, like size and MIME-type of the corresponding stream.
|
|
1122
|
-
* @returns ReadStreamTokenizer
|
|
1123
|
-
*/
|
|
1124
|
-
function fromStream(stream, fileInfo) {
|
|
1125
|
-
fileInfo = fileInfo ? fileInfo : {};
|
|
1126
|
-
return new ReadStreamTokenizer_1.ReadStreamTokenizer(stream, fileInfo);
|
|
1127
|
-
}
|
|
1128
|
-
exports.fromStream = fromStream;
|
|
1129
|
-
/**
|
|
1130
|
-
* Construct ReadStreamTokenizer from given Buffer.
|
|
1131
|
-
* @param uint8Array - Uint8Array to tokenize
|
|
1132
|
-
* @param fileInfo - Pass additional file information to the tokenizer
|
|
1133
|
-
* @returns BufferTokenizer
|
|
1134
|
-
*/
|
|
1135
|
-
function fromBuffer(uint8Array, fileInfo) {
|
|
1136
|
-
return new BufferTokenizer_1.BufferTokenizer(uint8Array, fileInfo);
|
|
1137
|
-
}
|
|
1138
|
-
exports.fromBuffer = fromBuffer;
|
|
1139
|
-
})(core$1);
|
|
1140
|
-
|
|
1141
|
-
var util = {};
|
|
1142
|
-
|
|
1143
|
-
util.stringToBytes = string => [...string].map(character => character.charCodeAt(0));
|
|
1144
|
-
|
|
1145
|
-
/**
|
|
1146
|
-
Checks whether the TAR checksum is valid.
|
|
1147
|
-
|
|
1148
|
-
@param {Buffer} buffer - The TAR header `[offset ... offset + 512]`.
|
|
1149
|
-
@param {number} offset - TAR header offset.
|
|
1150
|
-
@returns {boolean} `true` if the TAR checksum is valid, otherwise `false`.
|
|
1151
|
-
*/
|
|
1152
|
-
util.tarHeaderChecksumMatches = function (buffer) {
|
|
1153
|
-
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
1154
|
-
const readSum = parseInt(buffer.toString('utf8', 148, 154).replace(/\0.*$/, '').trim(), 8); // Read sum in header
|
|
1155
|
-
if (isNaN(readSum)) {
|
|
1156
|
-
return false;
|
|
1157
|
-
}
|
|
1158
|
-
let sum = 8 * 0x20; // Initialize signed bit sum
|
|
1159
|
-
|
|
1160
|
-
for (let i = offset; i < offset + 148; i++) {
|
|
1161
|
-
sum += buffer[i];
|
|
1162
|
-
}
|
|
1163
|
-
for (let i = offset + 156; i < offset + 512; i++) {
|
|
1164
|
-
sum += buffer[i];
|
|
1165
|
-
}
|
|
1166
|
-
return readSum === sum;
|
|
1167
|
-
};
|
|
1168
|
-
|
|
1169
|
-
/**
|
|
1170
|
-
ID3 UINT32 sync-safe tokenizer token.
|
|
1171
|
-
28 bits (representing up to 256MB) integer, the msb is 0 to avoid "false syncsignals".
|
|
1172
|
-
*/
|
|
1173
|
-
util.uint32SyncSafeToken = {
|
|
1174
|
-
get: (buffer, offset) => {
|
|
1175
|
-
return buffer[offset + 3] & 0x7F | buffer[offset + 2] << 7 | buffer[offset + 1] << 14 | buffer[offset] << 21;
|
|
1176
|
-
},
|
|
1177
|
-
len: 4
|
|
1178
|
-
};
|
|
1179
|
-
|
|
1180
|
-
var supported$1 = {
|
|
1181
|
-
extensions: ['jpg', 'png', 'apng', 'gif', 'webp', 'flif', 'xcf', 'cr2', 'cr3', 'orf', 'arw', 'dng', 'nef', 'rw2', 'raf', 'tif', 'bmp', 'icns', 'jxr', 'psd', 'indd', 'zip', 'tar', 'rar', 'gz', 'bz2', '7z', 'dmg', 'mp4', 'mid', 'mkv', 'webm', 'mov', 'avi', 'mpg', 'mp2', 'mp3', 'm4a', 'oga', 'ogg', 'ogv', 'opus', 'flac', 'wav', 'spx', 'amr', 'pdf', 'epub', 'exe', 'swf', 'rtf', 'wasm', 'woff', 'woff2', 'eot', 'ttf', 'otf', 'ico', 'flv', 'ps', 'xz', 'sqlite', 'nes', 'crx', 'xpi', 'cab', 'deb', 'ar', 'rpm', 'Z', 'lz', 'cfb', 'mxf', 'mts', 'blend', 'bpg', 'docx', 'pptx', 'xlsx', '3gp', '3g2', 'jp2', 'jpm', 'jpx', 'mj2', 'aif', 'qcp', 'odt', 'ods', 'odp', 'xml', 'mobi', 'heic', 'cur', 'ktx', 'ape', 'wv', 'dcm', 'ics', 'glb', 'pcap', 'dsf', 'lnk', 'alias', 'voc', 'ac3', 'm4v', 'm4p', 'm4b', 'f4v', 'f4p', 'f4b', 'f4a', 'mie', 'asf', 'ogm', 'ogx', 'mpc', 'arrow', 'shp', 'aac', 'mp1', 'it', 's3m', 'xm', 'ai', 'skp', 'avif', 'eps', 'lzh', 'pgp', 'asar', 'stl', 'chm', '3mf', 'zst', 'jxl', 'vcf'],
|
|
1182
|
-
mimeTypes: ['image/jpeg', 'image/png', 'image/gif', 'image/webp', 'image/flif', 'image/x-xcf', 'image/x-canon-cr2', 'image/x-canon-cr3', 'image/tiff', 'image/bmp', 'image/vnd.ms-photo', 'image/vnd.adobe.photoshop', 'application/x-indesign', 'application/epub+zip', 'application/x-xpinstall', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.presentation', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip', 'application/x-tar', 'application/x-rar-compressed', 'application/gzip', 'application/x-bzip2', 'application/x-7z-compressed', 'application/x-apple-diskimage', 'application/x-apache-arrow', 'video/mp4', 'audio/midi', 'video/x-matroska', 'video/webm', 'video/quicktime', 'video/vnd.avi', 'audio/vnd.wave', 'audio/qcelp', 'audio/x-ms-asf', 'video/x-ms-asf', 'application/vnd.ms-asf', 'video/mpeg', 'video/3gpp', 'audio/mpeg', 'audio/mp4',
|
|
1183
|
-
// RFC 4337
|
|
1184
|
-
'audio/opus', 'video/ogg', 'audio/ogg', 'application/ogg', 'audio/x-flac', 'audio/ape', 'audio/wavpack', 'audio/amr', 'application/pdf', 'application/x-msdownload', 'application/x-shockwave-flash', 'application/rtf', 'application/wasm', 'font/woff', 'font/woff2', 'application/vnd.ms-fontobject', 'font/ttf', 'font/otf', 'image/x-icon', 'video/x-flv', 'application/postscript', 'application/eps', 'application/x-xz', 'application/x-sqlite3', 'application/x-nintendo-nes-rom', 'application/x-google-chrome-extension', 'application/vnd.ms-cab-compressed', 'application/x-deb', 'application/x-unix-archive', 'application/x-rpm', 'application/x-compress', 'application/x-lzip', 'application/x-cfb', 'application/x-mie', 'application/mxf', 'video/mp2t', 'application/x-blender', 'image/bpg', 'image/jp2', 'image/jpx', 'image/jpm', 'image/mj2', 'audio/aiff', 'application/xml', 'application/x-mobipocket-ebook', 'image/heif', 'image/heif-sequence', 'image/heic', 'image/heic-sequence', 'image/icns', 'image/ktx', 'application/dicom', 'audio/x-musepack', 'text/calendar', 'text/vcard', 'model/gltf-binary', 'application/vnd.tcpdump.pcap', 'audio/x-dsf',
|
|
1185
|
-
// Non-standard
|
|
1186
|
-
'application/x.ms.shortcut',
|
|
1187
|
-
// Invented by us
|
|
1188
|
-
'application/x.apple.alias',
|
|
1189
|
-
// Invented by us
|
|
1190
|
-
'audio/x-voc', 'audio/vnd.dolby.dd-raw', 'audio/x-m4a', 'image/apng', 'image/x-olympus-orf', 'image/x-sony-arw', 'image/x-adobe-dng', 'image/x-nikon-nef', 'image/x-panasonic-rw2', 'image/x-fujifilm-raf', 'video/x-m4v', 'video/3gpp2', 'application/x-esri-shape', 'audio/aac', 'audio/x-it', 'audio/x-s3m', 'audio/x-xm', 'video/MP1S', 'video/MP2P', 'application/vnd.sketchup.skp', 'image/avif', 'application/x-lzh-compressed', 'application/pgp-encrypted', 'application/x-asar', 'model/stl', 'application/vnd.ms-htmlhelp', 'model/3mf', 'image/jxl', 'application/zstd']
|
|
1191
|
-
};
|
|
1192
|
-
|
|
1193
|
-
const Token = lib$1;
|
|
1194
|
-
const strtok3 = core$1;
|
|
1195
|
-
const {
|
|
1196
|
-
stringToBytes,
|
|
1197
|
-
tarHeaderChecksumMatches,
|
|
1198
|
-
uint32SyncSafeToken
|
|
1199
|
-
} = util;
|
|
1200
|
-
const supported = supported$1;
|
|
1201
|
-
const minimumBytes = 4100; // A fair amount of file-types are detectable within this range
|
|
1202
|
-
|
|
1203
|
-
async function fromStream(stream) {
|
|
1204
|
-
const tokenizer = await strtok3.fromStream(stream);
|
|
1205
|
-
try {
|
|
1206
|
-
return await fromTokenizer(tokenizer);
|
|
1207
|
-
} finally {
|
|
1208
|
-
await tokenizer.close();
|
|
1209
|
-
}
|
|
1210
|
-
}
|
|
1211
|
-
async function fromBuffer(input) {
|
|
1212
|
-
if (!(input instanceof Uint8Array || input instanceof ArrayBuffer || Buffer.isBuffer(input))) {
|
|
1213
|
-
throw new TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`Buffer\` or \`ArrayBuffer\`, got \`${typeof input}\``);
|
|
1214
|
-
}
|
|
1215
|
-
const buffer = input instanceof Buffer ? input : Buffer.from(input);
|
|
1216
|
-
if (!(buffer && buffer.length > 1)) {
|
|
1217
|
-
return;
|
|
1218
|
-
}
|
|
1219
|
-
const tokenizer = strtok3.fromBuffer(buffer);
|
|
1220
|
-
return fromTokenizer(tokenizer);
|
|
1221
|
-
}
|
|
1222
|
-
function _check(buffer, headers, options) {
|
|
1223
|
-
options = {
|
|
1224
|
-
offset: 0,
|
|
1225
|
-
...options
|
|
1226
|
-
};
|
|
1227
|
-
for (const [index, header] of headers.entries()) {
|
|
1228
|
-
// If a bitmask is set
|
|
1229
|
-
if (options.mask) {
|
|
1230
|
-
// If header doesn't equal `buf` with bits masked off
|
|
1231
|
-
if (header !== (options.mask[index] & buffer[index + options.offset])) {
|
|
1232
|
-
return false;
|
|
1233
|
-
}
|
|
1234
|
-
} else if (header !== buffer[index + options.offset]) {
|
|
1235
|
-
return false;
|
|
1236
|
-
}
|
|
1237
|
-
}
|
|
1238
|
-
return true;
|
|
1239
|
-
}
|
|
1240
|
-
async function fromTokenizer(tokenizer) {
|
|
1241
|
-
try {
|
|
1242
|
-
return _fromTokenizer(tokenizer);
|
|
1243
|
-
} catch (error) {
|
|
1244
|
-
if (!(error instanceof strtok3.EndOfStreamError)) {
|
|
1245
|
-
throw error;
|
|
1246
|
-
}
|
|
1247
|
-
}
|
|
1248
|
-
}
|
|
1249
|
-
async function _fromTokenizer(tokenizer) {
|
|
1250
|
-
let buffer = Buffer.alloc(minimumBytes);
|
|
1251
|
-
const bytesRead = 12;
|
|
1252
|
-
const check = (header, options) => _check(buffer, header, options);
|
|
1253
|
-
const checkString = (header, options) => check(stringToBytes(header), options);
|
|
1254
|
-
|
|
1255
|
-
// Keep reading until EOF if the file size is unknown.
|
|
1256
|
-
if (!tokenizer.fileInfo.size) {
|
|
1257
|
-
tokenizer.fileInfo.size = Number.MAX_SAFE_INTEGER;
|
|
1258
|
-
}
|
|
1259
|
-
await tokenizer.peekBuffer(buffer, {
|
|
1260
|
-
length: bytesRead,
|
|
1261
|
-
mayBeLess: true
|
|
1262
|
-
});
|
|
1263
|
-
|
|
1264
|
-
// -- 2-byte signatures --
|
|
1265
|
-
|
|
1266
|
-
if (check([0x42, 0x4D])) {
|
|
1267
|
-
return {
|
|
1268
|
-
ext: 'bmp',
|
|
1269
|
-
mime: 'image/bmp'
|
|
1270
|
-
};
|
|
1271
|
-
}
|
|
1272
|
-
if (check([0x0B, 0x77])) {
|
|
1273
|
-
return {
|
|
1274
|
-
ext: 'ac3',
|
|
1275
|
-
mime: 'audio/vnd.dolby.dd-raw'
|
|
1276
|
-
};
|
|
1277
|
-
}
|
|
1278
|
-
if (check([0x78, 0x01])) {
|
|
1279
|
-
return {
|
|
1280
|
-
ext: 'dmg',
|
|
1281
|
-
mime: 'application/x-apple-diskimage'
|
|
1282
|
-
};
|
|
1283
|
-
}
|
|
1284
|
-
if (check([0x4D, 0x5A])) {
|
|
1285
|
-
return {
|
|
1286
|
-
ext: 'exe',
|
|
1287
|
-
mime: 'application/x-msdownload'
|
|
1288
|
-
};
|
|
1289
|
-
}
|
|
1290
|
-
if (check([0x25, 0x21])) {
|
|
1291
|
-
await tokenizer.peekBuffer(buffer, {
|
|
1292
|
-
length: 24,
|
|
1293
|
-
mayBeLess: true
|
|
1294
|
-
});
|
|
1295
|
-
if (checkString('PS-Adobe-', {
|
|
1296
|
-
offset: 2
|
|
1297
|
-
}) && checkString(' EPSF-', {
|
|
1298
|
-
offset: 14
|
|
1299
|
-
})) {
|
|
1300
|
-
return {
|
|
1301
|
-
ext: 'eps',
|
|
1302
|
-
mime: 'application/eps'
|
|
1303
|
-
};
|
|
1304
|
-
}
|
|
1305
|
-
return {
|
|
1306
|
-
ext: 'ps',
|
|
1307
|
-
mime: 'application/postscript'
|
|
1308
|
-
};
|
|
1309
|
-
}
|
|
1310
|
-
if (check([0x1F, 0xA0]) || check([0x1F, 0x9D])) {
|
|
1311
|
-
return {
|
|
1312
|
-
ext: 'Z',
|
|
1313
|
-
mime: 'application/x-compress'
|
|
1314
|
-
};
|
|
1315
|
-
}
|
|
1316
|
-
|
|
1317
|
-
// -- 3-byte signatures --
|
|
1318
|
-
|
|
1319
|
-
if (check([0xFF, 0xD8, 0xFF])) {
|
|
1320
|
-
return {
|
|
1321
|
-
ext: 'jpg',
|
|
1322
|
-
mime: 'image/jpeg'
|
|
1323
|
-
};
|
|
1324
|
-
}
|
|
1325
|
-
if (check([0x49, 0x49, 0xBC])) {
|
|
1326
|
-
return {
|
|
1327
|
-
ext: 'jxr',
|
|
1328
|
-
mime: 'image/vnd.ms-photo'
|
|
1329
|
-
};
|
|
1330
|
-
}
|
|
1331
|
-
if (check([0x1F, 0x8B, 0x8])) {
|
|
1332
|
-
return {
|
|
1333
|
-
ext: 'gz',
|
|
1334
|
-
mime: 'application/gzip'
|
|
1335
|
-
};
|
|
1336
|
-
}
|
|
1337
|
-
if (check([0x42, 0x5A, 0x68])) {
|
|
1338
|
-
return {
|
|
1339
|
-
ext: 'bz2',
|
|
1340
|
-
mime: 'application/x-bzip2'
|
|
1341
|
-
};
|
|
1342
|
-
}
|
|
1343
|
-
if (checkString('ID3')) {
|
|
1344
|
-
await tokenizer.ignore(6); // Skip ID3 header until the header size
|
|
1345
|
-
const id3HeaderLen = await tokenizer.readToken(uint32SyncSafeToken);
|
|
1346
|
-
if (tokenizer.position + id3HeaderLen > tokenizer.fileInfo.size) {
|
|
1347
|
-
// Guess file type based on ID3 header for backward compatibility
|
|
1348
|
-
return {
|
|
1349
|
-
ext: 'mp3',
|
|
1350
|
-
mime: 'audio/mpeg'
|
|
1351
|
-
};
|
|
1352
|
-
}
|
|
1353
|
-
await tokenizer.ignore(id3HeaderLen);
|
|
1354
|
-
return fromTokenizer(tokenizer); // Skip ID3 header, recursion
|
|
1355
|
-
}
|
|
1356
|
-
|
|
1357
|
-
// Musepack, SV7
|
|
1358
|
-
if (checkString('MP+')) {
|
|
1359
|
-
return {
|
|
1360
|
-
ext: 'mpc',
|
|
1361
|
-
mime: 'audio/x-musepack'
|
|
1362
|
-
};
|
|
1363
|
-
}
|
|
1364
|
-
if ((buffer[0] === 0x43 || buffer[0] === 0x46) && check([0x57, 0x53], {
|
|
1365
|
-
offset: 1
|
|
1366
|
-
})) {
|
|
1367
|
-
return {
|
|
1368
|
-
ext: 'swf',
|
|
1369
|
-
mime: 'application/x-shockwave-flash'
|
|
1370
|
-
};
|
|
1371
|
-
}
|
|
1372
|
-
|
|
1373
|
-
// -- 4-byte signatures --
|
|
1374
|
-
|
|
1375
|
-
if (check([0x47, 0x49, 0x46])) {
|
|
1376
|
-
return {
|
|
1377
|
-
ext: 'gif',
|
|
1378
|
-
mime: 'image/gif'
|
|
1379
|
-
};
|
|
1380
|
-
}
|
|
1381
|
-
if (checkString('FLIF')) {
|
|
1382
|
-
return {
|
|
1383
|
-
ext: 'flif',
|
|
1384
|
-
mime: 'image/flif'
|
|
1385
|
-
};
|
|
1386
|
-
}
|
|
1387
|
-
if (checkString('8BPS')) {
|
|
1388
|
-
return {
|
|
1389
|
-
ext: 'psd',
|
|
1390
|
-
mime: 'image/vnd.adobe.photoshop'
|
|
1391
|
-
};
|
|
1392
|
-
}
|
|
1393
|
-
if (checkString('WEBP', {
|
|
1394
|
-
offset: 8
|
|
1395
|
-
})) {
|
|
1396
|
-
return {
|
|
1397
|
-
ext: 'webp',
|
|
1398
|
-
mime: 'image/webp'
|
|
1399
|
-
};
|
|
1400
|
-
}
|
|
1401
|
-
|
|
1402
|
-
// Musepack, SV8
|
|
1403
|
-
if (checkString('MPCK')) {
|
|
1404
|
-
return {
|
|
1405
|
-
ext: 'mpc',
|
|
1406
|
-
mime: 'audio/x-musepack'
|
|
1407
|
-
};
|
|
1408
|
-
}
|
|
1409
|
-
if (checkString('FORM')) {
|
|
1410
|
-
return {
|
|
1411
|
-
ext: 'aif',
|
|
1412
|
-
mime: 'audio/aiff'
|
|
1413
|
-
};
|
|
1414
|
-
}
|
|
1415
|
-
if (checkString('icns', {
|
|
1416
|
-
offset: 0
|
|
1417
|
-
})) {
|
|
1418
|
-
return {
|
|
1419
|
-
ext: 'icns',
|
|
1420
|
-
mime: 'image/icns'
|
|
1421
|
-
};
|
|
1422
|
-
}
|
|
1423
|
-
|
|
1424
|
-
// Zip-based file formats
|
|
1425
|
-
// Need to be before the `zip` check
|
|
1426
|
-
if (check([0x50, 0x4B, 0x3, 0x4])) {
|
|
1427
|
-
// Local file header signature
|
|
1428
|
-
try {
|
|
1429
|
-
while (tokenizer.position + 30 < tokenizer.fileInfo.size) {
|
|
1430
|
-
await tokenizer.readBuffer(buffer, {
|
|
1431
|
-
length: 30
|
|
1432
|
-
});
|
|
1433
|
-
|
|
1434
|
-
// https://en.wikipedia.org/wiki/Zip_(file_format)#File_headers
|
|
1435
|
-
const zipHeader = {
|
|
1436
|
-
compressedSize: buffer.readUInt32LE(18),
|
|
1437
|
-
uncompressedSize: buffer.readUInt32LE(22),
|
|
1438
|
-
filenameLength: buffer.readUInt16LE(26),
|
|
1439
|
-
extraFieldLength: buffer.readUInt16LE(28)
|
|
1440
|
-
};
|
|
1441
|
-
zipHeader.filename = await tokenizer.readToken(new Token.StringType(zipHeader.filenameLength, 'utf-8'));
|
|
1442
|
-
await tokenizer.ignore(zipHeader.extraFieldLength);
|
|
1443
|
-
|
|
1444
|
-
// Assumes signed `.xpi` from addons.mozilla.org
|
|
1445
|
-
if (zipHeader.filename === 'META-INF/mozilla.rsa') {
|
|
1446
|
-
return {
|
|
1447
|
-
ext: 'xpi',
|
|
1448
|
-
mime: 'application/x-xpinstall'
|
|
1449
|
-
};
|
|
1450
|
-
}
|
|
1451
|
-
if (zipHeader.filename.endsWith('.rels') || zipHeader.filename.endsWith('.xml')) {
|
|
1452
|
-
const type = zipHeader.filename.split('/')[0];
|
|
1453
|
-
switch (type) {
|
|
1454
|
-
case '_rels':
|
|
1455
|
-
break;
|
|
1456
|
-
case 'word':
|
|
1457
|
-
return {
|
|
1458
|
-
ext: 'docx',
|
|
1459
|
-
mime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
|
|
1460
|
-
};
|
|
1461
|
-
case 'ppt':
|
|
1462
|
-
return {
|
|
1463
|
-
ext: 'pptx',
|
|
1464
|
-
mime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
|
|
1465
|
-
};
|
|
1466
|
-
case 'xl':
|
|
1467
|
-
return {
|
|
1468
|
-
ext: 'xlsx',
|
|
1469
|
-
mime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
|
1470
|
-
};
|
|
1471
|
-
default:
|
|
1472
|
-
break;
|
|
1473
|
-
}
|
|
1474
|
-
}
|
|
1475
|
-
if (zipHeader.filename.startsWith('xl/')) {
|
|
1476
|
-
return {
|
|
1477
|
-
ext: 'xlsx',
|
|
1478
|
-
mime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
|
1479
|
-
};
|
|
1480
|
-
}
|
|
1481
|
-
if (zipHeader.filename.startsWith('3D/') && zipHeader.filename.endsWith('.model')) {
|
|
1482
|
-
return {
|
|
1483
|
-
ext: '3mf',
|
|
1484
|
-
mime: 'model/3mf'
|
|
1485
|
-
};
|
|
1486
|
-
}
|
|
1487
|
-
|
|
1488
|
-
// The docx, xlsx and pptx file types extend the Office Open XML file format:
|
|
1489
|
-
// https://en.wikipedia.org/wiki/Office_Open_XML_file_formats
|
|
1490
|
-
// We look for:
|
|
1491
|
-
// - one entry named '[Content_Types].xml' or '_rels/.rels',
|
|
1492
|
-
// - one entry indicating specific type of file.
|
|
1493
|
-
// MS Office, OpenOffice and LibreOffice may put the parts in different order, so the check should not rely on it.
|
|
1494
|
-
if (zipHeader.filename === 'mimetype' && zipHeader.compressedSize === zipHeader.uncompressedSize) {
|
|
1495
|
-
const mimeType = await tokenizer.readToken(new Token.StringType(zipHeader.compressedSize, 'utf-8'));
|
|
1496
|
-
switch (mimeType) {
|
|
1497
|
-
case 'application/epub+zip':
|
|
1498
|
-
return {
|
|
1499
|
-
ext: 'epub',
|
|
1500
|
-
mime: 'application/epub+zip'
|
|
1501
|
-
};
|
|
1502
|
-
case 'application/vnd.oasis.opendocument.text':
|
|
1503
|
-
return {
|
|
1504
|
-
ext: 'odt',
|
|
1505
|
-
mime: 'application/vnd.oasis.opendocument.text'
|
|
1506
|
-
};
|
|
1507
|
-
case 'application/vnd.oasis.opendocument.spreadsheet':
|
|
1508
|
-
return {
|
|
1509
|
-
ext: 'ods',
|
|
1510
|
-
mime: 'application/vnd.oasis.opendocument.spreadsheet'
|
|
1511
|
-
};
|
|
1512
|
-
case 'application/vnd.oasis.opendocument.presentation':
|
|
1513
|
-
return {
|
|
1514
|
-
ext: 'odp',
|
|
1515
|
-
mime: 'application/vnd.oasis.opendocument.presentation'
|
|
1516
|
-
};
|
|
1517
|
-
default:
|
|
1518
|
-
}
|
|
1519
|
-
}
|
|
1520
|
-
|
|
1521
|
-
// Try to find next header manually when current one is corrupted
|
|
1522
|
-
if (zipHeader.compressedSize === 0) {
|
|
1523
|
-
let nextHeaderIndex = -1;
|
|
1524
|
-
while (nextHeaderIndex < 0 && tokenizer.position < tokenizer.fileInfo.size) {
|
|
1525
|
-
await tokenizer.peekBuffer(buffer, {
|
|
1526
|
-
mayBeLess: true
|
|
1527
|
-
});
|
|
1528
|
-
nextHeaderIndex = buffer.indexOf('504B0304', 0, 'hex');
|
|
1529
|
-
// Move position to the next header if found, skip the whole buffer otherwise
|
|
1530
|
-
await tokenizer.ignore(nextHeaderIndex >= 0 ? nextHeaderIndex : buffer.length);
|
|
1531
|
-
}
|
|
1532
|
-
} else {
|
|
1533
|
-
await tokenizer.ignore(zipHeader.compressedSize);
|
|
1534
|
-
}
|
|
1535
|
-
}
|
|
1536
|
-
} catch (error) {
|
|
1537
|
-
if (!(error instanceof strtok3.EndOfStreamError)) {
|
|
1538
|
-
throw error;
|
|
1539
|
-
}
|
|
1540
|
-
}
|
|
1541
|
-
return {
|
|
1542
|
-
ext: 'zip',
|
|
1543
|
-
mime: 'application/zip'
|
|
1544
|
-
};
|
|
1545
|
-
}
|
|
1546
|
-
if (checkString('OggS')) {
|
|
1547
|
-
// This is an OGG container
|
|
1548
|
-
await tokenizer.ignore(28);
|
|
1549
|
-
const type = Buffer.alloc(8);
|
|
1550
|
-
await tokenizer.readBuffer(type);
|
|
1551
|
-
|
|
1552
|
-
// Needs to be before `ogg` check
|
|
1553
|
-
if (_check(type, [0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64])) {
|
|
1554
|
-
return {
|
|
1555
|
-
ext: 'opus',
|
|
1556
|
-
mime: 'audio/opus'
|
|
1557
|
-
};
|
|
1558
|
-
}
|
|
1559
|
-
|
|
1560
|
-
// If ' theora' in header.
|
|
1561
|
-
if (_check(type, [0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61])) {
|
|
1562
|
-
return {
|
|
1563
|
-
ext: 'ogv',
|
|
1564
|
-
mime: 'video/ogg'
|
|
1565
|
-
};
|
|
1566
|
-
}
|
|
1567
|
-
|
|
1568
|
-
// If '\x01video' in header.
|
|
1569
|
-
if (_check(type, [0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00])) {
|
|
1570
|
-
return {
|
|
1571
|
-
ext: 'ogm',
|
|
1572
|
-
mime: 'video/ogg'
|
|
1573
|
-
};
|
|
1574
|
-
}
|
|
1575
|
-
|
|
1576
|
-
// If ' FLAC' in header https://xiph.org/flac/faq.html
|
|
1577
|
-
if (_check(type, [0x7F, 0x46, 0x4C, 0x41, 0x43])) {
|
|
1578
|
-
return {
|
|
1579
|
-
ext: 'oga',
|
|
1580
|
-
mime: 'audio/ogg'
|
|
1581
|
-
};
|
|
1582
|
-
}
|
|
1583
|
-
|
|
1584
|
-
// 'Speex ' in header https://en.wikipedia.org/wiki/Speex
|
|
1585
|
-
if (_check(type, [0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20])) {
|
|
1586
|
-
return {
|
|
1587
|
-
ext: 'spx',
|
|
1588
|
-
mime: 'audio/ogg'
|
|
1589
|
-
};
|
|
1590
|
-
}
|
|
1591
|
-
|
|
1592
|
-
// If '\x01vorbis' in header
|
|
1593
|
-
if (_check(type, [0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73])) {
|
|
1594
|
-
return {
|
|
1595
|
-
ext: 'ogg',
|
|
1596
|
-
mime: 'audio/ogg'
|
|
1597
|
-
};
|
|
1598
|
-
}
|
|
1599
|
-
|
|
1600
|
-
// Default OGG container https://www.iana.org/assignments/media-types/application/ogg
|
|
1601
|
-
return {
|
|
1602
|
-
ext: 'ogx',
|
|
1603
|
-
mime: 'application/ogg'
|
|
1604
|
-
};
|
|
1605
|
-
}
|
|
1606
|
-
if (check([0x50, 0x4B]) && (buffer[2] === 0x3 || buffer[2] === 0x5 || buffer[2] === 0x7) && (buffer[3] === 0x4 || buffer[3] === 0x6 || buffer[3] === 0x8)) {
|
|
1607
|
-
return {
|
|
1608
|
-
ext: 'zip',
|
|
1609
|
-
mime: 'application/zip'
|
|
1610
|
-
};
|
|
1611
|
-
}
|
|
1612
|
-
|
|
1613
|
-
//
|
|
1614
|
-
|
|
1615
|
-
// File Type Box (https://en.wikipedia.org/wiki/ISO_base_media_file_format)
|
|
1616
|
-
// It's not required to be first, but it's recommended to be. Almost all ISO base media files start with `ftyp` box.
|
|
1617
|
-
// `ftyp` box must contain a brand major identifier, which must consist of ISO 8859-1 printable characters.
|
|
1618
|
-
// Here we check for 8859-1 printable characters (for simplicity, it's a mask which also catches one non-printable character).
|
|
1619
|
-
if (checkString('ftyp', {
|
|
1620
|
-
offset: 4
|
|
1621
|
-
}) && (buffer[8] & 0x60) !== 0x00 // Brand major, first character ASCII?
|
|
1622
|
-
) {
|
|
1623
|
-
// They all can have MIME `video/mp4` except `application/mp4` special-case which is hard to detect.
|
|
1624
|
-
// For some cases, we're specific, everything else falls to `video/mp4` with `mp4` extension.
|
|
1625
|
-
const brandMajor = buffer.toString('binary', 8, 12).replace('\0', ' ').trim();
|
|
1626
|
-
switch (brandMajor) {
|
|
1627
|
-
case 'avif':
|
|
1628
|
-
return {
|
|
1629
|
-
ext: 'avif',
|
|
1630
|
-
mime: 'image/avif'
|
|
1631
|
-
};
|
|
1632
|
-
case 'mif1':
|
|
1633
|
-
return {
|
|
1634
|
-
ext: 'heic',
|
|
1635
|
-
mime: 'image/heif'
|
|
1636
|
-
};
|
|
1637
|
-
case 'msf1':
|
|
1638
|
-
return {
|
|
1639
|
-
ext: 'heic',
|
|
1640
|
-
mime: 'image/heif-sequence'
|
|
1641
|
-
};
|
|
1642
|
-
case 'heic':
|
|
1643
|
-
case 'heix':
|
|
1644
|
-
return {
|
|
1645
|
-
ext: 'heic',
|
|
1646
|
-
mime: 'image/heic'
|
|
1647
|
-
};
|
|
1648
|
-
case 'hevc':
|
|
1649
|
-
case 'hevx':
|
|
1650
|
-
return {
|
|
1651
|
-
ext: 'heic',
|
|
1652
|
-
mime: 'image/heic-sequence'
|
|
1653
|
-
};
|
|
1654
|
-
case 'qt':
|
|
1655
|
-
return {
|
|
1656
|
-
ext: 'mov',
|
|
1657
|
-
mime: 'video/quicktime'
|
|
1658
|
-
};
|
|
1659
|
-
case 'M4V':
|
|
1660
|
-
case 'M4VH':
|
|
1661
|
-
case 'M4VP':
|
|
1662
|
-
return {
|
|
1663
|
-
ext: 'm4v',
|
|
1664
|
-
mime: 'video/x-m4v'
|
|
1665
|
-
};
|
|
1666
|
-
case 'M4P':
|
|
1667
|
-
return {
|
|
1668
|
-
ext: 'm4p',
|
|
1669
|
-
mime: 'video/mp4'
|
|
1670
|
-
};
|
|
1671
|
-
case 'M4B':
|
|
1672
|
-
return {
|
|
1673
|
-
ext: 'm4b',
|
|
1674
|
-
mime: 'audio/mp4'
|
|
1675
|
-
};
|
|
1676
|
-
case 'M4A':
|
|
1677
|
-
return {
|
|
1678
|
-
ext: 'm4a',
|
|
1679
|
-
mime: 'audio/x-m4a'
|
|
1680
|
-
};
|
|
1681
|
-
case 'F4V':
|
|
1682
|
-
return {
|
|
1683
|
-
ext: 'f4v',
|
|
1684
|
-
mime: 'video/mp4'
|
|
1685
|
-
};
|
|
1686
|
-
case 'F4P':
|
|
1687
|
-
return {
|
|
1688
|
-
ext: 'f4p',
|
|
1689
|
-
mime: 'video/mp4'
|
|
1690
|
-
};
|
|
1691
|
-
case 'F4A':
|
|
1692
|
-
return {
|
|
1693
|
-
ext: 'f4a',
|
|
1694
|
-
mime: 'audio/mp4'
|
|
1695
|
-
};
|
|
1696
|
-
case 'F4B':
|
|
1697
|
-
return {
|
|
1698
|
-
ext: 'f4b',
|
|
1699
|
-
mime: 'audio/mp4'
|
|
1700
|
-
};
|
|
1701
|
-
case 'crx':
|
|
1702
|
-
return {
|
|
1703
|
-
ext: 'cr3',
|
|
1704
|
-
mime: 'image/x-canon-cr3'
|
|
1705
|
-
};
|
|
1706
|
-
default:
|
|
1707
|
-
if (brandMajor.startsWith('3g')) {
|
|
1708
|
-
if (brandMajor.startsWith('3g2')) {
|
|
1709
|
-
return {
|
|
1710
|
-
ext: '3g2',
|
|
1711
|
-
mime: 'video/3gpp2'
|
|
1712
|
-
};
|
|
1713
|
-
}
|
|
1714
|
-
return {
|
|
1715
|
-
ext: '3gp',
|
|
1716
|
-
mime: 'video/3gpp'
|
|
1717
|
-
};
|
|
1718
|
-
}
|
|
1719
|
-
return {
|
|
1720
|
-
ext: 'mp4',
|
|
1721
|
-
mime: 'video/mp4'
|
|
1722
|
-
};
|
|
1723
|
-
}
|
|
1724
|
-
}
|
|
1725
|
-
if (checkString('MThd')) {
|
|
1726
|
-
return {
|
|
1727
|
-
ext: 'mid',
|
|
1728
|
-
mime: 'audio/midi'
|
|
1729
|
-
};
|
|
1730
|
-
}
|
|
1731
|
-
if (checkString('wOFF') && (check([0x00, 0x01, 0x00, 0x00], {
|
|
1732
|
-
offset: 4
|
|
1733
|
-
}) || checkString('OTTO', {
|
|
1734
|
-
offset: 4
|
|
1735
|
-
}))) {
|
|
1736
|
-
return {
|
|
1737
|
-
ext: 'woff',
|
|
1738
|
-
mime: 'font/woff'
|
|
1739
|
-
};
|
|
1740
|
-
}
|
|
1741
|
-
if (checkString('wOF2') && (check([0x00, 0x01, 0x00, 0x00], {
|
|
1742
|
-
offset: 4
|
|
1743
|
-
}) || checkString('OTTO', {
|
|
1744
|
-
offset: 4
|
|
1745
|
-
}))) {
|
|
1746
|
-
return {
|
|
1747
|
-
ext: 'woff2',
|
|
1748
|
-
mime: 'font/woff2'
|
|
1749
|
-
};
|
|
1750
|
-
}
|
|
1751
|
-
if (check([0xD4, 0xC3, 0xB2, 0xA1]) || check([0xA1, 0xB2, 0xC3, 0xD4])) {
|
|
1752
|
-
return {
|
|
1753
|
-
ext: 'pcap',
|
|
1754
|
-
mime: 'application/vnd.tcpdump.pcap'
|
|
1755
|
-
};
|
|
1756
|
-
}
|
|
1757
|
-
|
|
1758
|
-
// Sony DSD Stream File (DSF)
|
|
1759
|
-
if (checkString('DSD ')) {
|
|
1760
|
-
return {
|
|
1761
|
-
ext: 'dsf',
|
|
1762
|
-
mime: 'audio/x-dsf' // Non-standard
|
|
1763
|
-
};
|
|
1764
|
-
}
|
|
1765
|
-
if (checkString('LZIP')) {
|
|
1766
|
-
return {
|
|
1767
|
-
ext: 'lz',
|
|
1768
|
-
mime: 'application/x-lzip'
|
|
1769
|
-
};
|
|
1770
|
-
}
|
|
1771
|
-
if (checkString('fLaC')) {
|
|
1772
|
-
return {
|
|
1773
|
-
ext: 'flac',
|
|
1774
|
-
mime: 'audio/x-flac'
|
|
1775
|
-
};
|
|
1776
|
-
}
|
|
1777
|
-
if (check([0x42, 0x50, 0x47, 0xFB])) {
|
|
1778
|
-
return {
|
|
1779
|
-
ext: 'bpg',
|
|
1780
|
-
mime: 'image/bpg'
|
|
1781
|
-
};
|
|
1782
|
-
}
|
|
1783
|
-
if (checkString('wvpk')) {
|
|
1784
|
-
return {
|
|
1785
|
-
ext: 'wv',
|
|
1786
|
-
mime: 'audio/wavpack'
|
|
1787
|
-
};
|
|
1788
|
-
}
|
|
1789
|
-
if (checkString('%PDF')) {
|
|
1790
|
-
await tokenizer.ignore(1350);
|
|
1791
|
-
const maxBufferSize = 10 * 1024 * 1024;
|
|
1792
|
-
const buffer = Buffer.alloc(Math.min(maxBufferSize, tokenizer.fileInfo.size));
|
|
1793
|
-
await tokenizer.readBuffer(buffer, {
|
|
1794
|
-
mayBeLess: true
|
|
1795
|
-
});
|
|
1796
|
-
|
|
1797
|
-
// Check if this is an Adobe Illustrator file
|
|
1798
|
-
if (buffer.includes(Buffer.from('AIPrivateData'))) {
|
|
1799
|
-
return {
|
|
1800
|
-
ext: 'ai',
|
|
1801
|
-
mime: 'application/postscript'
|
|
1802
|
-
};
|
|
1803
|
-
}
|
|
1804
|
-
|
|
1805
|
-
// Assume this is just a normal PDF
|
|
1806
|
-
return {
|
|
1807
|
-
ext: 'pdf',
|
|
1808
|
-
mime: 'application/pdf'
|
|
1809
|
-
};
|
|
1810
|
-
}
|
|
1811
|
-
if (check([0x00, 0x61, 0x73, 0x6D])) {
|
|
1812
|
-
return {
|
|
1813
|
-
ext: 'wasm',
|
|
1814
|
-
mime: 'application/wasm'
|
|
1815
|
-
};
|
|
1816
|
-
}
|
|
1817
|
-
|
|
1818
|
-
// TIFF, little-endian type
|
|
1819
|
-
if (check([0x49, 0x49, 0x2A, 0x0])) {
|
|
1820
|
-
if (checkString('CR', {
|
|
1821
|
-
offset: 8
|
|
1822
|
-
})) {
|
|
1823
|
-
return {
|
|
1824
|
-
ext: 'cr2',
|
|
1825
|
-
mime: 'image/x-canon-cr2'
|
|
1826
|
-
};
|
|
1827
|
-
}
|
|
1828
|
-
if (check([0x1C, 0x00, 0xFE, 0x00], {
|
|
1829
|
-
offset: 8
|
|
1830
|
-
}) || check([0x1F, 0x00, 0x0B, 0x00], {
|
|
1831
|
-
offset: 8
|
|
1832
|
-
})) {
|
|
1833
|
-
return {
|
|
1834
|
-
ext: 'nef',
|
|
1835
|
-
mime: 'image/x-nikon-nef'
|
|
1836
|
-
};
|
|
1837
|
-
}
|
|
1838
|
-
if (check([0x08, 0x00, 0x00, 0x00], {
|
|
1839
|
-
offset: 4
|
|
1840
|
-
}) && (check([0x2D, 0x00, 0xFE, 0x00], {
|
|
1841
|
-
offset: 8
|
|
1842
|
-
}) || check([0x27, 0x00, 0xFE, 0x00], {
|
|
1843
|
-
offset: 8
|
|
1844
|
-
}))) {
|
|
1845
|
-
return {
|
|
1846
|
-
ext: 'dng',
|
|
1847
|
-
mime: 'image/x-adobe-dng'
|
|
1848
|
-
};
|
|
1849
|
-
}
|
|
1850
|
-
buffer = Buffer.alloc(24);
|
|
1851
|
-
await tokenizer.peekBuffer(buffer);
|
|
1852
|
-
if ((check([0x10, 0xFB, 0x86, 0x01], {
|
|
1853
|
-
offset: 4
|
|
1854
|
-
}) || check([0x08, 0x00, 0x00, 0x00], {
|
|
1855
|
-
offset: 4
|
|
1856
|
-
})) &&
|
|
1857
|
-
// This pattern differentiates ARW from other TIFF-ish file types:
|
|
1858
|
-
check([0x00, 0xFE, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x01], {
|
|
1859
|
-
offset: 9
|
|
1860
|
-
})) {
|
|
1861
|
-
return {
|
|
1862
|
-
ext: 'arw',
|
|
1863
|
-
mime: 'image/x-sony-arw'
|
|
1864
|
-
};
|
|
1865
|
-
}
|
|
1866
|
-
return {
|
|
1867
|
-
ext: 'tif',
|
|
1868
|
-
mime: 'image/tiff'
|
|
1869
|
-
};
|
|
1870
|
-
}
|
|
1871
|
-
|
|
1872
|
-
// TIFF, big-endian type
|
|
1873
|
-
if (check([0x4D, 0x4D, 0x0, 0x2A])) {
|
|
1874
|
-
return {
|
|
1875
|
-
ext: 'tif',
|
|
1876
|
-
mime: 'image/tiff'
|
|
1877
|
-
};
|
|
1878
|
-
}
|
|
1879
|
-
if (checkString('MAC ')) {
|
|
1880
|
-
return {
|
|
1881
|
-
ext: 'ape',
|
|
1882
|
-
mime: 'audio/ape'
|
|
1883
|
-
};
|
|
1884
|
-
}
|
|
1885
|
-
|
|
1886
|
-
// https://github.com/threatstack/libmagic/blob/master/magic/Magdir/matroska
|
|
1887
|
-
if (check([0x1A, 0x45, 0xDF, 0xA3])) {
|
|
1888
|
-
// Root element: EBML
|
|
1889
|
-
async function readField() {
|
|
1890
|
-
const msb = await tokenizer.peekNumber(Token.UINT8);
|
|
1891
|
-
let mask = 0x80;
|
|
1892
|
-
let ic = 0; // 0 = A, 1 = B, 2 = C, 3 = D
|
|
1893
|
-
|
|
1894
|
-
while ((msb & mask) === 0) {
|
|
1895
|
-
++ic;
|
|
1896
|
-
mask >>= 1;
|
|
1897
|
-
}
|
|
1898
|
-
const id = Buffer.alloc(ic + 1);
|
|
1899
|
-
await tokenizer.readBuffer(id);
|
|
1900
|
-
return id;
|
|
1901
|
-
}
|
|
1902
|
-
async function readElement() {
|
|
1903
|
-
const id = await readField();
|
|
1904
|
-
const lenField = await readField();
|
|
1905
|
-
lenField[0] ^= 0x80 >> lenField.length - 1;
|
|
1906
|
-
const nrLen = Math.min(6, lenField.length); // JavaScript can max read 6 bytes integer
|
|
1907
|
-
return {
|
|
1908
|
-
id: id.readUIntBE(0, id.length),
|
|
1909
|
-
len: lenField.readUIntBE(lenField.length - nrLen, nrLen)
|
|
1910
|
-
};
|
|
1911
|
-
}
|
|
1912
|
-
async function readChildren(level, children) {
|
|
1913
|
-
while (children > 0) {
|
|
1914
|
-
const e = await readElement();
|
|
1915
|
-
if (e.id === 0x4282) {
|
|
1916
|
-
return tokenizer.readToken(new Token.StringType(e.len, 'utf-8')); // Return DocType
|
|
1917
|
-
}
|
|
1918
|
-
await tokenizer.ignore(e.len); // ignore payload
|
|
1919
|
-
--children;
|
|
1920
|
-
}
|
|
1921
|
-
}
|
|
1922
|
-
const re = await readElement();
|
|
1923
|
-
const docType = await readChildren(1, re.len);
|
|
1924
|
-
switch (docType) {
|
|
1925
|
-
case 'webm':
|
|
1926
|
-
return {
|
|
1927
|
-
ext: 'webm',
|
|
1928
|
-
mime: 'video/webm'
|
|
1929
|
-
};
|
|
1930
|
-
case 'matroska':
|
|
1931
|
-
return {
|
|
1932
|
-
ext: 'mkv',
|
|
1933
|
-
mime: 'video/x-matroska'
|
|
1934
|
-
};
|
|
1935
|
-
default:
|
|
1936
|
-
return;
|
|
1937
|
-
}
|
|
1938
|
-
}
|
|
1939
|
-
|
|
1940
|
-
// RIFF file format which might be AVI, WAV, QCP, etc
|
|
1941
|
-
if (check([0x52, 0x49, 0x46, 0x46])) {
|
|
1942
|
-
if (check([0x41, 0x56, 0x49], {
|
|
1943
|
-
offset: 8
|
|
1944
|
-
})) {
|
|
1945
|
-
return {
|
|
1946
|
-
ext: 'avi',
|
|
1947
|
-
mime: 'video/vnd.avi'
|
|
1948
|
-
};
|
|
1949
|
-
}
|
|
1950
|
-
if (check([0x57, 0x41, 0x56, 0x45], {
|
|
1951
|
-
offset: 8
|
|
1952
|
-
})) {
|
|
1953
|
-
return {
|
|
1954
|
-
ext: 'wav',
|
|
1955
|
-
mime: 'audio/vnd.wave'
|
|
1956
|
-
};
|
|
1957
|
-
}
|
|
1958
|
-
|
|
1959
|
-
// QLCM, QCP file
|
|
1960
|
-
if (check([0x51, 0x4C, 0x43, 0x4D], {
|
|
1961
|
-
offset: 8
|
|
1962
|
-
})) {
|
|
1963
|
-
return {
|
|
1964
|
-
ext: 'qcp',
|
|
1965
|
-
mime: 'audio/qcelp'
|
|
1966
|
-
};
|
|
1967
|
-
}
|
|
1968
|
-
}
|
|
1969
|
-
if (checkString('SQLi')) {
|
|
1970
|
-
return {
|
|
1971
|
-
ext: 'sqlite',
|
|
1972
|
-
mime: 'application/x-sqlite3'
|
|
1973
|
-
};
|
|
1974
|
-
}
|
|
1975
|
-
if (check([0x4E, 0x45, 0x53, 0x1A])) {
|
|
1976
|
-
return {
|
|
1977
|
-
ext: 'nes',
|
|
1978
|
-
mime: 'application/x-nintendo-nes-rom'
|
|
1979
|
-
};
|
|
1980
|
-
}
|
|
1981
|
-
if (checkString('Cr24')) {
|
|
1982
|
-
return {
|
|
1983
|
-
ext: 'crx',
|
|
1984
|
-
mime: 'application/x-google-chrome-extension'
|
|
1985
|
-
};
|
|
1986
|
-
}
|
|
1987
|
-
if (checkString('MSCF') || checkString('ISc(')) {
|
|
1988
|
-
return {
|
|
1989
|
-
ext: 'cab',
|
|
1990
|
-
mime: 'application/vnd.ms-cab-compressed'
|
|
1991
|
-
};
|
|
1992
|
-
}
|
|
1993
|
-
if (check([0xED, 0xAB, 0xEE, 0xDB])) {
|
|
1994
|
-
return {
|
|
1995
|
-
ext: 'rpm',
|
|
1996
|
-
mime: 'application/x-rpm'
|
|
1997
|
-
};
|
|
1998
|
-
}
|
|
1999
|
-
if (check([0xC5, 0xD0, 0xD3, 0xC6])) {
|
|
2000
|
-
return {
|
|
2001
|
-
ext: 'eps',
|
|
2002
|
-
mime: 'application/eps'
|
|
2003
|
-
};
|
|
2004
|
-
}
|
|
2005
|
-
if (check([0x28, 0xB5, 0x2F, 0xFD])) {
|
|
2006
|
-
return {
|
|
2007
|
-
ext: 'zst',
|
|
2008
|
-
mime: 'application/zstd'
|
|
2009
|
-
};
|
|
2010
|
-
}
|
|
2011
|
-
|
|
2012
|
-
// -- 5-byte signatures --
|
|
2013
|
-
|
|
2014
|
-
if (check([0x4F, 0x54, 0x54, 0x4F, 0x00])) {
|
|
2015
|
-
return {
|
|
2016
|
-
ext: 'otf',
|
|
2017
|
-
mime: 'font/otf'
|
|
2018
|
-
};
|
|
2019
|
-
}
|
|
2020
|
-
if (checkString('#!AMR')) {
|
|
2021
|
-
return {
|
|
2022
|
-
ext: 'amr',
|
|
2023
|
-
mime: 'audio/amr'
|
|
2024
|
-
};
|
|
2025
|
-
}
|
|
2026
|
-
if (checkString('{\\rtf')) {
|
|
2027
|
-
return {
|
|
2028
|
-
ext: 'rtf',
|
|
2029
|
-
mime: 'application/rtf'
|
|
2030
|
-
};
|
|
2031
|
-
}
|
|
2032
|
-
if (check([0x46, 0x4C, 0x56, 0x01])) {
|
|
2033
|
-
return {
|
|
2034
|
-
ext: 'flv',
|
|
2035
|
-
mime: 'video/x-flv'
|
|
2036
|
-
};
|
|
2037
|
-
}
|
|
2038
|
-
if (checkString('IMPM')) {
|
|
2039
|
-
return {
|
|
2040
|
-
ext: 'it',
|
|
2041
|
-
mime: 'audio/x-it'
|
|
2042
|
-
};
|
|
2043
|
-
}
|
|
2044
|
-
if (checkString('-lh0-', {
|
|
2045
|
-
offset: 2
|
|
2046
|
-
}) || checkString('-lh1-', {
|
|
2047
|
-
offset: 2
|
|
2048
|
-
}) || checkString('-lh2-', {
|
|
2049
|
-
offset: 2
|
|
2050
|
-
}) || checkString('-lh3-', {
|
|
2051
|
-
offset: 2
|
|
2052
|
-
}) || checkString('-lh4-', {
|
|
2053
|
-
offset: 2
|
|
2054
|
-
}) || checkString('-lh5-', {
|
|
2055
|
-
offset: 2
|
|
2056
|
-
}) || checkString('-lh6-', {
|
|
2057
|
-
offset: 2
|
|
2058
|
-
}) || checkString('-lh7-', {
|
|
2059
|
-
offset: 2
|
|
2060
|
-
}) || checkString('-lzs-', {
|
|
2061
|
-
offset: 2
|
|
2062
|
-
}) || checkString('-lz4-', {
|
|
2063
|
-
offset: 2
|
|
2064
|
-
}) || checkString('-lz5-', {
|
|
2065
|
-
offset: 2
|
|
2066
|
-
}) || checkString('-lhd-', {
|
|
2067
|
-
offset: 2
|
|
2068
|
-
})) {
|
|
2069
|
-
return {
|
|
2070
|
-
ext: 'lzh',
|
|
2071
|
-
mime: 'application/x-lzh-compressed'
|
|
2072
|
-
};
|
|
2073
|
-
}
|
|
2074
|
-
|
|
2075
|
-
// MPEG program stream (PS or MPEG-PS)
|
|
2076
|
-
if (check([0x00, 0x00, 0x01, 0xBA])) {
|
|
2077
|
-
// MPEG-PS, MPEG-1 Part 1
|
|
2078
|
-
if (check([0x21], {
|
|
2079
|
-
offset: 4,
|
|
2080
|
-
mask: [0xF1]
|
|
2081
|
-
})) {
|
|
2082
|
-
return {
|
|
2083
|
-
ext: 'mpg',
|
|
2084
|
-
// May also be .ps, .mpeg
|
|
2085
|
-
mime: 'video/MP1S'
|
|
2086
|
-
};
|
|
2087
|
-
}
|
|
2088
|
-
|
|
2089
|
-
// MPEG-PS, MPEG-2 Part 1
|
|
2090
|
-
if (check([0x44], {
|
|
2091
|
-
offset: 4,
|
|
2092
|
-
mask: [0xC4]
|
|
2093
|
-
})) {
|
|
2094
|
-
return {
|
|
2095
|
-
ext: 'mpg',
|
|
2096
|
-
// May also be .mpg, .m2p, .vob or .sub
|
|
2097
|
-
mime: 'video/MP2P'
|
|
2098
|
-
};
|
|
2099
|
-
}
|
|
2100
|
-
}
|
|
2101
|
-
if (checkString('ITSF')) {
|
|
2102
|
-
return {
|
|
2103
|
-
ext: 'chm',
|
|
2104
|
-
mime: 'application/vnd.ms-htmlhelp'
|
|
2105
|
-
};
|
|
2106
|
-
}
|
|
2107
|
-
|
|
2108
|
-
// -- 6-byte signatures --
|
|
2109
|
-
|
|
2110
|
-
if (check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) {
|
|
2111
|
-
return {
|
|
2112
|
-
ext: 'xz',
|
|
2113
|
-
mime: 'application/x-xz'
|
|
2114
|
-
};
|
|
2115
|
-
}
|
|
2116
|
-
if (checkString('<?xml ')) {
|
|
2117
|
-
return {
|
|
2118
|
-
ext: 'xml',
|
|
2119
|
-
mime: 'application/xml'
|
|
2120
|
-
};
|
|
2121
|
-
}
|
|
2122
|
-
if (check([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) {
|
|
2123
|
-
return {
|
|
2124
|
-
ext: '7z',
|
|
2125
|
-
mime: 'application/x-7z-compressed'
|
|
2126
|
-
};
|
|
2127
|
-
}
|
|
2128
|
-
if (check([0x52, 0x61, 0x72, 0x21, 0x1A, 0x7]) && (buffer[6] === 0x0 || buffer[6] === 0x1)) {
|
|
2129
|
-
return {
|
|
2130
|
-
ext: 'rar',
|
|
2131
|
-
mime: 'application/x-rar-compressed'
|
|
2132
|
-
};
|
|
2133
|
-
}
|
|
2134
|
-
if (checkString('solid ')) {
|
|
2135
|
-
return {
|
|
2136
|
-
ext: 'stl',
|
|
2137
|
-
mime: 'model/stl'
|
|
2138
|
-
};
|
|
2139
|
-
}
|
|
2140
|
-
|
|
2141
|
-
// -- 7-byte signatures --
|
|
2142
|
-
|
|
2143
|
-
if (checkString('BLENDER')) {
|
|
2144
|
-
return {
|
|
2145
|
-
ext: 'blend',
|
|
2146
|
-
mime: 'application/x-blender'
|
|
2147
|
-
};
|
|
2148
|
-
}
|
|
2149
|
-
if (checkString('!<arch>')) {
|
|
2150
|
-
await tokenizer.ignore(8);
|
|
2151
|
-
const str = await tokenizer.readToken(new Token.StringType(13, 'ascii'));
|
|
2152
|
-
if (str === 'debian-binary') {
|
|
2153
|
-
return {
|
|
2154
|
-
ext: 'deb',
|
|
2155
|
-
mime: 'application/x-deb'
|
|
2156
|
-
};
|
|
2157
|
-
}
|
|
2158
|
-
return {
|
|
2159
|
-
ext: 'ar',
|
|
2160
|
-
mime: 'application/x-unix-archive'
|
|
2161
|
-
};
|
|
2162
|
-
}
|
|
2163
|
-
|
|
2164
|
-
// -- 8-byte signatures --
|
|
2165
|
-
|
|
2166
|
-
if (check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) {
|
|
2167
|
-
// APNG format (https://wiki.mozilla.org/APNG_Specification)
|
|
2168
|
-
// 1. Find the first IDAT (image data) chunk (49 44 41 54)
|
|
2169
|
-
// 2. Check if there is an "acTL" chunk before the IDAT one (61 63 54 4C)
|
|
2170
|
-
|
|
2171
|
-
// Offset calculated as follows:
|
|
2172
|
-
// - 8 bytes: PNG signature
|
|
2173
|
-
// - 4 (length) + 4 (chunk type) + 13 (chunk data) + 4 (CRC): IHDR chunk
|
|
2174
|
-
|
|
2175
|
-
await tokenizer.ignore(8); // ignore PNG signature
|
|
2176
|
-
|
|
2177
|
-
async function readChunkHeader() {
|
|
2178
|
-
return {
|
|
2179
|
-
length: await tokenizer.readToken(Token.INT32_BE),
|
|
2180
|
-
type: await tokenizer.readToken(new Token.StringType(4, 'binary'))
|
|
2181
|
-
};
|
|
2182
|
-
}
|
|
2183
|
-
do {
|
|
2184
|
-
const chunk = await readChunkHeader();
|
|
2185
|
-
if (chunk.length < 0) {
|
|
2186
|
-
return; // Invalid chunk length
|
|
2187
|
-
}
|
|
2188
|
-
switch (chunk.type) {
|
|
2189
|
-
case 'IDAT':
|
|
2190
|
-
return {
|
|
2191
|
-
ext: 'png',
|
|
2192
|
-
mime: 'image/png'
|
|
2193
|
-
};
|
|
2194
|
-
case 'acTL':
|
|
2195
|
-
return {
|
|
2196
|
-
ext: 'apng',
|
|
2197
|
-
mime: 'image/apng'
|
|
2198
|
-
};
|
|
2199
|
-
default:
|
|
2200
|
-
await tokenizer.ignore(chunk.length + 4);
|
|
2201
|
-
// Ignore chunk-data + CRC
|
|
2202
|
-
}
|
|
2203
|
-
} while (tokenizer.position + 8 < tokenizer.fileInfo.size);
|
|
2204
|
-
return {
|
|
2205
|
-
ext: 'png',
|
|
2206
|
-
mime: 'image/png'
|
|
2207
|
-
};
|
|
2208
|
-
}
|
|
2209
|
-
if (check([0x41, 0x52, 0x52, 0x4F, 0x57, 0x31, 0x00, 0x00])) {
|
|
2210
|
-
return {
|
|
2211
|
-
ext: 'arrow',
|
|
2212
|
-
mime: 'application/x-apache-arrow'
|
|
2213
|
-
};
|
|
2214
|
-
}
|
|
2215
|
-
if (check([0x67, 0x6C, 0x54, 0x46, 0x02, 0x00, 0x00, 0x00])) {
|
|
2216
|
-
return {
|
|
2217
|
-
ext: 'glb',
|
|
2218
|
-
mime: 'model/gltf-binary'
|
|
2219
|
-
};
|
|
2220
|
-
}
|
|
2221
|
-
|
|
2222
|
-
// `mov` format variants
|
|
2223
|
-
if (check([0x66, 0x72, 0x65, 0x65], {
|
|
2224
|
-
offset: 4
|
|
2225
|
-
}) ||
|
|
2226
|
-
// `free`
|
|
2227
|
-
check([0x6D, 0x64, 0x61, 0x74], {
|
|
2228
|
-
offset: 4
|
|
2229
|
-
}) ||
|
|
2230
|
-
// `mdat` MJPEG
|
|
2231
|
-
check([0x6D, 0x6F, 0x6F, 0x76], {
|
|
2232
|
-
offset: 4
|
|
2233
|
-
}) ||
|
|
2234
|
-
// `moov`
|
|
2235
|
-
check([0x77, 0x69, 0x64, 0x65], {
|
|
2236
|
-
offset: 4
|
|
2237
|
-
}) // `wide`
|
|
2238
|
-
) {
|
|
2239
|
-
return {
|
|
2240
|
-
ext: 'mov',
|
|
2241
|
-
mime: 'video/quicktime'
|
|
2242
|
-
};
|
|
2243
|
-
}
|
|
2244
|
-
|
|
2245
|
-
// -- 9-byte signatures --
|
|
2246
|
-
|
|
2247
|
-
if (check([0x49, 0x49, 0x52, 0x4F, 0x08, 0x00, 0x00, 0x00, 0x18])) {
|
|
2248
|
-
return {
|
|
2249
|
-
ext: 'orf',
|
|
2250
|
-
mime: 'image/x-olympus-orf'
|
|
2251
|
-
};
|
|
2252
|
-
}
|
|
2253
|
-
if (checkString('gimp xcf ')) {
|
|
2254
|
-
return {
|
|
2255
|
-
ext: 'xcf',
|
|
2256
|
-
mime: 'image/x-xcf'
|
|
2257
|
-
};
|
|
2258
|
-
}
|
|
2259
|
-
|
|
2260
|
-
// -- 12-byte signatures --
|
|
2261
|
-
|
|
2262
|
-
if (check([0x49, 0x49, 0x55, 0x00, 0x18, 0x00, 0x00, 0x00, 0x88, 0xE7, 0x74, 0xD8])) {
|
|
2263
|
-
return {
|
|
2264
|
-
ext: 'rw2',
|
|
2265
|
-
mime: 'image/x-panasonic-rw2'
|
|
2266
|
-
};
|
|
2267
|
-
}
|
|
2268
|
-
|
|
2269
|
-
// ASF_Header_Object first 80 bytes
|
|
2270
|
-
if (check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) {
|
|
2271
|
-
async function readHeader() {
|
|
2272
|
-
const guid = Buffer.alloc(16);
|
|
2273
|
-
await tokenizer.readBuffer(guid);
|
|
2274
|
-
return {
|
|
2275
|
-
id: guid,
|
|
2276
|
-
size: Number(await tokenizer.readToken(Token.UINT64_LE))
|
|
2277
|
-
};
|
|
2278
|
-
}
|
|
2279
|
-
await tokenizer.ignore(30);
|
|
2280
|
-
// Search for header should be in first 1KB of file.
|
|
2281
|
-
while (tokenizer.position + 24 < tokenizer.fileInfo.size) {
|
|
2282
|
-
const header = await readHeader();
|
|
2283
|
-
let payload = header.size - 24;
|
|
2284
|
-
if (_check(header.id, [0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65])) {
|
|
2285
|
-
// Sync on Stream-Properties-Object (B7DC0791-A9B7-11CF-8EE6-00C00C205365)
|
|
2286
|
-
const typeId = Buffer.alloc(16);
|
|
2287
|
-
payload -= await tokenizer.readBuffer(typeId);
|
|
2288
|
-
if (_check(typeId, [0x40, 0x9E, 0x69, 0xF8, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {
|
|
2289
|
-
// Found audio:
|
|
2290
|
-
return {
|
|
2291
|
-
ext: 'asf',
|
|
2292
|
-
mime: 'audio/x-ms-asf'
|
|
2293
|
-
};
|
|
2294
|
-
}
|
|
2295
|
-
if (_check(typeId, [0xC0, 0xEF, 0x19, 0xBC, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {
|
|
2296
|
-
// Found video:
|
|
2297
|
-
return {
|
|
2298
|
-
ext: 'asf',
|
|
2299
|
-
mime: 'video/x-ms-asf'
|
|
2300
|
-
};
|
|
2301
|
-
}
|
|
2302
|
-
break;
|
|
2303
|
-
}
|
|
2304
|
-
await tokenizer.ignore(payload);
|
|
2305
|
-
}
|
|
2306
|
-
|
|
2307
|
-
// Default to ASF generic extension
|
|
2308
|
-
return {
|
|
2309
|
-
ext: 'asf',
|
|
2310
|
-
mime: 'application/vnd.ms-asf'
|
|
2311
|
-
};
|
|
2312
|
-
}
|
|
2313
|
-
if (check([0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A])) {
|
|
2314
|
-
return {
|
|
2315
|
-
ext: 'ktx',
|
|
2316
|
-
mime: 'image/ktx'
|
|
2317
|
-
};
|
|
2318
|
-
}
|
|
2319
|
-
if ((check([0x7E, 0x10, 0x04]) || check([0x7E, 0x18, 0x04])) && check([0x30, 0x4D, 0x49, 0x45], {
|
|
2320
|
-
offset: 4
|
|
2321
|
-
})) {
|
|
2322
|
-
return {
|
|
2323
|
-
ext: 'mie',
|
|
2324
|
-
mime: 'application/x-mie'
|
|
2325
|
-
};
|
|
2326
|
-
}
|
|
2327
|
-
if (check([0x27, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], {
|
|
2328
|
-
offset: 2
|
|
2329
|
-
})) {
|
|
2330
|
-
return {
|
|
2331
|
-
ext: 'shp',
|
|
2332
|
-
mime: 'application/x-esri-shape'
|
|
2333
|
-
};
|
|
2334
|
-
}
|
|
2335
|
-
if (check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) {
|
|
2336
|
-
// JPEG-2000 family
|
|
2337
|
-
|
|
2338
|
-
await tokenizer.ignore(20);
|
|
2339
|
-
const type = await tokenizer.readToken(new Token.StringType(4, 'ascii'));
|
|
2340
|
-
switch (type) {
|
|
2341
|
-
case 'jp2 ':
|
|
2342
|
-
return {
|
|
2343
|
-
ext: 'jp2',
|
|
2344
|
-
mime: 'image/jp2'
|
|
2345
|
-
};
|
|
2346
|
-
case 'jpx ':
|
|
2347
|
-
return {
|
|
2348
|
-
ext: 'jpx',
|
|
2349
|
-
mime: 'image/jpx'
|
|
2350
|
-
};
|
|
2351
|
-
case 'jpm ':
|
|
2352
|
-
return {
|
|
2353
|
-
ext: 'jpm',
|
|
2354
|
-
mime: 'image/jpm'
|
|
2355
|
-
};
|
|
2356
|
-
case 'mjp2':
|
|
2357
|
-
return {
|
|
2358
|
-
ext: 'mj2',
|
|
2359
|
-
mime: 'image/mj2'
|
|
2360
|
-
};
|
|
2361
|
-
default:
|
|
2362
|
-
return;
|
|
2363
|
-
}
|
|
2364
|
-
}
|
|
2365
|
-
if (check([0xFF, 0x0A]) || check([0x00, 0x00, 0x00, 0x0C, 0x4A, 0x58, 0x4C, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) {
|
|
2366
|
-
return {
|
|
2367
|
-
ext: 'jxl',
|
|
2368
|
-
mime: 'image/jxl'
|
|
2369
|
-
};
|
|
2370
|
-
}
|
|
2371
|
-
|
|
2372
|
-
// -- Unsafe signatures --
|
|
2373
|
-
|
|
2374
|
-
if (check([0x0, 0x0, 0x1, 0xBA]) || check([0x0, 0x0, 0x1, 0xB3])) {
|
|
2375
|
-
return {
|
|
2376
|
-
ext: 'mpg',
|
|
2377
|
-
mime: 'video/mpeg'
|
|
2378
|
-
};
|
|
2379
|
-
}
|
|
2380
|
-
if (check([0x00, 0x01, 0x00, 0x00, 0x00])) {
|
|
2381
|
-
return {
|
|
2382
|
-
ext: 'ttf',
|
|
2383
|
-
mime: 'font/ttf'
|
|
2384
|
-
};
|
|
2385
|
-
}
|
|
2386
|
-
if (check([0x00, 0x00, 0x01, 0x00])) {
|
|
2387
|
-
return {
|
|
2388
|
-
ext: 'ico',
|
|
2389
|
-
mime: 'image/x-icon'
|
|
2390
|
-
};
|
|
2391
|
-
}
|
|
2392
|
-
if (check([0x00, 0x00, 0x02, 0x00])) {
|
|
2393
|
-
return {
|
|
2394
|
-
ext: 'cur',
|
|
2395
|
-
mime: 'image/x-icon'
|
|
2396
|
-
};
|
|
2397
|
-
}
|
|
2398
|
-
if (check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) {
|
|
2399
|
-
// Detected Microsoft Compound File Binary File (MS-CFB) Format.
|
|
2400
|
-
return {
|
|
2401
|
-
ext: 'cfb',
|
|
2402
|
-
mime: 'application/x-cfb'
|
|
2403
|
-
};
|
|
2404
|
-
}
|
|
2405
|
-
|
|
2406
|
-
// Increase sample size from 12 to 256.
|
|
2407
|
-
await tokenizer.peekBuffer(buffer, {
|
|
2408
|
-
length: Math.min(256, tokenizer.fileInfo.size),
|
|
2409
|
-
mayBeLess: true
|
|
2410
|
-
});
|
|
2411
|
-
|
|
2412
|
-
// -- 15-byte signatures --
|
|
2413
|
-
|
|
2414
|
-
if (checkString('BEGIN:')) {
|
|
2415
|
-
if (checkString('VCARD', {
|
|
2416
|
-
offset: 6
|
|
2417
|
-
})) {
|
|
2418
|
-
return {
|
|
2419
|
-
ext: 'vcf',
|
|
2420
|
-
mime: 'text/vcard'
|
|
2421
|
-
};
|
|
2422
|
-
}
|
|
2423
|
-
if (checkString('VCALENDAR', {
|
|
2424
|
-
offset: 6
|
|
2425
|
-
})) {
|
|
2426
|
-
return {
|
|
2427
|
-
ext: 'ics',
|
|
2428
|
-
mime: 'text/calendar'
|
|
2429
|
-
};
|
|
2430
|
-
}
|
|
2431
|
-
}
|
|
2432
|
-
|
|
2433
|
-
// `raf` is here just to keep all the raw image detectors together.
|
|
2434
|
-
if (checkString('FUJIFILMCCD-RAW')) {
|
|
2435
|
-
return {
|
|
2436
|
-
ext: 'raf',
|
|
2437
|
-
mime: 'image/x-fujifilm-raf'
|
|
2438
|
-
};
|
|
2439
|
-
}
|
|
2440
|
-
if (checkString('Extended Module:')) {
|
|
2441
|
-
return {
|
|
2442
|
-
ext: 'xm',
|
|
2443
|
-
mime: 'audio/x-xm'
|
|
2444
|
-
};
|
|
2445
|
-
}
|
|
2446
|
-
if (checkString('Creative Voice File')) {
|
|
2447
|
-
return {
|
|
2448
|
-
ext: 'voc',
|
|
2449
|
-
mime: 'audio/x-voc'
|
|
2450
|
-
};
|
|
2451
|
-
}
|
|
2452
|
-
if (check([0x04, 0x00, 0x00, 0x00]) && buffer.length >= 16) {
|
|
2453
|
-
// Rough & quick check Pickle/ASAR
|
|
2454
|
-
const jsonSize = buffer.readUInt32LE(12);
|
|
2455
|
-
if (jsonSize > 12 && buffer.length >= jsonSize + 16) {
|
|
2456
|
-
try {
|
|
2457
|
-
const header = buffer.slice(16, jsonSize + 16).toString();
|
|
2458
|
-
const json = JSON.parse(header);
|
|
2459
|
-
// Check if Pickle is ASAR
|
|
2460
|
-
if (json.files) {
|
|
2461
|
-
// Final check, assuring Pickle/ASAR format
|
|
2462
|
-
return {
|
|
2463
|
-
ext: 'asar',
|
|
2464
|
-
mime: 'application/x-asar'
|
|
2465
|
-
};
|
|
2466
|
-
}
|
|
2467
|
-
} catch (_) {}
|
|
2468
|
-
}
|
|
2469
|
-
}
|
|
2470
|
-
if (check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) {
|
|
2471
|
-
return {
|
|
2472
|
-
ext: 'mxf',
|
|
2473
|
-
mime: 'application/mxf'
|
|
2474
|
-
};
|
|
2475
|
-
}
|
|
2476
|
-
if (checkString('SCRM', {
|
|
2477
|
-
offset: 44
|
|
2478
|
-
})) {
|
|
2479
|
-
return {
|
|
2480
|
-
ext: 's3m',
|
|
2481
|
-
mime: 'audio/x-s3m'
|
|
2482
|
-
};
|
|
2483
|
-
}
|
|
2484
|
-
if (check([0x47], {
|
|
2485
|
-
offset: 4
|
|
2486
|
-
}) && (check([0x47], {
|
|
2487
|
-
offset: 192
|
|
2488
|
-
}) || check([0x47], {
|
|
2489
|
-
offset: 196
|
|
2490
|
-
}))) {
|
|
2491
|
-
return {
|
|
2492
|
-
ext: 'mts',
|
|
2493
|
-
mime: 'video/mp2t'
|
|
2494
|
-
};
|
|
2495
|
-
}
|
|
2496
|
-
if (check([0x42, 0x4F, 0x4F, 0x4B, 0x4D, 0x4F, 0x42, 0x49], {
|
|
2497
|
-
offset: 60
|
|
2498
|
-
})) {
|
|
2499
|
-
return {
|
|
2500
|
-
ext: 'mobi',
|
|
2501
|
-
mime: 'application/x-mobipocket-ebook'
|
|
2502
|
-
};
|
|
2503
|
-
}
|
|
2504
|
-
if (check([0x44, 0x49, 0x43, 0x4D], {
|
|
2505
|
-
offset: 128
|
|
2506
|
-
})) {
|
|
2507
|
-
return {
|
|
2508
|
-
ext: 'dcm',
|
|
2509
|
-
mime: 'application/dicom'
|
|
2510
|
-
};
|
|
2511
|
-
}
|
|
2512
|
-
if (check([0x4C, 0x00, 0x00, 0x00, 0x01, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46])) {
|
|
2513
|
-
return {
|
|
2514
|
-
ext: 'lnk',
|
|
2515
|
-
mime: 'application/x.ms.shortcut' // Invented by us
|
|
2516
|
-
};
|
|
2517
|
-
}
|
|
2518
|
-
if (check([0x62, 0x6F, 0x6F, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00])) {
|
|
2519
|
-
return {
|
|
2520
|
-
ext: 'alias',
|
|
2521
|
-
mime: 'application/x.apple.alias' // Invented by us
|
|
2522
|
-
};
|
|
2523
|
-
}
|
|
2524
|
-
if (check([0x4C, 0x50], {
|
|
2525
|
-
offset: 34
|
|
2526
|
-
}) && (check([0x00, 0x00, 0x01], {
|
|
2527
|
-
offset: 8
|
|
2528
|
-
}) || check([0x01, 0x00, 0x02], {
|
|
2529
|
-
offset: 8
|
|
2530
|
-
}) || check([0x02, 0x00, 0x02], {
|
|
2531
|
-
offset: 8
|
|
2532
|
-
}))) {
|
|
2533
|
-
return {
|
|
2534
|
-
ext: 'eot',
|
|
2535
|
-
mime: 'application/vnd.ms-fontobject'
|
|
2536
|
-
};
|
|
2537
|
-
}
|
|
2538
|
-
if (check([0x06, 0x06, 0xED, 0xF5, 0xD8, 0x1D, 0x46, 0xE5, 0xBD, 0x31, 0xEF, 0xE7, 0xFE, 0x74, 0xB7, 0x1D])) {
|
|
2539
|
-
return {
|
|
2540
|
-
ext: 'indd',
|
|
2541
|
-
mime: 'application/x-indesign'
|
|
2542
|
-
};
|
|
2543
|
-
}
|
|
2544
|
-
|
|
2545
|
-
// Increase sample size from 256 to 512
|
|
2546
|
-
await tokenizer.peekBuffer(buffer, {
|
|
2547
|
-
length: Math.min(512, tokenizer.fileInfo.size),
|
|
2548
|
-
mayBeLess: true
|
|
2549
|
-
});
|
|
2550
|
-
|
|
2551
|
-
// Requires a buffer size of 512 bytes
|
|
2552
|
-
if (tarHeaderChecksumMatches(buffer)) {
|
|
2553
|
-
return {
|
|
2554
|
-
ext: 'tar',
|
|
2555
|
-
mime: 'application/x-tar'
|
|
2556
|
-
};
|
|
2557
|
-
}
|
|
2558
|
-
if (check([0xFF, 0xFE, 0xFF, 0x0E, 0x53, 0x00, 0x6B, 0x00, 0x65, 0x00, 0x74, 0x00, 0x63, 0x00, 0x68, 0x00, 0x55, 0x00, 0x70, 0x00, 0x20, 0x00, 0x4D, 0x00, 0x6F, 0x00, 0x64, 0x00, 0x65, 0x00, 0x6C, 0x00])) {
|
|
2559
|
-
return {
|
|
2560
|
-
ext: 'skp',
|
|
2561
|
-
mime: 'application/vnd.sketchup.skp'
|
|
2562
|
-
};
|
|
2563
|
-
}
|
|
2564
|
-
if (checkString('-----BEGIN PGP MESSAGE-----')) {
|
|
2565
|
-
return {
|
|
2566
|
-
ext: 'pgp',
|
|
2567
|
-
mime: 'application/pgp-encrypted'
|
|
2568
|
-
};
|
|
2569
|
-
}
|
|
2570
|
-
|
|
2571
|
-
// Check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE)
|
|
2572
|
-
if (buffer.length >= 2 && check([0xFF, 0xE0], {
|
|
2573
|
-
offset: 0,
|
|
2574
|
-
mask: [0xFF, 0xE0]
|
|
2575
|
-
})) {
|
|
2576
|
-
if (check([0x10], {
|
|
2577
|
-
offset: 1,
|
|
2578
|
-
mask: [0x16]
|
|
2579
|
-
})) {
|
|
2580
|
-
// Check for (ADTS) MPEG-2
|
|
2581
|
-
if (check([0x08], {
|
|
2582
|
-
offset: 1,
|
|
2583
|
-
mask: [0x08]
|
|
2584
|
-
})) {
|
|
2585
|
-
return {
|
|
2586
|
-
ext: 'aac',
|
|
2587
|
-
mime: 'audio/aac'
|
|
2588
|
-
};
|
|
2589
|
-
}
|
|
2590
|
-
|
|
2591
|
-
// Must be (ADTS) MPEG-4
|
|
2592
|
-
return {
|
|
2593
|
-
ext: 'aac',
|
|
2594
|
-
mime: 'audio/aac'
|
|
2595
|
-
};
|
|
2596
|
-
}
|
|
2597
|
-
|
|
2598
|
-
// MPEG 1 or 2 Layer 3 header
|
|
2599
|
-
// Check for MPEG layer 3
|
|
2600
|
-
if (check([0x02], {
|
|
2601
|
-
offset: 1,
|
|
2602
|
-
mask: [0x06]
|
|
2603
|
-
})) {
|
|
2604
|
-
return {
|
|
2605
|
-
ext: 'mp3',
|
|
2606
|
-
mime: 'audio/mpeg'
|
|
2607
|
-
};
|
|
2608
|
-
}
|
|
2609
|
-
|
|
2610
|
-
// Check for MPEG layer 2
|
|
2611
|
-
if (check([0x04], {
|
|
2612
|
-
offset: 1,
|
|
2613
|
-
mask: [0x06]
|
|
2614
|
-
})) {
|
|
2615
|
-
return {
|
|
2616
|
-
ext: 'mp2',
|
|
2617
|
-
mime: 'audio/mpeg'
|
|
2618
|
-
};
|
|
2619
|
-
}
|
|
2620
|
-
|
|
2621
|
-
// Check for MPEG layer 1
|
|
2622
|
-
if (check([0x06], {
|
|
2623
|
-
offset: 1,
|
|
2624
|
-
mask: [0x06]
|
|
2625
|
-
})) {
|
|
2626
|
-
return {
|
|
2627
|
-
ext: 'mp1',
|
|
2628
|
-
mime: 'audio/mpeg'
|
|
2629
|
-
};
|
|
2630
|
-
}
|
|
2631
|
-
}
|
|
2632
|
-
}
|
|
2633
|
-
const stream = readableStream => new Promise((resolve, reject) => {
|
|
2634
|
-
// Using `eval` to work around issues when bundling with Webpack
|
|
2635
|
-
const stream = eval('require')('stream'); // eslint-disable-line no-eval
|
|
2636
|
-
|
|
2637
|
-
readableStream.on('error', reject);
|
|
2638
|
-
readableStream.once('readable', async () => {
|
|
2639
|
-
// Set up output stream
|
|
2640
|
-
const pass = new stream.PassThrough();
|
|
2641
|
-
let outputStream;
|
|
2642
|
-
if (stream.pipeline) {
|
|
2643
|
-
outputStream = stream.pipeline(readableStream, pass, () => {});
|
|
2644
|
-
} else {
|
|
2645
|
-
outputStream = readableStream.pipe(pass);
|
|
2646
|
-
}
|
|
2647
|
-
|
|
2648
|
-
// Read the input stream and detect the filetype
|
|
2649
|
-
const chunk = readableStream.read(minimumBytes) || readableStream.read() || Buffer.alloc(0);
|
|
2650
|
-
try {
|
|
2651
|
-
const fileType = await fromBuffer(chunk);
|
|
2652
|
-
pass.fileType = fileType;
|
|
2653
|
-
} catch (error) {
|
|
2654
|
-
reject(error);
|
|
2655
|
-
}
|
|
2656
|
-
resolve(outputStream);
|
|
2657
|
-
});
|
|
2658
|
-
});
|
|
2659
|
-
const fileType = {
|
|
2660
|
-
fromStream,
|
|
2661
|
-
fromTokenizer,
|
|
2662
|
-
fromBuffer,
|
|
2663
|
-
stream
|
|
2664
|
-
};
|
|
2665
|
-
Object.defineProperty(fileType, 'extensions', {
|
|
2666
|
-
get() {
|
|
2667
|
-
return new Set(supported.extensions);
|
|
2668
|
-
}
|
|
2669
|
-
});
|
|
2670
|
-
Object.defineProperty(fileType, 'mimeTypes', {
|
|
2671
|
-
get() {
|
|
2672
|
-
return new Set(supported.mimeTypes);
|
|
2673
|
-
}
|
|
2674
|
-
});
|
|
2675
|
-
var core = fileType;
|
|
2676
|
-
|
|
2677
|
-
(function (module) {
|
|
2678
|
-
|
|
2679
|
-
const {
|
|
2680
|
-
ReadableWebToNodeStream
|
|
2681
|
-
} = lib$2;
|
|
2682
|
-
const core$1 = core;
|
|
2683
|
-
async function fromStream(stream) {
|
|
2684
|
-
const readableWebToNodeStream = new ReadableWebToNodeStream(stream);
|
|
2685
|
-
const fileType = await core$1.fromStream(readableWebToNodeStream);
|
|
2686
|
-
await readableWebToNodeStream.close();
|
|
2687
|
-
return fileType;
|
|
2688
|
-
}
|
|
2689
|
-
async function fromBlob(blob) {
|
|
2690
|
-
const buffer = await blobToArrayBuffer(blob);
|
|
2691
|
-
return core$1.fromBuffer(Buffer.from(buffer));
|
|
2692
|
-
}
|
|
2693
|
-
|
|
2694
|
-
/**
|
|
2695
|
-
Convert Blobs to ArrayBuffer.
|
|
2696
|
-
@param {Blob} blob - Web API Blob.
|
|
2697
|
-
@returns {Promise<ArrayBuffer>}
|
|
2698
|
-
*/
|
|
2699
|
-
function blobToArrayBuffer(blob) {
|
|
2700
|
-
if (blob.arrayBuffer) {
|
|
2701
|
-
return blob.arrayBuffer();
|
|
2702
|
-
}
|
|
2703
|
-
|
|
2704
|
-
// TODO: Remove when stop supporting older environments
|
|
2705
|
-
return new Promise((resolve, reject) => {
|
|
2706
|
-
const fileReader = new FileReader();
|
|
2707
|
-
fileReader.addEventListener('loadend', event => {
|
|
2708
|
-
resolve(event.target.result);
|
|
2709
|
-
});
|
|
2710
|
-
fileReader.addEventListener('error', event => {
|
|
2711
|
-
reject(new Error(event.message));
|
|
2712
|
-
});
|
|
2713
|
-
fileReader.addEventListener('abort', event => {
|
|
2714
|
-
reject(new Error(event.type));
|
|
2715
|
-
});
|
|
2716
|
-
fileReader.readAsArrayBuffer(blob);
|
|
2717
|
-
});
|
|
2718
|
-
}
|
|
2719
|
-
Object.assign(module.exports, core$1, {
|
|
2720
|
-
fromStream,
|
|
2721
|
-
fromBlob
|
|
2722
|
-
});
|
|
2723
|
-
})(browser$2);
|
|
2724
|
-
var browser = browser$2.exports;
|
|
2725
|
-
|
|
2726
|
-
var browser$1 = /*#__PURE__*/_mergeNamespaces({
|
|
2727
|
-
__proto__: null,
|
|
2728
|
-
'default': browser
|
|
2729
|
-
}, [browser$2.exports]);
|
|
2730
|
-
|
|
2731
|
-
export { browser$1 as b };
|
|
2732
|
-
//# sourceMappingURL=browser-15461226.js.map
|