pyric 0.0.1 → 0.1.0-alpha.7
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 +52 -1
- 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 +109 -3
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IndexedDB persistence layer for `pyric/storage`.
|
|
3
|
+
*
|
|
4
|
+
* One database (`pyric-storage` by default), two object stores —
|
|
5
|
+
* `blobs` for the file content and `metadata` for the descriptive
|
|
6
|
+
* record. Both stores key on the file's full path string. Object
|
|
7
|
+
* upload writes both stores within a single `readwrite` transaction
|
|
8
|
+
* so the pair stays consistent — a partial failure can't leave a
|
|
9
|
+
* blob without metadata or vice versa.
|
|
10
|
+
*
|
|
11
|
+
* Slice 3 of the v1 scope (per the design rationale):
|
|
12
|
+
*
|
|
13
|
+
* - Internal infrastructure; no public Storage API is exposed yet.
|
|
14
|
+
* Slice 5 builds `getStorage` / `ref` / `uploadBytes` / `getBytes` on
|
|
15
|
+
* top of this layer.
|
|
16
|
+
* - The `StoredMetadata` shape mirrors Firebase's `FullMetadata`
|
|
17
|
+
* minus the `ref` field (computed at consumption time) and
|
|
18
|
+
* `downloadTokens` (deferred — no browser-renderable URLs in the
|
|
19
|
+
* v1 scope, per Section 4 of the survey).
|
|
20
|
+
* - Database name is overridable so tests can isolate state per
|
|
21
|
+
* case via fake-indexeddb without colliding on the production
|
|
22
|
+
* default `pyric-storage`.
|
|
23
|
+
*
|
|
24
|
+
* Errors raised from this module are raw `DOMException`-shaped
|
|
25
|
+
* objects — translation into Firebase-shaped `StorageError`s happens
|
|
26
|
+
* in Slice 8 inside `errors.ts`. Keep this layer mechanical.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Persisted metadata for a single stored object. Mirrors Firebase's
|
|
30
|
+
* `FullMetadata` so Slice 6 (the public `getMetadata` /
|
|
31
|
+
* `updateMetadata` surface) can return this shape directly.
|
|
32
|
+
*
|
|
33
|
+
* Server-set fields (`generation`, `metageneration`, `timeCreated`,
|
|
34
|
+
* `updated`, `bucket`, `fullPath`, `name`, `size`) are populated by
|
|
35
|
+
* the upload pipeline before reaching this layer. The client-settable
|
|
36
|
+
* fields (`contentType` through `customMetadata`) flow in from the
|
|
37
|
+
* caller's `SettableMetadata`.
|
|
38
|
+
*/
|
|
39
|
+
export interface StoredMetadata {
|
|
40
|
+
/** Full path of the object within the bucket. Also the store key. */
|
|
41
|
+
fullPath: string;
|
|
42
|
+
/** Last path segment (`b.txt` in `a/b.txt`). */
|
|
43
|
+
name: string;
|
|
44
|
+
/** Sandbox bucket id. v1 has a single implicit bucket. */
|
|
45
|
+
bucket: string;
|
|
46
|
+
/** Monotonically increasing version of the object content. */
|
|
47
|
+
generation: string;
|
|
48
|
+
/** Monotonically increasing version of just the metadata. */
|
|
49
|
+
metageneration: string;
|
|
50
|
+
/** ISO-8601 timestamp of original creation. */
|
|
51
|
+
timeCreated: string;
|
|
52
|
+
/** ISO-8601 timestamp of the most recent update (content or metadata). */
|
|
53
|
+
updated: string;
|
|
54
|
+
/** Size of the blob in bytes. */
|
|
55
|
+
size: number;
|
|
56
|
+
/** Client-settable: MIME type. Defaults to `application/octet-stream`. */
|
|
57
|
+
contentType?: string;
|
|
58
|
+
cacheControl?: string;
|
|
59
|
+
contentDisposition?: string;
|
|
60
|
+
contentEncoding?: string;
|
|
61
|
+
contentLanguage?: string;
|
|
62
|
+
/** Free-form key/value annotations the client attached at upload. */
|
|
63
|
+
customMetadata?: Record<string, string>;
|
|
64
|
+
/** Hex-encoded MD5 hash of the content. Populated when computable. */
|
|
65
|
+
md5Hash?: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Persistence-layer interface. Higher layers (Slice 4's
|
|
69
|
+
* `StorageService`, Slice 5's reference operations) interact with
|
|
70
|
+
* the backend through this surface only — the IndexedDB calls stay
|
|
71
|
+
* isolated behind it.
|
|
72
|
+
*
|
|
73
|
+
* All methods are async and return a promise that settles when the
|
|
74
|
+
* underlying IDB transaction completes. Missing keys resolve to
|
|
75
|
+
* `undefined` rather than throwing; the public API translates that
|
|
76
|
+
* to `storage/object-not-found` in Slice 8.
|
|
77
|
+
*/
|
|
78
|
+
export interface StorageBackend {
|
|
79
|
+
/**
|
|
80
|
+
* Write a blob + its metadata atomically. Both stores update under
|
|
81
|
+
* one `readwrite` transaction so a failure on either path rolls
|
|
82
|
+
* the other back. Existing entries at the same path are replaced.
|
|
83
|
+
*/
|
|
84
|
+
put(path: string, blob: Blob, metadata: StoredMetadata): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Read the blob stored at `path`. Resolves to `undefined` when no
|
|
87
|
+
* entry exists — callers translate that into `object-not-found`.
|
|
88
|
+
*/
|
|
89
|
+
getBlob(path: string): Promise<Blob | undefined>;
|
|
90
|
+
/**
|
|
91
|
+
* Read the metadata record stored at `path`. Resolves to
|
|
92
|
+
* `undefined` when no entry exists.
|
|
93
|
+
*/
|
|
94
|
+
getMetadata(path: string): Promise<StoredMetadata | undefined>;
|
|
95
|
+
/**
|
|
96
|
+
* Replace the metadata record at `path` without touching the blob.
|
|
97
|
+
* Used by `updateMetadata` (Slice 6). Caller is responsible for
|
|
98
|
+
* preserving server-set fields (`generation`, `timeCreated`, …)
|
|
99
|
+
* the spec says metadata-only updates leave intact.
|
|
100
|
+
*/
|
|
101
|
+
putMetadata(path: string, metadata: StoredMetadata): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Delete both the blob and the metadata at `path` atomically.
|
|
104
|
+
* No-op when neither entry exists.
|
|
105
|
+
*/
|
|
106
|
+
delete(path: string): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Enumerate metadata records whose `fullPath` starts with `prefix`.
|
|
109
|
+
* Returned in IndexedDB key order (lexicographic by path). The
|
|
110
|
+
* prefix is used verbatim — no implicit trailing-slash addition,
|
|
111
|
+
* matching the survey's path-semantics call (Section 6).
|
|
112
|
+
*/
|
|
113
|
+
listByPrefix(prefix: string): Promise<StoredMetadata[]>;
|
|
114
|
+
/**
|
|
115
|
+
* Clear both stores. Called by Slice 4's `StorageService.reset`.
|
|
116
|
+
*/
|
|
117
|
+
reset(): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* Close the underlying IndexedDB connection. Idempotent.
|
|
120
|
+
*/
|
|
121
|
+
close(): void;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Open (or create) the backing database and return a backend bound
|
|
125
|
+
* to it. The connection stays open for the lifetime of the returned
|
|
126
|
+
* backend; call `close()` before discarding it so future opens get a
|
|
127
|
+
* clean handle.
|
|
128
|
+
*
|
|
129
|
+
* `dbName` is overridable so tests can isolate per-case state. In
|
|
130
|
+
* production, callers pass nothing and inherit the default
|
|
131
|
+
* `pyric-storage`.
|
|
132
|
+
*/
|
|
133
|
+
export declare function openStorageBackend(dbName?: string): Promise<StorageBackend>;
|
|
134
|
+
//# sourceMappingURL=persistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/storage/persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAaH;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvE;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IAEjD;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAE/D;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnE;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAExD;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,GAAE,MAAwB,GAC/B,OAAO,CAAC,cAAc,CAAC,CAEzB"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IndexedDB persistence layer for `pyric/storage`.
|
|
3
|
+
*
|
|
4
|
+
* One database (`pyric-storage` by default), two object stores —
|
|
5
|
+
* `blobs` for the file content and `metadata` for the descriptive
|
|
6
|
+
* record. Both stores key on the file's full path string. Object
|
|
7
|
+
* upload writes both stores within a single `readwrite` transaction
|
|
8
|
+
* so the pair stays consistent — a partial failure can't leave a
|
|
9
|
+
* blob without metadata or vice versa.
|
|
10
|
+
*
|
|
11
|
+
* Slice 3 of the v1 scope (per the design rationale):
|
|
12
|
+
*
|
|
13
|
+
* - Internal infrastructure; no public Storage API is exposed yet.
|
|
14
|
+
* Slice 5 builds `getStorage` / `ref` / `uploadBytes` / `getBytes` on
|
|
15
|
+
* top of this layer.
|
|
16
|
+
* - The `StoredMetadata` shape mirrors Firebase's `FullMetadata`
|
|
17
|
+
* minus the `ref` field (computed at consumption time) and
|
|
18
|
+
* `downloadTokens` (deferred — no browser-renderable URLs in the
|
|
19
|
+
* v1 scope, per Section 4 of the survey).
|
|
20
|
+
* - Database name is overridable so tests can isolate state per
|
|
21
|
+
* case via fake-indexeddb without colliding on the production
|
|
22
|
+
* default `pyric-storage`.
|
|
23
|
+
*
|
|
24
|
+
* Errors raised from this module are raw `DOMException`-shaped
|
|
25
|
+
* objects — translation into Firebase-shaped `StorageError`s happens
|
|
26
|
+
* in Slice 8 inside `errors.ts`. Keep this layer mechanical.
|
|
27
|
+
*/
|
|
28
|
+
const DEFAULT_DB_NAME = 'pyric-storage';
|
|
29
|
+
/**
|
|
30
|
+
* Schema version. Bump and add an `upgradeneeded` branch when the
|
|
31
|
+
* store layout changes. Slice 3 ships v1: two object stores keyed by
|
|
32
|
+
* fullPath, no indexes. Future migrations follow IndexedDB's standard
|
|
33
|
+
* upgrade path.
|
|
34
|
+
*/
|
|
35
|
+
const SCHEMA_VERSION = 1;
|
|
36
|
+
const BLOBS_STORE = 'blobs';
|
|
37
|
+
const METADATA_STORE = 'metadata';
|
|
38
|
+
/**
|
|
39
|
+
* Open (or create) the backing database and return a backend bound
|
|
40
|
+
* to it. The connection stays open for the lifetime of the returned
|
|
41
|
+
* backend; call `close()` before discarding it so future opens get a
|
|
42
|
+
* clean handle.
|
|
43
|
+
*
|
|
44
|
+
* `dbName` is overridable so tests can isolate per-case state. In
|
|
45
|
+
* production, callers pass nothing and inherit the default
|
|
46
|
+
* `pyric-storage`.
|
|
47
|
+
*/
|
|
48
|
+
export function openStorageBackend(dbName = DEFAULT_DB_NAME) {
|
|
49
|
+
return openDatabase(dbName).then((db) => new IndexedDbStorageBackend(db));
|
|
50
|
+
}
|
|
51
|
+
// ─── Internal ──────────────────────────────────────────────────────
|
|
52
|
+
class IndexedDbStorageBackend {
|
|
53
|
+
db;
|
|
54
|
+
constructor(db) {
|
|
55
|
+
this.db = db;
|
|
56
|
+
}
|
|
57
|
+
async put(path, blob, metadata) {
|
|
58
|
+
const tx = this.db.transaction([BLOBS_STORE, METADATA_STORE], 'readwrite');
|
|
59
|
+
tx.objectStore(BLOBS_STORE).put(blob, path);
|
|
60
|
+
tx.objectStore(METADATA_STORE).put(metadata, path);
|
|
61
|
+
await awaitTransaction(tx);
|
|
62
|
+
}
|
|
63
|
+
async getBlob(path) {
|
|
64
|
+
const tx = this.db.transaction(BLOBS_STORE, 'readonly');
|
|
65
|
+
return awaitRequest(tx.objectStore(BLOBS_STORE).get(path));
|
|
66
|
+
}
|
|
67
|
+
async getMetadata(path) {
|
|
68
|
+
const tx = this.db.transaction(METADATA_STORE, 'readonly');
|
|
69
|
+
return awaitRequest(tx.objectStore(METADATA_STORE).get(path));
|
|
70
|
+
}
|
|
71
|
+
async putMetadata(path, metadata) {
|
|
72
|
+
const tx = this.db.transaction(METADATA_STORE, 'readwrite');
|
|
73
|
+
tx.objectStore(METADATA_STORE).put(metadata, path);
|
|
74
|
+
await awaitTransaction(tx);
|
|
75
|
+
}
|
|
76
|
+
async delete(path) {
|
|
77
|
+
const tx = this.db.transaction([BLOBS_STORE, METADATA_STORE], 'readwrite');
|
|
78
|
+
tx.objectStore(BLOBS_STORE).delete(path);
|
|
79
|
+
tx.objectStore(METADATA_STORE).delete(path);
|
|
80
|
+
await awaitTransaction(tx);
|
|
81
|
+
}
|
|
82
|
+
async listByPrefix(prefix) {
|
|
83
|
+
const tx = this.db.transaction(METADATA_STORE, 'readonly');
|
|
84
|
+
// `IDBKeyRange.bound(prefix, prefix + '')` returns every
|
|
85
|
+
// key that starts with `prefix` — '' is the highest BMP
|
|
86
|
+
// code point, so any path whose first char beyond `prefix` is
|
|
87
|
+
// legal will sort below it. Matches the survey's recommended
|
|
88
|
+
// prefix-query pattern (Section 6).
|
|
89
|
+
const range = IDBKeyRange.bound(prefix, prefix + '', false, false);
|
|
90
|
+
return awaitRequest(tx.objectStore(METADATA_STORE).getAll(range));
|
|
91
|
+
}
|
|
92
|
+
async reset() {
|
|
93
|
+
const tx = this.db.transaction([BLOBS_STORE, METADATA_STORE], 'readwrite');
|
|
94
|
+
tx.objectStore(BLOBS_STORE).clear();
|
|
95
|
+
tx.objectStore(METADATA_STORE).clear();
|
|
96
|
+
await awaitTransaction(tx);
|
|
97
|
+
}
|
|
98
|
+
close() {
|
|
99
|
+
this.db.close();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function openDatabase(dbName) {
|
|
103
|
+
return new Promise((resolve, reject) => {
|
|
104
|
+
const req = indexedDB.open(dbName, SCHEMA_VERSION);
|
|
105
|
+
req.addEventListener('upgradeneeded', () => {
|
|
106
|
+
const db = req.result;
|
|
107
|
+
if (!db.objectStoreNames.contains(BLOBS_STORE)) {
|
|
108
|
+
db.createObjectStore(BLOBS_STORE);
|
|
109
|
+
}
|
|
110
|
+
if (!db.objectStoreNames.contains(METADATA_STORE)) {
|
|
111
|
+
db.createObjectStore(METADATA_STORE);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
req.addEventListener('success', () => resolve(req.result));
|
|
115
|
+
req.addEventListener('error', () => reject(req.error));
|
|
116
|
+
req.addEventListener('blocked', () => reject(new Error(`IndexedDB open blocked for db "${dbName}"`)));
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
function awaitRequest(req) {
|
|
120
|
+
return new Promise((resolve, reject) => {
|
|
121
|
+
req.addEventListener('success', () => resolve(req.result));
|
|
122
|
+
req.addEventListener('error', () => reject(req.error));
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
function awaitTransaction(tx) {
|
|
126
|
+
return new Promise((resolve, reject) => {
|
|
127
|
+
tx.addEventListener('complete', () => resolve());
|
|
128
|
+
tx.addEventListener('error', () => reject(tx.error));
|
|
129
|
+
tx.addEventListener('abort', () => reject(tx.error ?? new Error('IndexedDB transaction aborted')));
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/storage/persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StorageReference + `ref()` factory.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the public shape `firebase/storage` exposes: `fullPath`,
|
|
5
|
+
* `bucket`, `name`, `parent`, `root`, `storage`, plus `toString()`
|
|
6
|
+
* returning `gs://<bucket>/<fullPath>`.
|
|
7
|
+
*
|
|
8
|
+
* Two ref impls — sandbox (carries path + storage, computes the
|
|
9
|
+
* other fields) and prod (proxies to an underlying
|
|
10
|
+
* `firebase/storage` ref via a WeakMap). Both implement the same
|
|
11
|
+
* `StorageReference` shape so consumer code is target-blind.
|
|
12
|
+
*
|
|
13
|
+
* Identity model: references are value objects. Two refs with the
|
|
14
|
+
* same `(storage, fullPath)` compare equal via `toString()` /
|
|
15
|
+
* `fullPath`, NOT via `===` — Firebase doesn't intern references
|
|
16
|
+
* either, and consumer code that relies on identity for caching is
|
|
17
|
+
* outside the contract.
|
|
18
|
+
*
|
|
19
|
+
* Path normalization matches Firebase exactly: leading slashes
|
|
20
|
+
* stripped, trailing slashes stripped, repeated internal slashes
|
|
21
|
+
* collapsed. Empty path is legal — it's the root reference.
|
|
22
|
+
*/
|
|
23
|
+
import * as fb from 'firebase/storage';
|
|
24
|
+
import { type FirebaseStorage } from './service.js';
|
|
25
|
+
/**
|
|
26
|
+
* Public reference shape. Methods are inherited from the impl
|
|
27
|
+
* classes below; the interface is exported so consumer code can
|
|
28
|
+
* name the type without depending on the impls.
|
|
29
|
+
*/
|
|
30
|
+
export interface StorageReference {
|
|
31
|
+
readonly storage: FirebaseStorage;
|
|
32
|
+
readonly bucket: string;
|
|
33
|
+
readonly fullPath: string;
|
|
34
|
+
readonly name: string;
|
|
35
|
+
readonly parent: StorageReference | null;
|
|
36
|
+
readonly root: StorageReference;
|
|
37
|
+
toString(): string;
|
|
38
|
+
}
|
|
39
|
+
/** Internal — extract the underlying `fb.StorageReference` for a prod ref. */
|
|
40
|
+
export declare function fbRefOf(ref: StorageReference): fb.StorageReference;
|
|
41
|
+
/**
|
|
42
|
+
* Construct a reference. Two overloads matching Firebase:
|
|
43
|
+
*
|
|
44
|
+
* `ref(storage, path?)` — `path` is bucket-rooted. Omit for root.
|
|
45
|
+
* `ref(parent, path)` — `path` is relative to `parent.fullPath`.
|
|
46
|
+
*/
|
|
47
|
+
export declare function ref(storage: FirebaseStorage, path?: string): StorageReference;
|
|
48
|
+
export declare function ref(parent: StorageReference, path: string): StorageReference;
|
|
49
|
+
/**
|
|
50
|
+
* Normalize a single path: strip leading/trailing slashes, collapse
|
|
51
|
+
* repeated internal slashes. Empty stays empty (the root).
|
|
52
|
+
*
|
|
53
|
+
* Matches Firebase's behavior — relevant when consumer code passes
|
|
54
|
+
* `/sessions/s1.json` or `sessions//s1.json`; both end up at
|
|
55
|
+
* `sessions/s1.json`.
|
|
56
|
+
*/
|
|
57
|
+
export declare function normalizePath(path: string): string;
|
|
58
|
+
/**
|
|
59
|
+
* Join a parent path with a child path, normalizing the result.
|
|
60
|
+
* Used by the `ref(parent, path)` overload and by `child` helpers.
|
|
61
|
+
*/
|
|
62
|
+
export declare function joinPaths(parent: string, child: string): string;
|
|
63
|
+
//# sourceMappingURL=reference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../src/storage/reference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAA2B,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAE7E;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,IAAI,MAAM,CAAC;CACpB;AASD,8EAA8E;AAC9E,wBAAgB,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,EAAE,CAAC,gBAAgB,CASlE;AAED;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;AAC/E,wBAAgB,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;AAyF9E;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK/D"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StorageReference + `ref()` factory.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the public shape `firebase/storage` exposes: `fullPath`,
|
|
5
|
+
* `bucket`, `name`, `parent`, `root`, `storage`, plus `toString()`
|
|
6
|
+
* returning `gs://<bucket>/<fullPath>`.
|
|
7
|
+
*
|
|
8
|
+
* Two ref impls — sandbox (carries path + storage, computes the
|
|
9
|
+
* other fields) and prod (proxies to an underlying
|
|
10
|
+
* `firebase/storage` ref via a WeakMap). Both implement the same
|
|
11
|
+
* `StorageReference` shape so consumer code is target-blind.
|
|
12
|
+
*
|
|
13
|
+
* Identity model: references are value objects. Two refs with the
|
|
14
|
+
* same `(storage, fullPath)` compare equal via `toString()` /
|
|
15
|
+
* `fullPath`, NOT via `===` — Firebase doesn't intern references
|
|
16
|
+
* either, and consumer code that relies on identity for caching is
|
|
17
|
+
* outside the contract.
|
|
18
|
+
*
|
|
19
|
+
* Path normalization matches Firebase exactly: leading slashes
|
|
20
|
+
* stripped, trailing slashes stripped, repeated internal slashes
|
|
21
|
+
* collapsed. Empty path is legal — it's the root reference.
|
|
22
|
+
*/
|
|
23
|
+
import * as fb from 'firebase/storage';
|
|
24
|
+
import { TARGET_SYMBOL, targetOf } from './service.js';
|
|
25
|
+
/**
|
|
26
|
+
* Internal — map from prod-target StorageReferences to their backing
|
|
27
|
+
* `firebase/storage` references. Ops use this to delegate. WeakMap
|
|
28
|
+
* keys let entries GC alongside the refs that produced them.
|
|
29
|
+
*/
|
|
30
|
+
const PROD_FB_REF = new WeakMap();
|
|
31
|
+
/** Internal — extract the underlying `fb.StorageReference` for a prod ref. */
|
|
32
|
+
export function fbRefOf(ref) {
|
|
33
|
+
const r = PROD_FB_REF.get(ref);
|
|
34
|
+
if (!r) {
|
|
35
|
+
throw new Error('pyric/storage: expected a prod-target reference but the WeakMap had no entry. ' +
|
|
36
|
+
'Mixing sandbox + prod refs in the same call?');
|
|
37
|
+
}
|
|
38
|
+
return r;
|
|
39
|
+
}
|
|
40
|
+
export function ref(target, path) {
|
|
41
|
+
if (isStorageReference(target)) {
|
|
42
|
+
// Relative-to-parent overload.
|
|
43
|
+
const parentTarget = targetOf(target.storage);
|
|
44
|
+
if (parentTarget.kind === 'prod') {
|
|
45
|
+
const newFbRef = fb.ref(fbRefOf(target), path ?? '');
|
|
46
|
+
return wrapProdRef(target.storage, newFbRef);
|
|
47
|
+
}
|
|
48
|
+
return new SandboxStorageReference(target.storage, joinPaths(target.fullPath, path ?? ''));
|
|
49
|
+
}
|
|
50
|
+
// Storage-rooted overload.
|
|
51
|
+
const t = targetOf(target);
|
|
52
|
+
if (t.kind === 'prod') {
|
|
53
|
+
const fbR = path === undefined ? fb.ref(t.fbStorage) : fb.ref(t.fbStorage, path);
|
|
54
|
+
return wrapProdRef(target, fbR);
|
|
55
|
+
}
|
|
56
|
+
return new SandboxStorageReference(target, normalizePath(path ?? ''));
|
|
57
|
+
}
|
|
58
|
+
// ─── Sandbox impl ──────────────────────────────────────────────────
|
|
59
|
+
class SandboxStorageReference {
|
|
60
|
+
storage;
|
|
61
|
+
bucket;
|
|
62
|
+
fullPath;
|
|
63
|
+
constructor(storage, fullPath) {
|
|
64
|
+
this.storage = storage;
|
|
65
|
+
// Sandbox handles always have a sandbox target; pull bucket from it.
|
|
66
|
+
const t = targetOf(storage);
|
|
67
|
+
this.bucket = t.bucket;
|
|
68
|
+
this.fullPath = fullPath;
|
|
69
|
+
}
|
|
70
|
+
get name() {
|
|
71
|
+
if (this.fullPath === '')
|
|
72
|
+
return '';
|
|
73
|
+
const idx = this.fullPath.lastIndexOf('/');
|
|
74
|
+
return idx === -1 ? this.fullPath : this.fullPath.slice(idx + 1);
|
|
75
|
+
}
|
|
76
|
+
get parent() {
|
|
77
|
+
if (this.fullPath === '')
|
|
78
|
+
return null;
|
|
79
|
+
const idx = this.fullPath.lastIndexOf('/');
|
|
80
|
+
const parentPath = idx === -1 ? '' : this.fullPath.slice(0, idx);
|
|
81
|
+
return new SandboxStorageReference(this.storage, parentPath);
|
|
82
|
+
}
|
|
83
|
+
get root() {
|
|
84
|
+
if (this.fullPath === '')
|
|
85
|
+
return this;
|
|
86
|
+
return new SandboxStorageReference(this.storage, '');
|
|
87
|
+
}
|
|
88
|
+
toString() {
|
|
89
|
+
return `gs://${this.bucket}/${this.fullPath}`;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// ─── Prod impl ─────────────────────────────────────────────────────
|
|
93
|
+
/**
|
|
94
|
+
* Wrap a `firebase/storage` ref in our `StorageReference` shape.
|
|
95
|
+
* Tags it in `PROD_FB_REF` so ops can recover the underlying ref.
|
|
96
|
+
* `parent` / `root` recursively wrap to keep the target consistent.
|
|
97
|
+
*/
|
|
98
|
+
function wrapProdRef(storage, fbR) {
|
|
99
|
+
const wrapper = {
|
|
100
|
+
storage,
|
|
101
|
+
get bucket() { return fbR.bucket; },
|
|
102
|
+
get fullPath() { return fbR.fullPath; },
|
|
103
|
+
get name() { return fbR.name; },
|
|
104
|
+
get parent() {
|
|
105
|
+
const p = fbR.parent;
|
|
106
|
+
return p ? wrapProdRef(storage, p) : null;
|
|
107
|
+
},
|
|
108
|
+
get root() {
|
|
109
|
+
return wrapProdRef(storage, fbR.root);
|
|
110
|
+
},
|
|
111
|
+
toString() { return fbR.toString(); },
|
|
112
|
+
};
|
|
113
|
+
PROD_FB_REF.set(wrapper, fbR);
|
|
114
|
+
return wrapper;
|
|
115
|
+
}
|
|
116
|
+
// ─── Path utilities ────────────────────────────────────────────────
|
|
117
|
+
/**
|
|
118
|
+
* Normalize a single path: strip leading/trailing slashes, collapse
|
|
119
|
+
* repeated internal slashes. Empty stays empty (the root).
|
|
120
|
+
*
|
|
121
|
+
* Matches Firebase's behavior — relevant when consumer code passes
|
|
122
|
+
* `/sessions/s1.json` or `sessions//s1.json`; both end up at
|
|
123
|
+
* `sessions/s1.json`.
|
|
124
|
+
*/
|
|
125
|
+
export function normalizePath(path) {
|
|
126
|
+
if (path === '')
|
|
127
|
+
return '';
|
|
128
|
+
return path
|
|
129
|
+
.split('/')
|
|
130
|
+
.filter((segment) => segment.length > 0)
|
|
131
|
+
.join('/');
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Join a parent path with a child path, normalizing the result.
|
|
135
|
+
* Used by the `ref(parent, path)` overload and by `child` helpers.
|
|
136
|
+
*/
|
|
137
|
+
export function joinPaths(parent, child) {
|
|
138
|
+
const childNorm = normalizePath(child);
|
|
139
|
+
if (parent === '')
|
|
140
|
+
return childNorm;
|
|
141
|
+
if (childNorm === '')
|
|
142
|
+
return parent;
|
|
143
|
+
return `${parent}/${childNorm}`;
|
|
144
|
+
}
|
|
145
|
+
/** Structural test — references all expose `fullPath` + `storage`. */
|
|
146
|
+
function isStorageReference(target) {
|
|
147
|
+
if (target === null || typeof target !== 'object')
|
|
148
|
+
return false;
|
|
149
|
+
// Distinguish from a FirebaseStorage handle (which has TARGET_SYMBOL
|
|
150
|
+
// but no `fullPath`). The handle has the symbol; refs don't.
|
|
151
|
+
if (TARGET_SYMBOL in target)
|
|
152
|
+
return false;
|
|
153
|
+
const obj = target;
|
|
154
|
+
return typeof obj.fullPath === 'string' && obj.storage !== undefined;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=reference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/storage/reference.ts"],"names":[],"mappings":"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"}
|