pyric 0.0.1 → 0.1.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +138 -2
- package/README.md.orig +54 -0
- package/dist/app/index.d.ts +81 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +78 -0
- package/dist/app/index.js.map +1 -0
- package/dist/auth/index.d.ts +346 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +701 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/prod-backend.d.ts +39 -0
- package/dist/auth/prod-backend.d.ts.map +1 -0
- package/dist/auth/prod-backend.js +179 -0
- package/dist/auth/prod-backend.js.map +1 -0
- package/dist/auth/providers.d.ts +107 -0
- package/dist/auth/providers.d.ts.map +1 -0
- package/dist/auth/providers.js +138 -0
- package/dist/auth/providers.js.map +1 -0
- package/dist/auth/sandbox-backend.d.ts +769 -0
- package/dist/auth/sandbox-backend.d.ts.map +1 -0
- package/dist/auth/sandbox-backend.js +1598 -0
- package/dist/auth/sandbox-backend.js.map +1 -0
- package/dist/auth/target.d.ts +40 -0
- package/dist/auth/target.d.ts.map +1 -0
- package/dist/auth/target.js +28 -0
- package/dist/auth/target.js.map +1 -0
- package/dist/auth/types.d.ts +252 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +26 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/database/constraints/atoms.d.ts +29 -0
- package/dist/database/constraints/atoms.d.ts.map +1 -0
- package/dist/database/constraints/atoms.js +43 -0
- package/dist/database/constraints/atoms.js.map +1 -0
- package/dist/database/constraints/compose.d.ts +16 -0
- package/dist/database/constraints/compose.d.ts.map +1 -0
- package/dist/database/constraints/compose.js +15 -0
- package/dist/database/constraints/compose.js.map +1 -0
- package/dist/database/constraints/data.d.ts +30 -0
- package/dist/database/constraints/data.d.ts.map +1 -0
- package/dist/database/constraints/data.js +46 -0
- package/dist/database/constraints/data.js.map +1 -0
- package/dist/database/constraints/document.d.ts +42 -0
- package/dist/database/constraints/document.d.ts.map +1 -0
- package/dist/database/constraints/document.js +86 -0
- package/dist/database/constraints/document.js.map +1 -0
- package/dist/database/constraints/game.d.ts +30 -0
- package/dist/database/constraints/game.d.ts.map +1 -0
- package/dist/database/constraints/game.js +49 -0
- package/dist/database/constraints/game.js.map +1 -0
- package/dist/database/constraints/index.d.ts +12 -0
- package/dist/database/constraints/index.d.ts.map +1 -0
- package/dist/database/constraints/index.js +9 -0
- package/dist/database/constraints/index.js.map +1 -0
- package/dist/database/constraints/policies.d.ts +16 -0
- package/dist/database/constraints/policies.d.ts.map +1 -0
- package/dist/database/constraints/policies.js +17 -0
- package/dist/database/constraints/policies.js.map +1 -0
- package/dist/database/constraints/ruleset.d.ts +5 -0
- package/dist/database/constraints/ruleset.d.ts.map +1 -0
- package/dist/database/constraints/ruleset.js +132 -0
- package/dist/database/constraints/ruleset.js.map +1 -0
- package/dist/database/constraints/schema.d.ts +17 -0
- package/dist/database/constraints/schema.d.ts.map +1 -0
- package/dist/database/constraints/schema.js +74 -0
- package/dist/database/constraints/schema.js.map +1 -0
- package/dist/database/constraints/types.d.ts +22 -0
- package/dist/database/constraints/types.d.ts.map +1 -0
- package/dist/database/constraints/types.js +2 -0
- package/dist/database/constraints/types.js.map +1 -0
- package/dist/database/crawl/handler.d.ts +7 -0
- package/dist/database/crawl/handler.d.ts.map +1 -0
- package/dist/database/crawl/handler.js +91 -0
- package/dist/database/crawl/handler.js.map +1 -0
- package/dist/database/crawl/semaphore.d.ts +9 -0
- package/dist/database/crawl/semaphore.d.ts.map +1 -0
- package/dist/database/crawl/semaphore.js +27 -0
- package/dist/database/crawl/semaphore.js.map +1 -0
- package/dist/database/crawl/spec.d.ts +33 -0
- package/dist/database/crawl/spec.d.ts.map +1 -0
- package/dist/database/crawl/spec.js +12 -0
- package/dist/database/crawl/spec.js.map +1 -0
- package/dist/database/data/handler.d.ts +9 -0
- package/dist/database/data/handler.d.ts.map +1 -0
- package/dist/database/data/handler.js +96 -0
- package/dist/database/data/handler.js.map +1 -0
- package/dist/database/data/spec.d.ts +77 -0
- package/dist/database/data/spec.d.ts.map +1 -0
- package/dist/database/data/spec.js +17 -0
- package/dist/database/data/spec.js.map +1 -0
- package/dist/database/data/validated.d.ts +8 -0
- package/dist/database/data/validated.d.ts.map +1 -0
- package/dist/database/data/validated.js +99 -0
- package/dist/database/data/validated.js.map +1 -0
- package/dist/database/grammar/RtdbExpr.ohm +98 -0
- package/dist/database/grammar/RtdbExpr.ohm.generated.d.ts +2 -0
- package/dist/database/grammar/RtdbExpr.ohm.generated.d.ts.map +1 -0
- package/dist/database/grammar/RtdbExpr.ohm.generated.js +103 -0
- package/dist/database/grammar/RtdbExpr.ohm.generated.js.map +1 -0
- package/dist/database/grammar/RtdbExprParser.d.ts +5 -0
- package/dist/database/grammar/RtdbExprParser.d.ts.map +1 -0
- package/dist/database/grammar/RtdbExprParser.js +53 -0
- package/dist/database/grammar/RtdbExprParser.js.map +1 -0
- package/dist/database/grammar/linter.d.ts +3 -0
- package/dist/database/grammar/linter.d.ts.map +1 -0
- package/dist/database/grammar/linter.js +66 -0
- package/dist/database/grammar/linter.js.map +1 -0
- package/dist/database/grammar/simulator.d.ts +31 -0
- package/dist/database/grammar/simulator.d.ts.map +1 -0
- package/dist/database/grammar/simulator.js +255 -0
- package/dist/database/grammar/simulator.js.map +1 -0
- package/dist/database/grammar/validator.d.ts +3 -0
- package/dist/database/grammar/validator.d.ts.map +1 -0
- package/dist/database/grammar/validator.js +84 -0
- package/dist/database/grammar/validator.js.map +1 -0
- package/dist/database/host.d.ts +50 -0
- package/dist/database/host.d.ts.map +1 -0
- package/dist/database/host.js +41 -0
- package/dist/database/host.js.map +1 -0
- package/dist/database/index.d.ts +40 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +47 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/initialize-from-app.d.ts +28 -0
- package/dist/database/initialize-from-app.d.ts.map +1 -0
- package/dist/database/initialize-from-app.js +23 -0
- package/dist/database/initialize-from-app.js.map +1 -0
- package/dist/database/ir/handler.d.ts +6 -0
- package/dist/database/ir/handler.d.ts.map +1 -0
- package/dist/database/ir/handler.js +52 -0
- package/dist/database/ir/handler.js.map +1 -0
- package/dist/database/ir/spec.d.ts +25 -0
- package/dist/database/ir/spec.d.ts.map +1 -0
- package/dist/database/ir/spec.js +11 -0
- package/dist/database/ir/spec.js.map +1 -0
- package/dist/database/mapper.d.ts +9 -0
- package/dist/database/mapper.d.ts.map +1 -0
- package/dist/database/mapper.js +115 -0
- package/dist/database/mapper.js.map +1 -0
- package/dist/database/modular.d.ts +604 -0
- package/dist/database/modular.d.ts.map +1 -0
- package/dist/database/modular.js +1226 -0
- package/dist/database/modular.js.map +1 -0
- package/dist/database/replay.d.ts +33 -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/resolver.d.ts +4 -0
- package/dist/database/resolver.d.ts.map +1 -0
- package/dist/database/resolver.js +66 -0
- package/dist/database/resolver.js.map +1 -0
- package/dist/database/sandbox/backend.d.ts +403 -0
- package/dist/database/sandbox/backend.d.ts.map +1 -0
- package/dist/database/sandbox/backend.js +1467 -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 +69 -0
- package/dist/database/sandbox/rules-eval.d.ts.map +1 -0
- package/dist/database/sandbox/rules-eval.js +124 -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/simulation/handler.d.ts +6 -0
- package/dist/database/simulation/handler.d.ts.map +1 -0
- package/dist/database/simulation/handler.js +236 -0
- package/dist/database/simulation/handler.js.map +1 -0
- package/dist/database/simulation/spec.d.ts +69 -0
- package/dist/database/simulation/spec.d.ts.map +1 -0
- package/dist/database/simulation/spec.js +25 -0
- package/dist/database/simulation/spec.js.map +1 -0
- package/dist/database/tools.d.ts +22 -0
- package/dist/database/tools.d.ts.map +1 -0
- package/dist/database/tools.js +272 -0
- package/dist/database/tools.js.map +1 -0
- package/dist/database/types.d.ts +210 -0
- package/dist/database/types.d.ts.map +1 -0
- package/dist/database/types.js +26 -0
- package/dist/database/types.js.map +1 -0
- package/dist/database/write/handler.d.ts +7 -0
- package/dist/database/write/handler.d.ts.map +1 -0
- package/dist/database/write/handler.js +42 -0
- package/dist/database/write/handler.js.map +1 -0
- package/dist/database/write/spec.d.ts +18 -0
- package/dist/database/write/spec.d.ts.map +1 -0
- package/dist/database/write/spec.js +7 -0
- package/dist/database/write/spec.js.map +1 -0
- package/dist/firestore/index.d.ts +533 -0
- package/dist/firestore/index.d.ts.map +1 -0
- package/dist/firestore/index.js +1536 -0
- package/dist/firestore/index.js.map +1 -0
- package/dist/firestore/tools.d.ts +67 -0
- package/dist/firestore/tools.d.ts.map +1 -0
- package/dist/firestore/tools.js +318 -0
- package/dist/firestore/tools.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 +148 -0
- package/dist/firestore-values/index.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/extract.d.ts +28 -0
- package/dist/rules/extract.d.ts.map +1 -0
- package/dist/rules/extract.js +25 -0
- package/dist/rules/extract.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 +129 -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 +409 -0
- package/dist/rules/grammar/FirestoreParser.js.map +1 -0
- package/dist/rules/grammar/FirestoreRules.ohm +229 -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 +234 -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 +67 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +80 -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/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 +784 -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/node.d.ts +17 -0
- package/dist/rules/node.d.ts.map +1 -0
- package/dist/rules/node.js +21 -0
- package/dist/rules/node.js.map +1 -0
- package/dist/rules/rtdb.d.ts +28 -0
- package/dist/rules/rtdb.d.ts.map +1 -0
- package/dist/rules/rtdb.js +15 -0
- package/dist/rules/rtdb.js.map +1 -0
- package/dist/rules/simulator/evaluator.d.ts +179 -0
- package/dist/rules/simulator/evaluator.d.ts.map +1 -0
- package/dist/rules/simulator/evaluator.js +1221 -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 +36 -0
- package/dist/rules/simulator/handler.d.ts.map +1 -0
- package/dist/rules/simulator/handler.js +583 -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 +80 -0
- package/dist/rules/simulator/query-proof.d.ts.map +1 -0
- package/dist/rules/simulator/query-proof.js +142 -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 +849 -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 +9 -0
- package/dist/rules/test/handler.d.ts.map +1 -0
- package/dist/rules/test/handler.js +124 -0
- package/dist/rules/test/handler.js.map +1 -0
- package/dist/rules/test/spec.d.ts +517 -0
- package/dist/rules/test/spec.d.ts.map +1 -0
- package/dist/rules/test/spec.js +227 -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 +124 -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 +86 -0
- package/dist/sandbox/admin-firestore/error-translation.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/error-translation.js +204 -0
- package/dist/sandbox/admin-firestore/error-translation.js.map +1 -0
- package/dist/sandbox/admin-firestore/index.d.ts +169 -0
- package/dist/sandbox/admin-firestore/index.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/index.js +456 -0
- package/dist/sandbox/admin-firestore/index.js.map +1 -0
- package/dist/sandbox/admin-firestore/remote.d.ts +97 -0
- package/dist/sandbox/admin-firestore/remote.d.ts.map +1 -0
- package/dist/sandbox/admin-firestore/remote.js +735 -0
- package/dist/sandbox/admin-firestore/remote.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/firestore/admin-compat/batch.d.ts +34 -0
- package/dist/sandbox/firestore/admin-compat/batch.d.ts.map +1 -0
- package/dist/sandbox/firestore/admin-compat/batch.js +73 -0
- package/dist/sandbox/firestore/admin-compat/batch.js.map +1 -0
- package/dist/sandbox/firestore/admin-compat/doc-ref.d.ts +38 -0
- package/dist/sandbox/firestore/admin-compat/doc-ref.d.ts.map +1 -0
- package/dist/sandbox/firestore/admin-compat/doc-ref.js +154 -0
- package/dist/sandbox/firestore/admin-compat/doc-ref.js.map +1 -0
- package/dist/sandbox/firestore/admin-compat/firestore.d.ts +45 -0
- package/dist/sandbox/firestore/admin-compat/firestore.d.ts.map +1 -0
- package/dist/sandbox/firestore/admin-compat/firestore.js +114 -0
- package/dist/sandbox/firestore/admin-compat/firestore.js.map +1 -0
- package/dist/sandbox/firestore/admin-compat/index.d.ts +45 -0
- package/dist/sandbox/firestore/admin-compat/index.d.ts.map +1 -0
- package/dist/sandbox/firestore/admin-compat/index.js +27 -0
- package/dist/sandbox/firestore/admin-compat/index.js.map +1 -0
- package/dist/sandbox/firestore/admin-compat/paths.d.ts +37 -0
- package/dist/sandbox/firestore/admin-compat/paths.d.ts.map +1 -0
- package/dist/sandbox/firestore/admin-compat/paths.js +49 -0
- package/dist/sandbox/firestore/admin-compat/paths.js.map +1 -0
- package/dist/sandbox/firestore/admin-compat/query.d.ts +261 -0
- package/dist/sandbox/firestore/admin-compat/query.d.ts.map +1 -0
- package/dist/sandbox/firestore/admin-compat/query.js +704 -0
- package/dist/sandbox/firestore/admin-compat/query.js.map +1 -0
- package/dist/sandbox/firestore/admin-compat/read-translation.d.ts +8 -0
- package/dist/sandbox/firestore/admin-compat/read-translation.d.ts.map +1 -0
- package/dist/sandbox/firestore/admin-compat/read-translation.js +59 -0
- package/dist/sandbox/firestore/admin-compat/read-translation.js.map +1 -0
- package/dist/sandbox/firestore/admin-compat/snapshots.d.ts +39 -0
- package/dist/sandbox/firestore/admin-compat/snapshots.d.ts.map +1 -0
- package/dist/sandbox/firestore/admin-compat/snapshots.js +50 -0
- package/dist/sandbox/firestore/admin-compat/snapshots.js.map +1 -0
- package/dist/sandbox/firestore/admin-compat/transaction.d.ts +35 -0
- package/dist/sandbox/firestore/admin-compat/transaction.d.ts.map +1 -0
- package/dist/sandbox/firestore/admin-compat/transaction.js +88 -0
- package/dist/sandbox/firestore/admin-compat/transaction.js.map +1 -0
- package/dist/sandbox/firestore/admin-compat/types.d.ts +297 -0
- package/dist/sandbox/firestore/admin-compat/types.d.ts.map +1 -0
- package/dist/sandbox/firestore/admin-compat/types.js +127 -0
- package/dist/sandbox/firestore/admin-compat/types.js.map +1 -0
- package/dist/sandbox/firestore/admin-compat/value-order.d.ts +49 -0
- package/dist/sandbox/firestore/admin-compat/value-order.d.ts.map +1 -0
- package/dist/sandbox/firestore/admin-compat/value-order.js +172 -0
- package/dist/sandbox/firestore/admin-compat/value-order.js.map +1 -0
- package/dist/sandbox/firestore/auto-id.d.ts +26 -0
- package/dist/sandbox/firestore/auto-id.d.ts.map +1 -0
- package/dist/sandbox/firestore/auto-id.js +36 -0
- package/dist/sandbox/firestore/auto-id.js.map +1 -0
- package/dist/sandbox/firestore/converters/bytes-geopoint.d.ts +48 -0
- package/dist/sandbox/firestore/converters/bytes-geopoint.d.ts.map +1 -0
- package/dist/sandbox/firestore/converters/bytes-geopoint.js +85 -0
- package/dist/sandbox/firestore/converters/bytes-geopoint.js.map +1 -0
- package/dist/sandbox/firestore/converters/fieldvalue.d.ts +69 -0
- package/dist/sandbox/firestore/converters/fieldvalue.d.ts.map +1 -0
- package/dist/sandbox/firestore/converters/fieldvalue.js +166 -0
- package/dist/sandbox/firestore/converters/fieldvalue.js.map +1 -0
- package/dist/sandbox/firestore/converters/reference.d.ts +31 -0
- package/dist/sandbox/firestore/converters/reference.d.ts.map +1 -0
- package/dist/sandbox/firestore/converters/reference.js +51 -0
- package/dist/sandbox/firestore/converters/reference.js.map +1 -0
- package/dist/sandbox/firestore/converters/timestamp.d.ts +32 -0
- package/dist/sandbox/firestore/converters/timestamp.d.ts.map +1 -0
- package/dist/sandbox/firestore/converters/timestamp.js +63 -0
- package/dist/sandbox/firestore/converters/timestamp.js.map +1 -0
- package/dist/sandbox/firestore/converters/user-timestamp.d.ts +46 -0
- package/dist/sandbox/firestore/converters/user-timestamp.d.ts.map +1 -0
- package/dist/sandbox/firestore/converters/user-timestamp.js +65 -0
- package/dist/sandbox/firestore/converters/user-timestamp.js.map +1 -0
- package/dist/sandbox/firestore/converters/vector.d.ts +24 -0
- package/dist/sandbox/firestore/converters/vector.d.ts.map +1 -0
- package/dist/sandbox/firestore/converters/vector.js +53 -0
- package/dist/sandbox/firestore/converters/vector.js.map +1 -0
- package/dist/sandbox/firestore/errors.d.ts +82 -0
- package/dist/sandbox/firestore/errors.d.ts.map +1 -0
- package/dist/sandbox/firestore/errors.js +54 -0
- package/dist/sandbox/firestore/errors.js.map +1 -0
- package/dist/sandbox/firestore/event-log.d.ts +99 -0
- package/dist/sandbox/firestore/event-log.d.ts.map +1 -0
- package/dist/sandbox/firestore/event-log.js +67 -0
- package/dist/sandbox/firestore/event-log.js.map +1 -0
- package/dist/sandbox/firestore/field-merge.d.ts +64 -0
- package/dist/sandbox/firestore/field-merge.d.ts.map +1 -0
- package/dist/sandbox/firestore/field-merge.js +221 -0
- package/dist/sandbox/firestore/field-merge.js.map +1 -0
- package/dist/sandbox/firestore/list-query-proof.d.ts +77 -0
- package/dist/sandbox/firestore/list-query-proof.d.ts.map +1 -0
- package/dist/sandbox/firestore/list-query-proof.js +170 -0
- package/dist/sandbox/firestore/list-query-proof.js.map +1 -0
- package/dist/sandbox/firestore/local-environment.d.ts +806 -0
- package/dist/sandbox/firestore/local-environment.d.ts.map +1 -0
- package/dist/sandbox/firestore/local-environment.js +3028 -0
- package/dist/sandbox/firestore/local-environment.js.map +1 -0
- package/dist/sandbox/firestore/local-state.d.ts +196 -0
- package/dist/sandbox/firestore/local-state.d.ts.map +1 -0
- package/dist/sandbox/firestore/local-state.js +413 -0
- package/dist/sandbox/firestore/local-state.js.map +1 -0
- package/dist/sandbox/firestore/overlay-backing.d.ts +44 -0
- package/dist/sandbox/firestore/overlay-backing.d.ts.map +1 -0
- package/dist/sandbox/firestore/overlay-backing.js +82 -0
- package/dist/sandbox/firestore/overlay-backing.js.map +1 -0
- package/dist/sandbox/firestore/sentinel-capture.d.ts +30 -0
- package/dist/sandbox/firestore/sentinel-capture.d.ts.map +1 -0
- package/dist/sandbox/firestore/sentinel-capture.js +61 -0
- package/dist/sandbox/firestore/sentinel-capture.js.map +1 -0
- package/dist/sandbox/firestore/snapshot-listeners.d.ts +284 -0
- package/dist/sandbox/firestore/snapshot-listeners.d.ts.map +1 -0
- package/dist/sandbox/firestore/snapshot-listeners.js +194 -0
- package/dist/sandbox/firestore/snapshot-listeners.js.map +1 -0
- package/dist/sandbox/firestore/topk.d.ts +12 -0
- package/dist/sandbox/firestore/topk.d.ts.map +1 -0
- package/dist/sandbox/firestore/topk.js +42 -0
- package/dist/sandbox/firestore/topk.js.map +1 -0
- package/dist/sandbox/firestore/transaction-merge.d.ts +55 -0
- package/dist/sandbox/firestore/transaction-merge.d.ts.map +1 -0
- package/dist/sandbox/firestore/transaction-merge.js +107 -0
- package/dist/sandbox/firestore/transaction-merge.js.map +1 -0
- package/dist/sandbox/firestore/transaction-types.d.ts +152 -0
- package/dist/sandbox/firestore/transaction-types.d.ts.map +1 -0
- package/dist/sandbox/firestore/transaction-types.js +10 -0
- package/dist/sandbox/firestore/transaction-types.js.map +1 -0
- package/dist/sandbox/firestore/transaction.d.ts +79 -0
- package/dist/sandbox/firestore/transaction.d.ts.map +1 -0
- package/dist/sandbox/firestore/transaction.js +95 -0
- package/dist/sandbox/firestore/transaction.js.map +1 -0
- package/dist/sandbox/firestore/value-equality.d.ts +2 -0
- package/dist/sandbox/firestore/value-equality.d.ts.map +1 -0
- package/dist/sandbox/firestore/value-equality.js +35 -0
- package/dist/sandbox/firestore/value-equality.js.map +1 -0
- package/dist/sandbox/firestore/value-resolver.d.ts +172 -0
- package/dist/sandbox/firestore/value-resolver.d.ts.map +1 -0
- package/dist/sandbox/firestore/value-resolver.js +221 -0
- package/dist/sandbox/firestore/value-resolver.js.map +1 -0
- package/dist/sandbox/firestore/wire-encoder.d.ts +14 -0
- package/dist/sandbox/firestore/wire-encoder.d.ts.map +1 -0
- package/dist/sandbox/firestore/wire-encoder.js +130 -0
- package/dist/sandbox/firestore/wire-encoder.js.map +1 -0
- package/dist/sandbox/index.d.ts +50 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/index.js +63 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/sandbox/internal/index.d.ts +36 -0
- package/dist/sandbox/internal/index.d.ts.map +1 -0
- package/dist/sandbox/internal/index.js +72 -0
- package/dist/sandbox/internal/index.js.map +1 -0
- package/dist/sandbox/internal/sandbox-impl.d.ts +343 -0
- package/dist/sandbox/internal/sandbox-impl.d.ts.map +1 -0
- package/dist/sandbox/internal/sandbox-impl.js +718 -0
- package/dist/sandbox/internal/sandbox-impl.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 +605 -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 +40 -0
- package/dist/sandbox/sandbox-context.d.ts.map +1 -0
- package/dist/sandbox/sandbox-context.js +72 -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 +272 -0
- package/dist/sandbox/tab-sync/index.js.map +1 -0
- package/dist/sandbox/types.d.ts +1235 -0
- package/dist/sandbox/types.d.ts.map +1 -0
- package/dist/sandbox/types.js +46 -0
- package/dist/sandbox/types.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 +29 -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 +23 -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 +27 -0
- package/dist/storage/download.d.ts.map +1 -0
- package/dist/storage/download.js +136 -0
- package/dist/storage/download.js.map +1 -0
- package/dist/storage/enforce.d.ts +26 -0
- package/dist/storage/enforce.d.ts.map +1 -0
- package/dist/storage/enforce.js +16 -0
- package/dist/storage/enforce.js.map +1 -0
- package/dist/storage/errors.d.ts +46 -0
- package/dist/storage/errors.d.ts.map +1 -0
- package/dist/storage/errors.js +62 -0
- package/dist/storage/errors.js.map +1 -0
- package/dist/storage/index.d.ts +49 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +60 -0
- package/dist/storage/index.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 +17 -0
- package/dist/storage/list.d.ts.map +1 -0
- package/dist/storage/list.js +91 -0
- package/dist/storage/list.js.map +1 -0
- package/dist/storage/metadata.d.ts +86 -0
- package/dist/storage/metadata.d.ts.map +1 -0
- package/dist/storage/metadata.js +167 -0
- package/dist/storage/metadata.js.map +1 -0
- package/dist/storage/persistence.d.ts +134 -0
- package/dist/storage/persistence.d.ts.map +1 -0
- package/dist/storage/persistence.js +132 -0
- package/dist/storage/persistence.js.map +1 -0
- package/dist/storage/reference.d.ts +63 -0
- package/dist/storage/reference.d.ts.map +1 -0
- package/dist/storage/reference.js +156 -0
- package/dist/storage/reference.js.map +1 -0
- package/dist/storage/rules.d.ts +176 -0
- package/dist/storage/rules.d.ts.map +1 -0
- package/dist/storage/rules.js +621 -0
- package/dist/storage/rules.js.map +1 -0
- package/dist/storage/service.d.ts +139 -0
- package/dist/storage/service.d.ts.map +1 -0
- package/dist/storage/service.js +241 -0
- package/dist/storage/service.js.map +1 -0
- package/dist/storage/upload.d.ts +43 -0
- package/dist/storage/upload.d.ts.map +1 -0
- package/dist/storage/upload.js +235 -0
- package/dist/storage/upload.js.map +1 -0
- package/package.json +110 -3
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LocalState — in-memory Firestore document store.
|
|
3
|
+
*
|
|
4
|
+
* Manages a Map<string, Record<string, unknown>> with correct Firestore
|
|
5
|
+
* semantics for create, update (merge), delete, and set (overwrite).
|
|
6
|
+
*
|
|
7
|
+
* This is the "database" for the local environment. The simulator
|
|
8
|
+
* evaluates rules; this class manages the data those rules protect.
|
|
9
|
+
*
|
|
10
|
+
* Write-boundary resolver:
|
|
11
|
+
* Every mutation (`create`, `update`, `set`, `applyBatch`, and the
|
|
12
|
+
* constructor seed pass) routes through {@link resolveValueTree}
|
|
13
|
+
* before the value lands in storage. The resolver is the single
|
|
14
|
+
* chokepoint where Date → Timestamp coercion, FieldValue sentinel
|
|
15
|
+
* resolution, DocumentReference wrapping, etc. happen (see
|
|
16
|
+
* value-resolver.ts). Today the registry is empty (Item 0); Items 1+
|
|
17
|
+
* plug in converters without touching this file.
|
|
18
|
+
*
|
|
19
|
+
* Idempotency: callers higher up the stack (e.g.,
|
|
20
|
+
* `LocalEnvironment.execute`) may resolve before us so rules see the
|
|
21
|
+
* same shape storage will see. Double-resolution is intentional and
|
|
22
|
+
* safe — every converter is required to no-op on its own output.
|
|
23
|
+
*/
|
|
24
|
+
import { resolveValueTree, partitionDeletes } from './value-resolver.js';
|
|
25
|
+
import { applyUpdate, applyMerge } from './field-merge.js';
|
|
26
|
+
/** Pick only `fields` from `data` (a shallow top-level projection). */
|
|
27
|
+
function projectFields(data, fields) {
|
|
28
|
+
const out = {};
|
|
29
|
+
for (const f of fields) {
|
|
30
|
+
if (Object.prototype.hasOwnProperty.call(data, f))
|
|
31
|
+
out[f] = data[f];
|
|
32
|
+
}
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
export class LocalState {
|
|
36
|
+
documents;
|
|
37
|
+
constructor(seed = {}, backing) {
|
|
38
|
+
this.documents = backing ?? new Map();
|
|
39
|
+
for (const [path, data] of Object.entries(seed)) {
|
|
40
|
+
// Seed pass: no prior state, method='seed' so converters can branch.
|
|
41
|
+
const resolved = resolveValueTree({ ...data }, {
|
|
42
|
+
path,
|
|
43
|
+
method: 'seed',
|
|
44
|
+
prior: null,
|
|
45
|
+
});
|
|
46
|
+
// Item 2: drop any DELETE_FIELD sentinels in the seed (a rare but
|
|
47
|
+
// legal shape if the agent reuses payload objects). No prior to
|
|
48
|
+
// delete from on a seed; we just strip the markers.
|
|
49
|
+
const { writes } = partitionDeletes(resolved);
|
|
50
|
+
this.documents.set(path, writes);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// ═══ Read operations ═══
|
|
54
|
+
/** Get a single document. Returns null if not found. */
|
|
55
|
+
get(path) {
|
|
56
|
+
return this.documents.get(path) ?? null;
|
|
57
|
+
}
|
|
58
|
+
/** Check if a document exists. */
|
|
59
|
+
exists(path) {
|
|
60
|
+
return this.documents.has(path);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Scan the keyspace under `prefix`: the single iteration primitive `list`
|
|
64
|
+
* (and, later, the query engine) build on. With `directOnly`, returns only
|
|
65
|
+
* direct children of `prefix` (a collection scan); otherwise every descendant.
|
|
66
|
+
* With `phantoms`, synthesizes empty parent entries for paths whose parent has
|
|
67
|
+
* descendants but no stored doc of its own (mirrors live Firestore's
|
|
68
|
+
* `listDocuments`). An empty `prefix` scans the whole keyspace. Real stored
|
|
69
|
+
* docs come in keyspace (insertion) order; phantoms are appended after, so a
|
|
70
|
+
* real doc always wins over its phantom synthesis.
|
|
71
|
+
*/
|
|
72
|
+
scan(prefix, opts = {}) {
|
|
73
|
+
const norm = prefix === '' || prefix.endsWith('/') ? prefix : prefix + '/';
|
|
74
|
+
const project = opts.projection
|
|
75
|
+
? (d) => projectFields(d, opts.projection)
|
|
76
|
+
: (d) => d;
|
|
77
|
+
const results = [];
|
|
78
|
+
const seenIds = new Set();
|
|
79
|
+
const phantomIds = [];
|
|
80
|
+
for (const [path, data] of this.documents) {
|
|
81
|
+
if (norm !== '' && !path.startsWith(norm))
|
|
82
|
+
continue;
|
|
83
|
+
if (!opts.directOnly) {
|
|
84
|
+
results.push({ path, data: project(data) });
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const remainder = path.slice(norm.length);
|
|
88
|
+
const slashIdx = remainder.indexOf('/');
|
|
89
|
+
if (slashIdx === -1) {
|
|
90
|
+
// Direct child — real stored doc.
|
|
91
|
+
results.push({ path, data: project(data) });
|
|
92
|
+
seenIds.add(remainder);
|
|
93
|
+
}
|
|
94
|
+
else if (opts.phantoms) {
|
|
95
|
+
// Deeper descendant — its top segment is a parent id under our
|
|
96
|
+
// collection. Record once; synthesize after the scan so real
|
|
97
|
+
// stored docs win over the phantom synthesis.
|
|
98
|
+
const parentId = remainder.slice(0, slashIdx);
|
|
99
|
+
if (parentId.length > 0 && !phantomIds.includes(parentId)) {
|
|
100
|
+
phantomIds.push(parentId);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (opts.directOnly && opts.phantoms) {
|
|
105
|
+
for (const id of phantomIds) {
|
|
106
|
+
if (seenIds.has(id))
|
|
107
|
+
continue;
|
|
108
|
+
results.push({ path: norm + id, data: {}, phantom: true });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return results;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* List all documents in a collection: real stored direct children plus
|
|
115
|
+
* phantom parents (synthesized empty docs for any parent with descendants).
|
|
116
|
+
* Mirrors live Firestore's `listDocuments`; `getDocument(path)` still returns
|
|
117
|
+
* `null` for a phantom; phantoms only surface via list traversal. This is
|
|
118
|
+
* `scan(collection, { directOnly, phantoms })`.
|
|
119
|
+
*/
|
|
120
|
+
list(collection) {
|
|
121
|
+
return this.scan(collection, { directOnly: true, phantoms: true });
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* List all root collection IDs derived from the document keyspace.
|
|
125
|
+
* For seeded paths `users/u1`, `users/u1/posts/p1`, `articles/a1`, returns
|
|
126
|
+
* `['users', 'articles']` (deduped, insertion order).
|
|
127
|
+
*
|
|
128
|
+
* Note: a collection is "visible" if any document path lives under it.
|
|
129
|
+
* Phantom parents (e.g., a path `users/u1/posts/p1` with no `users/u1`
|
|
130
|
+
* stored doc) still surface their root collection here, mirroring how
|
|
131
|
+
* real Firestore exposes a collection whenever any descendant exists.
|
|
132
|
+
*/
|
|
133
|
+
listRootCollections() {
|
|
134
|
+
const seen = new Set();
|
|
135
|
+
const out = [];
|
|
136
|
+
for (const path of this.documents.keys()) {
|
|
137
|
+
const first = path.split('/', 1)[0];
|
|
138
|
+
if (first.length === 0)
|
|
139
|
+
continue;
|
|
140
|
+
if (!seen.has(first)) {
|
|
141
|
+
seen.add(first);
|
|
142
|
+
out.push(first);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return out;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* List subcollection IDs directly underneath the given document path.
|
|
149
|
+
* For docPath `users/u1` and stored paths `users/u1/posts/p1`,
|
|
150
|
+
* `users/u1/posts/p2`, `users/u1/sessions/s1`, returns `['posts', 'sessions']`.
|
|
151
|
+
*
|
|
152
|
+
* Like {@link listRootCollections}, a subcollection is visible whenever
|
|
153
|
+
* any descendant path exists — it does NOT require the parent doc to
|
|
154
|
+
* have stored data.
|
|
155
|
+
*/
|
|
156
|
+
listSubcollections(docPath) {
|
|
157
|
+
const prefix = docPath.endsWith('/') ? docPath : docPath + '/';
|
|
158
|
+
const seen = new Set();
|
|
159
|
+
const out = [];
|
|
160
|
+
for (const path of this.documents.keys()) {
|
|
161
|
+
if (!path.startsWith(prefix))
|
|
162
|
+
continue;
|
|
163
|
+
const remainder = path.slice(prefix.length);
|
|
164
|
+
const next = remainder.split('/', 1)[0];
|
|
165
|
+
if (next.length === 0)
|
|
166
|
+
continue;
|
|
167
|
+
if (!seen.has(next)) {
|
|
168
|
+
seen.add(next);
|
|
169
|
+
out.push(next);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return out;
|
|
173
|
+
}
|
|
174
|
+
/** Get all documents as a plain object. */
|
|
175
|
+
snapshot() {
|
|
176
|
+
const snap = {};
|
|
177
|
+
for (const [path, data] of this.documents) {
|
|
178
|
+
snap[path] = { ...data };
|
|
179
|
+
}
|
|
180
|
+
return snap;
|
|
181
|
+
}
|
|
182
|
+
/** Total document count. */
|
|
183
|
+
size() {
|
|
184
|
+
return this.documents.size;
|
|
185
|
+
}
|
|
186
|
+
// ═══ Write operations ═══
|
|
187
|
+
/**
|
|
188
|
+
* Create a document. Fails if the document already exists.
|
|
189
|
+
* Sets the full document data (no merge).
|
|
190
|
+
*/
|
|
191
|
+
create(path, data) {
|
|
192
|
+
if (this.documents.has(path)) {
|
|
193
|
+
return { success: false, error: `Document '${path}' already exists` };
|
|
194
|
+
}
|
|
195
|
+
let writes;
|
|
196
|
+
try {
|
|
197
|
+
const resolved = resolveValueTree({ ...data }, {
|
|
198
|
+
path,
|
|
199
|
+
method: 'create',
|
|
200
|
+
prior: null,
|
|
201
|
+
});
|
|
202
|
+
// Item 2: create has no prior, so deletedKeys are no-ops; we just
|
|
203
|
+
// strip the markers so they don't land in storage.
|
|
204
|
+
writes = partitionDeletes(resolved).writes;
|
|
205
|
+
}
|
|
206
|
+
catch (e) {
|
|
207
|
+
return { success: false, error: e.message };
|
|
208
|
+
}
|
|
209
|
+
this.documents.set(path, writes);
|
|
210
|
+
return { success: true };
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Update a document. Fails if the document doesn't exist.
|
|
214
|
+
* MERGES fields — does not replace the entire document.
|
|
215
|
+
* Firestore update() semantics: existing fields not in the update are preserved.
|
|
216
|
+
*/
|
|
217
|
+
update(path, data) {
|
|
218
|
+
const existing = this.documents.get(path);
|
|
219
|
+
if (!existing) {
|
|
220
|
+
return { success: false, error: `Document '${path}' does not exist` };
|
|
221
|
+
}
|
|
222
|
+
let merged;
|
|
223
|
+
try {
|
|
224
|
+
const resolved = resolveValueTree({ ...data }, {
|
|
225
|
+
path,
|
|
226
|
+
method: 'update',
|
|
227
|
+
prior: existing,
|
|
228
|
+
});
|
|
229
|
+
// FS-B5: top-level `updateDoc` keys are dot-separated FieldPaths.
|
|
230
|
+
// `applyUpdate` expands `{'a.b': v}` into a nested set (preserving
|
|
231
|
+
// `a.c`), replaces a whole map for a single-segment key, and removes
|
|
232
|
+
// DELETE_FIELD-marked leaves — matching prod's PatchMutation.
|
|
233
|
+
merged = applyUpdate(existing, resolved);
|
|
234
|
+
}
|
|
235
|
+
catch (e) {
|
|
236
|
+
return { success: false, error: e.message };
|
|
237
|
+
}
|
|
238
|
+
this.documents.set(path, merged);
|
|
239
|
+
return { success: true, priorData: { ...existing } };
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Merge-set a document — `setDoc(data, {merge:true})` /
|
|
243
|
+
* `{mergeFields}`. Deep-merges nested maps into the existing doc
|
|
244
|
+
* (FS-B6): `setDoc({a:{b:2}}, {merge:true})` over `{a:{c:1}}` yields
|
|
245
|
+
* `{a:{b:2,c:1}}`. Creates the doc if absent. `mergeFields` restricts
|
|
246
|
+
* the write to the listed (dot-separated) field paths.
|
|
247
|
+
*/
|
|
248
|
+
setMerge(path, data, mergeFields) {
|
|
249
|
+
const priorData = this.documents.has(path)
|
|
250
|
+
? { ...this.documents.get(path) }
|
|
251
|
+
: null;
|
|
252
|
+
const resolved = resolveValueTree({ ...data }, {
|
|
253
|
+
path,
|
|
254
|
+
method: 'set',
|
|
255
|
+
prior: priorData,
|
|
256
|
+
});
|
|
257
|
+
const merged = applyMerge(priorData ?? {}, resolved, mergeFields);
|
|
258
|
+
this.documents.set(path, merged);
|
|
259
|
+
return { success: true, priorData, created: priorData === null };
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Set a document. Creates or overwrites — always succeeds.
|
|
263
|
+
* Replaces the entire document (no merge).
|
|
264
|
+
*/
|
|
265
|
+
set(path, data) {
|
|
266
|
+
const priorData = this.documents.has(path)
|
|
267
|
+
? { ...this.documents.get(path) }
|
|
268
|
+
: null;
|
|
269
|
+
const resolved = resolveValueTree({ ...data }, {
|
|
270
|
+
path,
|
|
271
|
+
method: 'set',
|
|
272
|
+
prior: priorData,
|
|
273
|
+
});
|
|
274
|
+
// Item 2: set replaces the doc entirely, so deletedKeys have no
|
|
275
|
+
// existing field to remove — but we still strip the markers so
|
|
276
|
+
// they don't reach storage. Real Firestore rejects deleteField()
|
|
277
|
+
// inside a non-merge set; we accept-and-strip for now since merge
|
|
278
|
+
// mode isn't yet plumbed into the simulator's set path.
|
|
279
|
+
const { writes } = partitionDeletes(resolved);
|
|
280
|
+
this.documents.set(path, writes);
|
|
281
|
+
return { success: true, priorData, created: priorData === null };
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Delete a document. Fails if the document doesn't exist.
|
|
285
|
+
* Returns the deleted data (for undo).
|
|
286
|
+
*/
|
|
287
|
+
delete(path) {
|
|
288
|
+
const existing = this.documents.get(path);
|
|
289
|
+
if (!existing) {
|
|
290
|
+
return { success: false, error: `Document '${path}' does not exist` };
|
|
291
|
+
}
|
|
292
|
+
this.documents.delete(path);
|
|
293
|
+
return { success: true, priorData: { ...existing } };
|
|
294
|
+
}
|
|
295
|
+
// ═══ Batch operations ═══
|
|
296
|
+
/**
|
|
297
|
+
* Apply multiple writes atomically.
|
|
298
|
+
* Evaluates all operations against CURRENT state (no cross-visibility).
|
|
299
|
+
* If all succeed, applies all. If any fails, none apply.
|
|
300
|
+
*
|
|
301
|
+
* Note: This handles the DATA side only. Rules evaluation is the caller's
|
|
302
|
+
* responsibility (LocalEnvironment evaluates rules, then calls batch).
|
|
303
|
+
*/
|
|
304
|
+
applyBatch(operations) {
|
|
305
|
+
// Validate all operations against current state first
|
|
306
|
+
const errors = [];
|
|
307
|
+
for (let i = 0; i < operations.length; i++) {
|
|
308
|
+
const op = operations[i];
|
|
309
|
+
switch (op.method) {
|
|
310
|
+
case 'create':
|
|
311
|
+
if (this.documents.has(op.path)) {
|
|
312
|
+
errors.push({ index: i, error: `Document '${op.path}' already exists` });
|
|
313
|
+
}
|
|
314
|
+
break;
|
|
315
|
+
case 'update':
|
|
316
|
+
if (!this.documents.has(op.path)) {
|
|
317
|
+
errors.push({ index: i, error: `Document '${op.path}' does not exist` });
|
|
318
|
+
}
|
|
319
|
+
break;
|
|
320
|
+
case 'delete':
|
|
321
|
+
// Delete-missing is a no-op in production: `WriteBatch.delete`
|
|
322
|
+
// and `Transaction.delete` on an absent doc resolve cleanly,
|
|
323
|
+
// matching the single-op `deleteDoc` contract (matrix row
|
|
324
|
+
// Firestore #39, oracle:
|
|
325
|
+
// scripts/oracle/observations/firestore-deletedoc-missing.json).
|
|
326
|
+
// Apply phase below tolerates the absence via `documents.delete`,
|
|
327
|
+
// which is itself a no-op on a missing key.
|
|
328
|
+
break;
|
|
329
|
+
// 'set' always succeeds
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
if (errors.length > 0) {
|
|
333
|
+
return { success: false, errors };
|
|
334
|
+
}
|
|
335
|
+
// Capture prior state for all affected documents (for undo)
|
|
336
|
+
const priorStates = new Map();
|
|
337
|
+
for (const op of operations) {
|
|
338
|
+
if (!priorStates.has(op.path)) {
|
|
339
|
+
priorStates.set(op.path, this.documents.has(op.path) ? { ...this.documents.get(op.path) } : null);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
// Apply all operations. Each non-delete write routes through the
|
|
343
|
+
// resolver with the correct prior — captured above, so resolution
|
|
344
|
+
// order within the batch sees the same prior the rules saw. Item 2:
|
|
345
|
+
// every non-delete branch partitions DELETE_FIELD markers out via
|
|
346
|
+
// partitionDeletes so they don't leak into storage.
|
|
347
|
+
for (const op of operations) {
|
|
348
|
+
switch (op.method) {
|
|
349
|
+
case 'create': {
|
|
350
|
+
const resolved = resolveValueTree({ ...op.data }, {
|
|
351
|
+
path: op.path,
|
|
352
|
+
method: 'create',
|
|
353
|
+
prior: null,
|
|
354
|
+
});
|
|
355
|
+
const { writes } = partitionDeletes(resolved);
|
|
356
|
+
this.documents.set(op.path, writes);
|
|
357
|
+
break;
|
|
358
|
+
}
|
|
359
|
+
case 'update': {
|
|
360
|
+
const existing = this.documents.get(op.path);
|
|
361
|
+
const resolved = resolveValueTree({ ...op.data }, {
|
|
362
|
+
path: op.path,
|
|
363
|
+
method: 'update',
|
|
364
|
+
prior: existing,
|
|
365
|
+
});
|
|
366
|
+
// FS-B5: dot-path FieldPath expansion + sibling-preserving merge.
|
|
367
|
+
this.documents.set(op.path, applyUpdate(existing, resolved));
|
|
368
|
+
break;
|
|
369
|
+
}
|
|
370
|
+
case 'set': {
|
|
371
|
+
const priorForSet = priorStates.get(op.path) ?? null;
|
|
372
|
+
const resolved = resolveValueTree({ ...op.data }, {
|
|
373
|
+
path: op.path,
|
|
374
|
+
method: 'set',
|
|
375
|
+
prior: priorForSet,
|
|
376
|
+
});
|
|
377
|
+
const { writes } = partitionDeletes(resolved);
|
|
378
|
+
this.documents.set(op.path, writes);
|
|
379
|
+
break;
|
|
380
|
+
}
|
|
381
|
+
case 'delete':
|
|
382
|
+
this.documents.delete(op.path);
|
|
383
|
+
break;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
return { success: true, priorStates };
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Restore state from a WHOLE-keyspace snapshot (reset to seed, transaction
|
|
390
|
+
* undo). Replaces the entire keyspace.
|
|
391
|
+
*/
|
|
392
|
+
restore(snapshot) {
|
|
393
|
+
this.documents.clear();
|
|
394
|
+
for (const [path, data] of Object.entries(snapshot)) {
|
|
395
|
+
this.documents.set(path, { ...data });
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Restore only the given paths to their prior state (for single-write / batch
|
|
400
|
+
* undo). `null` means the doc did not exist before, so undo deletes it; any
|
|
401
|
+
* other path in the keyspace is left untouched. This is the affected-path
|
|
402
|
+
* counterpart to {@link restore} that keeps undo O(affected), not O(keyspace).
|
|
403
|
+
*/
|
|
404
|
+
restorePaths(priorDocs) {
|
|
405
|
+
for (const [path, data] of Object.entries(priorDocs)) {
|
|
406
|
+
if (data === null)
|
|
407
|
+
this.documents.delete(path);
|
|
408
|
+
else
|
|
409
|
+
this.documents.set(path, { ...data });
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=local-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-state.js","sourceRoot":"","sources":["../../../src/sandbox/firestore/local-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OverlayBacking: copy-on-write storage over an immutable base, the engine
|
|
3
|
+
* behind CoW branches. Reads fall through to `base` unless shadowed by the
|
|
4
|
+
* overlay or hidden by a tombstone; writes land in the overlay; deletes
|
|
5
|
+
* tombstone a base path (or just drop an overlay-only doc). A fork is O(1) (an
|
|
6
|
+
* empty overlay over the shared base) instead of O(keyspace) (structuredClone).
|
|
7
|
+
*
|
|
8
|
+
* Isolation: the base (a `snapshot()` result) is only SHALLOW-cloned by
|
|
9
|
+
* snapshot(), so its nested objects are still shared with the live source and
|
|
10
|
+
* any sibling branch. Handing a base doc out by reference would let a caller
|
|
11
|
+
* mutate it in place and corrupt those. So base docs are deep-cloned on first
|
|
12
|
+
* read (memoized in `baseCache`, so repeated reads/scans don't re-clone), which
|
|
13
|
+
* restores the old clone-fork's full decoupling while keeping fork() O(1) and
|
|
14
|
+
* cloning only the docs a branch actually touches. The cache is NOT the overlay:
|
|
15
|
+
* a cached base read is not a write, so `diff` stays overlay-only.
|
|
16
|
+
*
|
|
17
|
+
* Iteration preserves base order: an updated base doc is emitted in its original
|
|
18
|
+
* position (overlay value), overlay-only docs are appended, and a base doc that
|
|
19
|
+
* was deleted then re-created stays in its original base position (which tracks
|
|
20
|
+
* prod's __name__ key order more closely than a Map clone's move-to-end would).
|
|
21
|
+
*/
|
|
22
|
+
import type { DocBacking, DocumentData } from './local-state.js';
|
|
23
|
+
export declare class OverlayBacking implements DocBacking {
|
|
24
|
+
private readonly base;
|
|
25
|
+
private readonly overlay;
|
|
26
|
+
private readonly tombstones;
|
|
27
|
+
/** Deep-clone-on-first-read of base docs (see class doc). */
|
|
28
|
+
private readonly baseCache;
|
|
29
|
+
/** Set by clear(): the base is logically dropped, only the overlay counts. */
|
|
30
|
+
private cleared;
|
|
31
|
+
constructor(base: Record<string, DocumentData>);
|
|
32
|
+
private inBase;
|
|
33
|
+
/** A decoupled view of a base doc: deep clone, memoized. */
|
|
34
|
+
private baseDoc;
|
|
35
|
+
get(path: string): DocumentData | undefined;
|
|
36
|
+
set(path: string, data: DocumentData): void;
|
|
37
|
+
has(path: string): boolean;
|
|
38
|
+
delete(path: string): boolean;
|
|
39
|
+
clear(): void;
|
|
40
|
+
get size(): number;
|
|
41
|
+
keys(): IterableIterator<string>;
|
|
42
|
+
[Symbol.iterator](): IterableIterator<[string, DocumentData]>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=overlay-backing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay-backing.d.ts","sourceRoot":"","sources":["../../../src/sandbox/firestore/overlay-backing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEjE,qBAAa,cAAe,YAAW,UAAU;IAQnC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;IAC7D,8EAA8E;IAC9E,OAAO,CAAC,OAAO,CAAS;gBAEK,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAE/D,OAAO,CAAC,MAAM;IAId,4DAA4D;IAC5D,OAAO,CAAC,OAAO;IASf,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAM3C,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;IAK3C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAM1B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAO7B,KAAK,IAAI,IAAI;IAOb,IAAI,IAAI,IAAI,MAAM,CAIjB;IAEA,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAIhC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAc/D"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export class OverlayBacking {
|
|
2
|
+
base;
|
|
3
|
+
overlay = new Map();
|
|
4
|
+
tombstones = new Set();
|
|
5
|
+
/** Deep-clone-on-first-read of base docs (see class doc). */
|
|
6
|
+
baseCache = new Map();
|
|
7
|
+
/** Set by clear(): the base is logically dropped, only the overlay counts. */
|
|
8
|
+
cleared = false;
|
|
9
|
+
constructor(base) {
|
|
10
|
+
this.base = base;
|
|
11
|
+
}
|
|
12
|
+
inBase(path) {
|
|
13
|
+
return Object.prototype.hasOwnProperty.call(this.base, path);
|
|
14
|
+
}
|
|
15
|
+
/** A decoupled view of a base doc: deep clone, memoized. */
|
|
16
|
+
baseDoc(path) {
|
|
17
|
+
let cached = this.baseCache.get(path);
|
|
18
|
+
if (cached === undefined) {
|
|
19
|
+
cached = structuredClone(this.base[path]);
|
|
20
|
+
this.baseCache.set(path, cached);
|
|
21
|
+
}
|
|
22
|
+
return cached;
|
|
23
|
+
}
|
|
24
|
+
get(path) {
|
|
25
|
+
if (this.overlay.has(path))
|
|
26
|
+
return this.overlay.get(path);
|
|
27
|
+
if (this.cleared || this.tombstones.has(path))
|
|
28
|
+
return undefined;
|
|
29
|
+
return this.inBase(path) ? this.baseDoc(path) : undefined;
|
|
30
|
+
}
|
|
31
|
+
set(path, data) {
|
|
32
|
+
this.overlay.set(path, data);
|
|
33
|
+
this.tombstones.delete(path);
|
|
34
|
+
}
|
|
35
|
+
has(path) {
|
|
36
|
+
if (this.overlay.has(path))
|
|
37
|
+
return true;
|
|
38
|
+
if (this.cleared || this.tombstones.has(path))
|
|
39
|
+
return false;
|
|
40
|
+
return this.inBase(path);
|
|
41
|
+
}
|
|
42
|
+
delete(path) {
|
|
43
|
+
const existed = this.has(path);
|
|
44
|
+
this.overlay.delete(path);
|
|
45
|
+
if (!this.cleared && this.inBase(path))
|
|
46
|
+
this.tombstones.add(path);
|
|
47
|
+
return existed;
|
|
48
|
+
}
|
|
49
|
+
clear() {
|
|
50
|
+
this.overlay.clear();
|
|
51
|
+
this.tombstones.clear();
|
|
52
|
+
this.baseCache.clear();
|
|
53
|
+
this.cleared = true;
|
|
54
|
+
}
|
|
55
|
+
get size() {
|
|
56
|
+
let n = 0;
|
|
57
|
+
for (const _ of this)
|
|
58
|
+
void _, n++;
|
|
59
|
+
return n;
|
|
60
|
+
}
|
|
61
|
+
*keys() {
|
|
62
|
+
for (const [path] of this)
|
|
63
|
+
yield path;
|
|
64
|
+
}
|
|
65
|
+
*[Symbol.iterator]() {
|
|
66
|
+
const emitted = new Set();
|
|
67
|
+
if (!this.cleared) {
|
|
68
|
+
for (const path of Object.keys(this.base)) {
|
|
69
|
+
if (this.tombstones.has(path))
|
|
70
|
+
continue;
|
|
71
|
+
emitted.add(path);
|
|
72
|
+
yield [path, this.overlay.has(path) ? this.overlay.get(path) : this.baseDoc(path)];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
for (const [path, data] of this.overlay) {
|
|
76
|
+
if (emitted.has(path))
|
|
77
|
+
continue;
|
|
78
|
+
yield [path, data];
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=overlay-backing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay-backing.js","sourceRoot":"","sources":["../../../src/sandbox/firestore/overlay-backing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Walk a pre-resolution write payload and extract every sentinel hit
|
|
3
|
+
* keyed by its field path.
|
|
4
|
+
*
|
|
5
|
+
* Used by `LocalEnvironment.emitWrite` to populate
|
|
6
|
+
* `WriteSandboxEvent.sentinels` so the replay engine can re-issue the
|
|
7
|
+
* same sentinels at replay time (without consulting resolved values
|
|
8
|
+
* which would have drifted).
|
|
9
|
+
*
|
|
10
|
+
* Detection: every Firestore sentinel converter in
|
|
11
|
+
* `converters/{fieldvalue,timestamp}.ts` marks its payload with a
|
|
12
|
+
* `__type: '<name>'` discriminator. The walk matches that.
|
|
13
|
+
*
|
|
14
|
+
* Field-path syntax (locked in the decision doc, R1):
|
|
15
|
+
* - object keys join with '.'
|
|
16
|
+
* - in-array positions append '[<index>]'
|
|
17
|
+
* - e.g., `tags[0]`, `profile.lastSeen`, `history[0].at`
|
|
18
|
+
*
|
|
19
|
+
* Short-circuit: when a sentinel is detected the walk does NOT recurse
|
|
20
|
+
* into its internals (e.g. `arrayUnion.values` may contain plain values
|
|
21
|
+
* that aren't replay-relevant). This is also what makes the walk cheap
|
|
22
|
+
* — probe R2 measured p99 ≤ 0.009ms across 0/1/16 sentinels per doc.
|
|
23
|
+
*/
|
|
24
|
+
export interface SentinelHit {
|
|
25
|
+
/** Dotted path with bracket-array-indices. */
|
|
26
|
+
field: string;
|
|
27
|
+
kind: 'serverTimestamp' | 'increment' | 'arrayUnion' | 'arrayRemove' | 'delete';
|
|
28
|
+
}
|
|
29
|
+
export declare function walkForSentinels(value: unknown, prefix?: string): SentinelHit[];
|
|
30
|
+
//# sourceMappingURL=sentinel-capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentinel-capture.d.ts","sourceRoot":"","sources":["../../../src/sandbox/firestore/sentinel-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,iBAAiB,GAAG,WAAW,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,CAAC;CACjF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,SAAK,GAAG,WAAW,EAAE,CAsB3E"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Walk a pre-resolution write payload and extract every sentinel hit
|
|
3
|
+
* keyed by its field path.
|
|
4
|
+
*
|
|
5
|
+
* Used by `LocalEnvironment.emitWrite` to populate
|
|
6
|
+
* `WriteSandboxEvent.sentinels` so the replay engine can re-issue the
|
|
7
|
+
* same sentinels at replay time (without consulting resolved values
|
|
8
|
+
* which would have drifted).
|
|
9
|
+
*
|
|
10
|
+
* Detection: every Firestore sentinel converter in
|
|
11
|
+
* `converters/{fieldvalue,timestamp}.ts` marks its payload with a
|
|
12
|
+
* `__type: '<name>'` discriminator. The walk matches that.
|
|
13
|
+
*
|
|
14
|
+
* Field-path syntax (locked in the decision doc, R1):
|
|
15
|
+
* - object keys join with '.'
|
|
16
|
+
* - in-array positions append '[<index>]'
|
|
17
|
+
* - e.g., `tags[0]`, `profile.lastSeen`, `history[0].at`
|
|
18
|
+
*
|
|
19
|
+
* Short-circuit: when a sentinel is detected the walk does NOT recurse
|
|
20
|
+
* into its internals (e.g. `arrayUnion.values` may contain plain values
|
|
21
|
+
* that aren't replay-relevant). This is also what makes the walk cheap
|
|
22
|
+
* — probe R2 measured p99 ≤ 0.009ms across 0/1/16 sentinels per doc.
|
|
23
|
+
*/
|
|
24
|
+
export function walkForSentinels(value, prefix = '') {
|
|
25
|
+
const hits = [];
|
|
26
|
+
visit(value, prefix);
|
|
27
|
+
return hits;
|
|
28
|
+
function visit(v, p) {
|
|
29
|
+
if (v === null || v === undefined || typeof v !== 'object')
|
|
30
|
+
return;
|
|
31
|
+
if (Array.isArray(v)) {
|
|
32
|
+
v.forEach((el, i) => visit(el, `${p}[${i}]`));
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const obj = v;
|
|
36
|
+
const kind = detect(obj);
|
|
37
|
+
if (kind) {
|
|
38
|
+
hits.push({ field: p, kind });
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
for (const [k, child] of Object.entries(obj)) {
|
|
42
|
+
const next = p ? `${p}.${k}` : k;
|
|
43
|
+
visit(child, next);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function detect(obj) {
|
|
48
|
+
const t = obj.__type;
|
|
49
|
+
if (t === 'serverTimestamp')
|
|
50
|
+
return 'serverTimestamp';
|
|
51
|
+
if (t === 'increment')
|
|
52
|
+
return 'increment';
|
|
53
|
+
if (t === 'arrayUnion')
|
|
54
|
+
return 'arrayUnion';
|
|
55
|
+
if (t === 'arrayRemove')
|
|
56
|
+
return 'arrayRemove';
|
|
57
|
+
if (t === 'deleteField')
|
|
58
|
+
return 'delete';
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=sentinel-capture.js.map
|