firebase-admin-edge 1.1.1 → 3.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 +103 -260
- 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 +48 -0
- package/dist/app-check/app-check.d.ts.map +1 -0
- package/dist/app-check/app-check.js +142 -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/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 +56 -8
- package/dist/auth/firebase-admin-auth.d.ts.map +1 -1
- package/dist/auth/firebase-admin-auth.js +323 -63
- package/dist/auth/firebase-admin-auth.js.map +1 -1
- package/dist/auth/firebase-auth-endpoints.d.ts +93 -5
- package/dist/auth/firebase-auth-endpoints.d.ts.map +1 -1
- package/dist/auth/firebase-auth-endpoints.js +342 -73
- package/dist/auth/firebase-auth-endpoints.js.map +1 -1
- package/dist/auth/firebase-auth.d.ts +82 -6
- package/dist/auth/firebase-auth.d.ts.map +1 -1
- package/dist/auth/firebase-auth.js +103 -10
- 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/identity-builder-types.d.ts +36 -0
- package/dist/auth/identity-builder-types.d.ts.map +1 -0
- package/dist/auth/identity-builder-types.js +2 -0
- package/dist/auth/identity-builder-types.js.map +1 -0
- package/dist/auth/identity-count-query.d.ts +17 -0
- package/dist/auth/identity-count-query.d.ts.map +1 -0
- package/dist/auth/identity-count-query.js +51 -0
- package/dist/auth/identity-count-query.js.map +1 -0
- package/dist/auth/identity-filter.d.ts +9 -0
- package/dist/auth/identity-filter.d.ts.map +1 -0
- package/dist/auth/identity-filter.js +129 -0
- package/dist/auth/identity-filter.js.map +1 -0
- package/dist/auth/identity-query.d.ts +11 -0
- package/dist/auth/identity-query.d.ts.map +1 -0
- package/dist/auth/identity-query.js +122 -0
- package/dist/auth/identity-query.js.map +1 -0
- package/dist/auth/identity-reference.d.ts +131 -0
- package/dist/auth/identity-reference.d.ts.map +1 -0
- package/dist/auth/identity-reference.js +293 -0
- package/dist/auth/identity-reference.js.map +1 -0
- package/dist/auth/identity-types.d.ts +44 -0
- package/dist/auth/identity-types.d.ts.map +1 -0
- package/dist/auth/identity-types.js +2 -0
- package/dist/auth/identity-types.js.map +1 -0
- package/dist/auth/identity-write.d.ts +41 -0
- package/dist/auth/identity-write.d.ts.map +1 -0
- package/dist/auth/identity-write.js +146 -0
- package/dist/auth/identity-write.js.map +1 -0
- package/dist/auth/identity.d.ts +84 -0
- package/dist/auth/identity.d.ts.map +1 -0
- package/dist/auth/identity.js +319 -0
- package/dist/auth/identity.js.map +1 -0
- 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-import.d.ts +7 -1
- package/dist/auth/user-import.d.ts.map +1 -1
- package/dist/auth/user-import.js +53 -15
- package/dist/auth/user-import.js.map +1 -1
- package/dist/auth/user-record.d.ts +1 -0
- package/dist/auth/user-record.d.ts.map +1 -1
- package/dist/auth/user-record.js +5 -0
- package/dist/auth/user-record.js.map +1 -1
- package/dist/auth/user-request.d.ts +4 -1
- package/dist/auth/user-request.d.ts.map +1 -1
- package/dist/auth/user-request.js +7 -4
- 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 +157 -0
- package/dist/db/firestore.d.ts.map +1 -0
- package/dist/db/firestore.js +513 -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 +145 -36
- package/dist/firebase-edge-server.d.ts.map +1 -1
- package/dist/firebase-edge-server.js +495 -258
- package/dist/firebase-edge-server.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -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 +159 -0
- package/dist/storage/storage.d.ts.map +1 -0
- package/dist/storage/storage.js +545 -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 +24 -8
- 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/email-action-request.test.d.ts +0 -2
- package/dist/auth/email-action-request.test.d.ts.map +0 -1
- package/dist/auth/email-action-request.test.js +0 -128
- package/dist/auth/email-action-request.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 -1542
- 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 -1082
- 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-batch.test.d.ts +0 -2
- package/dist/auth/user-batch.test.d.ts.map +0 -1
- package/dist/auth/user-batch.test.js +0 -73
- package/dist/auth/user-batch.test.js.map +0 -1
- package/dist/auth/user-import.test.d.ts +0 -2
- package/dist/auth/user-import.test.d.ts.map +0 -1
- package/dist/auth/user-import.test.js +0 -217
- package/dist/auth/user-import.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 -327
- 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 -293
- 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
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
import { type ProviderCredential, type ProviderAuthorizationOptions, type ProviderCallback } from './provider-credential.js';
|
|
2
|
+
import { type AuthEmulatorOptions } from './auth-emulator.js';
|
|
1
3
|
import type { FirebaseConfig } from './firebase-types.js';
|
|
2
4
|
import { FirebaseEdgeError } from './errors.js';
|
|
5
|
+
export interface FirebaseAuthOptions extends AuthEmulatorOptions {
|
|
6
|
+
tenantId?: string;
|
|
7
|
+
fetch?: typeof globalThis.fetch;
|
|
8
|
+
}
|
|
3
9
|
/**
|
|
4
10
|
* Firebase Client Authentication handler for edge environments.
|
|
5
11
|
* Provides client-side authentication operations using Firebase API.
|
|
@@ -9,15 +15,85 @@ export declare class FirebaseAuth {
|
|
|
9
15
|
private requestUri;
|
|
10
16
|
private tenantId?;
|
|
11
17
|
private fetch?;
|
|
18
|
+
sendPasswordResetEmail(email: string, continueUrl?: string, locale?: string): Promise<{
|
|
19
|
+
data: {
|
|
20
|
+
email: string;
|
|
21
|
+
} | null;
|
|
22
|
+
error: FirebaseEdgeError | null;
|
|
23
|
+
} | {
|
|
24
|
+
data: null;
|
|
25
|
+
error: Error;
|
|
26
|
+
}>;
|
|
27
|
+
verifyBeforeUpdateEmail(idToken: string, newEmail: string, continueUrl?: string, locale?: string): Promise<{
|
|
28
|
+
data: {
|
|
29
|
+
email: string;
|
|
30
|
+
} | null;
|
|
31
|
+
error: FirebaseEdgeError | null;
|
|
32
|
+
} | {
|
|
33
|
+
data: null;
|
|
34
|
+
error: Error;
|
|
35
|
+
}>;
|
|
36
|
+
confirmPasswordReset(oobCode: string, newPassword: string): Promise<{
|
|
37
|
+
data: {
|
|
38
|
+
email: string;
|
|
39
|
+
} | null;
|
|
40
|
+
error: FirebaseEdgeError | null;
|
|
41
|
+
} | {
|
|
42
|
+
data: null;
|
|
43
|
+
error: Error;
|
|
44
|
+
}>;
|
|
45
|
+
applyActionCode(oobCode: string): Promise<{
|
|
46
|
+
data: {
|
|
47
|
+
email?: string;
|
|
48
|
+
localId?: string;
|
|
49
|
+
} | null;
|
|
50
|
+
error: FirebaseEdgeError | null;
|
|
51
|
+
} | {
|
|
52
|
+
data: null;
|
|
53
|
+
error: Error;
|
|
54
|
+
}>;
|
|
55
|
+
/** Ask Firebase to deliver a sign-in email. */
|
|
56
|
+
sendSignInLinkToEmail(email: string, continueUrl: string, locale?: string): Promise<{
|
|
57
|
+
data: {
|
|
58
|
+
email: string;
|
|
59
|
+
} | null;
|
|
60
|
+
error: FirebaseEdgeError | null;
|
|
61
|
+
} | {
|
|
62
|
+
data: null;
|
|
63
|
+
error: Error;
|
|
64
|
+
}>;
|
|
65
|
+
/** Exchange the email and one-time action code for Firebase tokens. */
|
|
66
|
+
signInWithEmailLink(email: string, oobCode: string): Promise<{
|
|
67
|
+
data: import("./firebase-types.js").FirebaseIdpSignInResponse | null;
|
|
68
|
+
error: FirebaseEdgeError | null;
|
|
69
|
+
} | {
|
|
70
|
+
data: null;
|
|
71
|
+
error: Error;
|
|
72
|
+
}>;
|
|
73
|
+
/** Begin a Firebase-managed provider flow. Persist sessionId securely for the callback. */
|
|
74
|
+
createProviderAuthorization(providerId: string, options?: ProviderAuthorizationOptions): Promise<{
|
|
75
|
+
data: import("./firebase-types.js").FirebaseCreateAuthUriResponse | null;
|
|
76
|
+
error: FirebaseEdgeError | null;
|
|
77
|
+
} | {
|
|
78
|
+
data: null;
|
|
79
|
+
error: Error;
|
|
80
|
+
}>;
|
|
81
|
+
/** Complete a provider callback; idToken links to an existing Firebase account. */
|
|
82
|
+
signInWithProviderCallback(callback: ProviderCallback, idToken?: string): Promise<{
|
|
83
|
+
data: import("./firebase-types.js").FirebaseIdpSignInResponse | null;
|
|
84
|
+
error: FirebaseEdgeError | null;
|
|
85
|
+
} | {
|
|
86
|
+
data: null;
|
|
87
|
+
error: Error;
|
|
88
|
+
}>;
|
|
12
89
|
/**
|
|
13
90
|
* Creates a new Firebase Auth instance.
|
|
14
91
|
*
|
|
15
92
|
* @param firebase_config Firebase client configuration
|
|
16
93
|
* @param requestUri OAuth callback URI
|
|
17
|
-
* @param
|
|
18
|
-
* @param fetch Optional custom fetch implementation
|
|
94
|
+
* @param options Optional constructor settings, including Auth emulator configuration.
|
|
19
95
|
*/
|
|
20
|
-
constructor(firebase_config: FirebaseConfig, requestUri: string,
|
|
96
|
+
constructor(firebase_config: FirebaseConfig, requestUri: string, options?: FirebaseAuthOptions);
|
|
21
97
|
/**
|
|
22
98
|
* Signs in a user with an OAuth provider token.
|
|
23
99
|
*
|
|
@@ -25,7 +101,7 @@ export declare class FirebaseAuth {
|
|
|
25
101
|
* @param providerId OAuth provider ID (defaults to 'google.com')
|
|
26
102
|
* @returns Promise with object containing sign-in data or null, and error if any
|
|
27
103
|
*/
|
|
28
|
-
signInWithProvider(oauthToken: string, providerId?: string): Promise<{
|
|
104
|
+
signInWithProvider(oauthToken: string | ProviderCredential, providerId?: string): Promise<{
|
|
29
105
|
data: null;
|
|
30
106
|
error: FirebaseEdgeError;
|
|
31
107
|
} | {
|
|
@@ -39,8 +115,8 @@ export declare class FirebaseAuth {
|
|
|
39
115
|
* @returns Promise with object containing sign-in data (idToken, refreshToken, expiresIn) or null, and error if any
|
|
40
116
|
*/
|
|
41
117
|
signInWithCustomToken(customToken: string): Promise<{
|
|
42
|
-
data: null;
|
|
43
118
|
error: FirebaseEdgeError;
|
|
119
|
+
data: null;
|
|
44
120
|
} | {
|
|
45
121
|
data: import("./firebase-types.js").FirebaseIdpSignInResponse;
|
|
46
122
|
error: null;
|
|
@@ -53,7 +129,7 @@ export declare class FirebaseAuth {
|
|
|
53
129
|
* @param providerId OAuth provider ID (defaults to 'google.com')
|
|
54
130
|
* @returns Promise with object containing linked account data or null, and error if any
|
|
55
131
|
*/
|
|
56
|
-
linkWithCredential(idToken: string, providerToken: string, providerId?: string): Promise<{
|
|
132
|
+
linkWithCredential(idToken: string, providerToken: string | ProviderCredential, providerId?: string): Promise<{
|
|
57
133
|
data: null;
|
|
58
134
|
error: FirebaseEdgeError;
|
|
59
135
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase-auth.d.ts","sourceRoot":"","sources":["../../src/auth/firebase-auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"firebase-auth.d.ts","sourceRoot":"","sources":["../../src/auth/firebase-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,EACjC,KAAK,gBAAgB,EACxB,MAAM,0BAA0B,CAAC;AAclC,OAAO,EAEH,KAAK,mBAAmB,EAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAe,MAAM,aAAa,CAAC;AAI7D,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACnC;AAED;;;GAGG;AACH,qBAAa,YAAY;IAsKjB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,UAAU;IAtKtB,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAC,CAA0B;IAElC,sBAAsB,CACxB,KAAK,EAAE,MAAM,EACb,WAAW,SAAkB,EAC7B,MAAM,CAAC,EAAE,MAAM;;;;;;;;;IAeb,uBAAuB,CACzB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,SAAkB,EAC7B,MAAM,CAAC,EAAE,MAAM;;;;;;;;;IAeb,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;;;;;;;;;IAczD,eAAe,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;IAarC,+CAA+C;IACzC,qBAAqB,CACvB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM;;;;;;;;;IAenB,uEAAuE;IACjE,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;IAkCxD,2FAA2F;IACrF,2BAA2B,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,4BAA4B;;;;;;;IAgB1C,mFAAmF;IAC7E,0BAA0B,CAC5B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE,MAAM;;;;;;;IAcpB;;;;;;OAMG;gBAES,eAAe,EAAE,cAAc,EAC/B,UAAU,EAAE,MAAM,EAC1B,OAAO,GAAE,mBAAwB;IAYrC;;;;;;OAMG;IACG,kBAAkB,CACpB,UAAU,EAAE,MAAM,GAAG,kBAAkB,EACvC,UAAU,SAAe;;;;;;;IAwD7B;;;;;OAKG;IACG,qBAAqB,CAAC,WAAW,EAAE,MAAM;;;;;;;IA6D/C;;;;;;;OAOG;IACG,kBAAkB,CACpB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,kBAAkB,EAC1C,UAAU,SAAe;;;;;;;IAiEvB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;;;;;;;CA4DnD"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {} from './provider-credential.js';
|
|
2
|
+
import { createAuthEmulatorFetch, createAuthUri, signInWithCustomToken, signInWithIdp, executeProviderSignIn, linkWithOAuthCredential, unlinkProvider, sendOobCode, confirmPasswordReset as resetPassword, applyActionCode as applyEmailCode, signInWithEmailLink as completeEmailLink } from './firebase-auth-endpoints.js';
|
|
3
|
+
import { resolveAuthEmulatorHost } from './auth-emulator.js';
|
|
2
4
|
import { FirebaseEdgeError, ensureError } from './errors.js';
|
|
3
5
|
import { FirebaseAuthErrorInfo } from './auth-error-codes.js';
|
|
6
|
+
import { buildEmailActionRequest } from './email-action-request.js';
|
|
4
7
|
/**
|
|
5
8
|
* Firebase Client Authentication handler for edge environments.
|
|
6
9
|
* Provides client-side authentication operations using Firebase API.
|
|
@@ -10,19 +13,107 @@ export class FirebaseAuth {
|
|
|
10
13
|
requestUri;
|
|
11
14
|
tenantId;
|
|
12
15
|
fetch;
|
|
16
|
+
async sendPasswordResetEmail(email, continueUrl = this.requestUri, locale) {
|
|
17
|
+
try {
|
|
18
|
+
return await sendOobCode('PASSWORD_RESET', this.firebase_config.apiKey, { email, continueUrl, locale }, this.tenantId, this.fetch);
|
|
19
|
+
}
|
|
20
|
+
catch (cause) {
|
|
21
|
+
return { data: null, error: ensureError(cause) };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async verifyBeforeUpdateEmail(idToken, newEmail, continueUrl = this.requestUri, locale) {
|
|
25
|
+
try {
|
|
26
|
+
return await sendOobCode('VERIFY_AND_CHANGE_EMAIL', this.firebase_config.apiKey, { idToken, newEmail, continueUrl, locale }, this.tenantId, this.fetch);
|
|
27
|
+
}
|
|
28
|
+
catch (cause) {
|
|
29
|
+
return { data: null, error: ensureError(cause) };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async confirmPasswordReset(oobCode, newPassword) {
|
|
33
|
+
try {
|
|
34
|
+
return await resetPassword(oobCode, newPassword, this.firebase_config.apiKey, this.tenantId, this.fetch);
|
|
35
|
+
}
|
|
36
|
+
catch (cause) {
|
|
37
|
+
return { data: null, error: ensureError(cause) };
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async applyActionCode(oobCode) {
|
|
41
|
+
try {
|
|
42
|
+
return await applyEmailCode(oobCode, this.firebase_config.apiKey, this.tenantId, this.fetch);
|
|
43
|
+
}
|
|
44
|
+
catch (cause) {
|
|
45
|
+
return { data: null, error: ensureError(cause) };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/** Ask Firebase to deliver a sign-in email. */
|
|
49
|
+
async sendSignInLinkToEmail(email, continueUrl, locale) {
|
|
50
|
+
try {
|
|
51
|
+
return await sendOobCode('EMAIL_SIGNIN', this.firebase_config.apiKey, { email, continueUrl, locale }, this.tenantId, this.fetch);
|
|
52
|
+
}
|
|
53
|
+
catch (cause) {
|
|
54
|
+
return { data: null, error: ensureError(cause) };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/** Exchange the email and one-time action code for Firebase tokens. */
|
|
58
|
+
async signInWithEmailLink(email, oobCode) {
|
|
59
|
+
const { error: validationError } = buildEmailActionRequest('EMAIL_SIGNIN', email, {
|
|
60
|
+
url: this.requestUri,
|
|
61
|
+
handleCodeInApp: true
|
|
62
|
+
});
|
|
63
|
+
if (validationError) {
|
|
64
|
+
return { data: null, error: validationError };
|
|
65
|
+
}
|
|
66
|
+
if (typeof oobCode !== 'string' || !oobCode.trim()) {
|
|
67
|
+
return {
|
|
68
|
+
data: null,
|
|
69
|
+
error: new FirebaseEdgeError({
|
|
70
|
+
code: 'auth/invalid-action-code',
|
|
71
|
+
message: 'An email sign-in code is required.'
|
|
72
|
+
})
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
return await completeEmailLink(oobCode, email, this.firebase_config.apiKey, undefined, this.tenantId, this.fetch);
|
|
77
|
+
}
|
|
78
|
+
catch (cause) {
|
|
79
|
+
return { data: null, error: ensureError(cause) };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/** Begin a Firebase-managed provider flow. Persist sessionId securely for the callback. */
|
|
83
|
+
async createProviderAuthorization(providerId, options) {
|
|
84
|
+
try {
|
|
85
|
+
return await createAuthUri(this.requestUri, this.firebase_config.apiKey, this.tenantId, this.fetch, providerId, options);
|
|
86
|
+
}
|
|
87
|
+
catch (cause) {
|
|
88
|
+
return { data: null, error: ensureError(cause) };
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/** Complete a provider callback; idToken links to an existing Firebase account. */
|
|
92
|
+
async signInWithProviderCallback(callback, idToken) {
|
|
93
|
+
try {
|
|
94
|
+
return await executeProviderSignIn({ callback, idToken }, this.firebase_config.apiKey, this.tenantId, this.fetch);
|
|
95
|
+
}
|
|
96
|
+
catch (cause) {
|
|
97
|
+
return { data: null, error: ensureError(cause) };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
13
100
|
/**
|
|
14
101
|
* Creates a new Firebase Auth instance.
|
|
15
102
|
*
|
|
16
103
|
* @param firebase_config Firebase client configuration
|
|
17
104
|
* @param requestUri OAuth callback URI
|
|
18
|
-
* @param
|
|
19
|
-
* @param fetch Optional custom fetch implementation
|
|
105
|
+
* @param options Optional constructor settings, including Auth emulator configuration.
|
|
20
106
|
*/
|
|
21
|
-
constructor(firebase_config, requestUri,
|
|
107
|
+
constructor(firebase_config, requestUri, options = {}) {
|
|
22
108
|
this.firebase_config = firebase_config;
|
|
23
109
|
this.requestUri = requestUri;
|
|
110
|
+
const { tenantId, fetch } = options;
|
|
24
111
|
this.tenantId = tenantId;
|
|
25
112
|
this.fetch = fetch;
|
|
113
|
+
const emulatorHost = resolveAuthEmulatorHost(options.emulatorHost);
|
|
114
|
+
if (emulatorHost) {
|
|
115
|
+
this.fetch = createAuthEmulatorFetch(emulatorHost, this.fetch);
|
|
116
|
+
}
|
|
26
117
|
}
|
|
27
118
|
/**
|
|
28
119
|
* Signs in a user with an OAuth provider token.
|
|
@@ -73,6 +164,12 @@ export class FirebaseAuth {
|
|
|
73
164
|
* @returns Promise with object containing sign-in data (idToken, refreshToken, expiresIn) or null, and error if any
|
|
74
165
|
*/
|
|
75
166
|
async signInWithCustomToken(customToken) {
|
|
167
|
+
if (typeof customToken !== 'string' || !customToken.trim()) {
|
|
168
|
+
return {
|
|
169
|
+
error: new FirebaseEdgeError(FirebaseAuthErrorInfo.AUTH_INVALID_CUSTOM_TOKEN),
|
|
170
|
+
data: null
|
|
171
|
+
};
|
|
172
|
+
}
|
|
76
173
|
try {
|
|
77
174
|
const { data: signInData, error: signInError } = await signInWithCustomToken(customToken, this.firebase_config.apiKey, this.tenantId, this.fetch);
|
|
78
175
|
if (signInError) {
|
|
@@ -80,9 +177,7 @@ export class FirebaseAuth {
|
|
|
80
177
|
data: null,
|
|
81
178
|
error: new FirebaseEdgeError(FirebaseAuthErrorInfo.AUTH_INVALID_CUSTOM_TOKEN, {
|
|
82
179
|
cause: ensureError(signInError),
|
|
83
|
-
context: {
|
|
84
|
-
customToken: customToken.substring(0, 20) + '...'
|
|
85
|
-
}
|
|
180
|
+
context: { operation: 'signInWithCustomToken' }
|
|
86
181
|
})
|
|
87
182
|
};
|
|
88
183
|
}
|
|
@@ -104,9 +199,7 @@ export class FirebaseAuth {
|
|
|
104
199
|
data: null,
|
|
105
200
|
error: new FirebaseEdgeError(FirebaseAuthErrorInfo.AUTH_CUSTOM_TOKEN_SIGN_FAILED, {
|
|
106
201
|
cause: ensureError(err),
|
|
107
|
-
context: {
|
|
108
|
-
customToken: customToken.substring(0, 20) + '...'
|
|
109
|
-
}
|
|
202
|
+
context: { operation: 'signInWithCustomToken' }
|
|
110
203
|
})
|
|
111
204
|
};
|
|
112
205
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase-auth.js","sourceRoot":"","sources":["../../src/auth/firebase-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,qBAAqB,EACrB,aAAa,EACb,uBAAuB,EACvB,cAAc,
|
|
1
|
+
{"version":3,"file":"firebase-auth.js","sourceRoot":"","sources":["../../src/auth/firebase-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import type { FirebaseIdTokenPayload, ServiceAccount } from './firebase-types.js';
|
|
2
2
|
import { FirebaseEdgeError } from './errors.js';
|
|
3
|
+
import type { DecodedAuthBlockingToken } from './auth-blocking-types.js';
|
|
4
|
+
/** @internal Verify the JWT supplied in a blocking function request's data.jwt field. */
|
|
5
|
+
export declare function verifyAuthBlockingJWT(token: string, projectId: string, audience?: string, fetchFn?: typeof globalThis.fetch, emulator?: boolean): Promise<{
|
|
6
|
+
data: DecodedAuthBlockingToken;
|
|
7
|
+
error: null;
|
|
8
|
+
} | {
|
|
9
|
+
data: null;
|
|
10
|
+
error: FirebaseEdgeError;
|
|
11
|
+
}>;
|
|
3
12
|
type SignJwtResult = {
|
|
4
13
|
data: string;
|
|
5
14
|
error: null;
|
|
@@ -7,22 +16,22 @@ type SignJwtResult = {
|
|
|
7
16
|
data: null;
|
|
8
17
|
error: FirebaseEdgeError;
|
|
9
18
|
};
|
|
10
|
-
export declare function verifySessionJWT(sessionCookie: string, projectId: string, fetchFn?: typeof globalThis.fetch): Promise<{
|
|
19
|
+
export declare function verifySessionJWT(sessionCookie: string, projectId: string, fetchFn?: typeof globalThis.fetch, emulator?: boolean): Promise<{
|
|
20
|
+
data: FirebaseIdTokenPayload;
|
|
21
|
+
error: null;
|
|
22
|
+
} | {
|
|
11
23
|
data: null;
|
|
12
24
|
error: FirebaseEdgeError;
|
|
13
|
-
} | {
|
|
14
|
-
error: null;
|
|
15
|
-
data: FirebaseIdTokenPayload;
|
|
16
25
|
}>;
|
|
17
|
-
export declare function verifyJWT(idToken: string, projectId: string, fetchFn?: typeof globalThis.fetch): Promise<{
|
|
18
|
-
error: FirebaseEdgeError;
|
|
19
|
-
data: null;
|
|
20
|
-
} | {
|
|
21
|
-
error: null;
|
|
26
|
+
export declare function verifyJWT(idToken: string, projectId: string, fetchFn?: typeof globalThis.fetch, emulator?: boolean): Promise<{
|
|
22
27
|
data: FirebaseIdTokenPayload;
|
|
28
|
+
error: null;
|
|
29
|
+
} | {
|
|
30
|
+
data: null;
|
|
31
|
+
error: FirebaseEdgeError;
|
|
23
32
|
}>;
|
|
24
33
|
export declare function signJWT(serviceAccount: ServiceAccount): Promise<SignJwtResult>;
|
|
25
|
-
export declare function signJWTCustomToken(uid: string, serviceAccount: ServiceAccount, additionalClaims?: object): Promise<{
|
|
34
|
+
export declare function signJWTCustomToken(uid: string, serviceAccount: ServiceAccount, additionalClaims?: object, tenantId?: string, emulator?: boolean): Promise<{
|
|
26
35
|
data: null;
|
|
27
36
|
error: FirebaseEdgeError;
|
|
28
37
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase-jwt.d.ts","sourceRoot":"","sources":["../../src/auth/firebase-jwt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"firebase-jwt.d.ts","sourceRoot":"","sources":["../../src/auth/firebase-jwt.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACR,sBAAsB,EACtB,cAAc,EACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAe,MAAM,aAAa,CAAC;AAG7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AA6BzE,yFAAyF;AACzF,wBAAsB,qBAAqB,CACvC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,EACjC,QAAQ,UAAQ,GACjB,OAAO,CACJ;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,CAC7C,CAkFA;AAmCD,KAAK,aAAa,GACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GAC7B;IACI,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,iBAAiB,CAAC;CAC5B,CAAC;AAkFR,wBAAsB,gBAAgB,CAClC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,OAAO,UAAU,CAAC,KAAwB,EACnD,QAAQ,UAAQ;;;;;;GAoHnB;AAED,wBAAsB,SAAS,CAC3B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,EACjC,QAAQ,UAAQ;;;;;;GA2EnB;AAED,wBAAsB,OAAO,CACzB,cAAc,EAAE,cAAc,GAC/B,OAAO,CAAC,aAAa,CAAC,CAqExB;AAsBD,wBAAsB,kBAAkB,CACpC,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,cAAc,EAC9B,gBAAgB,GAAE,MAAW,EAC7B,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,UAAQ;;;;;;GAmGnB"}
|
|
@@ -1,14 +1,103 @@
|
|
|
1
|
-
import { decodeProtectedHeader, errors, jwtVerify, importPKCS8, SignJWT, importX509, importSPKI } from 'jose';
|
|
1
|
+
import { decodeProtectedHeader, errors, jwtVerify, importPKCS8, SignJWT, UnsecuredJWT, importX509, importSPKI } from 'jose';
|
|
2
2
|
import { JOSEError, JWSInvalid, JWSSignatureVerificationFailed, JWTClaimValidationFailed, JWTExpired, JWTInvalid } from 'jose/errors';
|
|
3
3
|
import { getJWKs, getPublicKeys } from './firebase-auth-endpoints.js';
|
|
4
4
|
import { FirebaseEdgeError, ensureError } from './errors.js';
|
|
5
5
|
import { JWTErrorInfo } from './auth-error-codes.js';
|
|
6
|
+
import { validateUserUid } from './user-request.js';
|
|
7
|
+
/** Shared Secure Token signature verification for ID and blocking-event JWTs. */
|
|
8
|
+
async function verifySecureTokenJWT(token, options, fetchFn) {
|
|
9
|
+
const { kid, alg } = decodeProtectedHeader(token);
|
|
10
|
+
if (typeof kid !== 'string' || !kid)
|
|
11
|
+
throw new FirebaseEdgeError(JWTErrorInfo.JWT_NO_KID_FOUND);
|
|
12
|
+
if (alg !== 'RS256')
|
|
13
|
+
throw new FirebaseEdgeError(JWTErrorInfo.JWT_INVALID_ALGORITHM);
|
|
14
|
+
const { data, error } = await getJWKs(fetchFn);
|
|
15
|
+
if (error)
|
|
16
|
+
throw error;
|
|
17
|
+
if (!data?.length)
|
|
18
|
+
throw new FirebaseEdgeError(JWTErrorInfo.JWT_NO_JWKS_RETRIEVED);
|
|
19
|
+
const jwk = data.find((key) => key.kid === kid);
|
|
20
|
+
if (!jwk)
|
|
21
|
+
throw new FirebaseEdgeError(JWTErrorInfo.JWT_NO_MATCHING_KEY, {
|
|
22
|
+
context: { kid }
|
|
23
|
+
});
|
|
24
|
+
const { payload } = await jwtVerify(token, jwk, {
|
|
25
|
+
...options,
|
|
26
|
+
algorithms: ['RS256']
|
|
27
|
+
});
|
|
28
|
+
return payload;
|
|
29
|
+
}
|
|
30
|
+
/** @internal Verify the JWT supplied in a blocking function request's data.jwt field. */
|
|
31
|
+
export async function verifyAuthBlockingJWT(token, projectId, audience, fetchFn, emulator = false) {
|
|
32
|
+
try {
|
|
33
|
+
if (typeof token !== 'string' ||
|
|
34
|
+
!token.length ||
|
|
35
|
+
typeof projectId !== 'string' ||
|
|
36
|
+
!projectId.length ||
|
|
37
|
+
(audience !== undefined &&
|
|
38
|
+
(typeof audience !== 'string' || !audience.trim().length)))
|
|
39
|
+
throw new FirebaseEdgeError({
|
|
40
|
+
code: 'auth/invalid-argument',
|
|
41
|
+
message: 'A token, project ID, and non-empty audience (when supplied) are required.'
|
|
42
|
+
});
|
|
43
|
+
const options = {
|
|
44
|
+
issuer: `https://securetoken.google.com/${projectId}`,
|
|
45
|
+
requiredClaims: ['iat', 'exp']
|
|
46
|
+
};
|
|
47
|
+
const payload = emulator
|
|
48
|
+
? UnsecuredJWT.decode(token, options).payload
|
|
49
|
+
: await verifySecureTokenJWT(token, options, fetchFn);
|
|
50
|
+
const expectedAudience = audience ?? `${projectId}.cloudfunctions.net/`;
|
|
51
|
+
if (typeof payload.aud !== 'string' ||
|
|
52
|
+
!payload.aud.includes(expectedAudience))
|
|
53
|
+
throw new JWTClaimValidationFailed('Invalid blocking token audience.', payload);
|
|
54
|
+
if (typeof payload.iat !== 'number' ||
|
|
55
|
+
!Number.isFinite(payload.iat) ||
|
|
56
|
+
payload.iat > Math.floor(Date.now() / 1000) ||
|
|
57
|
+
typeof payload.event_type !== 'string' ||
|
|
58
|
+
!payload.event_type.length ||
|
|
59
|
+
typeof payload.event_id !== 'string' ||
|
|
60
|
+
!payload.event_id.length)
|
|
61
|
+
throw new JWTClaimValidationFailed('Invalid blocking event claims.', payload);
|
|
62
|
+
const noUserEvent = payload.event_type === 'beforeSendEmail' ||
|
|
63
|
+
payload.event_type === 'beforeSendSms';
|
|
64
|
+
if (!noUserEvent &&
|
|
65
|
+
(typeof payload.sub !== 'string' ||
|
|
66
|
+
!payload.sub.length ||
|
|
67
|
+
payload.sub.length > 128))
|
|
68
|
+
throw new JWTClaimValidationFailed('Invalid blocking token subject.', payload);
|
|
69
|
+
return {
|
|
70
|
+
data: { ...payload, uid: payload.sub },
|
|
71
|
+
error: null
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
catch (cause) {
|
|
75
|
+
if (cause instanceof FirebaseEdgeError)
|
|
76
|
+
return { data: null, error: cause };
|
|
77
|
+
const info = cause instanceof JWTExpired
|
|
78
|
+
? {
|
|
79
|
+
code: 'auth/auth-blocking-token-expired',
|
|
80
|
+
message: 'The Auth blocking token has expired.'
|
|
81
|
+
}
|
|
82
|
+
: cause instanceof JWTClaimValidationFailed
|
|
83
|
+
? JWTErrorInfo.JWT_CLAIM_VALIDATION_FAILED
|
|
84
|
+
: cause instanceof JWTInvalid ||
|
|
85
|
+
cause instanceof JWSInvalid ||
|
|
86
|
+
cause instanceof JWSSignatureVerificationFailed
|
|
87
|
+
? JWTErrorInfo.JWT_INVALID_TOKEN
|
|
88
|
+
: JWTErrorInfo.JWT_UNKNOWN_VERIFICATION_ERROR;
|
|
89
|
+
return {
|
|
90
|
+
data: null,
|
|
91
|
+
error: new FirebaseEdgeError(info, { cause: ensureError(cause) })
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
6
95
|
const ALGORITHM_RS256 = 'RS256';
|
|
7
96
|
const OAUTH_TOKEN_URL = 'https://oauth2.googleapis.com/token';
|
|
8
97
|
const SCOPES = [
|
|
98
|
+
'https://www.googleapis.com/auth/cloud-platform',
|
|
9
99
|
'https://www.googleapis.com/auth/datastore',
|
|
10
100
|
'https://www.googleapis.com/auth/identitytoolkit',
|
|
11
|
-
'https://www.googleapis.com/auth/devstorage.read_write',
|
|
12
101
|
'https://www.googleapis.com/auth/devstorage.read_write'
|
|
13
102
|
];
|
|
14
103
|
const keyMap = new Map();
|
|
@@ -27,8 +116,51 @@ async function getPublicCryptoKey(publicKey) {
|
|
|
27
116
|
keyMap.set(publicKey, key);
|
|
28
117
|
return key;
|
|
29
118
|
}
|
|
30
|
-
|
|
119
|
+
/** Decode only emulator-format JWTs, retaining claim checks while skipping signature verification. */
|
|
120
|
+
function verifyEmulatorJWT(token, projectId, kind) {
|
|
121
|
+
const issuer = kind === 'id'
|
|
122
|
+
? `https://securetoken.google.com/${projectId}`
|
|
123
|
+
: `https://session.firebase.google.com/${projectId}`;
|
|
124
|
+
const { payload } = UnsecuredJWT.decode(token, {
|
|
125
|
+
issuer,
|
|
126
|
+
audience: projectId,
|
|
127
|
+
requiredClaims: ['sub', 'iat', 'exp', 'auth_time']
|
|
128
|
+
});
|
|
129
|
+
return validateFirebaseTokenPayload(payload, projectId);
|
|
130
|
+
}
|
|
131
|
+
// Allow a small difference between Firebase's clock and the verifying server.
|
|
132
|
+
const FUTURE_CLAIM_TOLERANCE_SECONDS = 5;
|
|
133
|
+
/** Validate user-token claims in both production and emulator modes. */
|
|
134
|
+
function validateFirebaseTokenPayload(payload, projectId) {
|
|
135
|
+
const now = Math.floor(Date.now() / 1000);
|
|
136
|
+
if (typeof payload.exp !== 'number' ||
|
|
137
|
+
!Number.isFinite(payload.exp) ||
|
|
138
|
+
payload.exp <= now)
|
|
139
|
+
throw new JWTClaimValidationFailed('Firebase token expiration must be in the future.', payload, 'exp', 'check_failed');
|
|
140
|
+
if (payload.aud !== projectId)
|
|
141
|
+
throw new JWTClaimValidationFailed('Firebase token audience must match the project ID.', payload, 'aud', 'check_failed');
|
|
142
|
+
if (typeof payload.sub !== 'string' ||
|
|
143
|
+
!payload.sub.length ||
|
|
144
|
+
payload.sub.length > 128)
|
|
145
|
+
throw new JWTClaimValidationFailed('Firebase token subject must contain between 1 and 128 characters.', payload, 'sub', 'check_failed');
|
|
146
|
+
for (const claim of ['iat', 'auth_time']) {
|
|
147
|
+
const value = payload[claim];
|
|
148
|
+
if (typeof value !== 'number' ||
|
|
149
|
+
!Number.isFinite(value) ||
|
|
150
|
+
(claim === 'auth_time' && value < 0))
|
|
151
|
+
throw new JWTClaimValidationFailed(`Invalid Firebase token ${claim} timestamp.`, payload, claim, 'check_failed');
|
|
152
|
+
if (value > now + FUTURE_CLAIM_TOLERANCE_SECONDS)
|
|
153
|
+
throw new JWTClaimValidationFailed(`Firebase token ${claim} is ${value - now} seconds ahead of the server clock (maximum ${FUTURE_CLAIM_TOLERANCE_SECONDS}). Check the server clock synchronization.`, payload, claim, 'check_failed');
|
|
154
|
+
}
|
|
155
|
+
return { ...payload, uid: payload.sub };
|
|
156
|
+
}
|
|
157
|
+
export async function verifySessionJWT(sessionCookie, projectId, fetchFn = globalThis.fetch, emulator = false) {
|
|
31
158
|
try {
|
|
159
|
+
if (emulator)
|
|
160
|
+
return {
|
|
161
|
+
data: verifyEmulatorJWT(sessionCookie, projectId, 'session'),
|
|
162
|
+
error: null
|
|
163
|
+
};
|
|
32
164
|
const { data: keyData, error } = await getPublicKeys(fetchFn);
|
|
33
165
|
if (error) {
|
|
34
166
|
return {
|
|
@@ -66,11 +198,12 @@ export async function verifySessionJWT(sessionCookie, projectId, fetchFn = globa
|
|
|
66
198
|
const { payload } = await jwtVerify(sessionCookie, publicKey, {
|
|
67
199
|
issuer: expectedIssuer,
|
|
68
200
|
audience: expectedAudience,
|
|
69
|
-
algorithms: [ALGORITHM_RS256]
|
|
201
|
+
algorithms: [ALGORITHM_RS256],
|
|
202
|
+
requiredClaims: ['sub', 'iat', 'exp', 'auth_time']
|
|
70
203
|
});
|
|
71
204
|
return {
|
|
72
205
|
error: null,
|
|
73
|
-
data: payload
|
|
206
|
+
data: validateFirebaseTokenPayload(payload, projectId)
|
|
74
207
|
};
|
|
75
208
|
}
|
|
76
209
|
catch (err) {
|
|
@@ -111,48 +244,26 @@ export async function verifySessionJWT(sessionCookie, projectId, fetchFn = globa
|
|
|
111
244
|
};
|
|
112
245
|
}
|
|
113
246
|
}
|
|
114
|
-
export async function verifyJWT(idToken, projectId, fetchFn) {
|
|
247
|
+
export async function verifyJWT(idToken, projectId, fetchFn, emulator = false) {
|
|
115
248
|
try {
|
|
116
|
-
|
|
117
|
-
if (!kid) {
|
|
118
|
-
return {
|
|
119
|
-
error: new FirebaseEdgeError(JWTErrorInfo.JWT_NO_KID_FOUND),
|
|
120
|
-
data: null
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
const { data, error } = await getJWKs(fetchFn);
|
|
124
|
-
if (error) {
|
|
249
|
+
if (emulator)
|
|
125
250
|
return {
|
|
126
|
-
|
|
127
|
-
|
|
251
|
+
data: verifyEmulatorJWT(idToken, projectId, 'id'),
|
|
252
|
+
error: null
|
|
128
253
|
};
|
|
129
|
-
|
|
130
|
-
if (!data || !data.length) {
|
|
131
|
-
return {
|
|
132
|
-
error: new FirebaseEdgeError(JWTErrorInfo.JWT_NO_JWKS_RETRIEVED),
|
|
133
|
-
data: null
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
const jwk = data.find((key) => key.kid === kid);
|
|
137
|
-
if (!jwk) {
|
|
138
|
-
return {
|
|
139
|
-
error: new FirebaseEdgeError(JWTErrorInfo.JWT_NO_MATCHING_KEY, {
|
|
140
|
-
context: { kid }
|
|
141
|
-
}),
|
|
142
|
-
data: null
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
const { payload } = await jwtVerify(idToken, jwk, {
|
|
254
|
+
const payload = await verifySecureTokenJWT(idToken, {
|
|
146
255
|
issuer: `https://securetoken.google.com/${projectId}`,
|
|
147
256
|
audience: projectId,
|
|
148
|
-
|
|
149
|
-
});
|
|
257
|
+
requiredClaims: ['sub', 'iat', 'exp', 'auth_time']
|
|
258
|
+
}, fetchFn);
|
|
150
259
|
return {
|
|
151
260
|
error: null,
|
|
152
|
-
data: payload
|
|
261
|
+
data: validateFirebaseTokenPayload(payload, projectId)
|
|
153
262
|
};
|
|
154
263
|
}
|
|
155
264
|
catch (err) {
|
|
265
|
+
if (err instanceof FirebaseEdgeError)
|
|
266
|
+
return { data: null, error: err };
|
|
156
267
|
if (err instanceof JWTExpired) {
|
|
157
268
|
return {
|
|
158
269
|
error: new FirebaseEdgeError(JWTErrorInfo.JWT_EXPIRED, {
|
|
@@ -266,7 +377,20 @@ const RESERVED_CLAIMS = [
|
|
|
266
377
|
'firebase',
|
|
267
378
|
'user_id'
|
|
268
379
|
];
|
|
269
|
-
export async function signJWTCustomToken(uid, serviceAccount, additionalClaims = {}) {
|
|
380
|
+
export async function signJWTCustomToken(uid, serviceAccount, additionalClaims = {}, tenantId, emulator = false) {
|
|
381
|
+
const uidError = validateUserUid(uid);
|
|
382
|
+
if (uidError)
|
|
383
|
+
return { data: null, error: uidError };
|
|
384
|
+
if (!additionalClaims ||
|
|
385
|
+
typeof additionalClaims !== 'object' ||
|
|
386
|
+
Array.isArray(additionalClaims))
|
|
387
|
+
return {
|
|
388
|
+
data: null,
|
|
389
|
+
error: new FirebaseEdgeError({
|
|
390
|
+
code: 'auth/invalid-argument',
|
|
391
|
+
message: 'Developer claims must be a non-null object.'
|
|
392
|
+
})
|
|
393
|
+
};
|
|
270
394
|
const { private_key, client_email } = serviceAccount;
|
|
271
395
|
if (Object.keys(additionalClaims).some((k) => RESERVED_CLAIMS.includes(k) || k.startsWith('firebase'))) {
|
|
272
396
|
return {
|
|
@@ -280,12 +404,25 @@ export async function signJWTCustomToken(uid, serviceAccount, additionalClaims =
|
|
|
280
404
|
};
|
|
281
405
|
}
|
|
282
406
|
const payload = { uid };
|
|
407
|
+
if (tenantId)
|
|
408
|
+
payload.tenant_id = tenantId;
|
|
283
409
|
if (Object.keys(additionalClaims).length) {
|
|
284
410
|
payload.claims = additionalClaims;
|
|
285
411
|
}
|
|
286
412
|
const url = 'https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit';
|
|
287
413
|
try {
|
|
288
|
-
|
|
414
|
+
if (emulator) {
|
|
415
|
+
const issuer = client_email || 'firebase-auth-emulator@example.com';
|
|
416
|
+
const token = new UnsecuredJWT(payload)
|
|
417
|
+
.setIssuer(issuer)
|
|
418
|
+
.setSubject(issuer)
|
|
419
|
+
.setAudience(url)
|
|
420
|
+
.setIssuedAt()
|
|
421
|
+
.setExpirationTime('1h')
|
|
422
|
+
.encode();
|
|
423
|
+
return { data: token, error: null };
|
|
424
|
+
}
|
|
425
|
+
const key = await importPKCS8(private_key.replace(/\\n/g, '\n'), 'RS256');
|
|
289
426
|
const token = await new SignJWT(payload)
|
|
290
427
|
.setProtectedHeader({ alg: 'RS256', typ: 'JWT' })
|
|
291
428
|
.setIssuer(client_email)
|