pyric 0.1.0-alpha.21 → 0.1.0-alpha.24
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 +12 -4
- package/dist/ai/activity.d.ts +9 -0
- package/dist/ai/activity.d.ts.map +1 -0
- package/dist/ai/activity.js +45 -0
- package/dist/ai/activity.js.map +1 -0
- package/dist/ai/broker/broker.d.ts +25 -0
- package/dist/ai/broker/broker.d.ts.map +1 -1
- package/dist/ai/broker/broker.js +46 -42
- package/dist/ai/broker/broker.js.map +1 -1
- package/dist/ai/broker/gemini-engine.d.ts +7 -0
- package/dist/ai/broker/gemini-engine.d.ts.map +1 -1
- package/dist/ai/broker/gemini-engine.js +15 -0
- package/dist/ai/broker/gemini-engine.js.map +1 -1
- package/dist/ai/broker/index.d.ts +1 -1
- package/dist/ai/broker/index.d.ts.map +1 -1
- package/dist/ai/broker/index.js.map +1 -1
- package/dist/ai/broker/openai-engine.d.ts.map +1 -1
- package/dist/ai/broker/openai-engine.js +7 -3
- package/dist/ai/broker/openai-engine.js.map +1 -1
- package/dist/ai/broker/scripted-engine.d.ts +9 -1
- package/dist/ai/broker/scripted-engine.d.ts.map +1 -1
- package/dist/ai/broker/scripted-engine.js +14 -5
- package/dist/ai/broker/scripted-engine.js.map +1 -1
- package/dist/ai/broker/types.d.ts +6 -2
- package/dist/ai/broker/types.d.ts.map +1 -1
- package/dist/ai/events.d.ts +12 -0
- package/dist/ai/events.d.ts.map +1 -0
- package/dist/ai/events.js +17 -0
- package/dist/ai/events.js.map +1 -0
- package/dist/ai/generation-enums.d.ts +43 -0
- package/dist/ai/generation-enums.d.ts.map +1 -0
- package/dist/ai/generation-enums.js +37 -0
- package/dist/ai/generation-enums.js.map +1 -0
- package/dist/ai/index.d.ts +1 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +1 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/instances.d.ts +6 -0
- package/dist/ai/instances.d.ts.map +1 -1
- package/dist/ai/instances.js +20 -2
- package/dist/ai/instances.js.map +1 -1
- package/dist/ai/internal.d.ts +3 -0
- package/dist/ai/internal.d.ts.map +1 -1
- package/dist/ai/internal.js +3 -0
- package/dist/ai/internal.js.map +1 -1
- package/dist/ai/sandbox-plane.d.ts.map +1 -1
- package/dist/ai/sandbox-plane.js +23 -8
- package/dist/ai/sandbox-plane.js.map +1 -1
- package/dist/ai/scripting.d.ts +20 -2
- package/dist/ai/scripting.d.ts.map +1 -1
- package/dist/ai/scripting.js +30 -3
- package/dist/ai/scripting.js.map +1 -1
- package/dist/app/internal.d.ts +1 -0
- package/dist/app/internal.d.ts.map +1 -1
- package/dist/app/internal.js +1 -0
- package/dist/app/internal.js.map +1 -1
- package/dist/auth/email-link.d.ts +8 -1
- package/dist/auth/email-link.d.ts.map +1 -1
- package/dist/auth/email-link.js +29 -20
- package/dist/auth/email-link.js.map +1 -1
- package/dist/auth/events.d.ts +12 -0
- package/dist/auth/events.d.ts.map +1 -0
- package/dist/auth/events.js +18 -0
- package/dist/auth/events.js.map +1 -0
- package/dist/auth/factor-id.d.ts +7 -0
- package/dist/auth/factor-id.d.ts.map +1 -0
- package/dist/auth/factor-id.js +6 -0
- package/dist/auth/factor-id.js.map +1 -0
- package/dist/auth/index.d.ts +1 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/instances.d.ts.map +1 -1
- package/dist/auth/instances.js +13 -1
- package/dist/auth/instances.js.map +1 -1
- package/dist/auth/internal.d.ts +20 -0
- package/dist/auth/internal.d.ts.map +1 -0
- package/dist/auth/internal.js +19 -0
- package/dist/auth/internal.js.map +1 -0
- package/dist/auth/modular.d.ts +9 -0
- package/dist/auth/modular.d.ts.map +1 -1
- package/dist/auth/modular.js +20 -0
- package/dist/auth/modular.js.map +1 -1
- package/dist/auth/reauth.js +3 -2
- package/dist/auth/reauth.js.map +1 -1
- package/dist/auth/sandbox/default-avatar.d.ts +64 -0
- package/dist/auth/sandbox/default-avatar.d.ts.map +1 -0
- package/dist/auth/sandbox/default-avatar.js +118 -0
- package/dist/auth/sandbox/default-avatar.js.map +1 -0
- package/dist/auth/sandbox/driver.d.ts +36 -0
- package/dist/auth/sandbox/driver.d.ts.map +1 -1
- package/dist/auth/sandbox/driver.js +47 -0
- package/dist/auth/sandbox/driver.js.map +1 -1
- package/dist/auth/sandbox/project-store.d.ts +0 -1
- package/dist/auth/sandbox/project-store.d.ts.map +1 -1
- package/dist/auth/sandbox/project-store.js +0 -1
- package/dist/auth/sandbox/project-store.js.map +1 -1
- package/dist/auth/sandbox-backend-types.d.ts +34 -20
- package/dist/auth/sandbox-backend-types.d.ts.map +1 -1
- package/dist/auth/sandbox-backend-types.js +2 -3
- package/dist/auth/sandbox-backend-types.js.map +1 -1
- package/dist/auth/sandbox-backend.d.ts +98 -20
- package/dist/auth/sandbox-backend.d.ts.map +1 -1
- package/dist/auth/sandbox-backend.js +403 -96
- package/dist/auth/sandbox-backend.js.map +1 -1
- package/dist/auth/seed-user.d.ts +38 -0
- package/dist/auth/seed-user.d.ts.map +1 -0
- package/dist/auth/seed-user.js +2 -0
- package/dist/auth/seed-user.js.map +1 -0
- package/dist/auth/tokens.d.ts +6 -1
- package/dist/auth/tokens.d.ts.map +1 -1
- package/dist/auth/tokens.js +19 -17
- package/dist/auth/tokens.js.map +1 -1
- package/dist/auth/types.d.ts +13 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/database/activity-coverage.d.ts +9 -0
- package/dist/database/activity-coverage.d.ts.map +1 -0
- package/dist/database/activity-coverage.js +11 -0
- package/dist/database/activity-coverage.js.map +1 -0
- package/dist/database/connection-lifecycle.d.ts +3 -0
- package/dist/database/connection-lifecycle.d.ts.map +1 -1
- package/dist/database/connection-lifecycle.js +54 -23
- package/dist/database/connection-lifecycle.js.map +1 -1
- package/dist/database/events.d.ts +12 -0
- package/dist/database/events.d.ts.map +1 -0
- package/dist/database/events.js +10 -0
- package/dist/database/events.js.map +1 -0
- package/dist/database/instances.d.ts +7 -7
- package/dist/database/instances.d.ts.map +1 -1
- package/dist/database/instances.js +35 -13
- package/dist/database/instances.js.map +1 -1
- package/dist/database/internal/query-projection.d.ts +102 -0
- package/dist/database/internal/query-projection.d.ts.map +1 -0
- package/dist/database/internal/query-projection.js +293 -0
- package/dist/database/internal/query-projection.js.map +1 -0
- package/dist/database/internal.d.ts +2 -0
- package/dist/database/internal.d.ts.map +1 -1
- package/dist/database/internal.js +2 -0
- package/dist/database/internal.js.map +1 -1
- package/dist/database/listeners.d.ts.map +1 -1
- package/dist/database/listeners.js +165 -37
- package/dist/database/listeners.js.map +1 -1
- package/dist/database/operations.d.ts.map +1 -1
- package/dist/database/operations.js +77 -50
- package/dist/database/operations.js.map +1 -1
- package/dist/database/replay.d.ts.map +1 -1
- package/dist/database/replay.js +6 -2
- package/dist/database/replay.js.map +1 -1
- package/dist/database/routing.d.ts +4 -0
- package/dist/database/routing.d.ts.map +1 -1
- package/dist/database/routing.js.map +1 -1
- package/dist/database/sandbox/backend-for.d.ts +4 -3
- package/dist/database/sandbox/backend-for.d.ts.map +1 -1
- package/dist/database/sandbox/backend-for.js +130 -24
- package/dist/database/sandbox/backend-for.js.map +1 -1
- package/dist/database/sandbox/backend-state.d.ts +7 -0
- package/dist/database/sandbox/backend-state.d.ts.map +1 -1
- package/dist/database/sandbox/backend-state.js +15 -1
- package/dist/database/sandbox/backend-state.js.map +1 -1
- package/dist/database/sandbox/backend.d.ts +2 -1
- package/dist/database/sandbox/backend.d.ts.map +1 -1
- package/dist/database/sandbox/backend.js +3 -3
- package/dist/database/sandbox/backend.js.map +1 -1
- package/dist/database/sandbox/child-listeners.d.ts +5 -0
- package/dist/database/sandbox/child-listeners.d.ts.map +1 -1
- package/dist/database/sandbox/child-listeners.js +34 -14
- package/dist/database/sandbox/child-listeners.js.map +1 -1
- package/dist/database/sandbox/listener-types.d.ts +5 -0
- package/dist/database/sandbox/listener-types.d.ts.map +1 -1
- package/dist/database/sandbox/operation-events.d.ts +5 -0
- package/dist/database/sandbox/operation-events.d.ts.map +1 -1
- package/dist/database/sandbox/operation-events.js +18 -3
- package/dist/database/sandbox/operation-events.js.map +1 -1
- package/dist/database/sandbox/persistence-state.d.ts.map +1 -1
- package/dist/database/sandbox/persistence-state.js +1 -8
- package/dist/database/sandbox/persistence-state.js.map +1 -1
- package/dist/database/sandbox/priority-writes.js +2 -2
- package/dist/database/sandbox/priority-writes.js.map +1 -1
- package/dist/database/sandbox/query.d.ts +2 -101
- package/dist/database/sandbox/query.d.ts.map +1 -1
- package/dist/database/sandbox/query.js +1 -225
- package/dist/database/sandbox/query.js.map +1 -1
- package/dist/database/sandbox/rules-eval.d.ts +28 -0
- package/dist/database/sandbox/rules-eval.d.ts.map +1 -1
- package/dist/database/sandbox/rules-eval.js +136 -9
- package/dist/database/sandbox/rules-eval.js.map +1 -1
- package/dist/database/sandbox/transactions.d.ts.map +1 -1
- package/dist/database/sandbox/transactions.js +17 -38
- package/dist/database/sandbox/transactions.js.map +1 -1
- package/dist/database/sandbox/value-listeners.d.ts +11 -1
- package/dist/database/sandbox/value-listeners.d.ts.map +1 -1
- package/dist/database/sandbox/value-listeners.js +65 -27
- package/dist/database/sandbox/value-listeners.js.map +1 -1
- package/dist/database/sandbox/write-plane.d.ts.map +1 -1
- package/dist/database/sandbox/write-plane.js +30 -22
- package/dist/database/sandbox/write-plane.js.map +1 -1
- package/dist/database/sdk-activity.d.ts +5 -0
- package/dist/database/sdk-activity.d.ts.map +1 -0
- package/dist/database/sdk-activity.js +20 -0
- package/dist/database/sdk-activity.js.map +1 -0
- package/dist/database/transactions.d.ts.map +1 -1
- package/dist/database/transactions.js +7 -3
- package/dist/database/transactions.js.map +1 -1
- package/dist/database/types.d.ts +9 -1
- package/dist/database/types.d.ts.map +1 -1
- package/dist/database/types.js.map +1 -1
- package/dist/deferred/entry.d.ts +6 -3
- package/dist/deferred/entry.d.ts.map +1 -1
- package/dist/deferred/entry.js +13 -10
- package/dist/deferred/entry.js.map +1 -1
- package/dist/firestore/activity-coverage.d.ts +9 -0
- package/dist/firestore/activity-coverage.d.ts.map +1 -0
- package/dist/firestore/activity-coverage.js +9 -0
- package/dist/firestore/activity-coverage.js.map +1 -0
- package/dist/firestore/aggregates.d.ts.map +1 -1
- package/dist/firestore/aggregates.js +32 -10
- package/dist/firestore/aggregates.js.map +1 -1
- package/dist/firestore/bytes.d.ts +13 -0
- package/dist/firestore/bytes.d.ts.map +1 -0
- package/dist/firestore/bytes.js +51 -0
- package/dist/firestore/bytes.js.map +1 -0
- package/dist/firestore/converter-method.d.ts +11 -0
- package/dist/firestore/converter-method.d.ts.map +1 -0
- package/dist/firestore/converter-method.js +39 -0
- package/dist/firestore/converter-method.js.map +1 -0
- package/dist/firestore/errors.d.ts.map +1 -1
- package/dist/firestore/errors.js +4 -0
- package/dist/firestore/errors.js.map +1 -1
- package/dist/firestore/field-values.d.ts +3 -36
- package/dist/firestore/field-values.d.ts.map +1 -1
- package/dist/firestore/field-values.js +3 -136
- package/dist/firestore/field-values.js.map +1 -1
- package/dist/firestore/geo-point.d.ts +15 -0
- package/dist/firestore/geo-point.d.ts.map +1 -0
- package/dist/firestore/geo-point.js +50 -0
- package/dist/firestore/geo-point.js.map +1 -0
- package/dist/firestore/index.d.ts +1 -1
- package/dist/firestore/index.d.ts.map +1 -1
- package/dist/firestore/index.js +1 -1
- package/dist/firestore/index.js.map +1 -1
- package/dist/firestore/instances.d.ts.map +1 -1
- package/dist/firestore/instances.js +23 -2
- package/dist/firestore/instances.js.map +1 -1
- package/dist/firestore/internal/document-data.d.ts +3 -0
- package/dist/firestore/internal/document-data.d.ts.map +1 -0
- package/dist/firestore/internal/document-data.js +10 -0
- package/dist/firestore/internal/document-data.js.map +1 -0
- package/dist/firestore/internal/index.d.ts +3 -0
- package/dist/firestore/internal/index.d.ts.map +1 -1
- package/dist/firestore/internal/index.js +5 -0
- package/dist/firestore/internal/index.js.map +1 -1
- package/dist/firestore/internal/value-codec.d.ts +16 -61
- package/dist/firestore/internal/value-codec.d.ts.map +1 -1
- package/dist/firestore/internal/value-codec.js +137 -82
- package/dist/firestore/internal/value-codec.js.map +1 -1
- package/dist/firestore/internal/value-depth.d.ts +3 -0
- package/dist/firestore/internal/value-depth.d.ts.map +1 -0
- package/dist/firestore/internal/value-depth.js +19 -0
- package/dist/firestore/internal/value-depth.js.map +1 -0
- package/dist/firestore/listeners.d.ts +18 -1
- package/dist/firestore/listeners.d.ts.map +1 -1
- package/dist/firestore/listeners.js +60 -21
- package/dist/firestore/listeners.js.map +1 -1
- package/dist/firestore/persistence.d.ts +0 -9
- package/dist/firestore/persistence.d.ts.map +1 -1
- package/dist/firestore/persistence.js +23 -9
- package/dist/firestore/persistence.js.map +1 -1
- package/dist/firestore/plain-object.d.ts +3 -0
- package/dist/firestore/plain-object.d.ts.map +1 -0
- package/dist/firestore/plain-object.js +9 -0
- package/dist/firestore/plain-object.js.map +1 -0
- package/dist/firestore/query-constraints.d.ts.map +1 -1
- package/dist/firestore/query-constraints.js +4 -3
- package/dist/firestore/query-constraints.js.map +1 -1
- package/dist/firestore/reads.d.ts +9 -7
- package/dist/firestore/reads.d.ts.map +1 -1
- package/dist/firestore/reads.js +74 -36
- package/dist/firestore/reads.js.map +1 -1
- package/dist/firestore/refs.d.ts +2 -1
- package/dist/firestore/refs.d.ts.map +1 -1
- package/dist/firestore/refs.js +37 -24
- package/dist/firestore/refs.js.map +1 -1
- package/dist/firestore/sandbox/activity-query-display.d.ts +67 -0
- package/dist/firestore/sandbox/activity-query-display.d.ts.map +1 -0
- package/dist/firestore/sandbox/activity-query-display.js +119 -0
- package/dist/firestore/sandbox/activity-query-display.js.map +1 -0
- package/dist/firestore/sandbox/admin-compat/batch.d.ts +4 -8
- package/dist/firestore/sandbox/admin-compat/batch.d.ts.map +1 -1
- package/dist/firestore/sandbox/admin-compat/batch.js +27 -19
- package/dist/firestore/sandbox/admin-compat/batch.js.map +1 -1
- package/dist/firestore/sandbox/admin-compat/query-comparison.d.ts.map +1 -1
- package/dist/firestore/sandbox/admin-compat/query-comparison.js +8 -3
- package/dist/firestore/sandbox/admin-compat/query-comparison.js.map +1 -1
- package/dist/firestore/sandbox/admin-compat/query.d.ts +8 -0
- package/dist/firestore/sandbox/admin-compat/query.d.ts.map +1 -1
- package/dist/firestore/sandbox/admin-compat/query.js +44 -5
- package/dist/firestore/sandbox/admin-compat/query.js.map +1 -1
- package/dist/firestore/sandbox/admin-compat/read-translation.d.ts.map +1 -1
- package/dist/firestore/sandbox/admin-compat/read-translation.js +18 -9
- package/dist/firestore/sandbox/admin-compat/read-translation.js.map +1 -1
- package/dist/firestore/sandbox/admin-compat/transaction.d.ts +2 -2
- package/dist/firestore/sandbox/admin-compat/transaction.d.ts.map +1 -1
- package/dist/firestore/sandbox/admin-compat/transaction.js +13 -4
- package/dist/firestore/sandbox/admin-compat/transaction.js.map +1 -1
- package/dist/firestore/sandbox/admin-compat/types.d.ts +6 -33
- package/dist/firestore/sandbox/admin-compat/types.d.ts.map +1 -1
- package/dist/firestore/sandbox/admin-compat/types.js +1 -76
- package/dist/firestore/sandbox/admin-compat/types.js.map +1 -1
- package/dist/firestore/sandbox/atomic-state.d.ts +4 -0
- package/dist/firestore/sandbox/atomic-state.d.ts.map +1 -0
- package/dist/firestore/sandbox/atomic-state.js +105 -0
- package/dist/firestore/sandbox/atomic-state.js.map +1 -0
- package/dist/firestore/sandbox/atomic-write-pipeline.d.ts +3 -2
- package/dist/firestore/sandbox/atomic-write-pipeline.d.ts.map +1 -1
- package/dist/firestore/sandbox/atomic-write-pipeline.js +128 -58
- package/dist/firestore/sandbox/atomic-write-pipeline.js.map +1 -1
- package/dist/firestore/sandbox/batch-write-executor.d.ts.map +1 -1
- package/dist/firestore/sandbox/batch-write-executor.js +54 -28
- package/dist/firestore/sandbox/batch-write-executor.js.map +1 -1
- package/dist/firestore/sandbox/converters/user-timestamp.d.ts +6 -40
- package/dist/firestore/sandbox/converters/user-timestamp.d.ts.map +1 -1
- package/dist/firestore/sandbox/converters/user-timestamp.js +20 -43
- package/dist/firestore/sandbox/converters/user-timestamp.js.map +1 -1
- package/dist/firestore/sandbox/document-copy.d.ts +4 -0
- package/dist/firestore/sandbox/document-copy.d.ts.map +1 -0
- package/dist/firestore/sandbox/document-copy.js +28 -0
- package/dist/firestore/sandbox/document-copy.js.map +1 -0
- package/dist/firestore/sandbox/document-store.d.ts +99 -0
- package/dist/firestore/sandbox/document-store.d.ts.map +1 -0
- package/dist/firestore/sandbox/document-store.js +2 -0
- package/dist/firestore/sandbox/document-store.js.map +1 -0
- package/dist/firestore/sandbox/errors.d.ts +4 -1
- package/dist/firestore/sandbox/errors.d.ts.map +1 -1
- package/dist/firestore/sandbox/errors.js +2 -25
- package/dist/firestore/sandbox/errors.js.map +1 -1
- package/dist/firestore/sandbox/event-log.d.ts +22 -4
- package/dist/firestore/sandbox/event-log.d.ts.map +1 -1
- package/dist/firestore/sandbox/event-log.js +66 -6
- package/dist/firestore/sandbox/event-log.js.map +1 -1
- package/dist/firestore/sandbox/field-merge.d.ts.map +1 -1
- package/dist/firestore/sandbox/field-merge.js +10 -20
- package/dist/firestore/sandbox/field-merge.js.map +1 -1
- package/dist/firestore/sandbox/history-controls.d.ts +1 -1
- package/dist/firestore/sandbox/history-controls.d.ts.map +1 -1
- package/dist/firestore/sandbox/history-controls.js +1 -1
- package/dist/firestore/sandbox/history-controls.js.map +1 -1
- package/dist/firestore/sandbox/list-query-proof.d.ts +4 -1
- package/dist/firestore/sandbox/list-query-proof.d.ts.map +1 -1
- package/dist/firestore/sandbox/list-query-proof.js +32 -96
- package/dist/firestore/sandbox/list-query-proof.js.map +1 -1
- package/dist/firestore/sandbox/listener-dispatch.d.ts +26 -1
- package/dist/firestore/sandbox/listener-dispatch.d.ts.map +1 -1
- package/dist/firestore/sandbox/listener-dispatch.js +58 -5
- package/dist/firestore/sandbox/listener-dispatch.js.map +1 -1
- package/dist/firestore/sandbox/local-environment.d.ts +16 -2
- package/dist/firestore/sandbox/local-environment.d.ts.map +1 -1
- package/dist/firestore/sandbox/local-environment.js +33 -9
- package/dist/firestore/sandbox/local-environment.js.map +1 -1
- package/dist/firestore/sandbox/local-state.d.ts +5 -99
- package/dist/firestore/sandbox/local-state.d.ts.map +1 -1
- package/dist/firestore/sandbox/local-state.js +64 -117
- package/dist/firestore/sandbox/local-state.js.map +1 -1
- package/dist/firestore/sandbox/query-execution.d.ts +4 -1
- package/dist/firestore/sandbox/query-execution.d.ts.map +1 -1
- package/dist/firestore/sandbox/query-execution.js +51 -26
- package/dist/firestore/sandbox/query-execution.js.map +1 -1
- package/dist/firestore/sandbox/query-operand-equality.d.ts.map +1 -1
- package/dist/firestore/sandbox/query-operand-equality.js +50 -14
- package/dist/firestore/sandbox/query-operand-equality.js.map +1 -1
- package/dist/firestore/sandbox/query-operators.d.ts +4 -0
- package/dist/firestore/sandbox/query-operators.d.ts.map +1 -0
- package/dist/firestore/sandbox/query-operators.js +17 -0
- package/dist/firestore/sandbox/query-operators.js.map +1 -0
- package/dist/firestore/sandbox/query-value-registry.d.ts +1 -1
- package/dist/firestore/sandbox/query-value-registry.d.ts.map +1 -1
- package/dist/firestore/sandbox/query-value-registry.js +3 -1
- package/dist/firestore/sandbox/query-value-registry.js.map +1 -1
- package/dist/firestore/sandbox/request-events.d.ts +3 -0
- package/dist/firestore/sandbox/request-events.d.ts.map +1 -1
- package/dist/firestore/sandbox/request-events.js +4 -0
- package/dist/firestore/sandbox/request-events.js.map +1 -1
- package/dist/firestore/sandbox/rules-evidence.d.ts +7 -0
- package/dist/firestore/sandbox/rules-evidence.d.ts.map +1 -0
- package/dist/firestore/sandbox/rules-evidence.js +87 -0
- package/dist/firestore/sandbox/rules-evidence.js.map +1 -0
- package/dist/firestore/sandbox/rules-list-authorizer.d.ts +13 -1
- package/dist/firestore/sandbox/rules-list-authorizer.d.ts.map +1 -1
- package/dist/firestore/sandbox/rules-list-authorizer.js +53 -74
- package/dist/firestore/sandbox/rules-list-authorizer.js.map +1 -1
- package/dist/firestore/sandbox/rules-operation-reader.d.ts +8 -1
- package/dist/firestore/sandbox/rules-operation-reader.d.ts.map +1 -1
- package/dist/firestore/sandbox/rules-operation-reader.js +13 -5
- package/dist/firestore/sandbox/rules-operation-reader.js.map +1 -1
- package/dist/firestore/sandbox/rules-read-engine.d.ts +8 -1
- package/dist/firestore/sandbox/rules-read-engine.d.ts.map +1 -1
- package/dist/firestore/sandbox/rules-read-engine.js +21 -10
- package/dist/firestore/sandbox/rules-read-engine.js.map +1 -1
- package/dist/firestore/sandbox/rules-state.d.ts +5 -0
- package/dist/firestore/sandbox/rules-state.d.ts.map +1 -1
- package/dist/firestore/sandbox/rules-state.js +16 -0
- package/dist/firestore/sandbox/rules-state.js.map +1 -1
- package/dist/firestore/sandbox/snapshot-listeners.d.ts +9 -1
- package/dist/firestore/sandbox/snapshot-listeners.d.ts.map +1 -1
- package/dist/firestore/sandbox/snapshot-listeners.js.map +1 -1
- package/dist/firestore/sandbox/transaction-merge.d.ts +2 -33
- package/dist/firestore/sandbox/transaction-merge.d.ts.map +1 -1
- package/dist/firestore/sandbox/transaction-merge.js +19 -7
- package/dist/firestore/sandbox/transaction-merge.js.map +1 -1
- package/dist/firestore/sandbox/transaction-types.d.ts +11 -21
- package/dist/firestore/sandbox/transaction-types.d.ts.map +1 -1
- package/dist/firestore/sandbox/transaction-types.js.map +1 -1
- package/dist/firestore/sandbox/transaction-write-executor.d.ts +2 -1
- package/dist/firestore/sandbox/transaction-write-executor.d.ts.map +1 -1
- package/dist/firestore/sandbox/transaction-write-executor.js +110 -69
- package/dist/firestore/sandbox/transaction-write-executor.js.map +1 -1
- package/dist/firestore/sandbox/transaction.d.ts +3 -2
- package/dist/firestore/sandbox/transaction.d.ts.map +1 -1
- package/dist/firestore/sandbox/transaction.js +23 -6
- package/dist/firestore/sandbox/transaction.js.map +1 -1
- package/dist/firestore/sandbox/value-resolver.d.ts +1 -8
- package/dist/firestore/sandbox/value-resolver.d.ts.map +1 -1
- package/dist/firestore/sandbox/value-resolver.js +2 -13
- package/dist/firestore/sandbox/value-resolver.js.map +1 -1
- package/dist/firestore/sandbox/write-engine.d.ts +5 -1
- package/dist/firestore/sandbox/write-engine.d.ts.map +1 -1
- package/dist/firestore/sandbox/write-engine.js +14 -7
- package/dist/firestore/sandbox/write-engine.js.map +1 -1
- package/dist/firestore/sandbox/write-runtime.d.ts +12 -4
- package/dist/firestore/sandbox/write-runtime.d.ts.map +1 -1
- package/dist/firestore/sandbox/write-runtime.js +72 -38
- package/dist/firestore/sandbox/write-runtime.js.map +1 -1
- package/dist/firestore/sandbox/writes.d.ts +3 -1
- package/dist/firestore/sandbox/writes.d.ts.map +1 -1
- package/dist/firestore/sdk-activity.d.ts +8 -0
- package/dist/firestore/sdk-activity.d.ts.map +1 -0
- package/dist/firestore/sdk-activity.js +23 -0
- package/dist/firestore/sdk-activity.js.map +1 -0
- package/dist/firestore/snapshots.d.ts +18 -2
- package/dist/firestore/snapshots.d.ts.map +1 -1
- package/dist/firestore/snapshots.js +69 -16
- package/dist/firestore/snapshots.js.map +1 -1
- package/dist/firestore/state.d.ts +8 -3
- package/dist/firestore/state.d.ts.map +1 -1
- package/dist/firestore/state.js +30 -13
- package/dist/firestore/state.js.map +1 -1
- package/dist/firestore/timestamp.d.ts +28 -0
- package/dist/firestore/timestamp.d.ts.map +1 -0
- package/dist/firestore/timestamp.js +80 -0
- package/dist/firestore/timestamp.js.map +1 -0
- package/dist/firestore/tools.d.ts.map +1 -1
- package/dist/firestore/tools.js +2 -4
- package/dist/firestore/tools.js.map +1 -1
- package/dist/firestore/transactions.d.ts.map +1 -1
- package/dist/firestore/transactions.js +76 -3
- package/dist/firestore/transactions.js.map +1 -1
- package/dist/firestore/types.d.ts +26 -5
- package/dist/firestore/types.d.ts.map +1 -1
- package/dist/firestore/types.js.map +1 -1
- package/dist/firestore/vector-value.d.ts +11 -0
- package/dist/firestore/vector-value.d.ts.map +1 -0
- package/dist/firestore/vector-value.js +51 -0
- package/dist/firestore/vector-value.js.map +1 -0
- package/dist/firestore/writes.d.ts +0 -7
- package/dist/firestore/writes.d.ts.map +1 -1
- package/dist/firestore/writes.js +42 -25
- package/dist/firestore/writes.js.map +1 -1
- package/dist/functions/events.d.ts +12 -0
- package/dist/functions/events.d.ts.map +1 -0
- package/dist/functions/events.js +10 -0
- package/dist/functions/events.js.map +1 -0
- package/dist/messaging/broker/broker.d.ts +43 -30
- package/dist/messaging/broker/broker.d.ts.map +1 -1
- package/dist/messaging/broker/broker.js +148 -43
- package/dist/messaging/broker/broker.js.map +1 -1
- package/dist/messaging/broker/delivery-history.d.ts +5 -0
- package/dist/messaging/broker/delivery-history.d.ts.map +1 -0
- package/dist/messaging/broker/delivery-history.js +46 -0
- package/dist/messaging/broker/delivery-history.js.map +1 -0
- package/dist/messaging/broker/index.d.ts +2 -1
- package/dist/messaging/broker/index.d.ts.map +1 -1
- package/dist/messaging/broker/index.js +7 -0
- package/dist/messaging/broker/index.js.map +1 -1
- package/dist/messaging/broker/persistence.d.ts +12 -0
- package/dist/messaging/broker/persistence.d.ts.map +1 -0
- package/dist/messaging/broker/persistence.js +42 -0
- package/dist/messaging/broker/persistence.js.map +1 -0
- package/dist/messaging/broker/types.d.ts +44 -0
- package/dist/messaging/broker/types.d.ts.map +1 -1
- package/dist/messaging/broker/types.js +10 -1
- package/dist/messaging/broker/types.js.map +1 -1
- package/dist/messaging/events.d.ts +12 -0
- package/dist/messaging/events.d.ts.map +1 -0
- package/dist/messaging/events.js +19 -0
- package/dist/messaging/events.js.map +1 -0
- package/dist/rules/api/case-types.d.ts +7 -0
- package/dist/rules/api/case-types.d.ts.map +1 -1
- package/dist/rules/api/rtdb.d.ts.map +1 -1
- package/dist/rules/api/rtdb.js +20 -7
- package/dist/rules/api/rtdb.js.map +1 -1
- package/dist/rules/grammar/parse-error-wording.d.ts +31 -0
- package/dist/rules/grammar/parse-error-wording.d.ts.map +1 -0
- package/dist/rules/grammar/parse-error-wording.js +86 -0
- package/dist/rules/grammar/parse-error-wording.js.map +1 -0
- package/dist/rules/indexes/query-analysis.d.ts +33 -0
- package/dist/rules/indexes/query-analysis.d.ts.map +1 -0
- package/dist/rules/indexes/query-analysis.js +153 -0
- package/dist/rules/indexes/query-analysis.js.map +1 -0
- package/dist/rules/indexes/service-query.d.ts +48 -0
- package/dist/rules/indexes/service-query.d.ts.map +1 -0
- package/dist/rules/indexes/service-query.js +60 -0
- package/dist/rules/indexes/service-query.js.map +1 -0
- package/dist/rules/internal/index.d.ts +4 -0
- package/dist/rules/internal/index.d.ts.map +1 -1
- package/dist/rules/internal/index.js +10 -0
- package/dist/rules/internal/index.js.map +1 -1
- package/dist/rules/modules/rules-capabilities.generated.d.ts +1 -1
- package/dist/rules/modules/rules-capabilities.generated.js +1 -1
- package/dist/rules/modules/rules-capabilities.generated.js.map +1 -1
- package/dist/rules/rtdb/constraints/atoms.d.ts.map +1 -1
- package/dist/rules/rtdb/constraints/atoms.js +7 -7
- package/dist/rules/rtdb/constraints/atoms.js.map +1 -1
- package/dist/rules/rtdb/constraints/data.d.ts +2 -2
- package/dist/rules/rtdb/constraints/data.d.ts.map +1 -1
- package/dist/rules/rtdb/constraints/data.js +4 -4
- package/dist/rules/rtdb/constraints/data.js.map +1 -1
- package/dist/rules/rtdb/constraints/document.d.ts.map +1 -1
- package/dist/rules/rtdb/constraints/document.js +6 -2
- package/dist/rules/rtdb/constraints/document.js.map +1 -1
- package/dist/rules/rtdb/constraints/policies.d.ts +2 -2
- package/dist/rules/rtdb/constraints/policies.d.ts.map +1 -1
- package/dist/rules/rtdb/constraints/policies.js +3 -3
- package/dist/rules/rtdb/constraints/policies.js.map +1 -1
- package/dist/rules/rtdb/constraints/schema.js +3 -3
- package/dist/rules/rtdb/constraints/schema.js.map +1 -1
- package/dist/rules/rtdb/grammar/RtdbExpr.ohm +1 -3
- package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.d.ts +1 -1
- package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.d.ts.map +1 -1
- package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.js +1 -3
- package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.js.map +1 -1
- package/dist/rules/rtdb/grammar/linter.d.ts.map +1 -1
- package/dist/rules/rtdb/grammar/linter.js +28 -30
- package/dist/rules/rtdb/grammar/linter.js.map +1 -1
- package/dist/rules/rtdb/grammar/simulator.d.ts +15 -1
- package/dist/rules/rtdb/grammar/simulator.d.ts.map +1 -1
- package/dist/rules/rtdb/grammar/simulator.js +93 -65
- package/dist/rules/rtdb/grammar/simulator.js.map +1 -1
- package/dist/rules/rtdb/grammar/validator.d.ts.map +1 -1
- package/dist/rules/rtdb/grammar/validator.js +25 -26
- package/dist/rules/rtdb/grammar/validator.js.map +1 -1
- package/dist/rules/rtdb/simulation/handler.d.ts.map +1 -1
- package/dist/rules/rtdb/simulation/handler.js +136 -32
- package/dist/rules/rtdb/simulation/handler.js.map +1 -1
- package/dist/rules/rtdb/simulation/spec.d.ts +95 -5
- package/dist/rules/rtdb/simulation/spec.d.ts.map +1 -1
- package/dist/rules/rtdb/simulation/spec.js +22 -1
- package/dist/rules/rtdb/simulation/spec.js.map +1 -1
- package/dist/rules/rtdb/types.d.ts +18 -18
- package/dist/rules/simulator/evaluator.js +35 -69
- package/dist/rules/simulator/evaluator.js.map +1 -1
- package/dist/rules/simulator/handler.d.ts.map +1 -1
- package/dist/rules/simulator/handler.js +12 -3
- package/dist/rules/simulator/handler.js.map +1 -1
- package/dist/rules/simulator/mapdiff.d.ts +2 -0
- package/dist/rules/simulator/mapdiff.d.ts.map +1 -1
- package/dist/rules/simulator/mapdiff.js +7 -5
- package/dist/rules/simulator/mapdiff.js.map +1 -1
- package/dist/rules/simulator/query-proof-residual.d.ts +11 -0
- package/dist/rules/simulator/query-proof-residual.d.ts.map +1 -0
- package/dist/rules/simulator/query-proof-residual.js +177 -0
- package/dist/rules/simulator/query-proof-residual.js.map +1 -0
- package/dist/rules/simulator/query-proof.d.ts +21 -47
- package/dist/rules/simulator/query-proof.d.ts.map +1 -1
- package/dist/rules/simulator/query-proof.js +78 -13
- package/dist/rules/simulator/query-proof.js.map +1 -1
- package/dist/rules/simulator/request-path.d.ts +26 -0
- package/dist/rules/simulator/request-path.d.ts.map +1 -0
- package/dist/rules/simulator/request-path.js +36 -0
- package/dist/rules/simulator/request-path.js.map +1 -0
- package/dist/rules/simulator/trace-recorder.d.ts +1 -0
- package/dist/rules/simulator/trace-recorder.d.ts.map +1 -1
- package/dist/rules/simulator/trace-recorder.js +4 -0
- package/dist/rules/simulator/trace-recorder.js.map +1 -1
- package/dist/rules/simulator/wrappers/timestamp.d.ts +6 -0
- package/dist/rules/simulator/wrappers/timestamp.d.ts.map +1 -1
- package/dist/rules/simulator/wrappers/timestamp.js +8 -1
- package/dist/rules/simulator/wrappers/timestamp.js.map +1 -1
- package/dist/rules/simulator-tools-impl.d.ts.map +1 -1
- package/dist/rules/simulator-tools-impl.js +6 -3
- package/dist/rules/simulator-tools-impl.js.map +1 -1
- package/dist/rules/stdlib-tools.js +4 -4
- package/dist/rules/stdlib-tools.js.map +1 -1
- package/dist/rules/test/spec.d.ts +4 -4
- package/dist/sandbox/active-listeners.d.ts +69 -0
- package/dist/sandbox/active-listeners.d.ts.map +1 -0
- package/dist/sandbox/active-listeners.js +159 -0
- package/dist/sandbox/active-listeners.js.map +1 -0
- package/dist/sandbox/admin-firestore/error-translation.d.ts.map +1 -1
- package/dist/sandbox/admin-firestore/error-translation.js +15 -2
- package/dist/sandbox/admin-firestore/error-translation.js.map +1 -1
- package/dist/sandbox/admin-firestore/listeners.d.ts +0 -25
- package/dist/sandbox/admin-firestore/listeners.d.ts.map +1 -1
- package/dist/sandbox/admin-firestore/listeners.js +26 -2
- package/dist/sandbox/admin-firestore/listeners.js.map +1 -1
- package/dist/sandbox/admin-firestore/remote/listeners.d.ts.map +1 -1
- package/dist/sandbox/admin-firestore/remote/listeners.js +50 -29
- package/dist/sandbox/admin-firestore/remote/listeners.js.map +1 -1
- package/dist/sandbox/admin-firestore/remote/value-codec.d.ts +5 -12
- package/dist/sandbox/admin-firestore/remote/value-codec.d.ts.map +1 -1
- package/dist/sandbox/admin-firestore/remote/value-codec.js +7 -14
- package/dist/sandbox/admin-firestore/remote/value-codec.js.map +1 -1
- package/dist/sandbox/admin-firestore/remote/wire-types.d.ts +2 -0
- package/dist/sandbox/admin-firestore/remote/wire-types.d.ts.map +1 -1
- package/dist/sandbox/attribution/attribution-mode.d.ts +36 -0
- package/dist/sandbox/attribution/attribution-mode.d.ts.map +1 -0
- package/dist/sandbox/attribution/attribution-mode.js +68 -0
- package/dist/sandbox/attribution/attribution-mode.js.map +1 -0
- package/dist/sandbox/attribution/effect-regions.d.ts +37 -0
- package/dist/sandbox/attribution/effect-regions.d.ts.map +1 -0
- package/dist/sandbox/attribution/effect-regions.js +114 -0
- package/dist/sandbox/attribution/effect-regions.js.map +1 -0
- package/dist/sandbox/attribution/element-selector.d.ts +42 -0
- package/dist/sandbox/attribution/element-selector.d.ts.map +1 -0
- package/dist/sandbox/attribution/element-selector.js +109 -0
- package/dist/sandbox/attribution/element-selector.js.map +1 -0
- package/dist/sandbox/attribution/listener-owners.d.ts +111 -0
- package/dist/sandbox/attribution/listener-owners.d.ts.map +1 -0
- package/dist/sandbox/attribution/listener-owners.js +215 -0
- package/dist/sandbox/attribution/listener-owners.js.map +1 -0
- package/dist/sandbox/branches/engine.d.ts +129 -0
- package/dist/sandbox/branches/engine.d.ts.map +1 -0
- package/dist/sandbox/branches/engine.js +280 -0
- package/dist/sandbox/branches/engine.js.map +1 -0
- package/dist/sandbox/branches/index.d.ts +12 -139
- package/dist/sandbox/branches/index.d.ts.map +1 -1
- package/dist/sandbox/branches/index.js +8 -390
- package/dist/sandbox/branches/index.js.map +1 -1
- package/dist/sandbox/branches/promotion.d.ts +27 -0
- package/dist/sandbox/branches/promotion.d.ts.map +1 -0
- package/dist/sandbox/branches/promotion.js +160 -0
- package/dist/sandbox/branches/promotion.js.map +1 -0
- package/dist/sandbox/branches/state-diff.d.ts +66 -0
- package/dist/sandbox/branches/state-diff.d.ts.map +1 -0
- package/dist/sandbox/branches/state-diff.js +270 -0
- package/dist/sandbox/branches/state-diff.js.map +1 -0
- package/dist/sandbox/branches/store.d.ts +64 -0
- package/dist/sandbox/branches/store.d.ts.map +1 -0
- package/dist/sandbox/branches/store.js +264 -0
- package/dist/sandbox/branches/store.js.map +1 -0
- package/dist/sandbox/checkpoints/capture.d.ts +39 -0
- package/dist/sandbox/checkpoints/capture.d.ts.map +1 -0
- package/dist/sandbox/checkpoints/capture.js +69 -0
- package/dist/sandbox/checkpoints/capture.js.map +1 -0
- package/dist/sandbox/checkpoints/directory-backend.d.ts +30 -0
- package/dist/sandbox/checkpoints/directory-backend.d.ts.map +1 -0
- package/dist/sandbox/checkpoints/directory-backend.js +98 -0
- package/dist/sandbox/checkpoints/directory-backend.js.map +1 -0
- package/dist/sandbox/checkpoints/index.d.ts +15 -0
- package/dist/sandbox/checkpoints/index.d.ts.map +1 -0
- package/dist/sandbox/checkpoints/index.js +13 -0
- package/dist/sandbox/checkpoints/index.js.map +1 -0
- package/dist/sandbox/checkpoints/record-backend.d.ts +25 -0
- package/dist/sandbox/checkpoints/record-backend.d.ts.map +1 -0
- package/dist/sandbox/checkpoints/record-backend.js +81 -0
- package/dist/sandbox/checkpoints/record-backend.js.map +1 -0
- package/dist/sandbox/checkpoints/saved-states.d.ts +35 -0
- package/dist/sandbox/checkpoints/saved-states.d.ts.map +1 -0
- package/dist/sandbox/checkpoints/saved-states.js +47 -0
- package/dist/sandbox/checkpoints/saved-states.js.map +1 -0
- package/dist/sandbox/checkpoints/types.d.ts +84 -0
- package/dist/sandbox/checkpoints/types.d.ts.map +1 -0
- package/dist/sandbox/checkpoints/types.js +51 -0
- package/dist/sandbox/checkpoints/types.js.map +1 -0
- package/dist/sandbox/checkpoints/validation.d.ts +3 -0
- package/dist/sandbox/checkpoints/validation.d.ts.map +1 -0
- package/dist/sandbox/checkpoints/validation.js +99 -0
- package/dist/sandbox/checkpoints/validation.js.map +1 -0
- package/dist/sandbox/clock.d.ts +121 -0
- package/dist/sandbox/clock.d.ts.map +1 -0
- package/dist/sandbox/clock.js +167 -0
- package/dist/sandbox/clock.js.map +1 -0
- package/dist/sandbox/full-state.d.ts +160 -0
- package/dist/sandbox/full-state.d.ts.map +1 -0
- package/dist/sandbox/full-state.js +267 -0
- package/dist/sandbox/full-state.js.map +1 -0
- package/dist/sandbox/index.d.ts +13 -6
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +23 -9
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/internal/ai-evidence.d.ts +27 -0
- package/dist/sandbox/internal/ai-evidence.d.ts.map +1 -0
- package/dist/sandbox/internal/ai-evidence.js +29 -0
- package/dist/sandbox/internal/ai-evidence.js.map +1 -0
- package/dist/sandbox/internal/event-history.d.ts +32 -0
- package/dist/sandbox/internal/event-history.d.ts.map +1 -0
- package/dist/sandbox/internal/event-history.js +199 -0
- package/dist/sandbox/internal/event-history.js.map +1 -0
- package/dist/sandbox/internal/history-integrity.d.ts +3 -0
- package/dist/sandbox/internal/history-integrity.d.ts.map +1 -0
- package/dist/sandbox/internal/history-integrity.js +12 -0
- package/dist/sandbox/internal/history-integrity.js.map +1 -0
- package/dist/sandbox/internal/history-retention.d.ts +6 -0
- package/dist/sandbox/internal/history-retention.d.ts.map +1 -0
- package/dist/sandbox/internal/history-retention.js +12 -0
- package/dist/sandbox/internal/history-retention.js.map +1 -0
- package/dist/sandbox/internal/index.d.ts +27 -0
- package/dist/sandbox/internal/index.d.ts.map +1 -1
- package/dist/sandbox/internal/index.js +26 -0
- package/dist/sandbox/internal/index.js.map +1 -1
- package/dist/sandbox/internal/observation-history.d.ts +6 -0
- package/dist/sandbox/internal/observation-history.d.ts.map +1 -0
- package/dist/sandbox/internal/observation-history.js +6 -0
- package/dist/sandbox/internal/observation-history.js.map +1 -0
- package/dist/sandbox/internal/observation-payload.d.ts +6 -0
- package/dist/sandbox/internal/observation-payload.d.ts.map +1 -0
- package/dist/sandbox/internal/observation-payload.js +24 -0
- package/dist/sandbox/internal/observation-payload.js.map +1 -0
- package/dist/sandbox/internal/provenance.d.ts +0 -1
- package/dist/sandbox/internal/provenance.d.ts.map +1 -1
- package/dist/sandbox/internal/provenance.js +6 -0
- package/dist/sandbox/internal/provenance.js.map +1 -1
- package/dist/sandbox/internal/root.d.ts +2 -1
- package/dist/sandbox/internal/root.d.ts.map +1 -1
- package/dist/sandbox/internal/root.js +2 -2
- package/dist/sandbox/internal/root.js.map +1 -1
- package/dist/sandbox/internal/rules-evidence-retention.d.ts +11 -0
- package/dist/sandbox/internal/rules-evidence-retention.d.ts.map +1 -0
- package/dist/sandbox/internal/rules-evidence-retention.js +27 -0
- package/dist/sandbox/internal/rules-evidence-retention.js.map +1 -0
- package/dist/sandbox/internal/sandbox-impl.d.ts +40 -33
- package/dist/sandbox/internal/sandbox-impl.d.ts.map +1 -1
- package/dist/sandbox/internal/sandbox-impl.js +83 -40
- package/dist/sandbox/internal/sandbox-impl.js.map +1 -1
- package/dist/sandbox/internal/sdk-activity.d.ts +112 -0
- package/dist/sandbox/internal/sdk-activity.d.ts.map +1 -0
- package/dist/sandbox/internal/sdk-activity.js +240 -0
- package/dist/sandbox/internal/sdk-activity.js.map +1 -0
- package/dist/sandbox/internal/sdk-coverage.d.ts +10 -0
- package/dist/sandbox/internal/sdk-coverage.d.ts.map +1 -0
- package/dist/sandbox/internal/sdk-coverage.js +21 -0
- package/dist/sandbox/internal/sdk-coverage.js.map +1 -0
- package/dist/sandbox/internal/sdk-observation.d.ts +32 -0
- package/dist/sandbox/internal/sdk-observation.d.ts.map +1 -0
- package/dist/sandbox/internal/sdk-observation.js +29 -0
- package/dist/sandbox/internal/sdk-observation.js.map +1 -0
- package/dist/sandbox/internal/sdk-rates.d.ts +97 -0
- package/dist/sandbox/internal/sdk-rates.d.ts.map +1 -0
- package/dist/sandbox/internal/sdk-rates.js +187 -0
- package/dist/sandbox/internal/sdk-rates.js.map +1 -0
- package/dist/sandbox/internal/sdk-write-activity.d.ts +5 -0
- package/dist/sandbox/internal/sdk-write-activity.d.ts.map +1 -0
- package/dist/sandbox/internal/sdk-write-activity.js +13 -0
- package/dist/sandbox/internal/sdk-write-activity.js.map +1 -0
- package/dist/sandbox/internal/state-schemas.d.ts +120 -0
- package/dist/sandbox/internal/state-schemas.d.ts.map +1 -0
- package/dist/sandbox/internal/state-schemas.js +42 -0
- package/dist/sandbox/internal/state-schemas.js.map +1 -0
- package/dist/sandbox/internal/state-values.d.ts +6 -0
- package/dist/sandbox/internal/state-values.d.ts.map +1 -0
- package/dist/sandbox/internal/state-values.js +15 -0
- package/dist/sandbox/internal/state-values.js.map +1 -0
- package/dist/sandbox/internal/storage-activity.d.ts +13 -0
- package/dist/sandbox/internal/storage-activity.d.ts.map +1 -0
- package/dist/sandbox/internal/storage-activity.js +48 -0
- package/dist/sandbox/internal/storage-activity.js.map +1 -0
- package/dist/sandbox/internal/usage-evidence.d.ts +24 -0
- package/dist/sandbox/internal/usage-evidence.d.ts.map +1 -0
- package/dist/sandbox/internal/usage-evidence.js +56 -0
- package/dist/sandbox/internal/usage-evidence.js.map +1 -0
- package/dist/sandbox/operation-record.d.ts +20 -1
- package/dist/sandbox/operation-record.d.ts.map +1 -1
- package/dist/sandbox/operation-record.js +100 -4
- package/dist/sandbox/operation-record.js.map +1 -1
- package/dist/sandbox/persistence/changed-buckets.d.ts +19 -0
- package/dist/sandbox/persistence/changed-buckets.d.ts.map +1 -0
- package/dist/sandbox/persistence/changed-buckets.js +72 -0
- package/dist/sandbox/persistence/changed-buckets.js.map +1 -0
- package/dist/sandbox/persistence/chunk-format.d.ts +27 -1
- package/dist/sandbox/persistence/chunk-format.d.ts.map +1 -1
- package/dist/sandbox/persistence/chunk-format.js +37 -25
- package/dist/sandbox/persistence/chunk-format.js.map +1 -1
- package/dist/sandbox/persistence/controller.d.ts.map +1 -1
- package/dist/sandbox/persistence/controller.js +91 -36
- package/dist/sandbox/persistence/controller.js.map +1 -1
- package/dist/sandbox/persistence/import-bundle.d.ts +8 -0
- package/dist/sandbox/persistence/import-bundle.d.ts.map +1 -0
- package/dist/sandbox/persistence/import-bundle.js +66 -0
- package/dist/sandbox/persistence/import-bundle.js.map +1 -0
- package/dist/sandbox/persistence/serialize.d.ts +1 -1
- package/dist/sandbox/persistence/serialize.d.ts.map +1 -1
- package/dist/sandbox/persistence/serialize.js +16 -11
- package/dist/sandbox/persistence/serialize.js.map +1 -1
- package/dist/sandbox/persistence/types.d.ts +4 -0
- package/dist/sandbox/persistence/types.d.ts.map +1 -1
- package/dist/sandbox/persistence/validate-services.d.ts +7 -0
- package/dist/sandbox/persistence/validate-services.d.ts.map +1 -0
- package/dist/sandbox/persistence/validate-services.js +73 -0
- package/dist/sandbox/persistence/validate-services.js.map +1 -0
- package/dist/sandbox/remote.d.ts +6 -0
- package/dist/sandbox/remote.d.ts.map +1 -1
- package/dist/sandbox/remote.js.map +1 -1
- package/dist/sandbox/replay/index.d.ts +1 -1
- package/dist/sandbox/replay/index.d.ts.map +1 -1
- package/dist/sandbox/replay/index.js +18 -8
- package/dist/sandbox/replay/index.js.map +1 -1
- package/dist/sandbox/types/errors.d.ts +3 -1
- package/dist/sandbox/types/errors.d.ts.map +1 -1
- package/dist/sandbox/types/errors.js +0 -4
- package/dist/sandbox/types/errors.js.map +1 -1
- package/dist/sandbox/types/events.d.ts +105 -76
- package/dist/sandbox/types/events.d.ts.map +1 -1
- package/dist/sandbox/types/events.js +0 -5
- package/dist/sandbox/types/events.js.map +1 -1
- package/dist/sandbox/types/index.d.ts +2 -1
- package/dist/sandbox/types/index.d.ts.map +1 -1
- package/dist/sandbox/types/index.js +1 -0
- package/dist/sandbox/types/index.js.map +1 -1
- package/dist/sandbox/types/operation.d.ts +13 -4
- package/dist/sandbox/types/operation.d.ts.map +1 -1
- package/dist/sandbox/types/persistence.d.ts +2 -2
- package/dist/sandbox/types/query-proof.d.ts +25 -0
- package/dist/sandbox/types/query-proof.d.ts.map +1 -0
- package/dist/sandbox/types/query-proof.js +2 -0
- package/dist/sandbox/types/query-proof.js.map +1 -0
- package/dist/sandbox/types/request-observation.d.ts +19 -0
- package/dist/sandbox/types/request-observation.d.ts.map +1 -0
- package/dist/sandbox/types/request-observation.js +13 -0
- package/dist/sandbox/types/request-observation.js.map +1 -0
- package/dist/sandbox/types/rules-evidence.d.ts +48 -0
- package/dist/sandbox/types/rules-evidence.d.ts.map +1 -0
- package/dist/sandbox/types/rules-evidence.js +2 -0
- package/dist/sandbox/types/rules-evidence.js.map +1 -0
- package/dist/sandbox/types/service-event-record.d.ts +30 -0
- package/dist/sandbox/types/service-event-record.d.ts.map +1 -0
- package/dist/sandbox/types/service-event-record.js +13 -0
- package/dist/sandbox/types/service-event-record.js.map +1 -0
- package/dist/sandbox/types/service-event-records.d.ts +64 -0
- package/dist/sandbox/types/service-event-records.d.ts.map +1 -0
- package/dist/sandbox/types/service-event-records.js +31 -0
- package/dist/sandbox/types/service-event-records.js.map +1 -0
- package/dist/sandbox/types/service-mutation-event.d.ts +88 -0
- package/dist/sandbox/types/service-mutation-event.d.ts.map +1 -0
- package/dist/sandbox/types/service-mutation-event.js +2 -0
- package/dist/sandbox/types/service-mutation-event.js.map +1 -0
- package/dist/storage/activity-coverage.d.ts +9 -0
- package/dist/storage/activity-coverage.d.ts.map +1 -0
- package/dist/storage/activity-coverage.js +9 -0
- package/dist/storage/activity-coverage.js.map +1 -0
- package/dist/storage/base64.d.ts +14 -0
- package/dist/storage/base64.d.ts.map +1 -0
- package/dist/storage/base64.js +34 -0
- package/dist/storage/base64.js.map +1 -0
- package/dist/storage/download.d.ts +12 -4
- package/dist/storage/download.d.ts.map +1 -1
- package/dist/storage/download.js +19 -6
- package/dist/storage/download.js.map +1 -1
- package/dist/storage/enforce.d.ts +13 -2
- package/dist/storage/enforce.d.ts.map +1 -1
- package/dist/storage/enforce.js +21 -3
- package/dist/storage/enforce.js.map +1 -1
- package/dist/storage/errors.d.ts +29 -5
- package/dist/storage/errors.d.ts.map +1 -1
- package/dist/storage/errors.js +28 -0
- package/dist/storage/errors.js.map +1 -1
- package/dist/storage/events.d.ts +12 -0
- package/dist/storage/events.d.ts.map +1 -0
- package/dist/storage/events.js +10 -0
- package/dist/storage/events.js.map +1 -0
- package/dist/storage/index.d.ts +7 -7
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +7 -5
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +10 -1
- package/dist/storage/internal.d.ts.map +1 -1
- package/dist/storage/internal.js +9 -1
- package/dist/storage/internal.js.map +1 -1
- package/dist/storage/metadata.d.ts +19 -0
- package/dist/storage/metadata.d.ts.map +1 -1
- package/dist/storage/metadata.js +50 -19
- package/dist/storage/metadata.js.map +1 -1
- package/dist/storage/observed.d.ts +16 -0
- package/dist/storage/observed.d.ts.map +1 -0
- package/dist/storage/observed.js +17 -0
- package/dist/storage/observed.js.map +1 -0
- package/dist/storage/persistence.d.ts +157 -20
- package/dist/storage/persistence.d.ts.map +1 -1
- package/dist/storage/persistence.js +423 -53
- package/dist/storage/persistence.js.map +1 -1
- package/dist/storage/reference.d.ts +3 -1
- package/dist/storage/reference.d.ts.map +1 -1
- package/dist/storage/reference.js +3 -2
- package/dist/storage/reference.js.map +1 -1
- package/dist/storage/remote-bytes.d.ts +44 -0
- package/dist/storage/remote-bytes.d.ts.map +1 -0
- package/dist/storage/remote-bytes.js +97 -0
- package/dist/storage/remote-bytes.js.map +1 -0
- package/dist/storage/resumable.d.ts.map +1 -1
- package/dist/storage/resumable.js +16 -0
- package/dist/storage/resumable.js.map +1 -1
- package/dist/storage/rules-resolution.d.ts +13 -1
- package/dist/storage/rules-resolution.d.ts.map +1 -1
- package/dist/storage/rules-resolution.js +28 -0
- package/dist/storage/rules-resolution.js.map +1 -1
- package/dist/storage/sandbox/persistence-state.d.ts +25 -0
- package/dist/storage/sandbox/persistence-state.d.ts.map +1 -0
- package/dist/storage/sandbox/persistence-state.js +53 -0
- package/dist/storage/sandbox/persistence-state.js.map +1 -0
- package/dist/storage/sandbox/rules-bindings.d.ts +15 -0
- package/dist/storage/sandbox/rules-bindings.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-bindings.js +69 -0
- package/dist/storage/sandbox/rules-bindings.js.map +1 -0
- package/dist/storage/sandbox/rules-collection-methods.d.ts +3 -0
- package/dist/storage/sandbox/rules-collection-methods.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-collection-methods.js +149 -0
- package/dist/storage/sandbox/rules-collection-methods.js.map +1 -0
- package/dist/storage/sandbox/rules-evaluator.d.ts +2 -2
- package/dist/storage/sandbox/rules-evaluator.d.ts.map +1 -1
- package/dist/storage/sandbox/rules-evaluator.js +51 -129
- package/dist/storage/sandbox/rules-evaluator.js.map +1 -1
- package/dist/storage/sandbox/rules-firestore-lookup.d.ts +25 -0
- package/dist/storage/sandbox/rules-firestore-lookup.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-firestore-lookup.js +94 -0
- package/dist/storage/sandbox/rules-firestore-lookup.js.map +1 -0
- package/dist/storage/sandbox/rules-hashing-methods.d.ts +16 -0
- package/dist/storage/sandbox/rules-hashing-methods.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-hashing-methods.js +41 -0
- package/dist/storage/sandbox/rules-hashing-methods.js.map +1 -0
- package/dist/storage/sandbox/rules-method-calls.d.ts +40 -0
- package/dist/storage/sandbox/rules-method-calls.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-method-calls.js +47 -0
- package/dist/storage/sandbox/rules-method-calls.js.map +1 -0
- package/dist/storage/sandbox/rules-methods.d.ts +11 -12
- package/dist/storage/sandbox/rules-methods.d.ts.map +1 -1
- package/dist/storage/sandbox/rules-methods.js +62 -359
- package/dist/storage/sandbox/rules-methods.js.map +1 -1
- package/dist/storage/sandbox/rules-operators.d.ts +32 -0
- package/dist/storage/sandbox/rules-operators.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-operators.js +85 -0
- package/dist/storage/sandbox/rules-operators.js.map +1 -0
- package/dist/storage/sandbox/rules-string-methods.d.ts +3 -0
- package/dist/storage/sandbox/rules-string-methods.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-string-methods.js +199 -0
- package/dist/storage/sandbox/rules-string-methods.js.map +1 -0
- package/dist/storage/sandbox/rules-time-methods.d.ts +25 -0
- package/dist/storage/sandbox/rules-time-methods.d.ts.map +1 -0
- package/dist/storage/sandbox/rules-time-methods.js +89 -0
- package/dist/storage/sandbox/rules-time-methods.js.map +1 -0
- package/dist/storage/sandbox/rules-values.d.ts +6 -0
- package/dist/storage/sandbox/rules-values.d.ts.map +1 -1
- package/dist/storage/sandbox/rules-values.js +29 -2
- package/dist/storage/sandbox/rules-values.js.map +1 -1
- package/dist/storage/sandbox/rules.d.ts +25 -13
- package/dist/storage/sandbox/rules.d.ts.map +1 -1
- package/dist/storage/sandbox/rules.js +19 -10
- package/dist/storage/sandbox/rules.js.map +1 -1
- package/dist/storage/sandbox/running-service.d.ts +65 -0
- package/dist/storage/sandbox/running-service.d.ts.map +1 -0
- package/dist/storage/sandbox/running-service.js +30 -0
- package/dist/storage/sandbox/running-service.js.map +1 -0
- package/dist/storage/service.d.ts +46 -28
- package/dist/storage/service.d.ts.map +1 -1
- package/dist/storage/service.js +169 -57
- package/dist/storage/service.js.map +1 -1
- package/dist/storage/string-format.d.ts +9 -0
- package/dist/storage/string-format.d.ts.map +1 -0
- package/dist/storage/string-format.js +8 -0
- package/dist/storage/string-format.js.map +1 -0
- package/dist/storage/upload.d.ts +2 -1
- package/dist/storage/upload.d.ts.map +1 -1
- package/dist/storage/upload.js +6 -2
- package/dist/storage/upload.js.map +1 -1
- package/dist/storage/url.d.ts +18 -0
- package/dist/storage/url.d.ts.map +1 -0
- package/dist/storage/url.js +84 -0
- package/dist/storage/url.js.map +1 -0
- package/package.json +17 -1
- package/src/ai/activity.ts +43 -0
- package/src/ai/broker/broker.ts +59 -6
- package/src/ai/broker/gemini-engine.ts +16 -0
- package/src/ai/broker/index.ts +1 -1
- package/src/ai/broker/openai-engine.ts +6 -3
- package/src/ai/broker/scripted-engine.ts +16 -5
- package/src/ai/broker/types.ts +6 -2
- package/src/ai/events.ts +29 -0
- package/src/ai/generation-enums.ts +48 -0
- package/src/ai/index.ts +9 -0
- package/src/ai/instances.ts +22 -2
- package/src/ai/internal.ts +5 -0
- package/src/ai/sandbox-plane.ts +23 -8
- package/src/ai/scripting.ts +42 -7
- package/src/app/internal.ts +1 -0
- package/src/auth/email-link.ts +32 -21
- package/src/auth/events.ts +29 -0
- package/src/auth/factor-id.ts +7 -0
- package/src/auth/index.ts +2 -0
- package/src/auth/instances.ts +13 -1
- package/src/auth/internal.ts +24 -0
- package/src/auth/modular.ts +27 -0
- package/src/auth/reauth.ts +3 -2
- package/src/auth/sandbox/default-avatar.ts +177 -0
- package/src/auth/sandbox/driver.ts +54 -0
- package/src/auth/sandbox/project-store.ts +0 -2
- package/src/auth/sandbox-backend-types.ts +31 -20
- package/src/auth/sandbox-backend.ts +400 -94
- package/src/auth/seed-user.ts +38 -0
- package/src/auth/tokens.ts +21 -18
- package/src/auth/types.ts +13 -1
- package/src/database/activity-coverage.ts +10 -0
- package/src/database/connection-lifecycle.ts +53 -24
- package/src/database/events.ts +20 -0
- package/src/database/instances.ts +52 -21
- package/src/database/internal/query-projection.ts +333 -0
- package/src/database/internal.ts +2 -0
- package/src/database/listeners.ts +162 -44
- package/src/database/operations.ts +73 -50
- package/src/database/replay.ts +6 -2
- package/src/database/routing.ts +4 -0
- package/src/database/sandbox/backend-for.ts +145 -25
- package/src/database/sandbox/backend-state.ts +15 -1
- package/src/database/sandbox/backend.ts +4 -2
- package/src/database/sandbox/child-listeners.ts +32 -13
- package/src/database/sandbox/listener-types.ts +5 -0
- package/src/database/sandbox/operation-events.ts +23 -9
- package/src/database/sandbox/persistence-state.ts +4 -11
- package/src/database/sandbox/priority-writes.ts +2 -2
- package/src/database/sandbox/query.ts +13 -268
- package/src/database/sandbox/rules-eval.ts +144 -10
- package/src/database/sandbox/transactions.ts +17 -39
- package/src/database/sandbox/value-listeners.ts +66 -23
- package/src/database/sandbox/write-plane.ts +29 -22
- package/src/database/sdk-activity.ts +26 -0
- package/src/database/transactions.ts +15 -11
- package/src/database/types.ts +12 -1
- package/src/deferred/entry.ts +16 -10
- package/src/firestore/activity-coverage.ts +8 -0
- package/src/firestore/aggregates.ts +17 -9
- package/src/firestore/bytes.ts +56 -0
- package/src/firestore/converter-method.ts +49 -0
- package/src/firestore/errors.ts +8 -0
- package/src/firestore/field-values.ts +3 -158
- package/src/firestore/geo-point.ts +56 -0
- package/src/firestore/index.ts +1 -1
- package/src/firestore/instances.ts +23 -2
- package/src/firestore/internal/document-data.ts +9 -0
- package/src/firestore/internal/index.ts +7 -0
- package/src/firestore/internal/value-codec.ts +150 -83
- package/src/firestore/internal/value-depth.ts +19 -0
- package/src/firestore/listeners.ts +60 -18
- package/src/firestore/persistence.ts +14 -9
- package/src/firestore/plain-object.ts +7 -0
- package/src/firestore/query-constraints.ts +4 -8
- package/src/firestore/reads.ts +81 -48
- package/src/firestore/refs.ts +56 -41
- package/src/firestore/sandbox/activity-query-display.ts +138 -0
- package/src/firestore/sandbox/admin-compat/batch.ts +26 -19
- package/src/firestore/sandbox/admin-compat/query-comparison.ts +9 -8
- package/src/firestore/sandbox/admin-compat/query.ts +46 -12
- package/src/firestore/sandbox/admin-compat/read-translation.ts +18 -6
- package/src/firestore/sandbox/admin-compat/transaction.ts +14 -4
- package/src/firestore/sandbox/admin-compat/types.ts +6 -88
- package/src/firestore/sandbox/atomic-state.ts +112 -0
- package/src/firestore/sandbox/atomic-write-pipeline.ts +129 -77
- package/src/firestore/sandbox/batch-write-executor.ts +51 -29
- package/src/firestore/sandbox/converters/user-timestamp.ts +19 -42
- package/src/firestore/sandbox/document-copy.ts +27 -0
- package/src/firestore/sandbox/document-store.ts +108 -0
- package/src/firestore/sandbox/errors.ts +5 -1
- package/src/firestore/sandbox/event-log.ts +72 -7
- package/src/firestore/sandbox/field-merge.ts +10 -19
- package/src/firestore/sandbox/history-controls.ts +1 -1
- package/src/firestore/sandbox/list-query-proof.ts +43 -72
- package/src/firestore/sandbox/listener-dispatch.ts +59 -4
- package/src/firestore/sandbox/local-environment.ts +35 -7
- package/src/firestore/sandbox/local-state.ts +72 -232
- package/src/firestore/sandbox/query-execution.ts +56 -34
- package/src/firestore/sandbox/query-operand-equality.ts +57 -14
- package/src/firestore/sandbox/query-operators.ts +20 -0
- package/src/firestore/sandbox/query-value-registry.ts +3 -2
- package/src/firestore/sandbox/request-events.ts +5 -0
- package/src/firestore/sandbox/rules-evidence.ts +94 -0
- package/src/firestore/sandbox/rules-list-authorizer.ts +62 -107
- package/src/firestore/sandbox/rules-operation-reader.ts +11 -4
- package/src/firestore/sandbox/rules-read-engine.ts +19 -8
- package/src/firestore/sandbox/rules-state.ts +21 -0
- package/src/firestore/sandbox/snapshot-listeners.ts +12 -1
- package/src/firestore/sandbox/transaction-merge.ts +33 -20
- package/src/firestore/sandbox/transaction-types.ts +11 -21
- package/src/firestore/sandbox/transaction-write-executor.ts +103 -69
- package/src/firestore/sandbox/transaction.ts +24 -7
- package/src/firestore/sandbox/value-resolver.ts +2 -13
- package/src/firestore/sandbox/write-engine.ts +13 -5
- package/src/firestore/sandbox/write-runtime.ts +68 -40
- package/src/firestore/sandbox/writes.ts +3 -1
- package/src/firestore/sdk-activity.ts +31 -0
- package/src/firestore/snapshots.ts +84 -18
- package/src/firestore/state.ts +34 -14
- package/src/firestore/timestamp.ts +86 -0
- package/src/firestore/tools.ts +3 -3
- package/src/firestore/transactions.ts +88 -8
- package/src/firestore/types.ts +26 -5
- package/src/firestore/vector-value.ts +54 -0
- package/src/firestore/writes.ts +53 -43
- package/src/functions/events.ts +27 -0
- package/src/messaging/broker/broker.test.ts +114 -0
- package/src/messaging/broker/broker.ts +152 -65
- package/src/messaging/broker/delivery-history.ts +49 -0
- package/src/messaging/broker/index.ts +11 -0
- package/src/messaging/broker/persistence.ts +54 -0
- package/src/messaging/broker/types.ts +50 -0
- package/src/messaging/events.ts +29 -0
- package/src/rules/api/case-types.ts +7 -0
- package/src/rules/api/rtdb.ts +15 -7
- package/src/rules/grammar/parse-error-wording.ts +98 -0
- package/src/rules/indexes/query-analysis.ts +136 -0
- package/src/rules/indexes/service-query.ts +69 -0
- package/src/rules/internal/index.ts +16 -0
- package/src/rules/modules/rules-capabilities.generated.ts +1 -1
- package/src/rules/rtdb/constraints/atoms.spec.ts +7 -7
- package/src/rules/rtdb/constraints/atoms.ts +7 -7
- package/src/rules/rtdb/constraints/data.ts +4 -4
- package/src/rules/rtdb/constraints/document.ts +4 -2
- package/src/rules/rtdb/constraints/game.spec.ts +4 -4
- package/src/rules/rtdb/constraints/policies.spec.ts +5 -5
- package/src/rules/rtdb/constraints/policies.ts +4 -4
- package/src/rules/rtdb/constraints/schema.ts +3 -3
- package/src/rules/rtdb/grammar/RtdbExpr.ohm +1 -3
- package/src/rules/rtdb/grammar/RtdbExpr.ohm.generated.ts +1 -3
- package/src/rules/rtdb/grammar/linter.ts +34 -30
- package/src/rules/rtdb/grammar/simulator.ts +112 -74
- package/src/rules/rtdb/grammar/validator.ts +30 -26
- package/src/rules/rtdb/simulation/handler.ts +139 -36
- package/src/rules/rtdb/simulation/spec.ts +24 -1
- package/src/rules/simulator/evaluator.ts +34 -41
- package/src/rules/simulator/handler.ts +12 -3
- package/src/rules/simulator/mapdiff.ts +7 -5
- package/src/rules/simulator/query-proof-residual.ts +209 -0
- package/src/rules/simulator/query-proof.ts +53 -27
- package/src/rules/simulator/request-path.ts +39 -0
- package/src/rules/simulator/trace-recorder.ts +3 -0
- package/src/rules/simulator/wrappers/timestamp.ts +8 -1
- package/src/rules/simulator-tools-impl.ts +6 -3
- package/src/rules/stdlib-tools.ts +4 -4
- package/src/sandbox/active-listeners.ts +245 -0
- package/src/sandbox/admin-firestore/error-translation.ts +16 -2
- package/src/sandbox/admin-firestore/listeners.ts +26 -1
- package/src/sandbox/admin-firestore/remote/listeners.ts +50 -32
- package/src/sandbox/admin-firestore/remote/value-codec.ts +7 -14
- package/src/sandbox/admin-firestore/remote/wire-types.ts +3 -0
- package/src/sandbox/attribution/attribution-mode.ts +74 -0
- package/src/sandbox/attribution/effect-regions.ts +130 -0
- package/src/sandbox/attribution/element-selector.ts +118 -0
- package/src/sandbox/attribution/listener-owners.ts +277 -0
- package/src/sandbox/branches/engine.ts +362 -0
- package/src/sandbox/branches/index.ts +12 -448
- package/src/sandbox/branches/promotion.ts +207 -0
- package/src/sandbox/branches/state-diff.ts +333 -0
- package/src/sandbox/branches/store.ts +317 -0
- package/src/sandbox/checkpoints/capture.ts +77 -0
- package/src/sandbox/checkpoints/directory-backend.ts +110 -0
- package/src/sandbox/checkpoints/index.ts +32 -0
- package/src/sandbox/checkpoints/record-backend.ts +109 -0
- package/src/sandbox/checkpoints/saved-states.ts +72 -0
- package/src/sandbox/checkpoints/types.ts +115 -0
- package/src/sandbox/checkpoints/validation.ts +102 -0
- package/src/sandbox/clock.ts +205 -0
- package/src/sandbox/full-state.ts +403 -0
- package/src/sandbox/index.ts +53 -10
- package/src/sandbox/internal/ai-evidence.ts +38 -0
- package/src/sandbox/internal/event-history.ts +193 -0
- package/src/sandbox/internal/history-integrity.ts +12 -0
- package/src/sandbox/internal/history-retention.ts +16 -0
- package/src/sandbox/internal/index.ts +65 -0
- package/src/sandbox/internal/observation-history.ts +5 -0
- package/src/sandbox/internal/observation-payload.ts +18 -0
- package/src/sandbox/internal/provenance.ts +5 -0
- package/src/sandbox/internal/root.ts +3 -2
- package/src/sandbox/internal/rules-evidence-retention.ts +28 -0
- package/src/sandbox/internal/sandbox-impl.ts +91 -45
- package/src/sandbox/internal/sdk-activity.ts +291 -0
- package/src/sandbox/internal/sdk-coverage.ts +28 -0
- package/src/sandbox/internal/sdk-observation.ts +62 -0
- package/src/sandbox/internal/sdk-rates.ts +240 -0
- package/src/sandbox/internal/sdk-write-activity.ts +14 -0
- package/src/sandbox/internal/state-schemas.ts +47 -0
- package/src/sandbox/internal/state-values.ts +20 -0
- package/src/sandbox/internal/storage-activity.ts +43 -0
- package/src/sandbox/internal/usage-evidence.ts +77 -0
- package/src/sandbox/operation-record.ts +107 -4
- package/src/sandbox/persistence/changed-buckets.ts +61 -0
- package/src/sandbox/persistence/chunk-format.ts +39 -27
- package/src/sandbox/persistence/controller.ts +85 -33
- package/src/sandbox/persistence/import-bundle.ts +64 -0
- package/src/sandbox/persistence/serialize.ts +16 -10
- package/src/sandbox/persistence/types.ts +4 -0
- package/src/sandbox/persistence/validate-services.ts +70 -0
- package/src/sandbox/remote.ts +7 -0
- package/src/sandbox/replay/index.ts +15 -8
- package/src/sandbox/types/errors.ts +3 -1
- package/src/sandbox/types/events.ts +118 -75
- package/src/sandbox/types/index.ts +12 -0
- package/src/sandbox/types/operation.ts +14 -4
- package/src/sandbox/types/persistence.ts +2 -2
- package/src/sandbox/types/query-proof.ts +26 -0
- package/src/sandbox/types/request-observation.ts +25 -0
- package/src/sandbox/types/rules-evidence.ts +37 -0
- package/src/sandbox/types/service-event-record.ts +34 -0
- package/src/sandbox/types/service-event-records.ts +42 -0
- package/src/sandbox/types/service-mutation-event.ts +93 -0
- package/src/storage/activity-coverage.ts +8 -0
- package/src/storage/base64.ts +35 -0
- package/src/storage/download.ts +19 -6
- package/src/storage/enforce.ts +26 -4
- package/src/storage/errors.ts +29 -14
- package/src/storage/events.ts +21 -0
- package/src/storage/index.ts +7 -7
- package/src/storage/internal.ts +21 -0
- package/src/storage/metadata.ts +68 -19
- package/src/storage/observed.ts +16 -0
- package/src/storage/persistence.ts +574 -66
- package/src/storage/reference.ts +6 -3
- package/src/storage/remote-bytes.ts +122 -0
- package/src/storage/resumable.ts +16 -3
- package/src/storage/rules-resolution.ts +43 -1
- package/src/storage/sandbox/persistence-state.ts +71 -0
- package/src/storage/sandbox/rules-bindings.ts +69 -0
- package/src/storage/sandbox/rules-collection-methods.ts +161 -0
- package/src/storage/sandbox/rules-evaluator.ts +65 -142
- package/src/storage/sandbox/rules-firestore-lookup.ts +112 -0
- package/src/storage/sandbox/rules-hashing-methods.ts +50 -0
- package/src/storage/sandbox/rules-method-calls.ts +67 -0
- package/src/storage/sandbox/rules-methods.ts +63 -404
- package/src/storage/sandbox/rules-operators.ts +93 -0
- package/src/storage/sandbox/rules-string-methods.ts +214 -0
- package/src/storage/sandbox/rules-time-methods.ts +98 -0
- package/src/storage/sandbox/rules-values.ts +20 -1
- package/src/storage/sandbox/rules.ts +27 -14
- package/src/storage/sandbox/running-service.ts +52 -0
- package/src/storage/service.ts +196 -85
- package/src/storage/string-format.ts +8 -0
- package/src/storage/upload.ts +8 -3
- package/src/storage/url.ts +106 -0
package/src/ai/scripting.ts
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
import {
|
|
21
21
|
ScriptedEngine,
|
|
22
|
+
type AiEngineStatus,
|
|
22
23
|
type ScriptEntry,
|
|
23
24
|
type ScriptMatcher,
|
|
24
25
|
type ScriptRespond,
|
|
@@ -28,7 +29,14 @@ import { AIError, AIErrorCode } from './errors.js';
|
|
|
28
29
|
import { targetOf } from './target.js';
|
|
29
30
|
import type { AI } from './types.js';
|
|
30
31
|
|
|
31
|
-
export
|
|
32
|
+
export { lastUserText } from './broker/index.js';
|
|
33
|
+
export type { AiEngineStatus, GenerateContentRequest, ScriptEntry, ScriptMatcher, ScriptRespond } from './broker/index.js';
|
|
34
|
+
|
|
35
|
+
/** One queued entry, beside whether it has already answered a call. */
|
|
36
|
+
export interface ScriptedEntryStatus {
|
|
37
|
+
entry: ScriptEntry;
|
|
38
|
+
consumed: boolean;
|
|
39
|
+
}
|
|
32
40
|
|
|
33
41
|
/** An HTTP error capture pasted whole: status + the wire error body. */
|
|
34
42
|
export interface HttpErrorRespond {
|
|
@@ -87,21 +95,48 @@ function normalizeEntry(entry: ScriptingEntry): ScriptEntry {
|
|
|
87
95
|
* entries are unconditional FIFO (broker semantics).
|
|
88
96
|
*/
|
|
89
97
|
export function script(ai: AI, entries: ScriptingEntry[]): void {
|
|
98
|
+
scriptedEngineOf(ai, 'script(ai, entries)').push(...entries.map(normalizeEntry));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** The scripted engine behind a sandbox AI handle, or a refusal matching {@link script}'s own. */
|
|
102
|
+
function scriptedEngineOf(ai: AI, caller: string): ScriptedEngine {
|
|
90
103
|
const target = targetOf(ai);
|
|
91
104
|
if (target.kind !== 'sandbox') {
|
|
92
|
-
throw new AIError(
|
|
93
|
-
AIErrorCode.UNSUPPORTED,
|
|
94
|
-
'script(ai, entries) is unavailable for a transport-backed AI handle.',
|
|
95
|
-
);
|
|
105
|
+
throw new AIError(AIErrorCode.UNSUPPORTED, `${caller} is unavailable for a transport-backed AI handle.`);
|
|
96
106
|
}
|
|
97
107
|
const engine = target.broker.engine;
|
|
98
108
|
if (!(engine instanceof ScriptedEngine)) {
|
|
99
109
|
throw new AIError(
|
|
100
110
|
AIErrorCode.UNSUPPORTED,
|
|
101
|
-
|
|
111
|
+
`${caller} requires the scripted engine (the getAI(sandbox) default, or engine: { kind: 'scripted' }).`,
|
|
102
112
|
);
|
|
103
113
|
}
|
|
104
|
-
engine
|
|
114
|
+
return engine;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/** Empty the scripted engine's entry queue. A later call matches nothing until entries are pushed again. */
|
|
118
|
+
export function clearScripts(ai: AI): void {
|
|
119
|
+
scriptedEngineOf(ai, 'clearScripts(ai)').clear();
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/** The scripted engine's queued entries, each beside whether it has already answered a call. */
|
|
123
|
+
export function scripts(ai: AI): ReadonlyArray<ScriptedEntryStatus> {
|
|
124
|
+
return scriptedEngineOf(ai, 'scripts(ai)').list();
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* The resolved answer engine's mode, model, upstream, and whether a key is
|
|
129
|
+
* configured. Never the key itself. Works for whichever engine is
|
|
130
|
+
* configured, not only the scripted one, so a sandbox running the gemini
|
|
131
|
+
* production-passthrough engine still reports through this call; `script`,
|
|
132
|
+
* `clearScripts`, and `scripts` are what stay scoped to the scripted engine.
|
|
133
|
+
*/
|
|
134
|
+
export function aiStatus(ai: AI): AiEngineStatus {
|
|
135
|
+
const target = targetOf(ai);
|
|
136
|
+
if (target.kind !== 'sandbox') {
|
|
137
|
+
throw new AIError(AIErrorCode.UNSUPPORTED, 'aiStatus(ai) is unavailable for a transport-backed AI handle.');
|
|
138
|
+
}
|
|
139
|
+
return target.broker.describeStatus();
|
|
105
140
|
}
|
|
106
141
|
|
|
107
142
|
/**
|
package/src/app/internal.ts
CHANGED
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
export { bindAppRegistrySandbox } from './registry.js';
|
|
11
11
|
export { firebaseOptionsEqual } from './options.js';
|
|
12
12
|
export { isSandboxAppDeleted };
|
|
13
|
+
export { deferredEntry, PyricDeferredApiError, type DeferredApi } from '../deferred/entry.js';
|
|
13
14
|
|
|
14
15
|
/** Host-only lifecycle seam for resources owned by one FirebaseApp. */
|
|
15
16
|
export function registerAppCleanup(
|
package/src/auth/email-link.ts
CHANGED
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
type ActionCodeSettings,
|
|
53
53
|
} from './action-codes.js';
|
|
54
54
|
import { targetOf } from './target.js';
|
|
55
|
-
import type { Auth, UserCredential } from './types.js';
|
|
55
|
+
import type { Auth, User, UserCredential } from './types.js';
|
|
56
56
|
|
|
57
57
|
/**
|
|
58
58
|
* `sendSignInLinkToEmail(auth, email, settings)` — mirror of
|
|
@@ -108,8 +108,14 @@ export async function sendSignInLinkToEmail(
|
|
|
108
108
|
*/
|
|
109
109
|
export function isSignInWithEmailLink(auth: Auth, link: string): boolean {
|
|
110
110
|
targetOf(auth);
|
|
111
|
+
return isEmailSignInLink(link);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** Shared link predicate for page handles that do not own an Auth backend. */
|
|
115
|
+
export function isEmailSignInLink(link: string): boolean {
|
|
111
116
|
const parsed = ActionCodeURL.parseLink(link);
|
|
112
|
-
|
|
117
|
+
const isSignIn = parsed !== null && parsed.operation === ActionCodeOperation.EMAIL_SIGNIN;
|
|
118
|
+
return isSignIn;
|
|
113
119
|
}
|
|
114
120
|
|
|
115
121
|
/**
|
|
@@ -133,11 +139,25 @@ export async function signInWithEmailLink(
|
|
|
133
139
|
email: string,
|
|
134
140
|
link: string,
|
|
135
141
|
): Promise<UserCredential> {
|
|
142
|
+
const { user, isNewUser } = resolveEmailLinkIdentity(auth, email, link);
|
|
143
|
+
await targetOf(auth).backend.transitionCurrentUser(user, 'password');
|
|
144
|
+
return {
|
|
145
|
+
user,
|
|
146
|
+
// Email/password credentials have a null providerId, including email links.
|
|
147
|
+
providerId: null,
|
|
148
|
+
operationType: 'signIn',
|
|
149
|
+
_additionalUserInfo: { isNewUser, profile: {}, providerId: null },
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/** Redeem and resolve the account without changing the backend's global session. */
|
|
154
|
+
export function resolveEmailLinkIdentity(auth: Auth, email: string, link: string): { user: User; isNewUser: boolean } {
|
|
136
155
|
const t = targetOf(auth);
|
|
137
156
|
const target = t;
|
|
138
157
|
target.backend.assertProviderEnabled('password');
|
|
139
158
|
const parsed = ActionCodeURL.parseLink(link);
|
|
140
|
-
|
|
159
|
+
const missingLink = parsed === null;
|
|
160
|
+
if (missingLink) {
|
|
141
161
|
// Oracle: a `mode=signIn` link with no oobCode throws
|
|
142
162
|
// `auth/argument-error` client-side, NOT invalid-action-code — the
|
|
143
163
|
// SDK never gets far enough to ask the server about a code it cannot
|
|
@@ -147,7 +167,8 @@ export async function signInWithEmailLink(
|
|
|
147
167
|
'signInWithEmailLink: the link is not a valid email sign-in link (no oobCode).',
|
|
148
168
|
);
|
|
149
169
|
}
|
|
150
|
-
|
|
170
|
+
const wrongOperation = parsed.operation !== ActionCodeOperation.EMAIL_SIGNIN;
|
|
171
|
+
if (wrongOperation) {
|
|
151
172
|
throw makeAuthError(
|
|
152
173
|
'auth/argument-error',
|
|
153
174
|
`signInWithEmailLink: the link authorizes ${parsed.operation}, not an email sign-in.`,
|
|
@@ -156,20 +177,23 @@ export async function signInWithEmailLink(
|
|
|
156
177
|
assertEmail(email, 'signInWithEmailLink');
|
|
157
178
|
|
|
158
179
|
const spec = target.backend.peekActionCode(parsed.code);
|
|
159
|
-
|
|
180
|
+
const missingCode = spec === undefined;
|
|
181
|
+
if (missingCode) {
|
|
160
182
|
throw makeAuthError(
|
|
161
183
|
'auth/invalid-action-code',
|
|
162
184
|
'signInWithEmailLink: the action code is invalid. This can happen if the code is malformed, expired, or has already been used.',
|
|
163
185
|
);
|
|
164
186
|
}
|
|
165
|
-
|
|
187
|
+
const expired = spec.expired === true;
|
|
188
|
+
if (expired) {
|
|
166
189
|
throw makeAuthError('auth/expired-action-code', 'signInWithEmailLink: the action code has expired.');
|
|
167
190
|
}
|
|
168
191
|
// The address the caller passed must be the one the link was issued
|
|
169
192
|
// for. This is the check that makes the flow safe against a link
|
|
170
193
|
// pasted into the wrong session — upstream requires the caller to
|
|
171
194
|
// supply the email precisely so it can be compared.
|
|
172
|
-
|
|
195
|
+
const wrongEmail = spec.email.toLowerCase() !== email.toLowerCase();
|
|
196
|
+
if (wrongEmail) {
|
|
173
197
|
throw makeAuthError(
|
|
174
198
|
'auth/invalid-email',
|
|
175
199
|
'signInWithEmailLink: the email provided does not match the address this sign-in link was issued for.',
|
|
@@ -180,20 +204,7 @@ export async function signInWithEmailLink(
|
|
|
180
204
|
const { stored, isNewUser } = target.backend.upsertEmailLinkUser(spec.email);
|
|
181
205
|
target.backend.assertSignInAllowed(stored.uid);
|
|
182
206
|
const user = target.backend.buildUserFromStored(stored);
|
|
183
|
-
|
|
184
|
-
return {
|
|
185
|
-
user,
|
|
186
|
-
// Email/password sign-ins carry `providerId: null` on the credential
|
|
187
|
-
// — the same oracle-pinned rule `signInWithEmailAndPassword` follows
|
|
188
|
-
// (observations/auth/auth-createUser-operationType.json).
|
|
189
|
-
providerId: null,
|
|
190
|
-
operationType: 'signIn',
|
|
191
|
-
_additionalUserInfo: {
|
|
192
|
-
isNewUser,
|
|
193
|
-
profile: {},
|
|
194
|
-
providerId: null,
|
|
195
|
-
},
|
|
196
|
-
};
|
|
207
|
+
return { user, isNewUser };
|
|
197
208
|
}
|
|
198
209
|
|
|
199
210
|
/** The email-link sign-in method id, for symmetry with
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the auth surface puts on the sandbox event stream.
|
|
3
|
+
*
|
|
4
|
+
* The sandbox core reads this record to derive the `auth` arm of
|
|
5
|
+
* `ServiceMutationEvent`; the emit sites in `auth/sandbox-backend.ts` are
|
|
6
|
+
* typed against the operations declared here.
|
|
7
|
+
*/
|
|
8
|
+
import type { ServiceEventRecord } from '../sandbox/types/service-event-record.js';
|
|
9
|
+
|
|
10
|
+
export const AUTH_EVENT_RECORD = {
|
|
11
|
+
service: 'auth',
|
|
12
|
+
operations: [
|
|
13
|
+
'user_create',
|
|
14
|
+
'user_update',
|
|
15
|
+
'user_delete',
|
|
16
|
+
'users_clear',
|
|
17
|
+
'sign_in',
|
|
18
|
+
'sign_out',
|
|
19
|
+
'provider_config_update',
|
|
20
|
+
],
|
|
21
|
+
target: {
|
|
22
|
+
name: 'uid',
|
|
23
|
+
description: "The mutated user's uid, or '*' when every user was cleared.",
|
|
24
|
+
always: false,
|
|
25
|
+
},
|
|
26
|
+
} as const satisfies ServiceEventRecord;
|
|
27
|
+
|
|
28
|
+
/** Every operation the auth surface emits. */
|
|
29
|
+
export type AuthEventOperation = (typeof AUTH_EVENT_RECORD)['operations'][number];
|
package/src/auth/index.ts
CHANGED
package/src/auth/instances.ts
CHANGED
|
@@ -108,12 +108,24 @@ function makeAuthHandle(target: Target, app?: FirebaseApp): Auth {
|
|
|
108
108
|
return signOut(handle as Auth);
|
|
109
109
|
},
|
|
110
110
|
} as Auth;
|
|
111
|
-
|
|
111
|
+
Object.defineProperty(handle, 'currentUser', {
|
|
112
112
|
enumerable: true,
|
|
113
113
|
get(): User | null {
|
|
114
114
|
return target.backend.getCurrentUser();
|
|
115
115
|
},
|
|
116
116
|
});
|
|
117
|
+
// `tenantId` is an accessor rather than a plain field so the value an app
|
|
118
|
+
// assigns is the value the backend reads when it fixes a sign-in's tenant.
|
|
119
|
+
// Every handle over one backend therefore agrees on the active tenant.
|
|
120
|
+
return Object.defineProperty(handle, 'tenantId', {
|
|
121
|
+
enumerable: true,
|
|
122
|
+
get(): string | null {
|
|
123
|
+
return target.backend.getTenantId();
|
|
124
|
+
},
|
|
125
|
+
set(tenantId: string | null): void {
|
|
126
|
+
target.backend.setTenantId(tenantId);
|
|
127
|
+
},
|
|
128
|
+
});
|
|
117
129
|
}
|
|
118
130
|
|
|
119
131
|
export function connectAuthEmulator(
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `pyric/auth/internal` — host-only seam for the sandbox auth backend, on the
|
|
3
|
+
* `pyric/sandbox/internal` / `pyric/storage/internal` precedent.
|
|
4
|
+
*
|
|
5
|
+
* The default-avatar generator is the sandbox's built-in image of last resort.
|
|
6
|
+
* The dev server's `/__pyric/assets/avatar/<uid>` route mounts it as the asset
|
|
7
|
+
* resolver's fallback, so a served page and an in-page sandbox with no server
|
|
8
|
+
* render the SAME deterministic face for a uid. `@pyric/cli` reads it through
|
|
9
|
+
* this subpath rather than reaching into the package's source tree.
|
|
10
|
+
*
|
|
11
|
+
* **Not part of the public API.** These exports mirror no Firebase surface and
|
|
12
|
+
* are never reached by application code, so the conformance census does not
|
|
13
|
+
* measure them. Shape subject to change without breaking-change semantics
|
|
14
|
+
* across versions.
|
|
15
|
+
*/
|
|
16
|
+
export {
|
|
17
|
+
avatarSeed,
|
|
18
|
+
defaultAvatarDataUri,
|
|
19
|
+
defaultAvatarMint,
|
|
20
|
+
defaultAvatarSvg,
|
|
21
|
+
} from './sandbox/default-avatar.js';
|
|
22
|
+
export type { AvatarMint, AvatarMintInput } from './sandbox/default-avatar.js';
|
|
23
|
+
export { isEmailSignInLink, resolveEmailLinkIdentity } from './email-link.js';
|
|
24
|
+
export { resolveCustomTokenIdentity } from './tokens.js';
|
package/src/auth/modular.ts
CHANGED
|
@@ -26,6 +26,7 @@ export type {
|
|
|
26
26
|
UpdateUserRequest,
|
|
27
27
|
} from './sandbox-backend.js';
|
|
28
28
|
export type { AuthMailResolver, OutboundAuthMail } from './sandbox-auth-flow.js';
|
|
29
|
+
export type { AvatarMint, AvatarMintInput } from './sandbox/default-avatar.js';
|
|
29
30
|
|
|
30
31
|
export {
|
|
31
32
|
EmailAuthProvider,
|
|
@@ -116,3 +117,29 @@ export {
|
|
|
116
117
|
useDeviceLanguage,
|
|
117
118
|
} from './user-lifecycle.js';
|
|
118
119
|
export { sandbox } from './sandbox/driver.js';
|
|
120
|
+
import type { AuthLens } from '../sandbox/types/operation.js';
|
|
121
|
+
export type { AuthLens };
|
|
122
|
+
|
|
123
|
+
let _activeAuthLens: AuthLens | undefined;
|
|
124
|
+
const _authLensListeners = new Set<(lens: AuthLens | undefined) => void>();
|
|
125
|
+
|
|
126
|
+
/** Switch the active AuthLens for subsequent data operations. */
|
|
127
|
+
export function switchAuthLens(lens: AuthLens | undefined): void {
|
|
128
|
+
_activeAuthLens = lens && lens.mode === 'app-session' ? undefined : lens;
|
|
129
|
+
for (const cb of [..._authLensListeners]) {
|
|
130
|
+
cb(_activeAuthLens);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/** Return the currently active AuthLens, or undefined if using the default app session. */
|
|
135
|
+
export function getAuthLens(): AuthLens | undefined {
|
|
136
|
+
return _activeAuthLens;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/** Subscribe to AuthLens changes. Returns an unsubscribe function. */
|
|
140
|
+
export function onAuthLensChanged(cb: (lens: AuthLens | undefined) => void): () => void {
|
|
141
|
+
_authLensListeners.add(cb);
|
|
142
|
+
return () => {
|
|
143
|
+
_authLensListeners.delete(cb);
|
|
144
|
+
};
|
|
145
|
+
}
|
package/src/auth/reauth.ts
CHANGED
|
@@ -179,8 +179,9 @@ function completeReauth(
|
|
|
179
179
|
// Force a refresh: a successful re-auth produces a NEW token with a new
|
|
180
180
|
// authTime. That advance is the observable trace of the re-verification
|
|
181
181
|
// (and what prod's recent-login gate reads).
|
|
182
|
-
target.backend.getIdTokenResultFor(user.uid, claims, true);
|
|
183
|
-
const
|
|
182
|
+
target.backend.getIdTokenResultFor(user.uid, claims, true, user.tenantId);
|
|
183
|
+
const hasStoredUser = stored !== undefined;
|
|
184
|
+
const refreshed = hasStoredUser ? target.backend.buildUserFromStored(stored) : user;
|
|
184
185
|
return {
|
|
185
186
|
user: refreshed,
|
|
186
187
|
providerId,
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic default-avatar generation: seed hashing + inline SVG data URI,
|
|
3
|
+
* plus the mint hook the sandbox backend calls when it creates a
|
|
4
|
+
* provider-identity record with no photo of its own.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const FNV_OFFSET_BASIS_A = 0x811c9dc5;
|
|
8
|
+
const FNV_OFFSET_BASIS_B = 0x9e3779b9;
|
|
9
|
+
const FNV_PRIME = 0x01000193;
|
|
10
|
+
|
|
11
|
+
function fnv1a32(bytes: Uint8Array, offsetBasis: number): number {
|
|
12
|
+
let hash = offsetBasis;
|
|
13
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
14
|
+
hash ^= bytes[i]!;
|
|
15
|
+
hash = Math.imul(hash, FNV_PRIME);
|
|
16
|
+
}
|
|
17
|
+
return hash >>> 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function toHex8(value: number): string {
|
|
21
|
+
return value.toString(16).padStart(8, '0');
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Deterministic 64-bit seed for a uid, returned as 16 lowercase hex chars.
|
|
26
|
+
* FNV-1a 32-bit is run twice with different offset baskets (forward and
|
|
27
|
+
* reversed uid bytes) to spread the uid's entropy across both halves.
|
|
28
|
+
*/
|
|
29
|
+
export function avatarSeed(uid: string): string {
|
|
30
|
+
const forwardBytes = new TextEncoder().encode(uid);
|
|
31
|
+
const reversedBytes = new TextEncoder().encode([...uid].reverse().join(''));
|
|
32
|
+
const highHalf = fnv1a32(forwardBytes, FNV_OFFSET_BASIS_A);
|
|
33
|
+
const lowHalf = fnv1a32(reversedBytes, FNV_OFFSET_BASIS_B);
|
|
34
|
+
return toHex8(highHalf) + toHex8(lowHalf);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
interface DefaultAvatarInput {
|
|
38
|
+
uid: string;
|
|
39
|
+
displayName?: string | null;
|
|
40
|
+
email?: string | null;
|
|
41
|
+
/** Render the generating state: the same deterministic artwork plus a
|
|
42
|
+
* spinning ring, with the initial dimmed. A configured source producing
|
|
43
|
+
* this user's real image is still running, so the plain avatar would
|
|
44
|
+
* otherwise be indistinguishable from a finished one and read as a
|
|
45
|
+
* silent failure. Declarative SVG animation, so it runs inside an
|
|
46
|
+
* `<img>` element with no script and nothing for an application to
|
|
47
|
+
* style. */
|
|
48
|
+
pending?: boolean;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
interface GradientHues {
|
|
52
|
+
hueStart: number;
|
|
53
|
+
hueEnd: number;
|
|
54
|
+
saturation: number;
|
|
55
|
+
lightness: number;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function gradientHuesFromSeed(seed: string): GradientHues {
|
|
59
|
+
const highHalf = Number.parseInt(seed.slice(0, 8), 16);
|
|
60
|
+
const lowHalf = Number.parseInt(seed.slice(8, 16), 16);
|
|
61
|
+
const hueStart = highHalf % 360;
|
|
62
|
+
const hueSpread = 40 + (lowHalf % 80);
|
|
63
|
+
const hueEnd = (hueStart + hueSpread) % 360;
|
|
64
|
+
const saturation = 60 + (highHalf % 16); // 60-75
|
|
65
|
+
const lightness = 45 + (lowHalf % 16); // 45-60
|
|
66
|
+
return { hueStart, hueEnd, saturation, lightness };
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** First Unicode code point of a string, safe for surrogate pairs (emoji, CJK). */
|
|
70
|
+
function firstCodePoint(value: string): string | undefined {
|
|
71
|
+
const segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });
|
|
72
|
+
const first = segmenter.segment(value)[Symbol.iterator]().next();
|
|
73
|
+
if (first.done) return undefined;
|
|
74
|
+
return first.value.segment;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function glyphFromInput(input: DefaultAvatarInput): string | undefined {
|
|
78
|
+
const displayNameFirst = input.displayName?.trim();
|
|
79
|
+
if (displayNameFirst) {
|
|
80
|
+
const glyph = firstCodePoint(displayNameFirst);
|
|
81
|
+
if (glyph) return glyph.toUpperCase();
|
|
82
|
+
}
|
|
83
|
+
const emailLocalPart = input.email?.split('@')[0]?.trim();
|
|
84
|
+
if (emailLocalPart) {
|
|
85
|
+
const glyph = firstCodePoint(emailLocalPart);
|
|
86
|
+
if (glyph) return glyph.toUpperCase();
|
|
87
|
+
}
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** Encode SVG markup for embedding as a `data:image/svg+xml,` URI. */
|
|
92
|
+
function encodeSvgForDataUri(svg: string): string {
|
|
93
|
+
return encodeURIComponent(svg)
|
|
94
|
+
.replace(/'/g, '%27')
|
|
95
|
+
.replace(/\(/g, '%28')
|
|
96
|
+
.replace(/\)/g, '%29');
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Deterministic default avatar for a user: a two-hue linear gradient plus a
|
|
101
|
+
* centred initial glyph, as raw SVG markup. `defaultAvatarDataUri` encodes
|
|
102
|
+
* this for the in-page fallback; the served dev server encodes it as UTF-8
|
|
103
|
+
* bytes and serves it directly as `image/svg+xml` (the asset resolver's
|
|
104
|
+
* built-in fallback — see `pyric/auth/internal` and
|
|
105
|
+
* `@pyric/cli`'s `serve/sandbox-session.ts`).
|
|
106
|
+
*/
|
|
107
|
+
export function defaultAvatarSvg(input: DefaultAvatarInput): string {
|
|
108
|
+
const seed = avatarSeed(input.uid);
|
|
109
|
+
const { hueStart, hueEnd, saturation, lightness } = gradientHuesFromSeed(seed);
|
|
110
|
+
const gradientId = `g${seed}`;
|
|
111
|
+
const glyph = glyphFromInput(input);
|
|
112
|
+
|
|
113
|
+
const pending = input.pending === true;
|
|
114
|
+
|
|
115
|
+
const glyphMarkup =
|
|
116
|
+
glyph === undefined
|
|
117
|
+
? ''
|
|
118
|
+
: `<text x="64" y="64" font-family="system-ui, -apple-system, sans-serif" ` +
|
|
119
|
+
`font-size="56" fill="#fff" fill-opacity="${pending ? '0.55' : '0.9'}" text-anchor="middle" ` +
|
|
120
|
+
`dominant-baseline="central">${glyph}</text>`;
|
|
121
|
+
|
|
122
|
+
// r=56 with a 6-wide stroke stays inside the 64 radius a circular crop
|
|
123
|
+
// cuts at, so the ring survives `border-radius: 50%`. The dash pattern
|
|
124
|
+
// sums to the circumference (2*pi*56), leaving one visible arc.
|
|
125
|
+
const pendingMarkup = pending
|
|
126
|
+
? `<circle cx="64" cy="64" r="56" fill="none" stroke="#fff" stroke-opacity="0.25" stroke-width="6"/>` +
|
|
127
|
+
`<circle cx="64" cy="64" r="56" fill="none" stroke="#fff" stroke-opacity="0.95" stroke-width="6" ` +
|
|
128
|
+
`stroke-linecap="round" stroke-dasharray="44 308">` +
|
|
129
|
+
`<animateTransform attributeName="transform" type="rotate" from="0 64 64" to="360 64 64" ` +
|
|
130
|
+
`dur="1s" repeatCount="indefinite"/></circle>`
|
|
131
|
+
: '';
|
|
132
|
+
|
|
133
|
+
return (
|
|
134
|
+
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">` +
|
|
135
|
+
`<defs><linearGradient id="${gradientId}" x1="0" y1="0" x2="1" y2="1">` +
|
|
136
|
+
`<stop offset="0%" stop-color="hsl(${hueStart},${saturation}%,${lightness}%)"/>` +
|
|
137
|
+
`<stop offset="100%" stop-color="hsl(${hueEnd},${saturation}%,${lightness}%)"/>` +
|
|
138
|
+
`</linearGradient></defs>` +
|
|
139
|
+
`<rect width="128" height="128" fill="url(#${gradientId})"/>` +
|
|
140
|
+
`${glyphMarkup}${pendingMarkup}</svg>`
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Deterministic default avatar for a user, encoded as a `data:image/svg+xml,`
|
|
146
|
+
* URI — the in-page fallback used when no dev server is present.
|
|
147
|
+
*/
|
|
148
|
+
export function defaultAvatarDataUri(input: DefaultAvatarInput): string {
|
|
149
|
+
return `data:image/svg+xml,${encodeSvgForDataUri(defaultAvatarSvg(input))}`;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/** Everything a mint knows about the record being created. The provider id is
|
|
153
|
+
* the one the record is created under, so a mint can vary the image by
|
|
154
|
+
* provider or refuse a provider outright. */
|
|
155
|
+
export interface AvatarMintInput {
|
|
156
|
+
uid: string;
|
|
157
|
+
displayName: string | null;
|
|
158
|
+
email: string | null;
|
|
159
|
+
providerId: string;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Assigns the `photoURL` a provider-created sandbox user is born with, or
|
|
164
|
+
* `null` for none. The backend calls it once, at record creation, and stores
|
|
165
|
+
* whatever it returns — the value is persisted, exported, and captured, so a
|
|
166
|
+
* mint must be deterministic in its input.
|
|
167
|
+
*
|
|
168
|
+
* Three mints exist. {@link defaultAvatarMint} is the built-in and needs no
|
|
169
|
+
* server. A served host replaces it with one that returns its
|
|
170
|
+
* `/__pyric/assets/avatar/<uid>` route, and a host with avatars disabled
|
|
171
|
+
* replaces it with one that returns `null` (Firebase's own behaviour when a
|
|
172
|
+
* provider supplies no photo).
|
|
173
|
+
*/
|
|
174
|
+
export type AvatarMint = (input: AvatarMintInput) => string | null;
|
|
175
|
+
|
|
176
|
+
/** The no-server mint: a deterministic SVG data URI, resolvable anywhere. */
|
|
177
|
+
export const defaultAvatarMint: AvatarMint = (input) => defaultAvatarDataUri(input);
|
|
@@ -11,6 +11,7 @@ import type {
|
|
|
11
11
|
UpdateUserRequest,
|
|
12
12
|
} from '../sandbox-backend.js';
|
|
13
13
|
import { targetOf, type SandboxTarget } from '../target.js';
|
|
14
|
+
import type { AvatarMint } from './default-avatar.js';
|
|
14
15
|
import type {
|
|
15
16
|
Auth,
|
|
16
17
|
AuthFlowResolver,
|
|
@@ -84,10 +85,34 @@ export const sandbox = {
|
|
|
84
85
|
return requireSandbox(auth).backend.restoreSession(uid);
|
|
85
86
|
},
|
|
86
87
|
|
|
88
|
+
/** Read `Auth.tenantId` without going through the handle's own property,
|
|
89
|
+
* for a host capturing the tenant scope alongside a signed-in uid (a
|
|
90
|
+
* process boundary has no live `Auth` object to read it from later). */
|
|
91
|
+
getTenantId(auth: Auth): string | null {
|
|
92
|
+
return requireSandbox(auth).backend.getTenantId();
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
/** Write `Auth.tenantId` without a sign-in, the seam a host uses to put
|
|
96
|
+
* a captured tenant scope back once {@link restoreSession} has restored
|
|
97
|
+
* the uid it was captured alongside. */
|
|
98
|
+
setTenantId(auth: Auth, tenantId: string | null): void {
|
|
99
|
+
requireSandbox(auth).backend.setTenantId(tenantId);
|
|
100
|
+
},
|
|
101
|
+
|
|
87
102
|
mintSession(auth: Auth, request: MintSessionRequest): MintedSession {
|
|
88
103
|
return requireSandbox(auth).backend.mintDetachedSession(request);
|
|
89
104
|
},
|
|
90
105
|
|
|
106
|
+
/**
|
|
107
|
+
* The provider the app session signed in through: `password`, `anonymous`,
|
|
108
|
+
* `custom`, or a federated provider id such as `google.com`.
|
|
109
|
+
* The same value `IdTokenResult.signInProvider` carries, so a reporter that
|
|
110
|
+
* labels a session keeps no second copy of it. `null` when signed out.
|
|
111
|
+
*/
|
|
112
|
+
signInProvider(auth: Auth): string | null {
|
|
113
|
+
return requireSandbox(auth).backend.getCurrentSignInProvider();
|
|
114
|
+
},
|
|
115
|
+
|
|
91
116
|
listUsers(auth: Auth): AuthUserRecord[] {
|
|
92
117
|
return requireSandbox(auth).backend.listUsers();
|
|
93
118
|
},
|
|
@@ -120,6 +145,23 @@ export const sandbox = {
|
|
|
120
145
|
return requireSandbox(auth).backend.subscribeUsers(callback);
|
|
121
146
|
},
|
|
122
147
|
|
|
148
|
+
/**
|
|
149
|
+
* Which sign-in providers are enabled, keyed by provider id.
|
|
150
|
+
*
|
|
151
|
+
* The whole-state form, beside {@link getAuthProviderConfig}'s listing: it
|
|
152
|
+
* is what a capture writes down and what {@link restoreProviderConfig} takes
|
|
153
|
+
* back, so a state capture reaches the account store through this namespace
|
|
154
|
+
* rather than through the backend handle.
|
|
155
|
+
*/
|
|
156
|
+
exportProviderConfig(auth: Auth): Record<string, boolean> {
|
|
157
|
+
return requireSandbox(auth).backend.exportProviderConfig();
|
|
158
|
+
},
|
|
159
|
+
|
|
160
|
+
/** Replace the provider configuration with exactly the one given. */
|
|
161
|
+
restoreProviderConfig(auth: Auth, config: Record<string, boolean>): void {
|
|
162
|
+
requireSandbox(auth).backend.restoreProviderConfig(config);
|
|
163
|
+
},
|
|
164
|
+
|
|
123
165
|
getAuthProviderConfig(auth: Auth): Array<{ providerId: string; enabled: boolean }> {
|
|
124
166
|
return requireSandbox(auth).backend.listProviderConfig();
|
|
125
167
|
},
|
|
@@ -136,6 +178,18 @@ export const sandbox = {
|
|
|
136
178
|
requireSandbox(auth).backend.setProviderEnforcementDelegated(delegated);
|
|
137
179
|
},
|
|
138
180
|
|
|
181
|
+
/**
|
|
182
|
+
* Replace the mint that assigns a default `photoURL` to federated-provider
|
|
183
|
+
* users at creation. The built-in mint returns a deterministic SVG data URI;
|
|
184
|
+
* a served host installs one that returns its avatar route, and a host with
|
|
185
|
+
* avatars turned off installs `() => null` for Firebase's own no-photo
|
|
186
|
+
* behaviour. Install it during boot: the minted value is stored on each
|
|
187
|
+
* record as it is created.
|
|
188
|
+
*/
|
|
189
|
+
setAvatarMint(auth: Auth, mint: AvatarMint): void {
|
|
190
|
+
requireSandbox(auth).backend.setAvatarMint(mint);
|
|
191
|
+
},
|
|
192
|
+
|
|
139
193
|
subscribeAuthProviderConfig(auth: Auth, callback: () => void): Unsubscribe {
|
|
140
194
|
return requireSandbox(auth).backend.subscribeProviderConfig(callback);
|
|
141
195
|
},
|
|
@@ -9,7 +9,6 @@ export interface AuthProjectStore {
|
|
|
9
9
|
readonly providerConfigSubscribers: Set<() => void>;
|
|
10
10
|
readonly counters: {
|
|
11
11
|
nextAdminUserId: number;
|
|
12
|
-
nextAnonymousId: number;
|
|
13
12
|
};
|
|
14
13
|
}
|
|
15
14
|
|
|
@@ -25,7 +24,6 @@ export function createAuthProjectStore(): AuthProjectStore {
|
|
|
25
24
|
providerConfigSubscribers: new Set(),
|
|
26
25
|
counters: {
|
|
27
26
|
nextAdminUserId: 1,
|
|
28
|
-
nextAnonymousId: 1,
|
|
29
27
|
},
|
|
30
28
|
};
|
|
31
29
|
}
|