firebase-admin-edge 1.1.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +102 -405
- package/dist/app-check/app-check-endpoints.d.ts +31 -0
- package/dist/app-check/app-check-endpoints.d.ts.map +1 -0
- package/dist/app-check/app-check-endpoints.js +75 -0
- package/dist/app-check/app-check-endpoints.js.map +1 -0
- package/dist/app-check/app-check-jwt.d.ts +16 -0
- package/dist/app-check/app-check-jwt.d.ts.map +1 -0
- package/dist/app-check/app-check-jwt.js +59 -0
- package/dist/app-check/app-check-jwt.js.map +1 -0
- package/dist/app-check/app-check.d.ts +43 -0
- package/dist/app-check/app-check.d.ts.map +1 -0
- package/dist/app-check/app-check.js +141 -0
- package/dist/app-check/app-check.js.map +1 -0
- package/dist/auth/auth-blocking-types.d.ts +44 -0
- package/dist/auth/auth-blocking-types.d.ts.map +1 -0
- package/dist/auth/auth-blocking-types.js +2 -0
- package/dist/auth/auth-blocking-types.js.map +1 -0
- package/dist/auth/auth-config-types.d.ts +146 -0
- package/dist/auth/auth-config-types.d.ts.map +1 -0
- package/dist/auth/auth-config-types.js +2 -0
- package/dist/auth/auth-config-types.js.map +1 -0
- package/dist/auth/auth-config.d.ts +15 -0
- package/dist/auth/auth-config.d.ts.map +1 -0
- package/dist/auth/auth-config.js +413 -0
- package/dist/auth/auth-config.js.map +1 -0
- package/dist/auth/auth-emulator.d.ts +7 -0
- package/dist/auth/auth-emulator.d.ts.map +1 -0
- package/dist/auth/auth-emulator.js +24 -0
- package/dist/auth/auth-emulator.js.map +1 -0
- package/dist/auth/auth-endpoint-errors.d.ts +2 -0
- package/dist/auth/auth-endpoint-errors.d.ts.map +1 -1
- package/dist/auth/auth-endpoint-errors.js +20 -1
- package/dist/auth/auth-endpoint-errors.js.map +1 -1
- package/dist/auth/auth-error-codes.d.ts +12 -0
- package/dist/auth/auth-error-codes.d.ts.map +1 -1
- package/dist/auth/auth-error-codes.js +12 -0
- package/dist/auth/auth-error-codes.js.map +1 -1
- package/dist/auth/email-action-request.d.ts +40 -0
- package/dist/auth/email-action-request.d.ts.map +1 -0
- package/dist/auth/email-action-request.js +80 -0
- package/dist/auth/email-action-request.js.map +1 -0
- package/dist/auth/email-link.d.ts +24 -0
- package/dist/auth/email-link.d.ts.map +1 -0
- package/dist/auth/email-link.js +103 -0
- package/dist/auth/email-link.js.map +1 -0
- package/dist/auth/firebase-admin-auth.d.ts +60 -12
- package/dist/auth/firebase-admin-auth.d.ts.map +1 -1
- package/dist/auth/firebase-admin-auth.js +455 -64
- package/dist/auth/firebase-admin-auth.js.map +1 -1
- package/dist/auth/firebase-auth-endpoints.d.ts +94 -4
- package/dist/auth/firebase-auth-endpoints.d.ts.map +1 -1
- package/dist/auth/firebase-auth-endpoints.js +304 -64
- package/dist/auth/firebase-auth-endpoints.js.map +1 -1
- package/dist/auth/firebase-auth.d.ts +78 -4
- package/dist/auth/firebase-auth.d.ts.map +1 -1
- package/dist/auth/firebase-auth.js +101 -8
- package/dist/auth/firebase-auth.js.map +1 -1
- package/dist/auth/firebase-jwt.d.ts +19 -10
- package/dist/auth/firebase-jwt.d.ts.map +1 -1
- package/dist/auth/firebase-jwt.js +176 -39
- package/dist/auth/firebase-jwt.js.map +1 -1
- package/dist/auth/firebase-types.d.ts +3 -0
- package/dist/auth/firebase-types.d.ts.map +1 -1
- package/dist/auth/google-oauth.d.ts +0 -1
- package/dist/auth/google-oauth.d.ts.map +1 -1
- package/dist/auth/google-oauth.js +16 -86
- package/dist/auth/google-oauth.js.map +1 -1
- package/dist/auth/project-config-manager.d.ts +10 -0
- package/dist/auth/project-config-manager.d.ts.map +1 -0
- package/dist/auth/project-config-manager.js +22 -0
- package/dist/auth/project-config-manager.js.map +1 -0
- package/dist/auth/provider-credential.d.ts +43 -0
- package/dist/auth/provider-credential.d.ts.map +1 -0
- package/dist/auth/provider-credential.js +107 -0
- package/dist/auth/provider-credential.js.map +1 -0
- package/dist/auth/provider-session.d.ts +10 -0
- package/dist/auth/provider-session.d.ts.map +1 -0
- package/dist/auth/provider-session.js +28 -0
- package/dist/auth/provider-session.js.map +1 -0
- package/dist/auth/tenant-manager.d.ts +17 -0
- package/dist/auth/tenant-manager.d.ts.map +1 -0
- package/dist/auth/tenant-manager.js +59 -0
- package/dist/auth/tenant-manager.js.map +1 -0
- package/dist/auth/user-batch.d.ts +21 -0
- package/dist/auth/user-batch.d.ts.map +1 -0
- package/dist/auth/user-batch.js +49 -0
- package/dist/auth/user-batch.js.map +1 -0
- package/dist/auth/user-import.d.ts +55 -0
- package/dist/auth/user-import.d.ts.map +1 -0
- package/dist/auth/user-import.js +208 -0
- package/dist/auth/user-import.js.map +1 -0
- package/dist/auth/user-request.d.ts +10 -0
- package/dist/auth/user-request.d.ts.map +1 -1
- package/dist/auth/user-request.js +56 -0
- package/dist/auth/user-request.js.map +1 -1
- package/dist/db/aggregate.d.ts +49 -0
- package/dist/db/aggregate.d.ts.map +1 -0
- package/dist/db/aggregate.js +115 -0
- package/dist/db/aggregate.js.map +1 -0
- package/dist/db/bulk-writer.d.ts +55 -0
- package/dist/db/bulk-writer.d.ts.map +1 -0
- package/dist/db/bulk-writer.js +257 -0
- package/dist/db/bulk-writer.js.map +1 -0
- package/dist/db/bundle-builder.d.ts +17 -0
- package/dist/db/bundle-builder.d.ts.map +1 -0
- package/dist/db/bundle-builder.js +118 -0
- package/dist/db/bundle-builder.js.map +1 -0
- package/dist/db/bytes.d.ts +12 -0
- package/dist/db/bytes.d.ts.map +1 -0
- package/dist/db/bytes.js +49 -0
- package/dist/db/bytes.js.map +1 -0
- package/dist/db/collection-group.d.ts +14 -0
- package/dist/db/collection-group.d.ts.map +1 -0
- package/dist/db/collection-group.js +43 -0
- package/dist/db/collection-group.js.map +1 -0
- package/dist/db/collection-reference.d.ts +21 -0
- package/dist/db/collection-reference.d.ts.map +1 -0
- package/dist/db/collection-reference.js +46 -0
- package/dist/db/collection-reference.js.map +1 -0
- package/dist/db/document-reference.d.ts +41 -0
- package/dist/db/document-reference.d.ts.map +1 -0
- package/dist/db/document-reference.js +125 -0
- package/dist/db/document-reference.js.map +1 -0
- package/dist/db/document-snapshot.d.ts +31 -0
- package/dist/db/document-snapshot.d.ts.map +1 -0
- package/dist/db/document-snapshot.js +103 -0
- package/dist/db/document-snapshot.js.map +1 -0
- package/dist/db/explain.d.ts +28 -0
- package/dist/db/explain.d.ts.map +1 -0
- package/dist/db/explain.js +61 -0
- package/dist/db/explain.js.map +1 -0
- package/dist/db/field-path.d.ts +10 -0
- package/dist/db/field-path.d.ts.map +1 -0
- package/dist/db/field-path.js +65 -0
- package/dist/db/field-path.js.map +1 -0
- package/dist/db/field-value.d.ts +17 -0
- package/dist/db/field-value.d.ts.map +1 -0
- package/dist/db/field-value.js +57 -0
- package/dist/db/field-value.js.map +1 -0
- package/dist/db/filter.d.ts +20 -0
- package/dist/db/filter.d.ts.map +1 -0
- package/dist/db/filter.js +48 -0
- package/dist/db/filter.js.map +1 -0
- package/dist/db/firestore-converter.d.ts +11 -0
- package/dist/db/firestore-converter.d.ts.map +1 -0
- package/dist/db/firestore-converter.js +14 -0
- package/dist/db/firestore-converter.js.map +1 -0
- package/dist/db/firestore-document.d.ts +62 -0
- package/dist/db/firestore-document.d.ts.map +1 -0
- package/dist/db/firestore-document.js +238 -0
- package/dist/db/firestore-document.js.map +1 -0
- package/dist/db/firestore-endpoints.d.ts +41 -0
- package/dist/db/firestore-endpoints.d.ts.map +1 -0
- package/dist/db/firestore-endpoints.js +735 -0
- package/dist/db/firestore-endpoints.js.map +1 -0
- package/dist/db/firestore-error-codes.d.ts +24 -0
- package/dist/db/firestore-error-codes.d.ts.map +1 -0
- package/dist/db/firestore-error-codes.js +24 -0
- package/dist/db/firestore-error-codes.js.map +1 -0
- package/dist/db/firestore-logging.d.ts +23 -0
- package/dist/db/firestore-logging.d.ts.map +1 -0
- package/dist/db/firestore-logging.js +41 -0
- package/dist/db/firestore-logging.js.map +1 -0
- package/dist/db/firestore-path.d.ts +4 -0
- package/dist/db/firestore-path.d.ts.map +1 -0
- package/dist/db/firestore-path.js +37 -0
- package/dist/db/firestore-path.js.map +1 -0
- package/dist/db/firestore-results.d.ts +12 -0
- package/dist/db/firestore-results.d.ts.map +1 -0
- package/dist/db/firestore-results.js +19 -0
- package/dist/db/firestore-results.js.map +1 -0
- package/dist/db/firestore-settings.d.ts +22 -0
- package/dist/db/firestore-settings.d.ts.map +1 -0
- package/dist/db/firestore-settings.js +83 -0
- package/dist/db/firestore-settings.js.map +1 -0
- package/dist/db/firestore-telemetry.d.ts +21 -0
- package/dist/db/firestore-telemetry.d.ts.map +1 -0
- package/dist/db/firestore-telemetry.js +84 -0
- package/dist/db/firestore-telemetry.js.map +1 -0
- package/dist/db/firestore-types.d.ts +25 -0
- package/dist/db/firestore-types.d.ts.map +1 -0
- package/dist/db/firestore-types.js +2 -0
- package/dist/db/firestore-types.js.map +1 -0
- package/dist/db/firestore.d.ts +151 -0
- package/dist/db/firestore.d.ts.map +1 -0
- package/dist/db/firestore.js +505 -0
- package/dist/db/firestore.js.map +1 -0
- package/dist/db/geo-point.d.ts +11 -0
- package/dist/db/geo-point.d.ts.map +1 -0
- package/dist/db/geo-point.js +29 -0
- package/dist/db/geo-point.js.map +1 -0
- package/dist/db/json-stream.d.ts +3 -0
- package/dist/db/json-stream.d.ts.map +1 -0
- package/dist/db/json-stream.js +117 -0
- package/dist/db/json-stream.js.map +1 -0
- package/dist/db/pipeline-expression.d.ts +293 -0
- package/dist/db/pipeline-expression.d.ts.map +1 -0
- package/dist/db/pipeline-expression.js +1436 -0
- package/dist/db/pipeline-expression.js.map +1 -0
- package/dist/db/pipeline-query.d.ts +6 -0
- package/dist/db/pipeline-query.d.ts.map +1 -0
- package/dist/db/pipeline-query.js +91 -0
- package/dist/db/pipeline-query.js.map +1 -0
- package/dist/db/pipeline.d.ts +120 -0
- package/dist/db/pipeline.d.ts.map +1 -0
- package/dist/db/pipeline.js +396 -0
- package/dist/db/pipeline.js.map +1 -0
- package/dist/db/query-document-snapshot.d.ts +2 -0
- package/dist/db/query-document-snapshot.d.ts.map +1 -0
- package/dist/db/query-document-snapshot.js +2 -0
- package/dist/db/query-document-snapshot.js.map +1 -0
- package/dist/db/query-partition.d.ts +14 -0
- package/dist/db/query-partition.d.ts.map +1 -0
- package/dist/db/query-partition.js +32 -0
- package/dist/db/query-partition.js.map +1 -0
- package/dist/db/query-request.d.ts +96 -0
- package/dist/db/query-request.d.ts.map +1 -0
- package/dist/db/query-request.js +283 -0
- package/dist/db/query-request.js.map +1 -0
- package/dist/db/query.d.ts +129 -0
- package/dist/db/query.d.ts.map +1 -0
- package/dist/db/query.js +468 -0
- package/dist/db/query.js.map +1 -0
- package/dist/db/recursive-delete.d.ts +6 -0
- package/dist/db/recursive-delete.d.ts.map +1 -0
- package/dist/db/recursive-delete.js +38 -0
- package/dist/db/recursive-delete.js.map +1 -0
- package/dist/db/snapshot-listener.d.ts +10 -0
- package/dist/db/snapshot-listener.d.ts.map +1 -0
- package/dist/db/snapshot-listener.js +71 -0
- package/dist/db/snapshot-listener.js.map +1 -0
- package/dist/db/timestamp.d.ts +29 -0
- package/dist/db/timestamp.d.ts.map +1 -0
- package/dist/db/timestamp.js +98 -0
- package/dist/db/timestamp.js.map +1 -0
- package/dist/db/transaction.d.ts +44 -0
- package/dist/db/transaction.d.ts.map +1 -0
- package/dist/db/transaction.js +177 -0
- package/dist/db/transaction.js.map +1 -0
- package/dist/db/value-equality.d.ts +3 -0
- package/dist/db/value-equality.d.ts.map +1 -0
- package/dist/db/value-equality.js +29 -0
- package/dist/db/value-equality.js.map +1 -0
- package/dist/db/vector-query.d.ts +38 -0
- package/dist/db/vector-query.d.ts.map +1 -0
- package/dist/db/vector-query.js +110 -0
- package/dist/db/vector-query.js.map +1 -0
- package/dist/db/vector-value.d.ts +8 -0
- package/dist/db/vector-value.d.ts.map +1 -0
- package/dist/db/vector-value.js +25 -0
- package/dist/db/vector-value.js.map +1 -0
- package/dist/db/write-batch.d.ts +25 -0
- package/dist/db/write-batch.d.ts.map +1 -0
- package/dist/db/write-batch.js +72 -0
- package/dist/db/write-batch.js.map +1 -0
- package/dist/db/write-request.d.ts +36 -0
- package/dist/db/write-request.d.ts.map +1 -0
- package/dist/db/write-request.js +257 -0
- package/dist/db/write-request.js.map +1 -0
- package/dist/firebase-edge-server.d.ts +143 -36
- package/dist/firebase-edge-server.d.ts.map +1 -1
- package/dist/firebase-edge-server.js +466 -257
- package/dist/firebase-edge-server.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/rest-fetch.d.ts +1 -1
- package/dist/rest-fetch.d.ts.map +1 -1
- package/dist/storage/storage-acl.d.ts +48 -0
- package/dist/storage/storage-acl.d.ts.map +1 -0
- package/dist/storage/storage-acl.js +101 -0
- package/dist/storage/storage-acl.js.map +1 -0
- package/dist/storage/storage-bucket-endpoints.d.ts +10 -0
- package/dist/storage/storage-bucket-endpoints.d.ts.map +1 -0
- package/dist/storage/storage-bucket-endpoints.js +514 -0
- package/dist/storage/storage-bucket-endpoints.js.map +1 -0
- package/dist/storage/storage-bucket-types.d.ts +183 -0
- package/dist/storage/storage-bucket-types.d.ts.map +1 -0
- package/dist/storage/storage-bucket-types.js +2 -0
- package/dist/storage/storage-bucket-types.js.map +1 -0
- package/dist/storage/storage-bucket.d.ts +122 -0
- package/dist/storage/storage-bucket.d.ts.map +1 -0
- package/dist/storage/storage-bucket.js +544 -0
- package/dist/storage/storage-bucket.js.map +1 -0
- package/dist/storage/storage-channel.d.ts +10 -0
- package/dist/storage/storage-channel.d.ts.map +1 -0
- package/dist/storage/storage-channel.js +15 -0
- package/dist/storage/storage-channel.js.map +1 -0
- package/dist/storage/storage-checksum.d.ts +35 -0
- package/dist/storage/storage-checksum.d.ts.map +1 -0
- package/dist/storage/storage-checksum.js +312 -0
- package/dist/storage/storage-checksum.js.map +1 -0
- package/dist/storage/storage-endpoints.d.ts +14 -0
- package/dist/storage/storage-endpoints.d.ts.map +1 -0
- package/dist/storage/storage-endpoints.js +721 -0
- package/dist/storage/storage-endpoints.js.map +1 -0
- package/dist/storage/storage-file.d.ts +126 -0
- package/dist/storage/storage-file.d.ts.map +1 -0
- package/dist/storage/storage-file.js +604 -0
- package/dist/storage/storage-file.js.map +1 -0
- package/dist/storage/storage-hmac-key.d.ts +26 -0
- package/dist/storage/storage-hmac-key.d.ts.map +1 -0
- package/dist/storage/storage-hmac-key.js +45 -0
- package/dist/storage/storage-hmac-key.js.map +1 -0
- package/dist/storage/storage-iam.d.ts +20 -0
- package/dist/storage/storage-iam.d.ts.map +1 -0
- package/dist/storage/storage-iam.js +43 -0
- package/dist/storage/storage-iam.js.map +1 -0
- package/dist/storage/storage-md5.d.ts +11 -0
- package/dist/storage/storage-md5.d.ts.map +1 -0
- package/dist/storage/storage-md5.js +96 -0
- package/dist/storage/storage-md5.js.map +1 -0
- package/dist/storage/storage-notification.d.ts +24 -0
- package/dist/storage/storage-notification.d.ts.map +1 -0
- package/dist/storage/storage-notification.js +40 -0
- package/dist/storage/storage-notification.js.map +1 -0
- package/dist/storage/storage-progress.d.ts +4 -0
- package/dist/storage/storage-progress.d.ts.map +1 -0
- package/dist/storage/storage-progress.js +17 -0
- package/dist/storage/storage-progress.js.map +1 -0
- package/dist/storage/storage-reference-endpoints.d.ts +63 -0
- package/dist/storage/storage-reference-endpoints.d.ts.map +1 -0
- package/dist/storage/storage-reference-endpoints.js +276 -0
- package/dist/storage/storage-reference-endpoints.js.map +1 -0
- package/dist/storage/storage-reference-helpers.d.ts +12 -0
- package/dist/storage/storage-reference-helpers.d.ts.map +1 -0
- package/dist/storage/storage-reference-helpers.js +72 -0
- package/dist/storage/storage-reference-helpers.js.map +1 -0
- package/dist/storage/storage-reference-signing.d.ts +40 -0
- package/dist/storage/storage-reference-signing.d.ts.map +1 -0
- package/dist/storage/storage-reference-signing.js +289 -0
- package/dist/storage/storage-reference-signing.js.map +1 -0
- package/dist/storage/storage-reference-types.d.ts +76 -0
- package/dist/storage/storage-reference-types.d.ts.map +1 -0
- package/dist/storage/storage-reference-types.js +2 -0
- package/dist/storage/storage-reference-types.js.map +1 -0
- package/dist/storage/storage-results.d.ts +8 -0
- package/dist/storage/storage-results.d.ts.map +1 -0
- package/dist/storage/storage-results.js +32 -0
- package/dist/storage/storage-results.js.map +1 -0
- package/dist/storage/storage-resumable.d.ts +18 -0
- package/dist/storage/storage-resumable.d.ts.map +1 -0
- package/dist/storage/storage-resumable.js +166 -0
- package/dist/storage/storage-resumable.js.map +1 -0
- package/dist/storage/storage-retry.d.ts +9 -0
- package/dist/storage/storage-retry.d.ts.map +1 -0
- package/dist/storage/storage-retry.js +104 -0
- package/dist/storage/storage-retry.js.map +1 -0
- package/dist/storage/storage-signed-url.d.ts +9 -0
- package/dist/storage/storage-signed-url.d.ts.map +1 -0
- package/dist/storage/storage-signed-url.js +96 -0
- package/dist/storage/storage-signed-url.js.map +1 -0
- package/dist/storage/storage-special-endpoints.d.ts +10 -0
- package/dist/storage/storage-special-endpoints.d.ts.map +1 -0
- package/dist/storage/storage-special-endpoints.js +394 -0
- package/dist/storage/storage-special-endpoints.js.map +1 -0
- package/dist/storage/storage-special-types.d.ts +154 -0
- package/dist/storage/storage-special-types.d.ts.map +1 -0
- package/dist/storage/storage-special-types.js +2 -0
- package/dist/storage/storage-special-types.js.map +1 -0
- package/dist/storage/storage-types.d.ts +251 -0
- package/dist/storage/storage-types.d.ts.map +1 -0
- package/dist/storage/storage-types.js +2 -0
- package/dist/storage/storage-types.js.map +1 -0
- package/dist/storage/storage-upload-stream.d.ts +41 -0
- package/dist/storage/storage-upload-stream.d.ts.map +1 -0
- package/dist/storage/storage-upload-stream.js +335 -0
- package/dist/storage/storage-upload-stream.js.map +1 -0
- package/dist/storage/storage-xml-signing.d.ts +17 -0
- package/dist/storage/storage-xml-signing.d.ts.map +1 -0
- package/dist/storage/storage-xml-signing.js +144 -0
- package/dist/storage/storage-xml-signing.js.map +1 -0
- package/dist/storage/storage.d.ts +152 -0
- package/dist/storage/storage.d.ts.map +1 -0
- package/dist/storage/storage.js +532 -0
- package/dist/storage/storage.js.map +1 -0
- package/dist/utils/token-cache.d.ts.map +1 -1
- package/dist/utils/token-cache.js +3 -2
- package/dist/utils/token-cache.js.map +1 -1
- package/package.json +22 -6
- package/dist/auth/auth-endpoint-errors.test.d.ts +0 -2
- package/dist/auth/auth-endpoint-errors.test.d.ts.map +0 -1
- package/dist/auth/auth-endpoint-errors.test.js +0 -411
- package/dist/auth/auth-endpoint-errors.test.js.map +0 -1
- package/dist/auth/errors.test.d.ts +0 -2
- package/dist/auth/errors.test.d.ts.map +0 -1
- package/dist/auth/errors.test.js +0 -123
- package/dist/auth/errors.test.js.map +0 -1
- package/dist/auth/firebase-admin-auth.test.d.ts +0 -2
- package/dist/auth/firebase-admin-auth.test.d.ts.map +0 -1
- package/dist/auth/firebase-admin-auth.test.js +0 -923
- package/dist/auth/firebase-admin-auth.test.js.map +0 -1
- package/dist/auth/firebase-auth-endpoints.test.d.ts +0 -2
- package/dist/auth/firebase-auth-endpoints.test.d.ts.map +0 -1
- package/dist/auth/firebase-auth-endpoints.test.js +0 -957
- package/dist/auth/firebase-auth-endpoints.test.js.map +0 -1
- package/dist/auth/firebase-auth.test.d.ts +0 -2
- package/dist/auth/firebase-auth.test.d.ts.map +0 -1
- package/dist/auth/firebase-auth.test.js +0 -167
- package/dist/auth/firebase-auth.test.js.map +0 -1
- package/dist/auth/firebase-jwt.test.d.ts +0 -2
- package/dist/auth/firebase-jwt.test.d.ts.map +0 -1
- package/dist/auth/firebase-jwt.test.js +0 -164
- package/dist/auth/firebase-jwt.test.js.map +0 -1
- package/dist/auth/github-oauth.d.ts +0 -19
- package/dist/auth/github-oauth.d.ts.map +0 -1
- package/dist/auth/github-oauth.js +0 -145
- package/dist/auth/github-oauth.js.map +0 -1
- package/dist/auth/github-oauth.test.d.ts +0 -2
- package/dist/auth/github-oauth.test.d.ts.map +0 -1
- package/dist/auth/github-oauth.test.js +0 -202
- package/dist/auth/github-oauth.test.js.map +0 -1
- package/dist/auth/google-oauth.test.d.ts +0 -2
- package/dist/auth/google-oauth.test.d.ts.map +0 -1
- package/dist/auth/google-oauth.test.js +0 -200
- package/dist/auth/google-oauth.test.js.map +0 -1
- package/dist/auth/oauth.d.ts +0 -3
- package/dist/auth/oauth.d.ts.map +0 -1
- package/dist/auth/oauth.js +0 -48
- package/dist/auth/oauth.js.map +0 -1
- package/dist/auth/oauth.test.d.ts +0 -2
- package/dist/auth/oauth.test.d.ts.map +0 -1
- package/dist/auth/oauth.test.js +0 -109
- package/dist/auth/oauth.test.js.map +0 -1
- package/dist/auth/user-record.test.d.ts +0 -2
- package/dist/auth/user-record.test.d.ts.map +0 -1
- package/dist/auth/user-record.test.js +0 -198
- package/dist/auth/user-record.test.js.map +0 -1
- package/dist/auth/user-request.test.d.ts +0 -2
- package/dist/auth/user-request.test.d.ts.map +0 -1
- package/dist/auth/user-request.test.js +0 -269
- package/dist/auth/user-request.test.js.map +0 -1
- package/dist/firebase-edge-errors.test.d.ts +0 -2
- package/dist/firebase-edge-errors.test.d.ts.map +0 -1
- package/dist/firebase-edge-errors.test.js +0 -72
- package/dist/firebase-edge-errors.test.js.map +0 -1
- package/dist/firebase-edge-server.test.d.ts +0 -2
- package/dist/firebase-edge-server.test.d.ts.map +0 -1
- package/dist/firebase-edge-server.test.js +0 -264
- package/dist/firebase-edge-server.test.js.map +0 -1
- package/dist/rest-fetch.test.d.ts +0 -2
- package/dist/rest-fetch.test.d.ts.map +0 -1
- package/dist/rest-fetch.test.js +0 -164
- package/dist/rest-fetch.test.js.map +0 -1
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import type { FirebaseEdgeError } from '../auth/errors.js';
|
|
2
|
+
import type { CRC32CValidatorGenerator } from './storage-checksum.js';
|
|
3
|
+
export type StorageResult<T> = {
|
|
4
|
+
error: null;
|
|
5
|
+
data: T;
|
|
6
|
+
} | {
|
|
7
|
+
error: FirebaseEdgeError;
|
|
8
|
+
data: null;
|
|
9
|
+
};
|
|
10
|
+
/** Cloud Storage object metadata. Large integer fields stay as strings. */
|
|
11
|
+
export interface StorageFileMetadata {
|
|
12
|
+
name: string;
|
|
13
|
+
bucket: string;
|
|
14
|
+
generation: string;
|
|
15
|
+
metageneration?: string;
|
|
16
|
+
size: string;
|
|
17
|
+
contentType?: string;
|
|
18
|
+
cacheControl?: string;
|
|
19
|
+
contentDisposition?: string;
|
|
20
|
+
contentEncoding?: string;
|
|
21
|
+
contentLanguage?: string;
|
|
22
|
+
timeCreated?: string;
|
|
23
|
+
updated?: string;
|
|
24
|
+
md5Hash?: string;
|
|
25
|
+
crc32c?: string;
|
|
26
|
+
metadata?: Record<string, string>;
|
|
27
|
+
restoreToken?: string;
|
|
28
|
+
softDeleteTime?: string;
|
|
29
|
+
hardDeleteTime?: string;
|
|
30
|
+
storageClass?: string;
|
|
31
|
+
componentCount?: number;
|
|
32
|
+
retentionExpirationTime?: string;
|
|
33
|
+
}
|
|
34
|
+
export type StorageUploadData = string | Blob | Uint8Array<ArrayBuffer> | ArrayBuffer;
|
|
35
|
+
export interface StoragePreconditions {
|
|
36
|
+
userProject?: string;
|
|
37
|
+
ifGenerationMatch?: string;
|
|
38
|
+
ifGenerationNotMatch?: string;
|
|
39
|
+
ifMetagenerationMatch?: string;
|
|
40
|
+
ifMetagenerationNotMatch?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface StorageReadOptions extends StoragePreconditions {
|
|
43
|
+
softDeleted?: boolean;
|
|
44
|
+
restoreToken?: string;
|
|
45
|
+
generation?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface StorageDownloadOptions extends StorageReadOptions {
|
|
48
|
+
crc32cGenerator?: CRC32CValidatorGenerator;
|
|
49
|
+
checksumAlgorithm?: 'crc32c' | 'md5';
|
|
50
|
+
/** Inclusive byte offsets. */
|
|
51
|
+
start?: number;
|
|
52
|
+
end?: number;
|
|
53
|
+
verifyChecksum?: boolean;
|
|
54
|
+
}
|
|
55
|
+
export interface StorageTransferProgress {
|
|
56
|
+
bytesTransferred: number;
|
|
57
|
+
totalBytes?: number;
|
|
58
|
+
complete: boolean;
|
|
59
|
+
}
|
|
60
|
+
export type StorageProgressCallback = (progress: StorageTransferProgress) => void | Promise<void>;
|
|
61
|
+
export interface StorageUploadOptions extends StoragePreconditions {
|
|
62
|
+
crc32cGenerator?: CRC32CValidatorGenerator;
|
|
63
|
+
predefinedAcl?: string;
|
|
64
|
+
kmsKeyName?: string;
|
|
65
|
+
md5Hash?: 'auto' | string;
|
|
66
|
+
metadata?: StorageMetadataUpdate;
|
|
67
|
+
contentType?: string;
|
|
68
|
+
/** Use "0" to create only if the object does not already exist. */
|
|
69
|
+
ifGenerationMatch?: string;
|
|
70
|
+
crc32c?: 'auto' | string;
|
|
71
|
+
onProgress?: StorageProgressCallback;
|
|
72
|
+
}
|
|
73
|
+
export interface StorageDeleteOptions extends StorageReadOptions {
|
|
74
|
+
ifGenerationMatch?: string;
|
|
75
|
+
}
|
|
76
|
+
export interface StorageMetadataUpdate {
|
|
77
|
+
retention?: {
|
|
78
|
+
mode: 'Locked' | 'Unlocked';
|
|
79
|
+
retainUntilTime: string;
|
|
80
|
+
} | null;
|
|
81
|
+
acl?: import('./storage-special-types.js').StorageAclEntry[] | null;
|
|
82
|
+
storageClass?: string;
|
|
83
|
+
temporaryHold?: boolean;
|
|
84
|
+
eventBasedHold?: boolean;
|
|
85
|
+
customTime?: string;
|
|
86
|
+
contentType?: string | null;
|
|
87
|
+
cacheControl?: string | null;
|
|
88
|
+
contentDisposition?: string | null;
|
|
89
|
+
contentEncoding?: string | null;
|
|
90
|
+
contentLanguage?: string | null;
|
|
91
|
+
/** Null removes all custom metadata; null values remove individual keys. */
|
|
92
|
+
metadata?: Record<string, string | number | boolean | null> | null;
|
|
93
|
+
}
|
|
94
|
+
export interface StorageMetadataOptions extends StorageDeleteOptions {
|
|
95
|
+
overrideUnlockedRetention?: boolean;
|
|
96
|
+
ifMetagenerationMatch?: string;
|
|
97
|
+
}
|
|
98
|
+
export interface StorageCopyOptions extends StoragePreconditions {
|
|
99
|
+
predefinedAcl?: string;
|
|
100
|
+
token?: string;
|
|
101
|
+
metadata?: StorageMetadataUpdate;
|
|
102
|
+
destinationKmsKeyName?: string;
|
|
103
|
+
destinationEncryptionKey?: string | Uint8Array<ArrayBuffer>;
|
|
104
|
+
destinationBucket?: string;
|
|
105
|
+
sourceGeneration?: string;
|
|
106
|
+
ifSourceGenerationMatch?: string;
|
|
107
|
+
ifSourceMetagenerationMatch?: string;
|
|
108
|
+
}
|
|
109
|
+
export interface StorageResumableOptions extends Omit<StorageUploadOptions, 'crc32c' | 'md5Hash' | 'onProgress' | 'crc32cGenerator'> {
|
|
110
|
+
md5Hash?: string;
|
|
111
|
+
origin?: string;
|
|
112
|
+
metadata?: StorageMetadataUpdate;
|
|
113
|
+
size?: number;
|
|
114
|
+
crc32c?: string;
|
|
115
|
+
}
|
|
116
|
+
export interface StorageChunkOptions {
|
|
117
|
+
md5Hash?: string;
|
|
118
|
+
offset: number;
|
|
119
|
+
/** Omit for a non-final chunk when the total size is not known yet. */
|
|
120
|
+
totalSize?: number;
|
|
121
|
+
/** Whole-object checksum, supplied only on the final chunk. */
|
|
122
|
+
crc32c?: string;
|
|
123
|
+
onProgress?: StorageProgressCallback;
|
|
124
|
+
}
|
|
125
|
+
export type StorageUploadProgress = {
|
|
126
|
+
complete: false;
|
|
127
|
+
nextOffset: number;
|
|
128
|
+
} | {
|
|
129
|
+
complete: true;
|
|
130
|
+
metadata: StorageFileMetadata;
|
|
131
|
+
};
|
|
132
|
+
export interface StorageComposeSource {
|
|
133
|
+
name: string;
|
|
134
|
+
generation?: string;
|
|
135
|
+
objectPreconditions?: {
|
|
136
|
+
ifGenerationMatch: string;
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
export interface StorageComposeOptions extends StoragePreconditions {
|
|
140
|
+
kmsKeyName?: string;
|
|
141
|
+
destinationPredefinedAcl?: string;
|
|
142
|
+
metadata?: StorageMetadataUpdate;
|
|
143
|
+
}
|
|
144
|
+
export interface StorageRestoreOptions extends StoragePreconditions {
|
|
145
|
+
projection?: 'full' | 'noAcl';
|
|
146
|
+
generation: string;
|
|
147
|
+
restoreToken?: string;
|
|
148
|
+
copySourceAcl?: boolean;
|
|
149
|
+
}
|
|
150
|
+
export interface StorageDeleteTarget extends StorageDeleteOptions {
|
|
151
|
+
name: string;
|
|
152
|
+
}
|
|
153
|
+
export interface StorageBatchDeleteOptions {
|
|
154
|
+
concurrency?: number;
|
|
155
|
+
ignoreNotFound?: boolean;
|
|
156
|
+
}
|
|
157
|
+
export interface StorageBatchDeleteResult {
|
|
158
|
+
results: Array<{
|
|
159
|
+
name: string;
|
|
160
|
+
generation?: string;
|
|
161
|
+
error: FirebaseEdgeError | null;
|
|
162
|
+
}>;
|
|
163
|
+
}
|
|
164
|
+
export interface StorageSignedUrlOptions {
|
|
165
|
+
action: 'read' | 'write';
|
|
166
|
+
/** Integer lifetime from 1 to 604800 seconds. Defaults to 900. */
|
|
167
|
+
expiresInSeconds?: number;
|
|
168
|
+
/** For write URLs, the caller must send this exact Content-Type. */
|
|
169
|
+
contentType?: string;
|
|
170
|
+
}
|
|
171
|
+
export interface StorageListOptions {
|
|
172
|
+
userProject?: string;
|
|
173
|
+
fields?: string;
|
|
174
|
+
includeFoldersAsPrefixes?: boolean;
|
|
175
|
+
includeTrailingDelimiter?: boolean;
|
|
176
|
+
projection?: 'full' | 'noAcl';
|
|
177
|
+
prefix?: string;
|
|
178
|
+
delimiter?: string;
|
|
179
|
+
maxResults?: number;
|
|
180
|
+
pageToken?: string;
|
|
181
|
+
versions?: boolean;
|
|
182
|
+
softDeleted?: boolean;
|
|
183
|
+
startOffset?: string;
|
|
184
|
+
endOffset?: string;
|
|
185
|
+
matchGlob?: string;
|
|
186
|
+
}
|
|
187
|
+
export interface StorageListResult {
|
|
188
|
+
files: StorageFileMetadata[];
|
|
189
|
+
prefixes: string[];
|
|
190
|
+
nextPageToken?: string;
|
|
191
|
+
}
|
|
192
|
+
/** @internal */
|
|
193
|
+
export type StorageOperation = {
|
|
194
|
+
kind: 'upload';
|
|
195
|
+
name: string;
|
|
196
|
+
body: StorageUploadData;
|
|
197
|
+
options: StorageUploadOptions;
|
|
198
|
+
} | {
|
|
199
|
+
kind: 'download' | 'stream';
|
|
200
|
+
name: string;
|
|
201
|
+
options?: StorageDownloadOptions;
|
|
202
|
+
} | {
|
|
203
|
+
kind: 'metadata';
|
|
204
|
+
name: string;
|
|
205
|
+
options?: StorageReadOptions;
|
|
206
|
+
} | {
|
|
207
|
+
kind: 'resumable';
|
|
208
|
+
name: string;
|
|
209
|
+
options: StorageResumableOptions;
|
|
210
|
+
} | {
|
|
211
|
+
kind: 'compose';
|
|
212
|
+
name: string;
|
|
213
|
+
sources: StorageComposeSource[];
|
|
214
|
+
options: StorageComposeOptions;
|
|
215
|
+
} | {
|
|
216
|
+
kind: 'restore';
|
|
217
|
+
name: string;
|
|
218
|
+
options: StorageRestoreOptions;
|
|
219
|
+
} | {
|
|
220
|
+
kind: 'delete';
|
|
221
|
+
name: string;
|
|
222
|
+
options: StorageDeleteOptions;
|
|
223
|
+
} | {
|
|
224
|
+
kind: 'updateMetadata';
|
|
225
|
+
name: string;
|
|
226
|
+
metadata: StorageMetadataUpdate;
|
|
227
|
+
options: StorageMetadataOptions;
|
|
228
|
+
} | {
|
|
229
|
+
kind: 'copy';
|
|
230
|
+
name: string;
|
|
231
|
+
destination: string;
|
|
232
|
+
options: StorageCopyOptions;
|
|
233
|
+
} | {
|
|
234
|
+
kind: 'list';
|
|
235
|
+
options: StorageListOptions;
|
|
236
|
+
};
|
|
237
|
+
/** @internal */
|
|
238
|
+
export interface StorageResponses {
|
|
239
|
+
upload: StorageFileMetadata;
|
|
240
|
+
download: Uint8Array<ArrayBuffer>;
|
|
241
|
+
metadata: StorageFileMetadata;
|
|
242
|
+
delete: void;
|
|
243
|
+
list: StorageListResult;
|
|
244
|
+
updateMetadata: StorageFileMetadata;
|
|
245
|
+
copy: StorageFileMetadata;
|
|
246
|
+
stream: Response;
|
|
247
|
+
resumable: string;
|
|
248
|
+
compose: StorageFileMetadata;
|
|
249
|
+
restore: StorageFileMetadata;
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=storage-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-types.d.ts","sourceRoot":"","sources":["../../src/storage/storage-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-types.js","sourceRoot":"","sources":["../../src/storage/storage-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { CRC32CValidatorGenerator } from './storage-checksum.js';
|
|
2
|
+
import type { StorageUploadData, StorageResumableOptions, StorageChunkOptions, StorageUploadProgress, StorageFileMetadata, StorageResult, StorageProgressCallback } from './storage-types.js';
|
|
3
|
+
export interface StorageUploadStreamOptions extends Omit<StorageResumableOptions, 'crc32c' | 'md5Hash'> {
|
|
4
|
+
md5Hash?: string | 'auto';
|
|
5
|
+
isPartialUpload?: boolean;
|
|
6
|
+
crc32cGenerator?: CRC32CValidatorGenerator;
|
|
7
|
+
/** The input starts at this session offset; supply the preceding CRC32C when validating. */
|
|
8
|
+
offset?: number;
|
|
9
|
+
resumeCRC32C?: string | number;
|
|
10
|
+
/** Multiple of 256 KiB, up to 64 MiB. Defaults to 8 MiB. */
|
|
11
|
+
chunkSize?: number;
|
|
12
|
+
/** Recovery attempts per chunk. Defaults to 2. */
|
|
13
|
+
maxResumeAttempts?: number;
|
|
14
|
+
verifyChecksum?: boolean;
|
|
15
|
+
sessionUri?: string;
|
|
16
|
+
/** Automatic CRC32C is computed incrementally and verified on completion. */
|
|
17
|
+
crc32c?: string | 'auto';
|
|
18
|
+
onProgress?: StorageProgressCallback;
|
|
19
|
+
onSession?: (sessionUri: string) => void | Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
export interface StoragePartialUpload {
|
|
22
|
+
complete: false;
|
|
23
|
+
sessionUri: string;
|
|
24
|
+
nextOffset: number;
|
|
25
|
+
crc32c?: string;
|
|
26
|
+
}
|
|
27
|
+
/** @internal Public Storage methods supply authentication and endpoint handling. */
|
|
28
|
+
export interface StorageUploadTransport {
|
|
29
|
+
createResumableUpload(name: string, options: StorageResumableOptions): Promise<StorageResult<string>>;
|
|
30
|
+
uploadChunk(session: string, body: StorageUploadData, options: StorageChunkOptions): Promise<StorageResult<StorageUploadProgress>>;
|
|
31
|
+
getUploadStatus(session: string, totalSize?: number): Promise<StorageResult<StorageUploadProgress>>;
|
|
32
|
+
}
|
|
33
|
+
/** @internal Retain the current chunk while reconciling uncertain acknowledgements. */
|
|
34
|
+
export declare function uploadStorageStream(transport: StorageUploadTransport, name: string, input: StorageUploadData | ReadableStream<Uint8Array>, options: StorageUploadStreamOptions & {
|
|
35
|
+
isPartialUpload: true;
|
|
36
|
+
}): Promise<StoragePartialUpload>;
|
|
37
|
+
export declare function uploadStorageStream(transport: StorageUploadTransport, name: string, input: StorageUploadData | ReadableStream<Uint8Array>, options?: StorageUploadStreamOptions & {
|
|
38
|
+
isPartialUpload?: false;
|
|
39
|
+
}): Promise<StorageFileMetadata>;
|
|
40
|
+
export declare function uploadStorageStream(transport: StorageUploadTransport, name: string, input: StorageUploadData | ReadableStream<Uint8Array>, options: StorageUploadStreamOptions): Promise<StorageFileMetadata | StoragePartialUpload>;
|
|
41
|
+
//# sourceMappingURL=storage-upload-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-upload-stream.d.ts","sourceRoot":"","sources":["../../src/storage/storage-upload-stream.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAGtE,OAAO,KAAK,EACR,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,uBAAuB,EAC1B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,0BACb,SAAQ,IAAI,CAAC,uBAAuB,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3D,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C,4FAA4F;IAC5F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,KAAK,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,oFAAoF;AACpF,MAAM,WAAW,sBAAsB;IACnC,qBAAqB,CACjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAClC,WAAW,CACP,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACjD,eAAe,CACX,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC;CACpD;AAgDD,uFAAuF;AACvF,wBAAgB,mBAAmB,CAC/B,SAAS,EAAE,sBAAsB,EACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,iBAAiB,GAAG,cAAc,CAAC,UAAU,CAAC,EACrD,OAAO,EAAE,0BAA0B,GAAG;IAAE,eAAe,EAAE,IAAI,CAAA;CAAE,GAChE,OAAO,CAAC,oBAAoB,CAAC,CAAC;AACjC,wBAAgB,mBAAmB,CAC/B,SAAS,EAAE,sBAAsB,EACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,iBAAiB,GAAG,cAAc,CAAC,UAAU,CAAC,EACrD,OAAO,CAAC,EAAE,0BAA0B,GAAG;IAAE,eAAe,CAAC,EAAE,KAAK,CAAA;CAAE,GACnE,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAChC,wBAAgB,mBAAmB,CAC/B,SAAS,EAAE,sBAAsB,EACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,iBAAiB,GAAG,cAAc,CAAC,UAAU,CAAC,EACrD,OAAO,EAAE,0BAA0B,GACpC,OAAO,CAAC,mBAAmB,GAAG,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
import { FirebaseEdgeError } from '../auth/errors.js';
|
|
2
|
+
import { StorageMd5 } from './storage-md5.js';
|
|
3
|
+
import { createStorageCrc32c, storageUploadBlob, validateStorageCrc32c, validateStorageMd5, verifyStorageUpload } from './storage-checksum.js';
|
|
4
|
+
import { reportStorageProgress } from './storage-progress.js';
|
|
5
|
+
import { validateSessionUri } from './storage-resumable.js';
|
|
6
|
+
/** @internal Split a byte stream without accumulating the whole upload. */
|
|
7
|
+
async function* storageChunks(source, chunkSize) {
|
|
8
|
+
const reader = source.getReader();
|
|
9
|
+
let buffer = new Uint8Array(chunkSize);
|
|
10
|
+
let used = 0;
|
|
11
|
+
let finished = false;
|
|
12
|
+
try {
|
|
13
|
+
for (;;) {
|
|
14
|
+
const { done, value } = await reader.read();
|
|
15
|
+
if (done) {
|
|
16
|
+
finished = true;
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
if (!(value instanceof Uint8Array)) {
|
|
20
|
+
throw new FirebaseEdgeError({
|
|
21
|
+
code: 'storage/invalid-argument',
|
|
22
|
+
message: 'Upload streams must contain Uint8Array chunks.'
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
let offset = 0;
|
|
26
|
+
while (offset < value.length) {
|
|
27
|
+
const count = Math.min(chunkSize - used, value.length - offset);
|
|
28
|
+
buffer.set(value.subarray(offset, offset + count), used);
|
|
29
|
+
used += count;
|
|
30
|
+
offset += count;
|
|
31
|
+
if (used === chunkSize) {
|
|
32
|
+
yield buffer;
|
|
33
|
+
buffer = new Uint8Array(chunkSize);
|
|
34
|
+
used = 0;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (used > 0) {
|
|
39
|
+
yield buffer.slice(0, used);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
if (!finished) {
|
|
44
|
+
await reader.cancel().catch(() => { });
|
|
45
|
+
}
|
|
46
|
+
reader.releaseLock();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export async function uploadStorageStream(transport, name, input, options = {}) {
|
|
50
|
+
if (!options || typeof options !== 'object' || Array.isArray(options)) {
|
|
51
|
+
throw new FirebaseEdgeError({
|
|
52
|
+
code: 'storage/invalid-argument',
|
|
53
|
+
message: 'Upload options must be an object.'
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
const { chunkSize = 8388608, maxResumeAttempts = 2, verifyChecksum = true, sessionUri, crc32c = 'auto', md5Hash, offset: initialOffset = 0, resumeCRC32C, isPartialUpload = false, crc32cGenerator, onProgress, onSession, ...sessionOptions } = options;
|
|
57
|
+
if (typeof isPartialUpload !== 'boolean' ||
|
|
58
|
+
(isPartialUpload &&
|
|
59
|
+
(options.chunkSize === undefined || md5Hash !== undefined))) {
|
|
60
|
+
throw new FirebaseEdgeError({
|
|
61
|
+
code: 'storage/invalid-argument',
|
|
62
|
+
message: 'Partial uploads require chunkSize and cannot validate whole-object MD5.'
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
if (!Number.isSafeInteger(chunkSize) ||
|
|
66
|
+
chunkSize < 262144 ||
|
|
67
|
+
chunkSize > 67108864 ||
|
|
68
|
+
chunkSize % 262144 !== 0 ||
|
|
69
|
+
!Number.isInteger(maxResumeAttempts) ||
|
|
70
|
+
maxResumeAttempts < 0 ||
|
|
71
|
+
maxResumeAttempts > 10 ||
|
|
72
|
+
typeof verifyChecksum !== 'boolean' ||
|
|
73
|
+
(onProgress !== undefined && typeof onProgress !== 'function') ||
|
|
74
|
+
(onSession !== undefined && typeof onSession !== 'function')) {
|
|
75
|
+
throw new FirebaseEdgeError({
|
|
76
|
+
code: 'storage/invalid-argument',
|
|
77
|
+
message: 'Invalid chunk size, recovery limit, or upload callback.'
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
if (crc32c !== 'auto') {
|
|
81
|
+
validateStorageCrc32c(crc32c);
|
|
82
|
+
}
|
|
83
|
+
if (!Number.isSafeInteger(initialOffset) ||
|
|
84
|
+
initialOffset < 0 ||
|
|
85
|
+
(initialOffset > 0 &&
|
|
86
|
+
(!sessionUri ||
|
|
87
|
+
md5Hash !== undefined ||
|
|
88
|
+
(verifyChecksum && resumeCRC32C === undefined))) ||
|
|
89
|
+
(initialOffset === 0 && resumeCRC32C !== undefined)) {
|
|
90
|
+
throw new FirebaseEdgeError({
|
|
91
|
+
code: 'storage/invalid-argument',
|
|
92
|
+
message: 'Resuming a sliced input requires a session URI, a valid offset, and the preceding CRC32C when validation is enabled; MD5 requires the full input.'
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
const checksum = createStorageCrc32c(verifyChecksum || isPartialUpload ? crc32cGenerator : undefined, resumeCRC32C);
|
|
96
|
+
if (md5Hash !== undefined && md5Hash !== 'auto') {
|
|
97
|
+
validateStorageMd5(md5Hash);
|
|
98
|
+
}
|
|
99
|
+
if (sessionUri !== undefined) {
|
|
100
|
+
validateSessionUri(sessionUri);
|
|
101
|
+
}
|
|
102
|
+
const blob = input instanceof ReadableStream ? undefined : storageUploadBlob(input);
|
|
103
|
+
const source = blob ? blob.stream() : input;
|
|
104
|
+
if (source.locked) {
|
|
105
|
+
throw new FirebaseEdgeError({
|
|
106
|
+
code: 'storage/invalid-argument',
|
|
107
|
+
message: 'Upload stream is already locked.'
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
const declaredSize = sessionOptions.size ??
|
|
111
|
+
(blob && !isPartialUpload ? blob.size + initialOffset : undefined);
|
|
112
|
+
if (isPartialUpload &&
|
|
113
|
+
blob &&
|
|
114
|
+
(blob.size === 0 || blob.size % 262144 !== 0)) {
|
|
115
|
+
throw new FirebaseEdgeError({
|
|
116
|
+
code: 'storage/invalid-argument',
|
|
117
|
+
message: 'Partial input must contain a positive multiple of 256 KiB.'
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (declaredSize !== undefined &&
|
|
121
|
+
(!Number.isSafeInteger(declaredSize) ||
|
|
122
|
+
declaredSize < 0 ||
|
|
123
|
+
(blob &&
|
|
124
|
+
(isPartialUpload
|
|
125
|
+
? declaredSize <= blob.size + initialOffset
|
|
126
|
+
: declaredSize !== blob.size + initialOffset)))) {
|
|
127
|
+
throw new FirebaseEdgeError({
|
|
128
|
+
code: 'storage/invalid-argument',
|
|
129
|
+
message: 'Upload size must match the input.'
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
let session = sessionUri;
|
|
133
|
+
let persisted = 0;
|
|
134
|
+
if (!session) {
|
|
135
|
+
const { error, data } = await transport.createResumableUpload(name, {
|
|
136
|
+
...sessionOptions,
|
|
137
|
+
size: declaredSize,
|
|
138
|
+
...(crc32c !== 'auto' && { crc32c }),
|
|
139
|
+
...(md5Hash !== undefined && md5Hash !== 'auto' && { md5Hash })
|
|
140
|
+
});
|
|
141
|
+
if (error) {
|
|
142
|
+
throw error;
|
|
143
|
+
}
|
|
144
|
+
session = data;
|
|
145
|
+
}
|
|
146
|
+
await onSession?.(session);
|
|
147
|
+
if (sessionUri) {
|
|
148
|
+
const { error, data } = await transport.getUploadStatus(session, declaredSize);
|
|
149
|
+
if (error) {
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
152
|
+
if (data.complete) {
|
|
153
|
+
if (isPartialUpload) {
|
|
154
|
+
throw new FirebaseEdgeError({
|
|
155
|
+
code: 'storage/invalid-argument',
|
|
156
|
+
message: 'The partial upload session is already complete.'
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
const md5 = md5Hash !== undefined ? new StorageMd5() : undefined;
|
|
160
|
+
let size = initialOffset;
|
|
161
|
+
for await (const bytes of storageChunks(source, chunkSize)) {
|
|
162
|
+
checksum.update(bytes);
|
|
163
|
+
md5?.update(bytes);
|
|
164
|
+
size += bytes.length;
|
|
165
|
+
}
|
|
166
|
+
if (String(size) !== data.metadata.size ||
|
|
167
|
+
(declaredSize !== undefined && size !== declaredSize)) {
|
|
168
|
+
throw new FirebaseEdgeError({
|
|
169
|
+
code: 'storage/invalid-argument',
|
|
170
|
+
message: 'Input size differs from the completed session.'
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
verifyStorageUpload(verifyChecksum
|
|
174
|
+
? crc32c === 'auto'
|
|
175
|
+
? checksum.digest()
|
|
176
|
+
: crc32c
|
|
177
|
+
: undefined, data.metadata, md5Hash === 'auto' ? md5?.digest() : md5Hash);
|
|
178
|
+
await reportStorageProgress(onProgress, {
|
|
179
|
+
bytesTransferred: Number(data.metadata.size),
|
|
180
|
+
totalBytes: Number(data.metadata.size),
|
|
181
|
+
complete: true
|
|
182
|
+
});
|
|
183
|
+
return data.metadata;
|
|
184
|
+
}
|
|
185
|
+
persisted = data.nextOffset;
|
|
186
|
+
if (persisted < initialOffset) {
|
|
187
|
+
throw new FirebaseEdgeError({
|
|
188
|
+
code: 'storage/invalid-argument',
|
|
189
|
+
message: 'The supplied source begins after the acknowledged upload offset.'
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
const chunks = storageChunks(source, chunkSize);
|
|
194
|
+
const md5 = md5Hash !== undefined ? new StorageMd5() : undefined;
|
|
195
|
+
let offset = initialOffset;
|
|
196
|
+
try {
|
|
197
|
+
let current = await chunks.next();
|
|
198
|
+
for (;;) {
|
|
199
|
+
const bytes = current.done ? new Uint8Array() : current.value;
|
|
200
|
+
const next = current.done ? current : await chunks.next();
|
|
201
|
+
const sourceEnded = !!next.done;
|
|
202
|
+
const final = sourceEnded && !isPartialUpload;
|
|
203
|
+
const end = offset + bytes.length;
|
|
204
|
+
if (!Number.isSafeInteger(end) ||
|
|
205
|
+
(declaredSize !== undefined &&
|
|
206
|
+
(end > declaredSize ||
|
|
207
|
+
(final && end !== declaredSize) ||
|
|
208
|
+
(isPartialUpload && end >= declaredSize))) ||
|
|
209
|
+
(sourceEnded && persisted > end) ||
|
|
210
|
+
(isPartialUpload &&
|
|
211
|
+
(bytes.length === 0 || bytes.length % 262144 !== 0))) {
|
|
212
|
+
throw new FirebaseEdgeError({
|
|
213
|
+
code: 'storage/invalid-argument',
|
|
214
|
+
message: 'Input size does not match the upload session.'
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
checksum.update(bytes);
|
|
218
|
+
md5?.update(bytes);
|
|
219
|
+
const expectedMd5 = final
|
|
220
|
+
? md5Hash === 'auto'
|
|
221
|
+
? md5?.digest()
|
|
222
|
+
: md5Hash
|
|
223
|
+
: undefined;
|
|
224
|
+
const expected = final && verifyChecksum
|
|
225
|
+
? crc32c === 'auto'
|
|
226
|
+
? checksum.digest()
|
|
227
|
+
: crc32c
|
|
228
|
+
: undefined;
|
|
229
|
+
if (persisted < end || final) {
|
|
230
|
+
let attempts = 0;
|
|
231
|
+
for (;;) {
|
|
232
|
+
// Google ignores persisted overlap; replay from a 256 KiB boundary for a valid non-final chunk.
|
|
233
|
+
const start = final
|
|
234
|
+
? Math.max(offset, persisted)
|
|
235
|
+
: offset +
|
|
236
|
+
Math.floor((Math.max(offset, persisted) - offset) / 262144) *
|
|
237
|
+
262144;
|
|
238
|
+
const { error, data } = await transport.uploadChunk(session, bytes.slice(start - offset), {
|
|
239
|
+
offset: start,
|
|
240
|
+
totalSize: isPartialUpload
|
|
241
|
+
? undefined
|
|
242
|
+
: final
|
|
243
|
+
? end
|
|
244
|
+
: declaredSize,
|
|
245
|
+
...(expected !== undefined && { crc32c: expected }),
|
|
246
|
+
...(expectedMd5 !== undefined && {
|
|
247
|
+
md5Hash: expectedMd5
|
|
248
|
+
})
|
|
249
|
+
});
|
|
250
|
+
const recoverable = error &&
|
|
251
|
+
(error.cause instanceof TypeError ||
|
|
252
|
+
[408, 429, 500, 502, 503, 504].includes(Number(error.context &&
|
|
253
|
+
typeof error.context === 'object' &&
|
|
254
|
+
'status' in error.context
|
|
255
|
+
? error.context.status
|
|
256
|
+
: undefined)));
|
|
257
|
+
if (error && !recoverable) {
|
|
258
|
+
throw error;
|
|
259
|
+
}
|
|
260
|
+
let progress = data;
|
|
261
|
+
if (error) {
|
|
262
|
+
if (attempts >= maxResumeAttempts) {
|
|
263
|
+
throw error;
|
|
264
|
+
}
|
|
265
|
+
const { error: statusError, data: status } = await transport.getUploadStatus(session, final ? end : declaredSize);
|
|
266
|
+
if (statusError) {
|
|
267
|
+
throw statusError;
|
|
268
|
+
}
|
|
269
|
+
progress = status;
|
|
270
|
+
}
|
|
271
|
+
if (!progress) {
|
|
272
|
+
throw new FirebaseEdgeError({
|
|
273
|
+
code: 'storage/internal-error',
|
|
274
|
+
message: 'Missing upload progress response.'
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
if (progress.complete) {
|
|
278
|
+
if (!final) {
|
|
279
|
+
throw new FirebaseEdgeError({
|
|
280
|
+
code: 'storage/internal-error',
|
|
281
|
+
message: 'Upload completed before the input ended.'
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
verifyStorageUpload(expected, progress.metadata, expectedMd5);
|
|
285
|
+
await reportStorageProgress(onProgress, {
|
|
286
|
+
bytesTransferred: end,
|
|
287
|
+
totalBytes: end,
|
|
288
|
+
complete: true
|
|
289
|
+
});
|
|
290
|
+
return progress.metadata;
|
|
291
|
+
}
|
|
292
|
+
const nextOffset = progress.nextOffset;
|
|
293
|
+
if (nextOffset < Math.max(offset, persisted) ||
|
|
294
|
+
nextOffset > end) {
|
|
295
|
+
throw new FirebaseEdgeError({
|
|
296
|
+
code: 'storage/internal-error',
|
|
297
|
+
message: 'Upload acknowledgement falls outside the retained chunk.'
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
persisted = nextOffset;
|
|
301
|
+
await reportStorageProgress(onProgress, {
|
|
302
|
+
bytesTransferred: persisted,
|
|
303
|
+
totalBytes: declaredSize,
|
|
304
|
+
complete: false
|
|
305
|
+
});
|
|
306
|
+
if (persisted === end && !final) {
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
if (attempts++ >= maxResumeAttempts) {
|
|
310
|
+
throw new FirebaseEdgeError({
|
|
311
|
+
code: 'storage/retry-limit-exceeded',
|
|
312
|
+
message: 'Upload did not finish within the recovery limit.'
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
if (sourceEnded && isPartialUpload) {
|
|
318
|
+
return {
|
|
319
|
+
complete: false,
|
|
320
|
+
sessionUri: session,
|
|
321
|
+
nextOffset: end,
|
|
322
|
+
...(initialOffset === 0 || resumeCRC32C !== undefined
|
|
323
|
+
? { crc32c: checksum.digest() }
|
|
324
|
+
: {})
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
offset = end;
|
|
328
|
+
current = next;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
finally {
|
|
332
|
+
await chunks.return(undefined);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
//# sourceMappingURL=storage-upload-stream.js.map
|