pyric 0.0.1 → 0.1.0-alpha.11
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/LICENSE +216 -0
- package/README.md +179 -2
- package/README.md.orig +54 -0
- package/dist/ai/backend.d.ts +35 -0
- package/dist/ai/backend.d.ts.map +1 -0
- package/dist/ai/backend.js +42 -0
- package/dist/ai/backend.js.map +1 -0
- package/dist/ai/broker/broker.d.ts +72 -0
- package/dist/ai/broker/broker.d.ts.map +1 -0
- package/dist/ai/broker/broker.js +212 -0
- package/dist/ai/broker/broker.js.map +1 -0
- package/dist/ai/broker/index.d.ts +12 -0
- package/dist/ai/broker/index.d.ts.map +1 -0
- package/dist/ai/broker/index.js +11 -0
- package/dist/ai/broker/index.js.map +1 -0
- package/dist/ai/broker/openai-engine.d.ts +185 -0
- package/dist/ai/broker/openai-engine.d.ts.map +1 -0
- package/dist/ai/broker/openai-engine.js +528 -0
- package/dist/ai/broker/openai-engine.js.map +1 -0
- package/dist/ai/broker/scripted-engine.d.ts +54 -0
- package/dist/ai/broker/scripted-engine.d.ts.map +1 -0
- package/dist/ai/broker/scripted-engine.js +240 -0
- package/dist/ai/broker/scripted-engine.js.map +1 -0
- package/dist/ai/broker/synthesizer.d.ts +100 -0
- package/dist/ai/broker/synthesizer.d.ts.map +1 -0
- package/dist/ai/broker/synthesizer.js +278 -0
- package/dist/ai/broker/synthesizer.js.map +1 -0
- package/dist/ai/broker/types.d.ts +216 -0
- package/dist/ai/broker/types.d.ts.map +1 -0
- package/dist/ai/broker/types.js +20 -0
- package/dist/ai/broker/types.js.map +1 -0
- package/dist/ai/enums.d.ts +174 -0
- package/dist/ai/enums.d.ts.map +1 -0
- package/dist/ai/enums.js +155 -0
- package/dist/ai/enums.js.map +1 -0
- package/dist/ai/errors.d.ts +66 -0
- package/dist/ai/errors.d.ts.map +1 -0
- package/dist/ai/errors.js +100 -0
- package/dist/ai/errors.js.map +1 -0
- package/dist/ai/index.d.ts +31 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +27 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/instances.d.ts +17 -0
- package/dist/ai/instances.d.ts.map +1 -0
- package/dist/ai/instances.js +106 -0
- package/dist/ai/instances.js.map +1 -0
- package/dist/ai/internal.d.ts +13 -0
- package/dist/ai/internal.d.ts.map +1 -0
- package/dist/ai/internal.js +45 -0
- package/dist/ai/internal.js.map +1 -0
- package/dist/ai/models.d.ts +116 -0
- package/dist/ai/models.d.ts.map +1 -0
- package/dist/ai/models.js +213 -0
- package/dist/ai/models.js.map +1 -0
- package/dist/ai/request-helpers.d.ts +59 -0
- package/dist/ai/request-helpers.d.ts.map +1 -0
- package/dist/ai/request-helpers.js +157 -0
- package/dist/ai/request-helpers.js.map +1 -0
- package/dist/ai/response-helpers.d.ts +41 -0
- package/dist/ai/response-helpers.d.ts.map +1 -0
- package/dist/ai/response-helpers.js +204 -0
- package/dist/ai/response-helpers.js.map +1 -0
- package/dist/ai/sandbox-plane.d.ts +41 -0
- package/dist/ai/sandbox-plane.d.ts.map +1 -0
- package/dist/ai/sandbox-plane.js +159 -0
- package/dist/ai/sandbox-plane.js.map +1 -0
- package/dist/ai/schema.d.ts +105 -0
- package/dist/ai/schema.d.ts.map +1 -0
- package/dist/ai/schema.js +174 -0
- package/dist/ai/schema.js.map +1 -0
- package/dist/ai/scripting.d.ts +53 -0
- package/dist/ai/scripting.d.ts.map +1 -0
- package/dist/ai/scripting.js +73 -0
- package/dist/ai/scripting.js.map +1 -0
- package/dist/ai/target.d.ts +20 -0
- package/dist/ai/target.d.ts.map +1 -0
- package/dist/ai/target.js +29 -0
- package/dist/ai/target.js.map +1 -0
- package/dist/ai/types.d.ts +400 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +10 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/app/diagnostics.d.ts +29 -0
- package/dist/app/diagnostics.d.ts.map +1 -0
- package/dist/app/diagnostics.js +88 -0
- package/dist/app/diagnostics.js.map +1 -0
- package/dist/app/index.d.ts +7 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +5 -0
- package/dist/app/index.js.map +1 -0
- package/dist/app/internal.d.ts +11 -0
- package/dist/app/internal.d.ts.map +1 -0
- package/dist/app/internal.js +18 -0
- package/dist/app/internal.js.map +1 -0
- package/dist/app/options.d.ts +3 -0
- package/dist/app/options.d.ts.map +1 -0
- package/dist/app/options.js +19 -0
- package/dist/app/options.js.map +1 -0
- package/dist/app/register.d.ts +4 -0
- package/dist/app/register.d.ts.map +1 -0
- package/dist/app/register.js +35 -0
- package/dist/app/register.js.map +1 -0
- package/dist/app/registry.d.ts +12 -0
- package/dist/app/registry.d.ts.map +1 -0
- package/dist/app/registry.js +147 -0
- package/dist/app/registry.js.map +1 -0
- package/dist/app/runtime.d.ts +18 -0
- package/dist/app/runtime.d.ts.map +1 -0
- package/dist/app/runtime.js +119 -0
- package/dist/app/runtime.js.map +1 -0
- package/dist/app/types.d.ts +21 -0
- package/dist/app/types.d.ts.map +1 -0
- package/dist/app/types.js +2 -0
- package/dist/app/types.js.map +1 -0
- package/dist/auth/action-code-url.d.ts +70 -0
- package/dist/auth/action-code-url.d.ts.map +1 -0
- package/dist/auth/action-code-url.js +124 -0
- package/dist/auth/action-code-url.js.map +1 -0
- package/dist/auth/action-codes.d.ts +201 -0
- package/dist/auth/action-codes.d.ts.map +1 -0
- package/dist/auth/action-codes.js +355 -0
- package/dist/auth/action-codes.js.map +1 -0
- package/dist/auth/auth-errors.d.ts +21 -0
- package/dist/auth/auth-errors.d.ts.map +1 -0
- package/dist/auth/auth-errors.js +23 -0
- package/dist/auth/auth-errors.js.map +1 -0
- package/dist/auth/config-tokens.d.ts +90 -0
- package/dist/auth/config-tokens.d.ts.map +1 -0
- package/dist/auth/config-tokens.js +86 -0
- package/dist/auth/config-tokens.js.map +1 -0
- package/dist/auth/credentials.d.ts +140 -0
- package/dist/auth/credentials.d.ts.map +1 -0
- package/dist/auth/credentials.js +194 -0
- package/dist/auth/credentials.js.map +1 -0
- package/dist/auth/email-link.d.ts +91 -0
- package/dist/auth/email-link.d.ts.map +1 -0
- package/dist/auth/email-link.js +172 -0
- package/dist/auth/email-link.js.map +1 -0
- package/dist/auth/enums.d.ts +210 -0
- package/dist/auth/enums.d.ts.map +1 -0
- package/dist/auth/enums.js +206 -0
- package/dist/auth/enums.js.map +1 -0
- package/dist/auth/index.d.ts +3 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +3 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/instances.d.ts +14 -0
- package/dist/auth/instances.d.ts.map +1 -0
- package/dist/auth/instances.js +95 -0
- package/dist/auth/instances.js.map +1 -0
- package/dist/auth/linking.d.ts +93 -0
- package/dist/auth/linking.d.ts.map +1 -0
- package/dist/auth/linking.js +189 -0
- package/dist/auth/linking.js.map +1 -0
- package/dist/auth/modular.d.ts +22 -0
- package/dist/auth/modular.d.ts.map +1 -0
- package/dist/auth/modular.js +18 -0
- package/dist/auth/modular.js.map +1 -0
- package/dist/auth/password-policy.d.ts +60 -0
- package/dist/auth/password-policy.d.ts.map +1 -0
- package/dist/auth/password-policy.js +68 -0
- package/dist/auth/password-policy.js.map +1 -0
- package/dist/auth/providers.d.ts +153 -0
- package/dist/auth/providers.d.ts.map +1 -0
- package/dist/auth/providers.js +207 -0
- package/dist/auth/providers.js.map +1 -0
- package/dist/auth/reauth.d.ts +73 -0
- package/dist/auth/reauth.d.ts.map +1 -0
- package/dist/auth/reauth.js +148 -0
- package/dist/auth/reauth.js.map +1 -0
- package/dist/auth/sandbox/driver.d.ts +51 -0
- package/dist/auth/sandbox/driver.d.ts.map +1 -0
- package/dist/auth/sandbox/driver.js +88 -0
- package/dist/auth/sandbox/driver.js.map +1 -0
- package/dist/auth/sandbox/persistence.d.ts +7 -0
- package/dist/auth/sandbox/persistence.d.ts.map +1 -0
- package/dist/auth/sandbox/persistence.js +128 -0
- package/dist/auth/sandbox/persistence.js.map +1 -0
- package/dist/auth/sandbox/project-store.d.ts +15 -0
- package/dist/auth/sandbox/project-store.d.ts.map +1 -0
- package/dist/auth/sandbox/project-store.js +17 -0
- package/dist/auth/sandbox/project-store.js.map +1 -0
- package/dist/auth/sandbox-auth-flow.d.ts +173 -0
- package/dist/auth/sandbox-auth-flow.d.ts.map +1 -0
- package/dist/auth/sandbox-auth-flow.js +165 -0
- package/dist/auth/sandbox-auth-flow.js.map +1 -0
- package/dist/auth/sandbox-backend-types.d.ts +197 -0
- package/dist/auth/sandbox-backend-types.d.ts.map +1 -0
- package/dist/auth/sandbox-backend-types.js +18 -0
- package/dist/auth/sandbox-backend-types.js.map +1 -0
- package/dist/auth/sandbox-backend.d.ts +811 -0
- package/dist/auth/sandbox-backend.d.ts.map +1 -0
- package/dist/auth/sandbox-backend.js +2007 -0
- package/dist/auth/sandbox-backend.js.map +1 -0
- package/dist/auth/sandbox-credential-validators.d.ts +30 -0
- package/dist/auth/sandbox-credential-validators.d.ts.map +1 -0
- package/dist/auth/sandbox-credential-validators.js +47 -0
- package/dist/auth/sandbox-credential-validators.js.map +1 -0
- package/dist/auth/sandbox-token.d.ts +24 -0
- package/dist/auth/sandbox-token.d.ts.map +1 -0
- package/dist/auth/sandbox-token.js +32 -0
- package/dist/auth/sandbox-token.js.map +1 -0
- package/dist/auth/sign-in.d.ts +14 -0
- package/dist/auth/sign-in.d.ts.map +1 -0
- package/dist/auth/sign-in.js +140 -0
- package/dist/auth/sign-in.js.map +1 -0
- package/dist/auth/target.d.ts +29 -0
- package/dist/auth/target.d.ts.map +1 -0
- package/dist/auth/target.js +23 -0
- package/dist/auth/target.js.map +1 -0
- package/dist/auth/tokens.d.ts +54 -0
- package/dist/auth/tokens.d.ts.map +1 -0
- package/dist/auth/tokens.js +142 -0
- package/dist/auth/tokens.js.map +1 -0
- package/dist/auth/types.d.ts +283 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +24 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/auth/user-lifecycle.d.ts +17 -0
- package/dist/auth/user-lifecycle.d.ts.map +1 -0
- package/dist/auth/user-lifecycle.js +60 -0
- package/dist/auth/user-lifecycle.js.map +1 -0
- package/dist/database/index.d.ts +9 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +9 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/listener-registry.d.ts +16 -0
- package/dist/database/listener-registry.d.ts.map +1 -0
- package/dist/database/listener-registry.js +68 -0
- package/dist/database/listener-registry.js.map +1 -0
- package/dist/database/modular.d.ts +632 -0
- package/dist/database/modular.d.ts.map +1 -0
- package/dist/database/modular.js +1080 -0
- package/dist/database/modular.js.map +1 -0
- package/dist/database/replay.d.ts +32 -0
- package/dist/database/replay.d.ts.map +1 -0
- package/dist/database/replay.js +124 -0
- package/dist/database/replay.js.map +1 -0
- package/dist/database/sandbox/backend-for.d.ts +10 -0
- package/dist/database/sandbox/backend-for.d.ts.map +1 -0
- package/dist/database/sandbox/backend-for.js +24 -0
- package/dist/database/sandbox/backend-for.js.map +1 -0
- package/dist/database/sandbox/backend.d.ts +434 -0
- package/dist/database/sandbox/backend.d.ts.map +1 -0
- package/dist/database/sandbox/backend.js +1533 -0
- package/dist/database/sandbox/backend.js.map +1 -0
- package/dist/database/sandbox/data-tree.d.ts +123 -0
- package/dist/database/sandbox/data-tree.d.ts.map +1 -0
- package/dist/database/sandbox/data-tree.js +310 -0
- package/dist/database/sandbox/data-tree.js.map +1 -0
- package/dist/database/sandbox/normalize.d.ts +77 -0
- package/dist/database/sandbox/normalize.d.ts.map +1 -0
- package/dist/database/sandbox/normalize.js +165 -0
- package/dist/database/sandbox/normalize.js.map +1 -0
- package/dist/database/sandbox/push-id.d.ts +32 -0
- package/dist/database/sandbox/push-id.d.ts.map +1 -0
- package/dist/database/sandbox/push-id.js +82 -0
- package/dist/database/sandbox/push-id.js.map +1 -0
- package/dist/database/sandbox/query.d.ts +175 -0
- package/dist/database/sandbox/query.d.ts.map +1 -0
- package/dist/database/sandbox/query.js +269 -0
- package/dist/database/sandbox/query.js.map +1 -0
- package/dist/database/sandbox/rules-eval.d.ts +87 -0
- package/dist/database/sandbox/rules-eval.d.ts.map +1 -0
- package/dist/database/sandbox/rules-eval.js +131 -0
- package/dist/database/sandbox/rules-eval.js.map +1 -0
- package/dist/database/sandbox/sentinels.d.ts +71 -0
- package/dist/database/sandbox/sentinels.d.ts.map +1 -0
- package/dist/database/sandbox/sentinels.js +92 -0
- package/dist/database/sandbox/sentinels.js.map +1 -0
- package/dist/database/sandbox-controls.d.ts +15 -0
- package/dist/database/sandbox-controls.d.ts.map +1 -0
- package/dist/database/sandbox-controls.js +18 -0
- package/dist/database/sandbox-controls.js.map +1 -0
- package/dist/firestore/aggregates.d.ts +50 -0
- package/dist/firestore/aggregates.d.ts.map +1 -0
- package/dist/firestore/aggregates.js +40 -0
- package/dist/firestore/aggregates.js.map +1 -0
- package/dist/firestore/equality.d.ts +5 -0
- package/dist/firestore/equality.d.ts.map +1 -0
- package/dist/firestore/equality.js +20 -0
- package/dist/firestore/equality.js.map +1 -0
- package/dist/firestore/field-values.d.ts +61 -0
- package/dist/firestore/field-values.d.ts.map +1 -0
- package/dist/firestore/field-values.js +170 -0
- package/dist/firestore/field-values.js.map +1 -0
- package/dist/firestore/index.d.ts +54 -0
- package/dist/firestore/index.d.ts.map +1 -0
- package/dist/firestore/index.js +54 -0
- package/dist/firestore/index.js.map +1 -0
- package/dist/firestore/instances.d.ts +123 -0
- package/dist/firestore/instances.d.ts.map +1 -0
- package/dist/firestore/instances.js +177 -0
- package/dist/firestore/instances.js.map +1 -0
- package/dist/firestore/internal/index.d.ts +5 -0
- package/dist/firestore/internal/index.d.ts.map +1 -0
- package/dist/firestore/internal/index.js +4 -0
- package/dist/firestore/internal/index.js.map +1 -0
- package/dist/firestore/internal/listener-routing.d.ts +4 -0
- package/dist/firestore/internal/listener-routing.d.ts.map +1 -0
- package/dist/firestore/internal/listener-routing.js +4 -0
- package/dist/firestore/internal/listener-routing.js.map +1 -0
- package/dist/firestore/listeners.d.ts +12 -0
- package/dist/firestore/listeners.d.ts.map +1 -0
- package/dist/firestore/listeners.js +200 -0
- package/dist/firestore/listeners.js.map +1 -0
- package/dist/firestore/persistence.d.ts +227 -0
- package/dist/firestore/persistence.d.ts.map +1 -0
- package/dist/firestore/persistence.js +245 -0
- package/dist/firestore/persistence.js.map +1 -0
- package/dist/firestore/query-constraints.d.ts +72 -0
- package/dist/firestore/query-constraints.d.ts.map +1 -0
- package/dist/firestore/query-constraints.js +168 -0
- package/dist/firestore/query-constraints.js.map +1 -0
- package/dist/firestore/reads.d.ts +12 -0
- package/dist/firestore/reads.d.ts.map +1 -0
- package/dist/firestore/reads.js +32 -0
- package/dist/firestore/reads.js.map +1 -0
- package/dist/firestore/refs.d.ts +27 -0
- package/dist/firestore/refs.d.ts.map +1 -0
- package/dist/firestore/refs.js +74 -0
- package/dist/firestore/refs.js.map +1 -0
- package/dist/firestore/sandbox/activity-bounded.d.ts +10 -0
- package/dist/firestore/sandbox/activity-bounded.d.ts.map +1 -0
- package/dist/firestore/sandbox/activity-bounded.js +11 -0
- package/dist/firestore/sandbox/activity-bounded.js.map +1 -0
- package/dist/firestore/sandbox/activity-contract.d.ts +17 -0
- package/dist/firestore/sandbox/activity-contract.d.ts.map +1 -0
- package/dist/firestore/sandbox/activity-contract.js +51 -0
- package/dist/firestore/sandbox/activity-contract.js.map +1 -0
- package/dist/firestore/sandbox/activity-listener-retention.d.ts +5 -0
- package/dist/firestore/sandbox/activity-listener-retention.d.ts.map +1 -0
- package/dist/firestore/sandbox/activity-listener-retention.js +16 -0
- package/dist/firestore/sandbox/activity-listener-retention.js.map +1 -0
- package/dist/firestore/sandbox/activity-monitor.d.ts +60 -0
- package/dist/firestore/sandbox/activity-monitor.d.ts.map +1 -0
- package/dist/firestore/sandbox/activity-monitor.js +387 -0
- package/dist/firestore/sandbox/activity-monitor.js.map +1 -0
- package/dist/firestore/sandbox/activity-public-identity.d.ts +11 -0
- package/dist/firestore/sandbox/activity-public-identity.d.ts.map +1 -0
- package/dist/firestore/sandbox/activity-public-identity.js +78 -0
- package/dist/firestore/sandbox/activity-public-identity.js.map +1 -0
- package/dist/firestore/sandbox/activity-query-value.d.ts +9 -0
- package/dist/firestore/sandbox/activity-query-value.d.ts.map +1 -0
- package/dist/firestore/sandbox/activity-query-value.js +60 -0
- package/dist/firestore/sandbox/activity-query-value.js.map +1 -0
- package/dist/firestore/sandbox/activity-structural-identity.d.ts +3 -0
- package/dist/firestore/sandbox/activity-structural-identity.d.ts.map +1 -0
- package/dist/firestore/sandbox/activity-structural-identity.js +11 -0
- package/dist/firestore/sandbox/activity-structural-identity.js.map +1 -0
- package/dist/firestore/sandbox/activity-value-registry.d.ts +14 -0
- package/dist/firestore/sandbox/activity-value-registry.d.ts.map +1 -0
- package/dist/firestore/sandbox/activity-value-registry.js +131 -0
- package/dist/firestore/sandbox/activity-value-registry.js.map +1 -0
- package/dist/firestore/sandbox/admin-compat/batch.d.ts +34 -0
- package/dist/firestore/sandbox/admin-compat/batch.d.ts.map +1 -0
- package/dist/firestore/sandbox/admin-compat/batch.js +73 -0
- package/dist/firestore/sandbox/admin-compat/batch.js.map +1 -0
- package/dist/firestore/sandbox/admin-compat/doc-ref.d.ts +38 -0
- package/dist/firestore/sandbox/admin-compat/doc-ref.d.ts.map +1 -0
- package/dist/firestore/sandbox/admin-compat/doc-ref.js +156 -0
- package/dist/firestore/sandbox/admin-compat/doc-ref.js.map +1 -0
- package/dist/firestore/sandbox/admin-compat/firestore.d.ts +47 -0
- package/dist/firestore/sandbox/admin-compat/firestore.d.ts.map +1 -0
- package/dist/firestore/sandbox/admin-compat/firestore.js +117 -0
- package/dist/firestore/sandbox/admin-compat/firestore.js.map +1 -0
- package/dist/firestore/sandbox/admin-compat/index.d.ts +49 -0
- package/dist/firestore/sandbox/admin-compat/index.d.ts.map +1 -0
- package/dist/firestore/sandbox/admin-compat/index.js +27 -0
- package/dist/firestore/sandbox/admin-compat/index.js.map +1 -0
- package/dist/firestore/sandbox/admin-compat/paths.d.ts +37 -0
- package/dist/firestore/sandbox/admin-compat/paths.d.ts.map +1 -0
- package/dist/firestore/sandbox/admin-compat/paths.js +49 -0
- package/dist/firestore/sandbox/admin-compat/paths.js.map +1 -0
- package/dist/firestore/sandbox/admin-compat/query.d.ts +269 -0
- package/dist/firestore/sandbox/admin-compat/query.d.ts.map +1 -0
- package/dist/firestore/sandbox/admin-compat/query.js +783 -0
- package/dist/firestore/sandbox/admin-compat/query.js.map +1 -0
- package/dist/firestore/sandbox/admin-compat/read-translation.d.ts +8 -0
- package/dist/firestore/sandbox/admin-compat/read-translation.d.ts.map +1 -0
- package/dist/firestore/sandbox/admin-compat/read-translation.js +59 -0
- package/dist/firestore/sandbox/admin-compat/read-translation.js.map +1 -0
- package/dist/firestore/sandbox/admin-compat/snapshots.d.ts +39 -0
- package/dist/firestore/sandbox/admin-compat/snapshots.d.ts.map +1 -0
- package/dist/firestore/sandbox/admin-compat/snapshots.js +50 -0
- package/dist/firestore/sandbox/admin-compat/snapshots.js.map +1 -0
- package/dist/firestore/sandbox/admin-compat/transaction.d.ts +35 -0
- package/dist/firestore/sandbox/admin-compat/transaction.d.ts.map +1 -0
- package/dist/firestore/sandbox/admin-compat/transaction.js +88 -0
- package/dist/firestore/sandbox/admin-compat/transaction.js.map +1 -0
- package/dist/firestore/sandbox/admin-compat/types.d.ts +297 -0
- package/dist/firestore/sandbox/admin-compat/types.d.ts.map +1 -0
- package/dist/firestore/sandbox/admin-compat/types.js +129 -0
- package/dist/firestore/sandbox/admin-compat/types.js.map +1 -0
- package/dist/firestore/sandbox/admin-compat/value-order.d.ts +49 -0
- package/dist/firestore/sandbox/admin-compat/value-order.d.ts.map +1 -0
- package/dist/firestore/sandbox/admin-compat/value-order.js +172 -0
- package/dist/firestore/sandbox/admin-compat/value-order.js.map +1 -0
- package/dist/firestore/sandbox/auto-id.d.ts +26 -0
- package/dist/firestore/sandbox/auto-id.d.ts.map +1 -0
- package/dist/firestore/sandbox/auto-id.js +36 -0
- package/dist/firestore/sandbox/auto-id.js.map +1 -0
- package/dist/firestore/sandbox/converters/bytes-geopoint.d.ts +48 -0
- package/dist/firestore/sandbox/converters/bytes-geopoint.d.ts.map +1 -0
- package/dist/firestore/sandbox/converters/bytes-geopoint.js +85 -0
- package/dist/firestore/sandbox/converters/bytes-geopoint.js.map +1 -0
- package/dist/firestore/sandbox/converters/fieldvalue.d.ts +69 -0
- package/dist/firestore/sandbox/converters/fieldvalue.d.ts.map +1 -0
- package/dist/firestore/sandbox/converters/fieldvalue.js +166 -0
- package/dist/firestore/sandbox/converters/fieldvalue.js.map +1 -0
- package/dist/firestore/sandbox/converters/reference.d.ts +31 -0
- package/dist/firestore/sandbox/converters/reference.d.ts.map +1 -0
- package/dist/firestore/sandbox/converters/reference.js +51 -0
- package/dist/firestore/sandbox/converters/reference.js.map +1 -0
- package/dist/firestore/sandbox/converters/timestamp.d.ts +32 -0
- package/dist/firestore/sandbox/converters/timestamp.d.ts.map +1 -0
- package/dist/firestore/sandbox/converters/timestamp.js +63 -0
- package/dist/firestore/sandbox/converters/timestamp.js.map +1 -0
- package/dist/firestore/sandbox/converters/user-timestamp.d.ts +46 -0
- package/dist/firestore/sandbox/converters/user-timestamp.d.ts.map +1 -0
- package/dist/firestore/sandbox/converters/user-timestamp.js +65 -0
- package/dist/firestore/sandbox/converters/user-timestamp.js.map +1 -0
- package/dist/firestore/sandbox/converters/vector.d.ts +24 -0
- package/dist/firestore/sandbox/converters/vector.d.ts.map +1 -0
- package/dist/firestore/sandbox/converters/vector.js +53 -0
- package/dist/firestore/sandbox/converters/vector.js.map +1 -0
- package/dist/firestore/sandbox/errors.d.ts +114 -0
- package/dist/firestore/sandbox/errors.d.ts.map +1 -0
- package/dist/firestore/sandbox/errors.js +58 -0
- package/dist/firestore/sandbox/errors.js.map +1 -0
- package/dist/firestore/sandbox/event-bus.d.ts +70 -0
- package/dist/firestore/sandbox/event-bus.d.ts.map +1 -0
- package/dist/firestore/sandbox/event-bus.js +74 -0
- package/dist/firestore/sandbox/event-bus.js.map +1 -0
- package/dist/firestore/sandbox/event-log.d.ts +99 -0
- package/dist/firestore/sandbox/event-log.d.ts.map +1 -0
- package/dist/firestore/sandbox/event-log.js +67 -0
- package/dist/firestore/sandbox/event-log.js.map +1 -0
- package/dist/firestore/sandbox/field-merge.d.ts +64 -0
- package/dist/firestore/sandbox/field-merge.d.ts.map +1 -0
- package/dist/firestore/sandbox/field-merge.js +221 -0
- package/dist/firestore/sandbox/field-merge.js.map +1 -0
- package/dist/firestore/sandbox/history-controls.d.ts +43 -0
- package/dist/firestore/sandbox/history-controls.d.ts.map +1 -0
- package/dist/firestore/sandbox/history-controls.js +68 -0
- package/dist/firestore/sandbox/history-controls.js.map +1 -0
- package/dist/firestore/sandbox/list-query-proof.d.ts +82 -0
- package/dist/firestore/sandbox/list-query-proof.d.ts.map +1 -0
- package/dist/firestore/sandbox/list-query-proof.js +144 -0
- package/dist/firestore/sandbox/list-query-proof.js.map +1 -0
- package/dist/firestore/sandbox/listener-delivery.d.ts +25 -0
- package/dist/firestore/sandbox/listener-delivery.d.ts.map +1 -0
- package/dist/firestore/sandbox/listener-delivery.js +35 -0
- package/dist/firestore/sandbox/listener-delivery.js.map +1 -0
- package/dist/firestore/sandbox/listener-dispatch.d.ts +278 -0
- package/dist/firestore/sandbox/listener-dispatch.d.ts.map +1 -0
- package/dist/firestore/sandbox/listener-dispatch.js +771 -0
- package/dist/firestore/sandbox/listener-dispatch.js.map +1 -0
- package/dist/firestore/sandbox/local-environment.d.ts +419 -0
- package/dist/firestore/sandbox/local-environment.d.ts.map +1 -0
- package/dist/firestore/sandbox/local-environment.js +1686 -0
- package/dist/firestore/sandbox/local-environment.js.map +1 -0
- package/dist/firestore/sandbox/local-state.d.ts +196 -0
- package/dist/firestore/sandbox/local-state.d.ts.map +1 -0
- package/dist/firestore/sandbox/local-state.js +413 -0
- package/dist/firestore/sandbox/local-state.js.map +1 -0
- package/dist/firestore/sandbox/overlay-backing.d.ts +44 -0
- package/dist/firestore/sandbox/overlay-backing.d.ts.map +1 -0
- package/dist/firestore/sandbox/overlay-backing.js +82 -0
- package/dist/firestore/sandbox/overlay-backing.js.map +1 -0
- package/dist/firestore/sandbox/reads.d.ts +9 -0
- package/dist/firestore/sandbox/reads.d.ts.map +1 -0
- package/dist/firestore/sandbox/reads.js +11 -0
- package/dist/firestore/sandbox/reads.js.map +1 -0
- package/dist/firestore/sandbox/request-events.d.ts +49 -0
- package/dist/firestore/sandbox/request-events.d.ts.map +1 -0
- package/dist/firestore/sandbox/request-events.js +83 -0
- package/dist/firestore/sandbox/request-events.js.map +1 -0
- package/dist/firestore/sandbox/rules-evaluation.d.ts +55 -0
- package/dist/firestore/sandbox/rules-evaluation.d.ts.map +1 -0
- package/dist/firestore/sandbox/rules-evaluation.js +82 -0
- package/dist/firestore/sandbox/rules-evaluation.js.map +1 -0
- package/dist/firestore/sandbox/rules-read-engine.d.ts +163 -0
- package/dist/firestore/sandbox/rules-read-engine.d.ts.map +1 -0
- package/dist/firestore/sandbox/rules-read-engine.js +425 -0
- package/dist/firestore/sandbox/rules-read-engine.js.map +1 -0
- package/dist/firestore/sandbox/rules-state.d.ts +42 -0
- package/dist/firestore/sandbox/rules-state.d.ts.map +1 -0
- package/dist/firestore/sandbox/rules-state.js +56 -0
- package/dist/firestore/sandbox/rules-state.js.map +1 -0
- package/dist/firestore/sandbox/sentinel-capture.d.ts +30 -0
- package/dist/firestore/sandbox/sentinel-capture.d.ts.map +1 -0
- package/dist/firestore/sandbox/sentinel-capture.js +61 -0
- package/dist/firestore/sandbox/sentinel-capture.js.map +1 -0
- package/dist/firestore/sandbox/snapshot-listeners.d.ts +293 -0
- package/dist/firestore/sandbox/snapshot-listeners.d.ts.map +1 -0
- package/dist/firestore/sandbox/snapshot-listeners.js +194 -0
- package/dist/firestore/sandbox/snapshot-listeners.js.map +1 -0
- package/dist/firestore/sandbox/topk.d.ts +12 -0
- package/dist/firestore/sandbox/topk.d.ts.map +1 -0
- package/dist/firestore/sandbox/topk.js +42 -0
- package/dist/firestore/sandbox/topk.js.map +1 -0
- package/dist/firestore/sandbox/transaction-merge.d.ts +55 -0
- package/dist/firestore/sandbox/transaction-merge.d.ts.map +1 -0
- package/dist/firestore/sandbox/transaction-merge.js +107 -0
- package/dist/firestore/sandbox/transaction-merge.js.map +1 -0
- package/dist/firestore/sandbox/transaction-types.d.ts +155 -0
- package/dist/firestore/sandbox/transaction-types.d.ts.map +1 -0
- package/dist/firestore/sandbox/transaction-types.js +10 -0
- package/dist/firestore/sandbox/transaction-types.js.map +1 -0
- package/dist/firestore/sandbox/transaction.d.ts +79 -0
- package/dist/firestore/sandbox/transaction.d.ts.map +1 -0
- package/dist/firestore/sandbox/transaction.js +95 -0
- package/dist/firestore/sandbox/transaction.js.map +1 -0
- package/dist/firestore/sandbox/trigger-scope.d.ts +39 -0
- package/dist/firestore/sandbox/trigger-scope.d.ts.map +1 -0
- package/dist/firestore/sandbox/trigger-scope.js +45 -0
- package/dist/firestore/sandbox/trigger-scope.js.map +1 -0
- package/dist/firestore/sandbox/value-equality.d.ts +2 -0
- package/dist/firestore/sandbox/value-equality.d.ts.map +1 -0
- package/dist/firestore/sandbox/value-equality.js +35 -0
- package/dist/firestore/sandbox/value-equality.js.map +1 -0
- package/dist/firestore/sandbox/value-resolver.d.ts +172 -0
- package/dist/firestore/sandbox/value-resolver.d.ts.map +1 -0
- package/dist/firestore/sandbox/value-resolver.js +221 -0
- package/dist/firestore/sandbox/value-resolver.js.map +1 -0
- package/dist/firestore/sandbox/wire-encoder.d.ts +14 -0
- package/dist/firestore/sandbox/wire-encoder.d.ts.map +1 -0
- package/dist/firestore/sandbox/wire-encoder.js +130 -0
- package/dist/firestore/sandbox/wire-encoder.js.map +1 -0
- package/dist/firestore/sandbox/writes.d.ts +93 -0
- package/dist/firestore/sandbox/writes.d.ts.map +1 -0
- package/dist/firestore/sandbox/writes.js +2 -0
- package/dist/firestore/sandbox/writes.js.map +1 -0
- package/dist/firestore/sandbox-controls.d.ts +60 -0
- package/dist/firestore/sandbox-controls.d.ts.map +1 -0
- package/dist/firestore/sandbox-controls.js +77 -0
- package/dist/firestore/sandbox-controls.js.map +1 -0
- package/dist/firestore/snapshots.d.ts +71 -0
- package/dist/firestore/snapshots.d.ts.map +1 -0
- package/dist/firestore/snapshots.js +160 -0
- package/dist/firestore/snapshots.js.map +1 -0
- package/dist/firestore/state.d.ts +168 -0
- package/dist/firestore/state.d.ts.map +1 -0
- package/dist/firestore/state.js +260 -0
- package/dist/firestore/state.js.map +1 -0
- package/dist/firestore/tools.d.ts +71 -0
- package/dist/firestore/tools.d.ts.map +1 -0
- package/dist/firestore/tools.js +320 -0
- package/dist/firestore/tools.js.map +1 -0
- package/dist/firestore/transactions.d.ts +4 -0
- package/dist/firestore/transactions.d.ts.map +1 -0
- package/dist/firestore/transactions.js +14 -0
- package/dist/firestore/transactions.js.map +1 -0
- package/dist/firestore/types.d.ts +82 -0
- package/dist/firestore/types.d.ts.map +1 -0
- package/dist/firestore/types.js +15 -0
- package/dist/firestore/types.js.map +1 -0
- package/dist/firestore/writes.d.ts +43 -0
- package/dist/firestore/writes.d.ts.map +1 -0
- package/dist/firestore/writes.js +40 -0
- package/dist/firestore/writes.js.map +1 -0
- package/dist/firestore-values/index.d.ts +63 -0
- package/dist/firestore-values/index.d.ts.map +1 -0
- package/dist/firestore-values/index.js +167 -0
- package/dist/firestore-values/index.js.map +1 -0
- package/dist/messaging/broker/broker.d.ts +171 -0
- package/dist/messaging/broker/broker.d.ts.map +1 -0
- package/dist/messaging/broker/broker.js +400 -0
- package/dist/messaging/broker/broker.js.map +1 -0
- package/dist/messaging/broker/envelopes.d.ts +96 -0
- package/dist/messaging/broker/envelopes.d.ts.map +1 -0
- package/dist/messaging/broker/envelopes.js +132 -0
- package/dist/messaging/broker/envelopes.js.map +1 -0
- package/dist/messaging/broker/index.d.ts +27 -0
- package/dist/messaging/broker/index.d.ts.map +1 -0
- package/dist/messaging/broker/index.js +21 -0
- package/dist/messaging/broker/index.js.map +1 -0
- package/dist/messaging/broker/tokens.d.ts +22 -0
- package/dist/messaging/broker/tokens.d.ts.map +1 -0
- package/dist/messaging/broker/tokens.js +37 -0
- package/dist/messaging/broker/tokens.js.map +1 -0
- package/dist/messaging/broker/types.d.ts +117 -0
- package/dist/messaging/broker/types.d.ts.map +1 -0
- package/dist/messaging/broker/types.js +12 -0
- package/dist/messaging/broker/types.js.map +1 -0
- package/dist/messaging/broker/validate.d.ts +58 -0
- package/dist/messaging/broker/validate.d.ts.map +1 -0
- package/dist/messaging/broker/validate.js +196 -0
- package/dist/messaging/broker/validate.js.map +1 -0
- package/dist/messaging/client.d.ts +108 -0
- package/dist/messaging/client.d.ts.map +1 -0
- package/dist/messaging/client.js +65 -0
- package/dist/messaging/client.js.map +1 -0
- package/dist/messaging/index.d.ts +3 -0
- package/dist/messaging/index.d.ts.map +1 -0
- package/dist/messaging/index.js +3 -0
- package/dist/messaging/index.js.map +1 -0
- package/dist/messaging/instance.d.ts +79 -0
- package/dist/messaging/instance.d.ts.map +1 -0
- package/dist/messaging/instance.js +112 -0
- package/dist/messaging/instance.js.map +1 -0
- package/dist/messaging/internal.d.ts +20 -0
- package/dist/messaging/internal.d.ts.map +1 -0
- package/dist/messaging/internal.js +19 -0
- package/dist/messaging/internal.js.map +1 -0
- package/dist/messaging/sw.d.ts +50 -0
- package/dist/messaging/sw.d.ts.map +1 -0
- package/dist/messaging/sw.js +50 -0
- package/dist/messaging/sw.js.map +1 -0
- package/dist/project-scope.d.ts +5 -0
- package/dist/project-scope.d.ts.map +1 -0
- package/dist/project-scope.js +2 -0
- package/dist/project-scope.js.map +1 -0
- package/dist/rules/api/assert.d.ts +39 -0
- package/dist/rules/api/assert.d.ts.map +1 -0
- package/dist/rules/api/assert.js +93 -0
- package/dist/rules/api/assert.js.map +1 -0
- package/dist/rules/api/case-types.d.ts +141 -0
- package/dist/rules/api/case-types.d.ts.map +1 -0
- package/dist/rules/api/case-types.js +13 -0
- package/dist/rules/api/case-types.js.map +1 -0
- package/dist/rules/api/errors.d.ts +38 -0
- package/dist/rules/api/errors.d.ts.map +1 -0
- package/dist/rules/api/errors.js +47 -0
- package/dist/rules/api/errors.js.map +1 -0
- package/dist/rules/api/firestore.d.ts +34 -0
- package/dist/rules/api/firestore.d.ts.map +1 -0
- package/dist/rules/api/firestore.js +137 -0
- package/dist/rules/api/firestore.js.map +1 -0
- package/dist/rules/api/issue.d.ts +50 -0
- package/dist/rules/api/issue.d.ts.map +1 -0
- package/dist/rules/api/issue.js +66 -0
- package/dist/rules/api/issue.js.map +1 -0
- package/dist/rules/api/lint.d.ts +16 -0
- package/dist/rules/api/lint.d.ts.map +1 -0
- package/dist/rules/api/lint.js +60 -0
- package/dist/rules/api/lint.js.map +1 -0
- package/dist/rules/api/rtdb.d.ts +33 -0
- package/dist/rules/api/rtdb.d.ts.map +1 -0
- package/dist/rules/api/rtdb.js +166 -0
- package/dist/rules/api/rtdb.js.map +1 -0
- package/dist/rules/api/values.d.ts +51 -0
- package/dist/rules/api/values.d.ts.map +1 -0
- package/dist/rules/api/values.js +66 -0
- package/dist/rules/api/values.js.map +1 -0
- package/dist/rules/generators/assembler.d.ts +19 -0
- package/dist/rules/generators/assembler.d.ts.map +1 -0
- package/dist/rules/generators/assembler.js +292 -0
- package/dist/rules/generators/assembler.js.map +1 -0
- package/dist/rules/generators/expressions.d.ts +52 -0
- package/dist/rules/generators/expressions.d.ts.map +1 -0
- package/dist/rules/generators/expressions.js +117 -0
- package/dist/rules/generators/expressions.js.map +1 -0
- package/dist/rules/generators/grid.d.ts +22 -0
- package/dist/rules/generators/grid.d.ts.map +1 -0
- package/dist/rules/generators/grid.js +52 -0
- package/dist/rules/generators/grid.js.map +1 -0
- package/dist/rules/grammar/FirestoreAST.d.ts +137 -0
- package/dist/rules/grammar/FirestoreAST.d.ts.map +1 -0
- package/dist/rules/grammar/FirestoreAST.js +3 -0
- package/dist/rules/grammar/FirestoreAST.js.map +1 -0
- package/dist/rules/grammar/FirestoreAssembler.d.ts +5 -0
- package/dist/rules/grammar/FirestoreAssembler.d.ts.map +1 -0
- package/dist/rules/grammar/FirestoreAssembler.js +158 -0
- package/dist/rules/grammar/FirestoreAssembler.js.map +1 -0
- package/dist/rules/grammar/FirestoreParser.d.ts +46 -0
- package/dist/rules/grammar/FirestoreParser.d.ts.map +1 -0
- package/dist/rules/grammar/FirestoreParser.js +423 -0
- package/dist/rules/grammar/FirestoreParser.js.map +1 -0
- package/dist/rules/grammar/FirestoreRules.ohm +236 -0
- package/dist/rules/grammar/FirestoreRules.ohm.generated.d.ts +2 -0
- package/dist/rules/grammar/FirestoreRules.ohm.generated.d.ts.map +1 -0
- package/dist/rules/grammar/FirestoreRules.ohm.generated.js +241 -0
- package/dist/rules/grammar/FirestoreRules.ohm.generated.js.map +1 -0
- package/dist/rules/grammar/FirestoreValidator.d.ts +10 -0
- package/dist/rules/grammar/FirestoreValidator.d.ts.map +1 -0
- package/dist/rules/grammar/FirestoreValidator.js +482 -0
- package/dist/rules/grammar/FirestoreValidator.js.map +1 -0
- package/dist/rules/index.d.ts +41 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +40 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/indexes/extract/annotation-collect.d.ts +42 -0
- package/dist/rules/indexes/extract/annotation-collect.d.ts.map +1 -0
- package/dist/rules/indexes/extract/annotation-collect.js +69 -0
- package/dist/rules/indexes/extract/annotation-collect.js.map +1 -0
- package/dist/rules/indexes/extract/annotations.d.ts +50 -0
- package/dist/rules/indexes/extract/annotations.d.ts.map +1 -0
- package/dist/rules/indexes/extract/annotations.js +144 -0
- package/dist/rules/indexes/extract/annotations.js.map +1 -0
- package/dist/rules/indexes/extract/ast.d.ts +54 -0
- package/dist/rules/indexes/extract/ast.d.ts.map +1 -0
- package/dist/rules/indexes/extract/ast.js +119 -0
- package/dist/rules/indexes/extract/ast.js.map +1 -0
- package/dist/rules/indexes/extract/classify.d.ts +41 -0
- package/dist/rules/indexes/extract/classify.d.ts.map +1 -0
- package/dist/rules/indexes/extract/classify.js +138 -0
- package/dist/rules/indexes/extract/classify.js.map +1 -0
- package/dist/rules/indexes/extract/composite.d.ts +38 -0
- package/dist/rules/indexes/extract/composite.d.ts.map +1 -0
- package/dist/rules/indexes/extract/composite.js +85 -0
- package/dist/rules/indexes/extract/composite.js.map +1 -0
- package/dist/rules/indexes/extract/dataflow.d.ts +45 -0
- package/dist/rules/indexes/extract/dataflow.d.ts.map +1 -0
- package/dist/rules/indexes/extract/dataflow.js +200 -0
- package/dist/rules/indexes/extract/dataflow.js.map +1 -0
- package/dist/rules/indexes/extract/enumerate.d.ts +41 -0
- package/dist/rules/indexes/extract/enumerate.d.ts.map +1 -0
- package/dist/rules/indexes/extract/enumerate.js +163 -0
- package/dist/rules/indexes/extract/enumerate.js.map +1 -0
- package/dist/rules/indexes/extract/extractor.d.ts +3 -0
- package/dist/rules/indexes/extract/extractor.d.ts.map +1 -0
- package/dist/rules/indexes/extract/extractor.js +274 -0
- package/dist/rules/indexes/extract/extractor.js.map +1 -0
- package/dist/rules/indexes/extract/types.d.ts +211 -0
- package/dist/rules/indexes/extract/types.d.ts.map +1 -0
- package/dist/rules/indexes/extract/types.js +14 -0
- package/dist/rules/indexes/extract/types.js.map +1 -0
- package/dist/rules/indexes/extractHandler.d.ts +16 -0
- package/dist/rules/indexes/extractHandler.d.ts.map +1 -0
- package/dist/rules/indexes/extractHandler.js +100 -0
- package/dist/rules/indexes/extractHandler.js.map +1 -0
- package/dist/rules/indexes/extractTool.d.ts +15 -0
- package/dist/rules/indexes/extractTool.d.ts.map +1 -0
- package/dist/rules/indexes/extractTool.js +55 -0
- package/dist/rules/indexes/extractTool.js.map +1 -0
- package/dist/rules/indexes/types.d.ts +71 -0
- package/dist/rules/indexes/types.d.ts.map +1 -0
- package/dist/rules/indexes/types.js +15 -0
- package/dist/rules/indexes/types.js.map +1 -0
- package/dist/rules/inspect/handler.d.ts +6 -0
- package/dist/rules/inspect/handler.d.ts.map +1 -0
- package/dist/rules/inspect/handler.js +144 -0
- package/dist/rules/inspect/handler.js.map +1 -0
- package/dist/rules/inspect/spec.d.ts +37 -0
- package/dist/rules/inspect/spec.d.ts.map +1 -0
- package/dist/rules/inspect/spec.js +2 -0
- package/dist/rules/inspect/spec.js.map +1 -0
- package/dist/rules/inspect/tools.d.ts +21 -0
- package/dist/rules/inspect/tools.d.ts.map +1 -0
- package/dist/rules/inspect/tools.js +21 -0
- package/dist/rules/inspect/tools.js.map +1 -0
- package/dist/rules/internal/extract.d.ts +28 -0
- package/dist/rules/internal/extract.d.ts.map +1 -0
- package/dist/rules/internal/extract.js +25 -0
- package/dist/rules/internal/extract.js.map +1 -0
- package/dist/rules/internal/index.d.ts +82 -0
- package/dist/rules/internal/index.d.ts.map +1 -0
- package/dist/rules/internal/index.js +103 -0
- package/dist/rules/internal/index.js.map +1 -0
- package/dist/rules/internal/node.d.ts +18 -0
- package/dist/rules/internal/node.d.ts.map +1 -0
- package/dist/rules/internal/node.js +27 -0
- package/dist/rules/internal/node.js.map +1 -0
- package/dist/rules/internal/rtdb.d.ts +20 -0
- package/dist/rules/internal/rtdb.d.ts.map +1 -0
- package/dist/rules/internal/rtdb.js +15 -0
- package/dist/rules/internal/rtdb.js.map +1 -0
- package/dist/rules/linter/ast-utils.d.ts +97 -0
- package/dist/rules/linter/ast-utils.d.ts.map +1 -0
- package/dist/rules/linter/ast-utils.js +491 -0
- package/dist/rules/linter/ast-utils.js.map +1 -0
- package/dist/rules/linter/hallucinations.d.ts +34 -0
- package/dist/rules/linter/hallucinations.d.ts.map +1 -0
- package/dist/rules/linter/hallucinations.js +334 -0
- package/dist/rules/linter/hallucinations.js.map +1 -0
- package/dist/rules/linter/linter.d.ts +84 -0
- package/dist/rules/linter/linter.d.ts.map +1 -0
- package/dist/rules/linter/linter.js +783 -0
- package/dist/rules/linter/linter.js.map +1 -0
- package/dist/rules/modules/resolver-browser.d.ts +41 -0
- package/dist/rules/modules/resolver-browser.d.ts.map +1 -0
- package/dist/rules/modules/resolver-browser.js +63 -0
- package/dist/rules/modules/resolver-browser.js.map +1 -0
- package/dist/rules/modules/resolver-core.d.ts +51 -0
- package/dist/rules/modules/resolver-core.d.ts.map +1 -0
- package/dist/rules/modules/resolver-core.js +338 -0
- package/dist/rules/modules/resolver-core.js.map +1 -0
- package/dist/rules/modules/resolver.d.ts +17 -0
- package/dist/rules/modules/resolver.d.ts.map +1 -0
- package/dist/rules/modules/resolver.js +49 -0
- package/dist/rules/modules/resolver.js.map +1 -0
- package/dist/rules/modules/stdlib/atomic.rules +52 -0
- package/dist/rules/modules/stdlib/atomic.test.json +152 -0
- package/dist/rules/modules/stdlib/auth.rules +7 -0
- package/dist/rules/modules/stdlib/auth.test.json +53 -0
- package/dist/rules/modules/stdlib/content.rules +50 -0
- package/dist/rules/modules/stdlib/content.test.json +238 -0
- package/dist/rules/modules/stdlib/counters.rules +41 -0
- package/dist/rules/modules/stdlib/counters.test.json +254 -0
- package/dist/rules/modules/stdlib/geometry.rules +43 -0
- package/dist/rules/modules/stdlib/geometry.test.json +200 -0
- package/dist/rules/modules/stdlib/joining.rules +49 -0
- package/dist/rules/modules/stdlib/joining.test.json +287 -0
- package/dist/rules/modules/stdlib/lifecycle.rules +51 -0
- package/dist/rules/modules/stdlib/lifecycle.test.json +288 -0
- package/dist/rules/modules/stdlib/lobby.rules +44 -0
- package/dist/rules/modules/stdlib/lobby.test.json +32 -0
- package/dist/rules/modules/stdlib/membership.rules +40 -0
- package/dist/rules/modules/stdlib/membership.test.json +107 -0
- package/dist/rules/modules/stdlib/spaces.rules +46 -0
- package/dist/rules/modules/stdlib/spaces.test.json +392 -0
- package/dist/rules/modules/stdlib/state.rules +28 -0
- package/dist/rules/modules/stdlib/state.test.json +55 -0
- package/dist/rules/modules/stdlib/timing.rules +20 -0
- package/dist/rules/modules/stdlib/timing.test.json +106 -0
- package/dist/rules/modules/stdlib/transitions.rules +34 -0
- package/dist/rules/modules/stdlib/transitions.test.json +86 -0
- package/dist/rules/modules/stdlib/turns.rules +27 -0
- package/dist/rules/modules/stdlib/turns.test.json +64 -0
- package/dist/rules/modules/stdlib/validation.rules +31 -0
- package/dist/rules/modules/stdlib/validation.test.json +184 -0
- package/dist/rules/modules/stdlib-content.d.ts +11 -0
- package/dist/rules/modules/stdlib-content.d.ts.map +1 -0
- package/dist/rules/modules/stdlib-content.js +590 -0
- package/dist/rules/modules/stdlib-content.js.map +1 -0
- package/dist/rules/rtdb/compiled-rules.d.ts +11 -0
- package/dist/rules/rtdb/compiled-rules.d.ts.map +1 -0
- package/dist/rules/rtdb/compiled-rules.js +95 -0
- package/dist/rules/rtdb/compiled-rules.js.map +1 -0
- package/dist/rules/rtdb/constraints/atoms.d.ts +29 -0
- package/dist/rules/rtdb/constraints/atoms.d.ts.map +1 -0
- package/dist/rules/rtdb/constraints/atoms.js +43 -0
- package/dist/rules/rtdb/constraints/atoms.js.map +1 -0
- package/dist/rules/rtdb/constraints/compose.d.ts +16 -0
- package/dist/rules/rtdb/constraints/compose.d.ts.map +1 -0
- package/dist/rules/rtdb/constraints/compose.js +15 -0
- package/dist/rules/rtdb/constraints/compose.js.map +1 -0
- package/dist/rules/rtdb/constraints/data.d.ts +30 -0
- package/dist/rules/rtdb/constraints/data.d.ts.map +1 -0
- package/dist/rules/rtdb/constraints/data.js +46 -0
- package/dist/rules/rtdb/constraints/data.js.map +1 -0
- package/dist/rules/rtdb/constraints/document.d.ts +57 -0
- package/dist/rules/rtdb/constraints/document.d.ts.map +1 -0
- package/dist/rules/rtdb/constraints/document.js +85 -0
- package/dist/rules/rtdb/constraints/document.js.map +1 -0
- package/dist/rules/rtdb/constraints/game.d.ts +30 -0
- package/dist/rules/rtdb/constraints/game.d.ts.map +1 -0
- package/dist/rules/rtdb/constraints/game.js +49 -0
- package/dist/rules/rtdb/constraints/game.js.map +1 -0
- package/dist/rules/rtdb/constraints/index.d.ts +12 -0
- package/dist/rules/rtdb/constraints/index.d.ts.map +1 -0
- package/dist/rules/rtdb/constraints/index.js +9 -0
- package/dist/rules/rtdb/constraints/index.js.map +1 -0
- package/dist/rules/rtdb/constraints/policies.d.ts +16 -0
- package/dist/rules/rtdb/constraints/policies.d.ts.map +1 -0
- package/dist/rules/rtdb/constraints/policies.js +17 -0
- package/dist/rules/rtdb/constraints/policies.js.map +1 -0
- package/dist/rules/rtdb/constraints/ruleset.d.ts +5 -0
- package/dist/rules/rtdb/constraints/ruleset.d.ts.map +1 -0
- package/dist/rules/rtdb/constraints/ruleset.js +132 -0
- package/dist/rules/rtdb/constraints/ruleset.js.map +1 -0
- package/dist/rules/rtdb/constraints/schema.d.ts +17 -0
- package/dist/rules/rtdb/constraints/schema.d.ts.map +1 -0
- package/dist/rules/rtdb/constraints/schema.js +74 -0
- package/dist/rules/rtdb/constraints/schema.js.map +1 -0
- package/dist/rules/rtdb/constraints/types.d.ts +22 -0
- package/dist/rules/rtdb/constraints/types.d.ts.map +1 -0
- package/dist/rules/rtdb/constraints/types.js +2 -0
- package/dist/rules/rtdb/constraints/types.js.map +1 -0
- package/dist/rules/rtdb/constraints/write-rules-file.d.ts +24 -0
- package/dist/rules/rtdb/constraints/write-rules-file.d.ts.map +1 -0
- package/dist/rules/rtdb/constraints/write-rules-file.js +30 -0
- package/dist/rules/rtdb/constraints/write-rules-file.js.map +1 -0
- package/dist/rules/rtdb/expression-engine.d.ts +8 -0
- package/dist/rules/rtdb/expression-engine.d.ts.map +1 -0
- package/dist/rules/rtdb/expression-engine.js +20 -0
- package/dist/rules/rtdb/expression-engine.js.map +1 -0
- package/dist/rules/rtdb/grammar/RtdbExpr.ohm +98 -0
- package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.d.ts +2 -0
- package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.d.ts.map +1 -0
- package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.js +103 -0
- package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.js.map +1 -0
- package/dist/rules/rtdb/grammar/RtdbExprParser.d.ts +3 -0
- package/dist/rules/rtdb/grammar/RtdbExprParser.d.ts.map +1 -0
- package/dist/rules/rtdb/grammar/RtdbExprParser.js +56 -0
- package/dist/rules/rtdb/grammar/RtdbExprParser.js.map +1 -0
- package/dist/rules/rtdb/grammar/linter.d.ts +3 -0
- package/dist/rules/rtdb/grammar/linter.d.ts.map +1 -0
- package/dist/rules/rtdb/grammar/linter.js +73 -0
- package/dist/rules/rtdb/grammar/linter.js.map +1 -0
- package/dist/rules/rtdb/grammar/simulator.d.ts +30 -0
- package/dist/rules/rtdb/grammar/simulator.d.ts.map +1 -0
- package/dist/rules/rtdb/grammar/simulator.js +282 -0
- package/dist/rules/rtdb/grammar/simulator.js.map +1 -0
- package/dist/rules/rtdb/grammar/validator.d.ts +3 -0
- package/dist/rules/rtdb/grammar/validator.d.ts.map +1 -0
- package/dist/rules/rtdb/grammar/validator.js +91 -0
- package/dist/rules/rtdb/grammar/validator.js.map +1 -0
- package/dist/rules/rtdb/simulation/handler.d.ts +6 -0
- package/dist/rules/rtdb/simulation/handler.d.ts.map +1 -0
- package/dist/rules/rtdb/simulation/handler.js +325 -0
- package/dist/rules/rtdb/simulation/handler.js.map +1 -0
- package/dist/rules/rtdb/simulation/spec.d.ts +102 -0
- package/dist/rules/rtdb/simulation/spec.d.ts.map +1 -0
- package/dist/rules/rtdb/simulation/spec.js +40 -0
- package/dist/rules/rtdb/simulation/spec.js.map +1 -0
- package/dist/rules/rtdb/types.d.ts +166 -0
- package/dist/rules/rtdb/types.d.ts.map +1 -0
- package/dist/rules/rtdb/types.js +21 -0
- package/dist/rules/rtdb/types.js.map +1 -0
- package/dist/rules/simulator/evaluator.d.ts +206 -0
- package/dist/rules/simulator/evaluator.d.ts.map +1 -0
- package/dist/rules/simulator/evaluator.js +1251 -0
- package/dist/rules/simulator/evaluator.js.map +1 -0
- package/dist/rules/simulator/expression/eval-errors.d.ts +86 -0
- package/dist/rules/simulator/expression/eval-errors.d.ts.map +1 -0
- package/dist/rules/simulator/expression/eval-errors.js +68 -0
- package/dist/rules/simulator/expression/eval-errors.js.map +1 -0
- package/dist/rules/simulator/expression/evaluator.d.ts +43 -0
- package/dist/rules/simulator/expression/evaluator.d.ts.map +1 -0
- package/dist/rules/simulator/expression/evaluator.js +298 -0
- package/dist/rules/simulator/expression/evaluator.js.map +1 -0
- package/dist/rules/simulator/expression/lexer.d.ts +36 -0
- package/dist/rules/simulator/expression/lexer.d.ts.map +1 -0
- package/dist/rules/simulator/expression/lexer.js +318 -0
- package/dist/rules/simulator/expression/lexer.js.map +1 -0
- package/dist/rules/simulator/expression/parser.d.ts +39 -0
- package/dist/rules/simulator/expression/parser.d.ts.map +1 -0
- package/dist/rules/simulator/expression/parser.js +329 -0
- package/dist/rules/simulator/expression/parser.js.map +1 -0
- package/dist/rules/simulator/expression/types.d.ts +137 -0
- package/dist/rules/simulator/expression/types.d.ts.map +1 -0
- package/dist/rules/simulator/expression/types.js +90 -0
- package/dist/rules/simulator/expression/types.js.map +1 -0
- package/dist/rules/simulator/expression/walk-data.d.ts +52 -0
- package/dist/rules/simulator/expression/walk-data.d.ts.map +1 -0
- package/dist/rules/simulator/expression/walk-data.js +167 -0
- package/dist/rules/simulator/expression/walk-data.js.map +1 -0
- package/dist/rules/simulator/firestore-set.d.ts +25 -0
- package/dist/rules/simulator/firestore-set.d.ts.map +1 -0
- package/dist/rules/simulator/firestore-set.js +89 -0
- package/dist/rules/simulator/firestore-set.js.map +1 -0
- package/dist/rules/simulator/handler.d.ts +47 -0
- package/dist/rules/simulator/handler.d.ts.map +1 -0
- package/dist/rules/simulator/handler.js +653 -0
- package/dist/rules/simulator/handler.js.map +1 -0
- package/dist/rules/simulator/mapdiff.d.ts +29 -0
- package/dist/rules/simulator/mapdiff.d.ts.map +1 -0
- package/dist/rules/simulator/mapdiff.js +72 -0
- package/dist/rules/simulator/mapdiff.js.map +1 -0
- package/dist/rules/simulator/project-after-state.d.ts +33 -0
- package/dist/rules/simulator/project-after-state.d.ts.map +1 -0
- package/dist/rules/simulator/project-after-state.js +88 -0
- package/dist/rules/simulator/project-after-state.js.map +1 -0
- package/dist/rules/simulator/query-proof.d.ts +151 -0
- package/dist/rules/simulator/query-proof.d.ts.map +1 -0
- package/dist/rules/simulator/query-proof.js +367 -0
- package/dist/rules/simulator/query-proof.js.map +1 -0
- package/dist/rules/simulator/value-equality.d.ts +8 -0
- package/dist/rules/simulator/value-equality.d.ts.map +1 -0
- package/dist/rules/simulator/value-equality.js +40 -0
- package/dist/rules/simulator/value-equality.js.map +1 -0
- package/dist/rules/simulator/wrappers/base.d.ts +129 -0
- package/dist/rules/simulator/wrappers/base.d.ts.map +1 -0
- package/dist/rules/simulator/wrappers/base.js +90 -0
- package/dist/rules/simulator/wrappers/base.js.map +1 -0
- package/dist/rules/simulator/wrappers/bytes.d.ts +45 -0
- package/dist/rules/simulator/wrappers/bytes.d.ts.map +1 -0
- package/dist/rules/simulator/wrappers/bytes.js +130 -0
- package/dist/rules/simulator/wrappers/bytes.js.map +1 -0
- package/dist/rules/simulator/wrappers/duration.d.ts +76 -0
- package/dist/rules/simulator/wrappers/duration.d.ts.map +1 -0
- package/dist/rules/simulator/wrappers/duration.js +176 -0
- package/dist/rules/simulator/wrappers/duration.js.map +1 -0
- package/dist/rules/simulator/wrappers/float.d.ts +52 -0
- package/dist/rules/simulator/wrappers/float.d.ts.map +1 -0
- package/dist/rules/simulator/wrappers/float.js +88 -0
- package/dist/rules/simulator/wrappers/float.js.map +1 -0
- package/dist/rules/simulator/wrappers/latlng.d.ts +40 -0
- package/dist/rules/simulator/wrappers/latlng.d.ts.map +1 -0
- package/dist/rules/simulator/wrappers/latlng.js +100 -0
- package/dist/rules/simulator/wrappers/latlng.js.map +1 -0
- package/dist/rules/simulator/wrappers/path.d.ts +75 -0
- package/dist/rules/simulator/wrappers/path.d.ts.map +1 -0
- package/dist/rules/simulator/wrappers/path.js +158 -0
- package/dist/rules/simulator/wrappers/path.js.map +1 -0
- package/dist/rules/simulator/wrappers/reference.d.ts +82 -0
- package/dist/rules/simulator/wrappers/reference.d.ts.map +1 -0
- package/dist/rules/simulator/wrappers/reference.js +145 -0
- package/dist/rules/simulator/wrappers/reference.js.map +1 -0
- package/dist/rules/simulator/wrappers/timestamp.d.ts +86 -0
- package/dist/rules/simulator/wrappers/timestamp.d.ts.map +1 -0
- package/dist/rules/simulator/wrappers/timestamp.js +207 -0
- package/dist/rules/simulator/wrappers/timestamp.js.map +1 -0
- package/dist/rules/simulator/wrappers/vector.d.ts +43 -0
- package/dist/rules/simulator/wrappers/vector.d.ts.map +1 -0
- package/dist/rules/simulator/wrappers/vector.js +80 -0
- package/dist/rules/simulator/wrappers/vector.js.map +1 -0
- package/dist/rules/simulator-tools-impl.d.ts +64 -0
- package/dist/rules/simulator-tools-impl.d.ts.map +1 -0
- package/dist/rules/simulator-tools-impl.js +462 -0
- package/dist/rules/simulator-tools-impl.js.map +1 -0
- package/dist/rules/simulator.d.ts +20 -0
- package/dist/rules/simulator.d.ts.map +1 -0
- package/dist/rules/simulator.js +24 -0
- package/dist/rules/simulator.js.map +1 -0
- package/dist/rules/stdlib-modules.d.ts +73 -0
- package/dist/rules/stdlib-modules.d.ts.map +1 -0
- package/dist/rules/stdlib-modules.js +837 -0
- package/dist/rules/stdlib-modules.js.map +1 -0
- package/dist/rules/stdlib-tools.d.ts +19 -0
- package/dist/rules/stdlib-tools.d.ts.map +1 -0
- package/dist/rules/stdlib-tools.js +164 -0
- package/dist/rules/stdlib-tools.js.map +1 -0
- package/dist/rules/test/handler.d.ts +21 -0
- package/dist/rules/test/handler.d.ts.map +1 -0
- package/dist/rules/test/handler.js +214 -0
- package/dist/rules/test/handler.js.map +1 -0
- package/dist/rules/test/spec.d.ts +677 -0
- package/dist/rules/test/spec.d.ts.map +1 -0
- package/dist/rules/test/spec.js +327 -0
- package/dist/rules/test/spec.js.map +1 -0
- package/dist/rules/tools.d.ts +41 -0
- package/dist/rules/tools.d.ts.map +1 -0
- package/dist/rules/tools.js +120 -0
- package/dist/rules/tools.js.map +1 -0
- package/dist/rules/write/handler.d.ts +6 -0
- package/dist/rules/write/handler.d.ts.map +1 -0
- package/dist/rules/write/handler.js +126 -0
- package/dist/rules/write/handler.js.map +1 -0
- package/dist/rules/write/spec.d.ts +28 -0
- package/dist/rules/write/spec.d.ts.map +1 -0
- package/dist/rules/write/spec.js +2 -0
- package/dist/rules/write/spec.js.map +1 -0
- package/dist/sandbox/admin-compat.d.ts +20 -0
- package/dist/sandbox/admin-compat.d.ts.map +1 -0
- package/dist/sandbox/admin-compat.js +19 -0
- package/dist/sandbox/admin-compat.js.map +1 -0
- package/dist/sandbox/admin-firestore/error-translation.d.ts +90 -0
- package/dist/sandbox/admin-firestore/error-translation.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/error-translation.js +222 -0
- package/dist/sandbox/admin-firestore/error-translation.js.map +1 -0
- package/dist/sandbox/admin-firestore/get-admin-firestore.d.ts +44 -0
- package/dist/sandbox/admin-firestore/get-admin-firestore.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/get-admin-firestore.js +62 -0
- package/dist/sandbox/admin-firestore/get-admin-firestore.js.map +1 -0
- package/dist/sandbox/admin-firestore/get-firestore.d.ts +34 -0
- package/dist/sandbox/admin-firestore/get-firestore.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/get-firestore.js +71 -0
- package/dist/sandbox/admin-firestore/get-firestore.js.map +1 -0
- package/dist/sandbox/admin-firestore/index.d.ts +36 -0
- package/dist/sandbox/admin-firestore/index.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/index.js +33 -0
- package/dist/sandbox/admin-firestore/index.js.map +1 -0
- package/dist/sandbox/admin-firestore/listeners.d.ts +46 -0
- package/dist/sandbox/admin-firestore/listeners.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/listeners.js +291 -0
- package/dist/sandbox/admin-firestore/listeners.js.map +1 -0
- package/dist/sandbox/admin-firestore/local-handle.d.ts +23 -0
- package/dist/sandbox/admin-firestore/local-handle.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/local-handle.js +74 -0
- package/dist/sandbox/admin-firestore/local-handle.js.map +1 -0
- package/dist/sandbox/admin-firestore/remote/batch.d.ts +6 -0
- package/dist/sandbox/admin-firestore/remote/batch.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/remote/batch.js +38 -0
- package/dist/sandbox/admin-firestore/remote/batch.js.map +1 -0
- package/dist/sandbox/admin-firestore/remote/channel.d.ts +22 -0
- package/dist/sandbox/admin-firestore/remote/channel.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/remote/channel.js +27 -0
- package/dist/sandbox/admin-firestore/remote/channel.js.map +1 -0
- package/dist/sandbox/admin-firestore/remote/doc-ref.d.ts +10 -0
- package/dist/sandbox/admin-firestore/remote/doc-ref.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/remote/doc-ref.js +88 -0
- package/dist/sandbox/admin-firestore/remote/doc-ref.js.map +1 -0
- package/dist/sandbox/admin-firestore/remote/errors.d.ts +17 -0
- package/dist/sandbox/admin-firestore/remote/errors.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/remote/errors.js +32 -0
- package/dist/sandbox/admin-firestore/remote/errors.js.map +1 -0
- package/dist/sandbox/admin-firestore/remote/listeners.d.ts +43 -0
- package/dist/sandbox/admin-firestore/remote/listeners.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/remote/listeners.js +89 -0
- package/dist/sandbox/admin-firestore/remote/listeners.js.map +1 -0
- package/dist/sandbox/admin-firestore/remote/query.d.ts +47 -0
- package/dist/sandbox/admin-firestore/remote/query.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/remote/query.js +186 -0
- package/dist/sandbox/admin-firestore/remote/query.js.map +1 -0
- package/dist/sandbox/admin-firestore/remote/remote-firestore.d.ts +55 -0
- package/dist/sandbox/admin-firestore/remote/remote-firestore.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/remote/remote-firestore.js +111 -0
- package/dist/sandbox/admin-firestore/remote/remote-firestore.js.map +1 -0
- package/dist/sandbox/admin-firestore/remote/snapshots.d.ts +10 -0
- package/dist/sandbox/admin-firestore/remote/snapshots.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/remote/snapshots.js +37 -0
- package/dist/sandbox/admin-firestore/remote/snapshots.js.map +1 -0
- package/dist/sandbox/admin-firestore/remote/transaction.d.ts +19 -0
- package/dist/sandbox/admin-firestore/remote/transaction.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/remote/transaction.js +105 -0
- package/dist/sandbox/admin-firestore/remote/transaction.js.map +1 -0
- package/dist/sandbox/admin-firestore/remote/value-codec.d.ts +52 -0
- package/dist/sandbox/admin-firestore/remote/value-codec.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/remote/value-codec.js +120 -0
- package/dist/sandbox/admin-firestore/remote/value-codec.js.map +1 -0
- package/dist/sandbox/admin-firestore/remote/wire-types.d.ts +111 -0
- package/dist/sandbox/admin-firestore/remote/wire-types.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/remote/wire-types.js +8 -0
- package/dist/sandbox/admin-firestore/remote/wire-types.js.map +1 -0
- package/dist/sandbox/admin-firestore/types.d.ts +59 -0
- package/dist/sandbox/admin-firestore/types.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/types.js +6 -0
- package/dist/sandbox/admin-firestore/types.js.map +1 -0
- package/dist/sandbox/branches/index.d.ts +141 -0
- package/dist/sandbox/branches/index.d.ts.map +1 -0
- package/dist/sandbox/branches/index.js +327 -0
- package/dist/sandbox/branches/index.js.map +1 -0
- package/dist/sandbox/index.d.ts +53 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/index.js +65 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/sandbox/internal/client-app.d.ts +29 -0
- package/dist/sandbox/internal/client-app.d.ts.map +1 -0
- package/dist/sandbox/internal/client-app.js +18 -0
- package/dist/sandbox/internal/client-app.js.map +1 -0
- package/dist/sandbox/internal/firebase-error.d.ts +14 -0
- package/dist/sandbox/internal/firebase-error.d.ts.map +1 -0
- package/dist/sandbox/internal/firebase-error.js +22 -0
- package/dist/sandbox/internal/firebase-error.js.map +1 -0
- package/dist/sandbox/internal/index.d.ts +39 -0
- package/dist/sandbox/internal/index.d.ts.map +1 -0
- package/dist/sandbox/internal/index.js +75 -0
- package/dist/sandbox/internal/index.js.map +1 -0
- package/dist/sandbox/internal/local-brand.d.ts +3 -0
- package/dist/sandbox/internal/local-brand.d.ts.map +1 -0
- package/dist/sandbox/internal/local-brand.js +3 -0
- package/dist/sandbox/internal/local-brand.js.map +1 -0
- package/dist/sandbox/internal/provenance.d.ts +16 -0
- package/dist/sandbox/internal/provenance.d.ts.map +1 -0
- package/dist/sandbox/internal/provenance.js +142 -0
- package/dist/sandbox/internal/provenance.js.map +1 -0
- package/dist/sandbox/internal/sandbox-impl.d.ts +331 -0
- package/dist/sandbox/internal/sandbox-impl.d.ts.map +1 -0
- package/dist/sandbox/internal/sandbox-impl.js +721 -0
- package/dist/sandbox/internal/sandbox-impl.js.map +1 -0
- package/dist/sandbox/operation-record.d.ts +48 -0
- package/dist/sandbox/operation-record.d.ts.map +1 -0
- package/dist/sandbox/operation-record.js +143 -0
- package/dist/sandbox/operation-record.js.map +1 -0
- package/dist/sandbox/persistence/backends.d.ts +37 -0
- package/dist/sandbox/persistence/backends.d.ts.map +1 -0
- package/dist/sandbox/persistence/backends.js +202 -0
- package/dist/sandbox/persistence/backends.js.map +1 -0
- package/dist/sandbox/persistence/chunk-format.d.ts +58 -0
- package/dist/sandbox/persistence/chunk-format.d.ts.map +1 -0
- package/dist/sandbox/persistence/chunk-format.js +163 -0
- package/dist/sandbox/persistence/chunk-format.js.map +1 -0
- package/dist/sandbox/persistence/controller.d.ts +39 -0
- package/dist/sandbox/persistence/controller.d.ts.map +1 -0
- package/dist/sandbox/persistence/controller.js +505 -0
- package/dist/sandbox/persistence/controller.js.map +1 -0
- package/dist/sandbox/persistence/index.d.ts +13 -0
- package/dist/sandbox/persistence/index.d.ts.map +1 -0
- package/dist/sandbox/persistence/index.js +5 -0
- package/dist/sandbox/persistence/index.js.map +1 -0
- package/dist/sandbox/persistence/serialize.d.ts +53 -0
- package/dist/sandbox/persistence/serialize.d.ts.map +1 -0
- package/dist/sandbox/persistence/serialize.js +98 -0
- package/dist/sandbox/persistence/serialize.js.map +1 -0
- package/dist/sandbox/persistence/types.d.ts +118 -0
- package/dist/sandbox/persistence/types.d.ts.map +1 -0
- package/dist/sandbox/persistence/types.js +15 -0
- package/dist/sandbox/persistence/types.js.map +1 -0
- package/dist/sandbox/remote.d.ts +118 -0
- package/dist/sandbox/remote.d.ts.map +1 -0
- package/dist/sandbox/remote.js +60 -0
- package/dist/sandbox/remote.js.map +1 -0
- package/dist/sandbox/replay/index.d.ts +106 -0
- package/dist/sandbox/replay/index.d.ts.map +1 -0
- package/dist/sandbox/replay/index.js +246 -0
- package/dist/sandbox/replay/index.js.map +1 -0
- package/dist/sandbox/sandbox-context.d.ts +48 -0
- package/dist/sandbox/sandbox-context.d.ts.map +1 -0
- package/dist/sandbox/sandbox-context.js +97 -0
- package/dist/sandbox/sandbox-context.js.map +1 -0
- package/dist/sandbox/tab-sync/index.d.ts +120 -0
- package/dist/sandbox/tab-sync/index.d.ts.map +1 -0
- package/dist/sandbox/tab-sync/index.js +273 -0
- package/dist/sandbox/tab-sync/index.js.map +1 -0
- package/dist/sandbox/types/auth-state.d.ts +23 -0
- package/dist/sandbox/types/auth-state.d.ts.map +1 -0
- package/dist/sandbox/types/auth-state.js +8 -0
- package/dist/sandbox/types/auth-state.js.map +1 -0
- package/dist/sandbox/types/context.d.ts +33 -0
- package/dist/sandbox/types/context.d.ts.map +1 -0
- package/dist/sandbox/types/context.js +5 -0
- package/dist/sandbox/types/context.js.map +1 -0
- package/dist/sandbox/types/errors.d.ts +126 -0
- package/dist/sandbox/types/errors.d.ts.map +1 -0
- package/dist/sandbox/types/errors.js +41 -0
- package/dist/sandbox/types/errors.js.map +1 -0
- package/dist/sandbox/types/events.d.ts +579 -0
- package/dist/sandbox/types/events.d.ts.map +1 -0
- package/dist/sandbox/types/events.js +7 -0
- package/dist/sandbox/types/events.js.map +1 -0
- package/dist/sandbox/types/index.d.ts +24 -0
- package/dist/sandbox/types/index.d.ts.map +1 -0
- package/dist/sandbox/types/index.js +17 -0
- package/dist/sandbox/types/index.js.map +1 -0
- package/dist/sandbox/types/operation.d.ts +74 -0
- package/dist/sandbox/types/operation.d.ts.map +1 -0
- package/dist/sandbox/types/operation.js +3 -0
- package/dist/sandbox/types/operation.js.map +1 -0
- package/dist/sandbox/types/persistence.d.ts +142 -0
- package/dist/sandbox/types/persistence.d.ts.map +1 -0
- package/dist/sandbox/types/persistence.js +7 -0
- package/dist/sandbox/types/persistence.js.map +1 -0
- package/dist/sandbox/types/service.d.ts +375 -0
- package/dist/sandbox/types/service.d.ts.map +1 -0
- package/dist/sandbox/types/service.js +6 -0
- package/dist/sandbox/types/service.js.map +1 -0
- package/dist/storage/admin/api.d.ts +206 -0
- package/dist/storage/admin/api.d.ts.map +1 -0
- package/dist/storage/admin/api.js +349 -0
- package/dist/storage/admin/api.js.map +1 -0
- package/dist/storage/admin/handler.d.ts +28 -0
- package/dist/storage/admin/handler.d.ts.map +1 -0
- package/dist/storage/admin/handler.js +82 -0
- package/dist/storage/admin/handler.js.map +1 -0
- package/dist/storage/admin/spec.d.ts +64 -0
- package/dist/storage/admin/spec.d.ts.map +1 -0
- package/dist/storage/admin/spec.js +8 -0
- package/dist/storage/admin/spec.js.map +1 -0
- package/dist/storage/admin/tools.d.ts +22 -0
- package/dist/storage/admin/tools.d.ts.map +1 -0
- package/dist/storage/admin/tools.js +90 -0
- package/dist/storage/admin/tools.js.map +1 -0
- package/dist/storage/download.d.ts +41 -0
- package/dist/storage/download.d.ts.map +1 -0
- package/dist/storage/download.js +137 -0
- package/dist/storage/download.js.map +1 -0
- package/dist/storage/enforce.d.ts +5 -0
- package/dist/storage/enforce.d.ts.map +1 -0
- package/dist/storage/enforce.js +147 -0
- package/dist/storage/enforce.js.map +1 -0
- package/dist/storage/errors.d.ts +44 -0
- package/dist/storage/errors.d.ts.map +1 -0
- package/dist/storage/errors.js +64 -0
- package/dist/storage/errors.js.map +1 -0
- package/dist/storage/index.d.ts +45 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +39 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/instances.d.ts +9 -0
- package/dist/storage/instances.d.ts.map +1 -0
- package/dist/storage/instances.js +28 -0
- package/dist/storage/instances.js.map +1 -0
- package/dist/storage/internal.d.ts +18 -0
- package/dist/storage/internal.d.ts.map +1 -0
- package/dist/storage/internal.js +18 -0
- package/dist/storage/internal.js.map +1 -0
- package/dist/storage/list.d.ts +42 -0
- package/dist/storage/list.d.ts.map +1 -0
- package/dist/storage/list.js +83 -0
- package/dist/storage/list.js.map +1 -0
- package/dist/storage/metadata.d.ts +92 -0
- package/dist/storage/metadata.d.ts.map +1 -0
- package/dist/storage/metadata.js +164 -0
- package/dist/storage/metadata.js.map +1 -0
- package/dist/storage/persistence.d.ts +141 -0
- package/dist/storage/persistence.d.ts.map +1 -0
- package/dist/storage/persistence.js +156 -0
- package/dist/storage/persistence.js.map +1 -0
- package/dist/storage/reference.d.ts +57 -0
- package/dist/storage/reference.d.ts.map +1 -0
- package/dist/storage/reference.js +105 -0
- package/dist/storage/reference.js.map +1 -0
- package/dist/storage/rules.d.ts +376 -0
- package/dist/storage/rules.d.ts.map +1 -0
- package/dist/storage/rules.js +1243 -0
- package/dist/storage/rules.js.map +1 -0
- package/dist/storage/service.d.ts +132 -0
- package/dist/storage/service.d.ts.map +1 -0
- package/dist/storage/service.js +263 -0
- package/dist/storage/service.js.map +1 -0
- package/dist/storage/upload.d.ts +50 -0
- package/dist/storage/upload.d.ts.map +1 -0
- package/dist/storage/upload.js +246 -0
- package/dist/storage/upload.js.map +1 -0
- package/package.json +156 -3
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `classifyQueryCall` — given a `query(...)` call expression, decide whether
|
|
3
|
+
* it's an INIT (`query(collection(db, "X"), ...)`) or a WRAP
|
|
4
|
+
* (`query(q, ...constraints)`), and produce the fragments contributed by
|
|
5
|
+
* the call's constraint arguments.
|
|
6
|
+
*
|
|
7
|
+
* One call may produce multiple fragments — `query(q, where(...), orderBy(...))`
|
|
8
|
+
* yields a `where` and an `orderBy` fragment. Callers wrap each fragment
|
|
9
|
+
* with branch context (branchId/clauseId/skippable) before storing.
|
|
10
|
+
*/
|
|
11
|
+
import ts from 'typescript';
|
|
12
|
+
import { getCalleeName, strLit } from './ast.js';
|
|
13
|
+
/**
|
|
14
|
+
* Resolve a `collection(db, "a", id?, "b"?, ...)` or
|
|
15
|
+
* `collectionGroup(db, "name")` call into its (possibly composite) path.
|
|
16
|
+
*
|
|
17
|
+
* For modular `collection(db, ...segments)`:
|
|
18
|
+
* - 2-arg form returns the literal path (or null).
|
|
19
|
+
* - 3+ arg form stitches literal segments and replaces dynamic ones with
|
|
20
|
+
* `{*}`. The result still pins the **last segment** as the collection
|
|
21
|
+
* group, which is the only piece an index spec needs.
|
|
22
|
+
*
|
|
23
|
+
* Returns `null` when the first segment isn't a literal — in that case
|
|
24
|
+
* we have no statically resolvable path at all.
|
|
25
|
+
*/
|
|
26
|
+
function resolveCollectionPath(call) {
|
|
27
|
+
// First arg is `db`; segments start at index 1.
|
|
28
|
+
if (call.arguments.length < 2)
|
|
29
|
+
return null;
|
|
30
|
+
const segs = [];
|
|
31
|
+
for (let i = 1; i < call.arguments.length; i++) {
|
|
32
|
+
const lit = strLit(call.arguments[i]);
|
|
33
|
+
if (lit !== null)
|
|
34
|
+
segs.push(lit);
|
|
35
|
+
else
|
|
36
|
+
segs.push('{*}');
|
|
37
|
+
}
|
|
38
|
+
// If the very first segment is dynamic, we can't say anything useful.
|
|
39
|
+
if (segs[0] === '{*}')
|
|
40
|
+
return null;
|
|
41
|
+
return segs.join('/');
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Process a single constraint call (`where`, `orderBy`, `limit`) and emit
|
|
45
|
+
* one or more fragments. Splits the dynamic-direction `orderBy(field, dir)`
|
|
46
|
+
* case into two fragments (asc + desc) so over-shoot is preferred to
|
|
47
|
+
* silent under-shoot.
|
|
48
|
+
*/
|
|
49
|
+
function classifyConstraint(call) {
|
|
50
|
+
const cn = getCalleeName(call);
|
|
51
|
+
const args = call.arguments;
|
|
52
|
+
if (cn === 'where') {
|
|
53
|
+
const field = args[0] ? strLit(args[0]) : null;
|
|
54
|
+
const op = args[1] ? strLit(args[1]) : null;
|
|
55
|
+
if (field && op)
|
|
56
|
+
return [{ kind: 'where', filter: { field, op } }];
|
|
57
|
+
return [{ kind: 'unknown' }];
|
|
58
|
+
}
|
|
59
|
+
if (cn === 'orderBy') {
|
|
60
|
+
const field = args[0] ? strLit(args[0]) : null;
|
|
61
|
+
if (!field)
|
|
62
|
+
return [{ kind: 'unknown' }];
|
|
63
|
+
if (args.length === 1) {
|
|
64
|
+
// Default direction is asc.
|
|
65
|
+
return [{ kind: 'orderBy', order: { field, direction: 'asc' } }];
|
|
66
|
+
}
|
|
67
|
+
const dirLit = args[1] ? strLit(args[1]) : null;
|
|
68
|
+
if (dirLit === 'asc' || dirLit === 'desc') {
|
|
69
|
+
return [{ kind: 'orderBy', order: { field, direction: dirLit } }];
|
|
70
|
+
}
|
|
71
|
+
// Dynamic direction — emit both. Better to over-index than under-index;
|
|
72
|
+
// the agent layer can prune via @firestore-mutex if it knows better.
|
|
73
|
+
return [
|
|
74
|
+
{ kind: 'orderBy', order: { field, direction: 'asc' } },
|
|
75
|
+
{ kind: 'orderBy', order: { field, direction: 'desc' } },
|
|
76
|
+
];
|
|
77
|
+
}
|
|
78
|
+
if (cn === 'limit') {
|
|
79
|
+
const n = args[0];
|
|
80
|
+
if (n && ts.isNumericLiteral(n)) {
|
|
81
|
+
return [{ kind: 'limit', limit: Number(n.text) }];
|
|
82
|
+
}
|
|
83
|
+
return [{ kind: 'unknown' }];
|
|
84
|
+
}
|
|
85
|
+
// Anything else — `startAt`, `endBefore`, custom helpers — count as
|
|
86
|
+
// unknown for now. The composite-index detector treats unknown as a
|
|
87
|
+
// pass-through (no constraint contribution).
|
|
88
|
+
return [{ kind: 'unknown' }];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Classify a `query(...)` call. Caller is expected to have already
|
|
92
|
+
* confirmed `getCalleeName(call) === 'query'`.
|
|
93
|
+
*
|
|
94
|
+
* `varName` is the local that the chain is being built on (typically `q`).
|
|
95
|
+
* Used to recognize the WRAP shape `query(q, ...)`.
|
|
96
|
+
*/
|
|
97
|
+
export function classifyQueryCall(call, varName) {
|
|
98
|
+
const args = call.arguments;
|
|
99
|
+
if (args.length === 0)
|
|
100
|
+
return { isInit: false, fragments: [] };
|
|
101
|
+
const first = args[0];
|
|
102
|
+
let isInit = false;
|
|
103
|
+
let collectionPath = undefined;
|
|
104
|
+
let isCollectionGroup = false;
|
|
105
|
+
if (ts.isCallExpression(first)) {
|
|
106
|
+
const cname = getCalleeName(first);
|
|
107
|
+
if (cname === 'collection' || cname === 'collectionGroup') {
|
|
108
|
+
isInit = true;
|
|
109
|
+
isCollectionGroup = cname === 'collectionGroup';
|
|
110
|
+
if (cname === 'collectionGroup') {
|
|
111
|
+
// collectionGroup(db, "name")
|
|
112
|
+
collectionPath = first.arguments[1] ? strLit(first.arguments[1]) : null;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
collectionPath = resolveCollectionPath(first);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else if (ts.isIdentifier(first) && first.text === varName) {
|
|
120
|
+
// WRAP: query(q, ...constraints)
|
|
121
|
+
isInit = false;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
// First arg is something else — different variable, expression, etc.
|
|
125
|
+
// Treat as unknown, no fragments.
|
|
126
|
+
return { isInit: false, fragments: [{ kind: 'unknown' }] };
|
|
127
|
+
}
|
|
128
|
+
// Process the rest as constraints.
|
|
129
|
+
const fragments = [];
|
|
130
|
+
for (let i = 1; i < args.length; i++) {
|
|
131
|
+
const a = args[i];
|
|
132
|
+
if (!ts.isCallExpression(a))
|
|
133
|
+
continue;
|
|
134
|
+
fragments.push(...classifyConstraint(a));
|
|
135
|
+
}
|
|
136
|
+
return { isInit, collectionPath, isCollectionGroup, fragments };
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=classify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../../../src/rules/indexes/extract/classify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composite-index detection + QueryShape → IndexesConfigEntry mapping.
|
|
3
|
+
*
|
|
4
|
+
* Firestore's actual index-required rules are nuanced; this is a
|
|
5
|
+
* conservative approximation that matches the cases the agent layer
|
|
6
|
+
* needs to pre-seed:
|
|
7
|
+
*
|
|
8
|
+
* - 0 filters and ≤ 1 orderBy → single-field, no composite needed.
|
|
9
|
+
* - 1 equality filter and 0 orderBy → single-field.
|
|
10
|
+
* - 1 equality filter + 1 orderBy on the same field → single-field.
|
|
11
|
+
* - 2+ equality filters → composite.
|
|
12
|
+
* - Equality filter + orderBy on a different field → composite.
|
|
13
|
+
* - Range/inequality filter + orderBy on a different field → composite.
|
|
14
|
+
* - array-contains is treated like equality for composite purposes.
|
|
15
|
+
*
|
|
16
|
+
* Vector indexes are not handled here — they have their own creation
|
|
17
|
+
* surface that goes through the same deploy handler but with a
|
|
18
|
+
* `vectorConfig` field on each indexed field.
|
|
19
|
+
*/
|
|
20
|
+
import type { QueryShape } from './types.js';
|
|
21
|
+
import type { IndexesConfigEntry } from '../types.js';
|
|
22
|
+
export declare function needsCompositeIndex(s: QueryShape): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Map a QueryShape to a Firestore index-spec entry. The output drops
|
|
25
|
+
* directly into `firestore.indexes.json`'s `indexes[]`.
|
|
26
|
+
*
|
|
27
|
+
* Field ordering rule: equality filters first (Firestore's docs put them
|
|
28
|
+
* before range/orderBy), then range filters, then orderBy fields. Within
|
|
29
|
+
* each group we preserve source order so the agent can correlate the
|
|
30
|
+
* extracted index with the source query.
|
|
31
|
+
*/
|
|
32
|
+
export declare function shapeToIndexEntry(s: QueryShape): IndexesConfigEntry;
|
|
33
|
+
/**
|
|
34
|
+
* Stable string key for an index entry — used by the orchestrator to
|
|
35
|
+
* dedupe across multiple shapes that map to the same index.
|
|
36
|
+
*/
|
|
37
|
+
export declare function indexEntryKey(e: IndexesConfigEntry): string;
|
|
38
|
+
//# sourceMappingURL=composite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composite.d.ts","sourceRoot":"","sources":["../../../../src/rules/indexes/extract/composite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAmB,MAAM,aAAa,CAAC;AAQvE,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CA0B1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAqCnE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAG3D"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
const EQ_LIKE = new Set(['==', 'in', 'array-contains', 'array-contains-any']);
|
|
2
|
+
function isEqualityLike(f) {
|
|
3
|
+
return EQ_LIKE.has(f.op);
|
|
4
|
+
}
|
|
5
|
+
export function needsCompositeIndex(s) {
|
|
6
|
+
const eq = s.filters.filter(isEqualityLike);
|
|
7
|
+
const range = s.filters.filter(f => !isEqualityLike(f));
|
|
8
|
+
// Trivially no composite — too few constraints.
|
|
9
|
+
if (s.filters.length === 0 && s.orders.length <= 1)
|
|
10
|
+
return false;
|
|
11
|
+
if (s.filters.length === 1 && s.orders.length === 0)
|
|
12
|
+
return false;
|
|
13
|
+
// 2+ filters of any kind → composite.
|
|
14
|
+
if (s.filters.length >= 2)
|
|
15
|
+
return true;
|
|
16
|
+
// Equality + orderBy: composite iff orderBy is on a different field.
|
|
17
|
+
if (eq.length >= 1 && s.orders.length >= 1) {
|
|
18
|
+
const orderField = s.orders[0].field;
|
|
19
|
+
if (!eq.some(f => f.field === orderField))
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
// Range + orderBy on a different field → composite.
|
|
23
|
+
if (range.length >= 1 && s.orders.length >= 1) {
|
|
24
|
+
if (range[0].field !== s.orders[0].field)
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
// 2+ orderBys → composite (Firestore needs an index for each ordering combo).
|
|
28
|
+
if (s.orders.length >= 2)
|
|
29
|
+
return true;
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Map a QueryShape to a Firestore index-spec entry. The output drops
|
|
34
|
+
* directly into `firestore.indexes.json`'s `indexes[]`.
|
|
35
|
+
*
|
|
36
|
+
* Field ordering rule: equality filters first (Firestore's docs put them
|
|
37
|
+
* before range/orderBy), then range filters, then orderBy fields. Within
|
|
38
|
+
* each group we preserve source order so the agent can correlate the
|
|
39
|
+
* extracted index with the source query.
|
|
40
|
+
*/
|
|
41
|
+
export function shapeToIndexEntry(s) {
|
|
42
|
+
const fields = [];
|
|
43
|
+
// Equality filters → ASCENDING.
|
|
44
|
+
for (const f of s.filters) {
|
|
45
|
+
if (isEqualityLike(f)) {
|
|
46
|
+
fields.push({ fieldPath: f.field, order: 'ASCENDING' });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Range filters → ASCENDING.
|
|
50
|
+
for (const f of s.filters) {
|
|
51
|
+
if (!isEqualityLike(f)) {
|
|
52
|
+
fields.push({ fieldPath: f.field, order: 'ASCENDING' });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// OrderBy fields — direction matters; only include fields not already in.
|
|
56
|
+
for (const o of s.orders) {
|
|
57
|
+
const existing = fields.findIndex(x => x.fieldPath === o.field);
|
|
58
|
+
if (existing >= 0) {
|
|
59
|
+
// The orderBy direction wins over a default-ascending entry from
|
|
60
|
+
// the filter loop — Firestore's index requires the orderBy
|
|
61
|
+
// direction to match.
|
|
62
|
+
fields[existing] = { fieldPath: o.field, order: o.direction === 'desc' ? 'DESCENDING' : 'ASCENDING' };
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
fields.push({ fieldPath: o.field, order: o.direction === 'desc' ? 'DESCENDING' : 'ASCENDING' });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Last segment of the path is the collectionGroup (subcollection
|
|
69
|
+
// queries pin the group to the leaf segment).
|
|
70
|
+
const collectionGroup = s.collectionPath.split('/').pop() || s.collectionPath;
|
|
71
|
+
return {
|
|
72
|
+
collectionGroup,
|
|
73
|
+
queryScope: s.isCollectionGroup ? 'COLLECTION_GROUP' : 'COLLECTION',
|
|
74
|
+
fields,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Stable string key for an index entry — used by the orchestrator to
|
|
79
|
+
* dedupe across multiple shapes that map to the same index.
|
|
80
|
+
*/
|
|
81
|
+
export function indexEntryKey(e) {
|
|
82
|
+
const fields = e.fields.map(f => `${f.fieldPath}:${f.order ?? 'ASCENDING'}`).join(',');
|
|
83
|
+
return `${e.queryScope}|${e.collectionGroup}|${fields}`;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=composite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composite.js","sourceRoot":"","sources":["../../../../src/rules/indexes/extract/composite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `scanFunctionBody` — intra-procedural walker that finds every assignment
|
|
3
|
+
* to a chain variable (typically `q`) inside a function body, classifies
|
|
4
|
+
* each assignment's RHS via `classifyQueryCall`, and stamps each emitted
|
|
5
|
+
* fragment with branch context (branchId/clauseId/skippable).
|
|
6
|
+
*
|
|
7
|
+
* Branch context lets the enumerator (next module) correctly model
|
|
8
|
+
* mutually exclusive clauses and skippable optional `if (cond)` blocks.
|
|
9
|
+
*
|
|
10
|
+
* Scope:
|
|
11
|
+
* - Variable bindings tracked at function scope only.
|
|
12
|
+
* - if/else-if/else chains supported. switch / try / nested function
|
|
13
|
+
* bodies are walked but their branches are NOT enumerated separately
|
|
14
|
+
* (treated as unconditional within the enclosing scope).
|
|
15
|
+
* - Optional inter-procedural following (Layer 2.5): callers may pass a
|
|
16
|
+
* `CallResolver` to recursively inline a same-file wrapper that takes
|
|
17
|
+
* the chain variable as a parameter and returns a modified chain.
|
|
18
|
+
* Single-level only, root-context only, identifier-arg only.
|
|
19
|
+
*/
|
|
20
|
+
import ts from 'typescript';
|
|
21
|
+
import type { QueryBaseDecl } from './types.js';
|
|
22
|
+
/**
|
|
23
|
+
* Result returned by a `CallResolver` when it knows how to inline a call.
|
|
24
|
+
*
|
|
25
|
+
* `body` is the wrapper function's body node — the recursion runs
|
|
26
|
+
* `scanFunctionBody`'s inner walker over it, treating `chainParamName` as
|
|
27
|
+
* the wrapper's chain variable.
|
|
28
|
+
*/
|
|
29
|
+
export interface ResolvedCall {
|
|
30
|
+
body: ts.Node;
|
|
31
|
+
chainParamName: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Optional callback that lets the walker follow chain-var-passing calls
|
|
35
|
+
* into other functions in the same source file (Layer 2.5).
|
|
36
|
+
*
|
|
37
|
+
* Receives the called function's name and the position of the chain
|
|
38
|
+
* variable in the argument list. Returns the wrapper's body and the
|
|
39
|
+
* parameter name corresponding to that argument, or `null` if the call
|
|
40
|
+
* shouldn't be followed (unknown function, wrong arity, parameter not an
|
|
41
|
+
* identifier, etc.).
|
|
42
|
+
*/
|
|
43
|
+
export type CallResolver = (functionName: string, chainArgIndex: number) => ResolvedCall | null;
|
|
44
|
+
export declare function scanFunctionBody(body: ts.Node, varName: string, callResolver?: CallResolver): QueryBaseDecl;
|
|
45
|
+
//# sourceMappingURL=dataflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataflow.d.ts","sourceRoot":"","sources":["../../../../src/rules/indexes/extract/dataflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,OAAO,KAAK,EAAY,aAAa,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,YAAY,GAAG,IAAI,CAAC;AAmDhG,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,YAAY,GAC1B,aAAa,CA4Jf"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `scanFunctionBody` — intra-procedural walker that finds every assignment
|
|
3
|
+
* to a chain variable (typically `q`) inside a function body, classifies
|
|
4
|
+
* each assignment's RHS via `classifyQueryCall`, and stamps each emitted
|
|
5
|
+
* fragment with branch context (branchId/clauseId/skippable).
|
|
6
|
+
*
|
|
7
|
+
* Branch context lets the enumerator (next module) correctly model
|
|
8
|
+
* mutually exclusive clauses and skippable optional `if (cond)` blocks.
|
|
9
|
+
*
|
|
10
|
+
* Scope:
|
|
11
|
+
* - Variable bindings tracked at function scope only.
|
|
12
|
+
* - if/else-if/else chains supported. switch / try / nested function
|
|
13
|
+
* bodies are walked but their branches are NOT enumerated separately
|
|
14
|
+
* (treated as unconditional within the enclosing scope).
|
|
15
|
+
* - Optional inter-procedural following (Layer 2.5): callers may pass a
|
|
16
|
+
* `CallResolver` to recursively inline a same-file wrapper that takes
|
|
17
|
+
* the chain variable as a parameter and returns a modified chain.
|
|
18
|
+
* Single-level only, root-context only, identifier-arg only.
|
|
19
|
+
*/
|
|
20
|
+
import ts from 'typescript';
|
|
21
|
+
import { getCalleeName } from './ast.js';
|
|
22
|
+
import { classifyQueryCall } from './classify.js';
|
|
23
|
+
const ROOT_CTX = { branchId: null, clauseId: null, skippable: false };
|
|
24
|
+
/**
|
|
25
|
+
* Decide whether an `if`-chain has a final `else` (so one branch always
|
|
26
|
+
* runs) or not (so all branches are individually skippable).
|
|
27
|
+
*/
|
|
28
|
+
function ifChainHasFinalElse(node) {
|
|
29
|
+
let cur = node;
|
|
30
|
+
while (cur) {
|
|
31
|
+
if (!cur.elseStatement)
|
|
32
|
+
return false;
|
|
33
|
+
if (ts.isIfStatement(cur.elseStatement)) {
|
|
34
|
+
cur = cur.elseStatement;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return true; // final else block
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Apply branch context to a classified fragment, producing the final
|
|
44
|
+
* `Fragment` shape with branchId/clauseId/skippable populated.
|
|
45
|
+
*
|
|
46
|
+
* INIT contributions are NOT emitted as fragments — they're recorded on
|
|
47
|
+
* the QueryBaseDecl directly. Only constraint fragments flow through.
|
|
48
|
+
*/
|
|
49
|
+
function attachContext(frag, ctx) {
|
|
50
|
+
return {
|
|
51
|
+
kind: frag.kind,
|
|
52
|
+
filter: frag.filter,
|
|
53
|
+
order: frag.order,
|
|
54
|
+
limit: frag.limit,
|
|
55
|
+
branchId: ctx.branchId,
|
|
56
|
+
clauseId: ctx.clauseId,
|
|
57
|
+
skippable: ctx.skippable,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export function scanFunctionBody(body, varName, callResolver) {
|
|
61
|
+
const decl = {
|
|
62
|
+
varName,
|
|
63
|
+
collectionPath: null,
|
|
64
|
+
isCollectionGroup: false,
|
|
65
|
+
fragments: [],
|
|
66
|
+
};
|
|
67
|
+
const scan = { nextBranchId: 1 };
|
|
68
|
+
/**
|
|
69
|
+
* Try to inline a non-`query` call that receives the current chain
|
|
70
|
+
* variable as an argument. Returns true when the call was recognized
|
|
71
|
+
* (whether or not it actually inlined — a recognized-but-skipped call
|
|
72
|
+
* still yields a warning and shouldn't be re-tried elsewhere).
|
|
73
|
+
*
|
|
74
|
+
* Hard limits per Layer 2.5 design:
|
|
75
|
+
* - Single-level only (depth 0 inlines once; depth ≥ 1 short-circuits
|
|
76
|
+
* with `inter-proc-recursion` warning).
|
|
77
|
+
* - Root context only — calls inside `if`-branches surface
|
|
78
|
+
* `inter-proc-nested` and skip inlining.
|
|
79
|
+
* - Chain variable must appear as a bare identifier in the args.
|
|
80
|
+
*/
|
|
81
|
+
function tryInlineCall(call, chainVar, ctx, depth) {
|
|
82
|
+
if (!callResolver)
|
|
83
|
+
return false;
|
|
84
|
+
const fnName = getCalleeName(call);
|
|
85
|
+
if (!fnName || fnName === 'query')
|
|
86
|
+
return false;
|
|
87
|
+
let chainArgIndex = -1;
|
|
88
|
+
for (let i = 0; i < call.arguments.length; i++) {
|
|
89
|
+
const a = call.arguments[i];
|
|
90
|
+
if (ts.isIdentifier(a) && a.text === chainVar) {
|
|
91
|
+
chainArgIndex = i;
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (chainArgIndex === -1)
|
|
96
|
+
return false;
|
|
97
|
+
if (depth >= 1) {
|
|
98
|
+
pushInterProcWarning('inter-proc-recursion', fnName, `Skipped follow into '${fnName}': single-level inter-procedural only.`);
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
if (ctx.branchId !== null) {
|
|
102
|
+
pushInterProcWarning('inter-proc-nested', fnName, `Skipped follow into '${fnName}': call site is inside a branch.`);
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
const resolved = callResolver(fnName, chainArgIndex);
|
|
106
|
+
if (!resolved)
|
|
107
|
+
return false;
|
|
108
|
+
walkBody(resolved.body, resolved.chainParamName, depth + 1);
|
|
109
|
+
decl.inlinedFunctions = decl.inlinedFunctions ?? [];
|
|
110
|
+
if (!decl.inlinedFunctions.includes(fnName))
|
|
111
|
+
decl.inlinedFunctions.push(fnName);
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
function pushInterProcWarning(code, functionName, message) {
|
|
115
|
+
decl.interProcWarnings = decl.interProcWarnings ?? [];
|
|
116
|
+
decl.interProcWarnings.push({ code, functionName, message });
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Walk a function body looking for assignments to `chainVar`. The same
|
|
120
|
+
* `decl` and `scan.nextBranchId` are shared across recursive calls so
|
|
121
|
+
* branch IDs across caller + wrapper stay distinct.
|
|
122
|
+
*/
|
|
123
|
+
function walkBody(targetBody, chainVar, depth) {
|
|
124
|
+
function processAssignmentRHS(rhs, ctx) {
|
|
125
|
+
if (!ts.isCallExpression(rhs))
|
|
126
|
+
return;
|
|
127
|
+
if (getCalleeName(rhs) === 'query') {
|
|
128
|
+
const r = classifyQueryCall(rhs, chainVar);
|
|
129
|
+
if (r.isInit) {
|
|
130
|
+
// The first INIT we see wins. Subsequent re-INITs would mean
|
|
131
|
+
// the chain restarts — rare in real code, ignored for v1.
|
|
132
|
+
if (decl.collectionPath === null) {
|
|
133
|
+
decl.collectionPath = r.collectionPath ?? null;
|
|
134
|
+
decl.isCollectionGroup = r.isCollectionGroup ?? false;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
for (const f of r.fragments) {
|
|
138
|
+
decl.fragments.push(attachContext(f, ctx));
|
|
139
|
+
}
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
// Not a `query(...)` call — try the inter-procedural follower.
|
|
143
|
+
tryInlineCall(rhs, chainVar, ctx, depth);
|
|
144
|
+
}
|
|
145
|
+
function visit(node, ctx) {
|
|
146
|
+
// 1. Variable declaration: `let q = query(...)` or `let q = wrapper(q,...)`
|
|
147
|
+
if (ts.isVariableStatement(node)) {
|
|
148
|
+
for (const d of node.declarationList.declarations) {
|
|
149
|
+
if (ts.isIdentifier(d.name) && d.name.text === chainVar && d.initializer) {
|
|
150
|
+
processAssignmentRHS(d.initializer, ctx);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// 2. Assignment: `q = query(q, ...)` or `q = wrapper(q, ...)`
|
|
155
|
+
if (ts.isExpressionStatement(node)
|
|
156
|
+
&& ts.isBinaryExpression(node.expression)
|
|
157
|
+
&& node.expression.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
|
|
158
|
+
const lhs = node.expression.left;
|
|
159
|
+
if (ts.isIdentifier(lhs) && lhs.text === chainVar) {
|
|
160
|
+
processAssignmentRHS(node.expression.right, ctx);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// 3. if/else chain: open a new branchId, walk each clause separately.
|
|
164
|
+
if (ts.isIfStatement(node)) {
|
|
165
|
+
const branchId = scan.nextBranchId++;
|
|
166
|
+
const skippable = !ifChainHasFinalElse(node);
|
|
167
|
+
let clauseIdx = 0;
|
|
168
|
+
let walker = node;
|
|
169
|
+
while (walker) {
|
|
170
|
+
if (ts.isIfStatement(walker)) {
|
|
171
|
+
visit(walker.thenStatement, { branchId, clauseId: clauseIdx, skippable });
|
|
172
|
+
if (walker.elseStatement && !ts.isIfStatement(walker.elseStatement)) {
|
|
173
|
+
// final else
|
|
174
|
+
clauseIdx += 1;
|
|
175
|
+
visit(walker.elseStatement, { branchId, clauseId: clauseIdx, skippable });
|
|
176
|
+
walker = undefined;
|
|
177
|
+
}
|
|
178
|
+
else if (walker.elseStatement && ts.isIfStatement(walker.elseStatement)) {
|
|
179
|
+
clauseIdx += 1;
|
|
180
|
+
walker = walker.elseStatement;
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
walker = undefined;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
walker = undefined;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return; // handled — don't recurse into the if's children again
|
|
191
|
+
}
|
|
192
|
+
// Default: recurse into children with the current ctx.
|
|
193
|
+
ts.forEachChild(node, (n) => visit(n, ctx));
|
|
194
|
+
}
|
|
195
|
+
visit(targetBody, ROOT_CTX);
|
|
196
|
+
}
|
|
197
|
+
walkBody(body, varName, 0);
|
|
198
|
+
return decl;
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=dataflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataflow.js","sourceRoot":"","sources":["../../../../src/rules/indexes/extract/dataflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `enumerateShapes` — turn a `QueryBaseDecl` (base + branched fragments)
|
|
3
|
+
* into the finite set of `QueryShape`s the source may issue at runtime.
|
|
4
|
+
*
|
|
5
|
+
* Algorithm:
|
|
6
|
+
* 1. Group fragments by branchId (null = unconditional).
|
|
7
|
+
* 2. For each branch, the choices are: each clause's fragment-list,
|
|
8
|
+
* plus an empty-choice if the branch is skippable.
|
|
9
|
+
* 3. Cartesian product across branches.
|
|
10
|
+
* 4. Each combo includes all unconditional fragments.
|
|
11
|
+
* 5. Dedupe shapes by stable key.
|
|
12
|
+
*/
|
|
13
|
+
import type { Annotations, QueryBaseDecl, QueryShape } from './types.js';
|
|
14
|
+
export declare function enumerateShapes(decl: QueryBaseDecl): QueryShape[];
|
|
15
|
+
/**
|
|
16
|
+
* Result of applying `@firestore-mutex` and `@firestore-required` to a
|
|
17
|
+
* shape list. Counts let the caller surface how many shapes each
|
|
18
|
+
* annotation pruned via `AnnotationApplied`.
|
|
19
|
+
*/
|
|
20
|
+
export interface PruneResult {
|
|
21
|
+
shapes: QueryShape[];
|
|
22
|
+
prunedByMutex: number;
|
|
23
|
+
prunedByRequired: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Apply mutex + required annotations to an enumerated shape list.
|
|
27
|
+
*
|
|
28
|
+
* - Mutex: a shape is dropped if any mutex group has ≥2 of its fields
|
|
29
|
+
* present in the shape's filters or orderBy. (One field from a group
|
|
30
|
+
* is fine — the constraint is "at most one".)
|
|
31
|
+
* - Required: a shape is dropped if it doesn't contain every field in
|
|
32
|
+
* `annotations.required` somewhere in filters or orderBy.
|
|
33
|
+
*
|
|
34
|
+
* `@firestore-budget` is **not** applied here — that's a soft cap
|
|
35
|
+
* surfaced as a warning at the orchestrator level, not a prune.
|
|
36
|
+
*
|
|
37
|
+
* No-op when `annotations` is `undefined`, empty mutexGroups, and empty
|
|
38
|
+
* required — returns the input shapes with zero prune counts.
|
|
39
|
+
*/
|
|
40
|
+
export declare function pruneByAnnotations(shapes: QueryShape[], annotations: Annotations | undefined): PruneResult;
|
|
41
|
+
//# sourceMappingURL=enumerate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enumerate.d.ts","sourceRoot":"","sources":["../../../../src/rules/indexes/extract/enumerate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,WAAW,EAA2B,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAoBlG,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,EAAE,CAuFjE;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAAE,EACpB,WAAW,EAAE,WAAW,GAAG,SAAS,GACnC,WAAW,CA2Cb"}
|