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,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `StorageError` — the sandbox's analog of `firebase/storage`'s
|
|
3
|
+
* `StorageError`. Every sandbox operation that fails throws one of
|
|
4
|
+
* these so `err.code === 'storage/...'` branching works identically
|
|
5
|
+
* against the sandbox and a real bucket (ST-B1).
|
|
6
|
+
*
|
|
7
|
+
* Shape parity with upstream (`clones/firebase-js-sdk/packages/
|
|
8
|
+
* storage/src/implementation/error.ts`):
|
|
9
|
+
* - `.code` is the prefixed form `storage/<code>` (e.g.
|
|
10
|
+
* `storage/object-not-found`).
|
|
11
|
+
* - the message embeds the prefixed code so the substring-matching
|
|
12
|
+
* probes (`toThrow(/object-not-found/)`) and `err.code` reads
|
|
13
|
+
* agree.
|
|
14
|
+
*
|
|
15
|
+
* Intentional divergence (documented in COMPAT row 105): upstream's
|
|
16
|
+
* `StorageError extends FirebaseError` and reports `name:
|
|
17
|
+
* 'FirebaseError'` with a `"Firebase Storage: … (storage/…)"`
|
|
18
|
+
* message. The sandbox keeps a plain `Error` subclass — same as
|
|
19
|
+
* `SandboxError` for Firestore — so the `.code` contract is faithful
|
|
20
|
+
* while the message wording stays sandbox-flavored. The
|
|
21
|
+
* `storage/<code>` prefix is what consumer code branches on.
|
|
22
|
+
*/
|
|
23
|
+
/** Prefix an unprefixed code with `storage/` — matches upstream. */
|
|
24
|
+
export function prependCode(code) {
|
|
25
|
+
return `storage/${code}`;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Storage error carrying a prefixed `storage/<code>` on `.code`.
|
|
29
|
+
* Drop-in for `err.code === 'storage/object-not-found'` branching.
|
|
30
|
+
*/
|
|
31
|
+
export class StorageError extends Error {
|
|
32
|
+
/** Prefixed code, e.g. `storage/object-not-found`. */
|
|
33
|
+
code;
|
|
34
|
+
constructor(code, message) {
|
|
35
|
+
const prefixed = prependCode(code);
|
|
36
|
+
// The prefixed code is embedded so substring probes and `.code`
|
|
37
|
+
// reads see the same value.
|
|
38
|
+
super(`${prefixed}: ${message}`);
|
|
39
|
+
this.name = 'StorageError';
|
|
40
|
+
this.code = prefixed;
|
|
41
|
+
// Mirror upstream's prototype pin so `instanceof StorageError`
|
|
42
|
+
// survives the transpile-to-ES5-class-extends pattern.
|
|
43
|
+
Object.setPrototypeOf(this, StorageError.prototype);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// ─── Factory helpers (mirror upstream's error.ts free functions) ────
|
|
47
|
+
export function objectNotFound(path) {
|
|
48
|
+
return new StorageError('object-not-found', `no object at "${path}".`);
|
|
49
|
+
}
|
|
50
|
+
export function unauthorized(method, path, detail) {
|
|
51
|
+
return new StorageError('unauthorized', `${method} "${path}" denied by rules${detail}.`);
|
|
52
|
+
}
|
|
53
|
+
export function quotaExceeded(path, size, max) {
|
|
54
|
+
return new StorageError('quota-exceeded', `object at "${path}" is ${size} bytes, exceeds maxDownloadSizeBytes ${max}.`);
|
|
55
|
+
}
|
|
56
|
+
export function invalidRootOperation(op) {
|
|
57
|
+
return new StorageError('invalid-root-operation', `${op} cannot operate on the root reference.`);
|
|
58
|
+
}
|
|
59
|
+
export function invalidFormat(format, message) {
|
|
60
|
+
return new StorageError('invalid-format', `string does not match format "${format}": ${message}`);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/storage/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAkBH,oEAAoE;AACpE,MAAM,UAAU,WAAW,CAAC,IAAsB;IAChD,OAAO,WAAW,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,sDAAsD;IAC7C,IAAI,CAAgC;IAE7C,YAAY,IAAsB,EAAE,OAAe;QACjD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,gEAAgE;QAChE,4BAA4B;QAC5B,KAAK,CAAC,GAAG,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,+DAA+D;QAC/D,uDAAuD;QACvD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;CACF;AAED,uEAAuE;AAEvE,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,YAAY,CAAC,kBAAkB,EAAE,iBAAiB,IAAI,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,IAAY,EAAE,MAAc;IACvE,OAAO,IAAI,YAAY,CACrB,cAAc,EACd,GAAG,MAAM,KAAK,IAAI,oBAAoB,MAAM,GAAG,CAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAAY,EAAE,GAAW;IACnE,OAAO,IAAI,YAAY,CACrB,gBAAgB,EAChB,cAAc,IAAI,QAAQ,IAAI,wCAAwC,GAAG,GAAG,CAC7E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAU;IAC7C,OAAO,IAAI,YAAY,CACrB,wBAAwB,EACxB,GAAG,EAAE,wCAAwC,CAC9C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,OAAe;IAC3D,OAAO,IAAI,YAAY,CAAC,gBAAgB,EAAE,iCAAiC,MAAM,MAAM,OAAO,EAAE,CAAC,CAAC;AACpG,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `pyric/storage` — Firebase Storage adapter for the Pyric sandbox.
|
|
3
|
+
*
|
|
4
|
+
* Sibling-package layout mirrors Firebase:
|
|
5
|
+
* `firebase/app` ↔ `firebase/storage`
|
|
6
|
+
* `pyric/sandbox` ↔ `pyric/storage`
|
|
7
|
+
*
|
|
8
|
+
* Public surface lands incrementally through the slices in
|
|
9
|
+
* the design rationale:
|
|
10
|
+
*
|
|
11
|
+
* - Slice 4: `getStorage`, `FirebaseStorage`
|
|
12
|
+
* - Slice 5 (here): `ref`, `uploadBytes`, `uploadString`,
|
|
13
|
+
* `getBytes`, `getBlob`, `deleteObject`, `StorageReference`,
|
|
14
|
+
* `SettableMetadata`, `FullMetadata`, `UploadResult`
|
|
15
|
+
* - Slice 6: `getMetadata`, `updateMetadata`
|
|
16
|
+
* - Slice 7: `listAll`, `ListResult`
|
|
17
|
+
* - Slice 8: rules support via `getStorage(ctx, { rules })`
|
|
18
|
+
* - Slice 9: end-to-end session-archive demo + README
|
|
19
|
+
*
|
|
20
|
+
* Out of scope for the v1 scope (see README): `getDownloadURL`,
|
|
21
|
+
* paginated `list`, `uploadBytesResumable`, Admin SDK shape,
|
|
22
|
+
* Storage emulator parity, image transformations, Cloud Functions
|
|
23
|
+
* triggers.
|
|
24
|
+
*/
|
|
25
|
+
import type { FirebaseStorage } from './service.js';
|
|
26
|
+
import { type PyricApp } from 'pyric/app';
|
|
27
|
+
export { getStorageSandbox, getStorageProd, TARGET_SYMBOL } from './service.js';
|
|
28
|
+
export type { FirebaseStorage, StorageOptions, ProdStorageOptions, Target, SandboxTarget, ProdTarget } from './service.js';
|
|
29
|
+
export declare function getStorage(app: PyricApp): FirebaseStorage;
|
|
30
|
+
export { StorageError } from './errors.js';
|
|
31
|
+
export type { StorageErrorCode } from './errors.js';
|
|
32
|
+
export { ref } from './reference.js';
|
|
33
|
+
export type { StorageReference } from './reference.js';
|
|
34
|
+
export { uploadBytes, uploadString } from './upload.js';
|
|
35
|
+
export type { StringFormat } from './upload.js';
|
|
36
|
+
export { getBytes, getBlob, deleteObject } from './download.js';
|
|
37
|
+
export { getMetadata, updateMetadata } from './metadata.js';
|
|
38
|
+
export type { SettableMetadata, FullMetadata, UploadResult } from './metadata.js';
|
|
39
|
+
export { listAll } from './list.js';
|
|
40
|
+
export type { ListResult } from './list.js';
|
|
41
|
+
export { parseStorageRules, evaluateStorageRules } from './rules.js';
|
|
42
|
+
export type { StorageRules, StorageMethod, StorageAuth, StorageRequest, StorageResource, EvaluationInput, EvaluationResult, } from './rules.js';
|
|
43
|
+
export { provisionStorage, getStorageServiceState, enableStorageService, getDefaultLocation, finalizeDefaultLocation, listFirebaseBuckets, addFirebaseToBucket, deployStorageRules, getBucketCors, setBucketCors, defaultPlaygroundCors, StorageProvisioningError, } from './admin/api.js';
|
|
44
|
+
export type { ServiceEnableState, FirebaseStorageBucket, ProvisionStorageOptions, ProvisionStorageResult, CorsRule, } from './admin/api.js';
|
|
45
|
+
export { InspectStorageHandler, ProvisionStorageHandler } from './admin/handler.js';
|
|
46
|
+
export { createStorageAdminTools } from './admin/tools.js';
|
|
47
|
+
export type { StorageAdminToolDeps } from './admin/tools.js';
|
|
48
|
+
export type { ProvisionStorageInput, ProvisionStorageOutcome, ProvisionStorageErrorCode, InspectStorageResult, } from './admin/spec.js';
|
|
49
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAIpD,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChF,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAa3H,wBAAgB,UAAU,CAAC,GAAG,EAAE,QAAQ,GAAG,eAAe,CAIzD;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACrE,YAAY,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAOpB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,QAAQ,GACT,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `pyric/storage` — Firebase Storage adapter for the Pyric sandbox.
|
|
3
|
+
*
|
|
4
|
+
* Sibling-package layout mirrors Firebase:
|
|
5
|
+
* `firebase/app` ↔ `firebase/storage`
|
|
6
|
+
* `pyric/sandbox` ↔ `pyric/storage`
|
|
7
|
+
*
|
|
8
|
+
* Public surface lands incrementally through the slices in
|
|
9
|
+
* the design rationale:
|
|
10
|
+
*
|
|
11
|
+
* - Slice 4: `getStorage`, `FirebaseStorage`
|
|
12
|
+
* - Slice 5 (here): `ref`, `uploadBytes`, `uploadString`,
|
|
13
|
+
* `getBytes`, `getBlob`, `deleteObject`, `StorageReference`,
|
|
14
|
+
* `SettableMetadata`, `FullMetadata`, `UploadResult`
|
|
15
|
+
* - Slice 6: `getMetadata`, `updateMetadata`
|
|
16
|
+
* - Slice 7: `listAll`, `ListResult`
|
|
17
|
+
* - Slice 8: rules support via `getStorage(ctx, { rules })`
|
|
18
|
+
* - Slice 9: end-to-end session-archive demo + README
|
|
19
|
+
*
|
|
20
|
+
* Out of scope for the v1 scope (see README): `getDownloadURL`,
|
|
21
|
+
* paginated `list`, `uploadBytesResumable`, Admin SDK shape,
|
|
22
|
+
* Storage emulator parity, image transformations, Cloud Functions
|
|
23
|
+
* triggers.
|
|
24
|
+
*/
|
|
25
|
+
import { getStorageSandbox, getStorageProd } from './service.js';
|
|
26
|
+
// Phase 3 unified app handle. Adapter dispatch reads `APP_TARGET` and
|
|
27
|
+
// routes to the existing direct-handle path (sandbox vs prod).
|
|
28
|
+
import { APP_TARGET } from 'pyric/app';
|
|
29
|
+
export { getStorageSandbox, getStorageProd, TARGET_SYMBOL } from './service.js';
|
|
30
|
+
// ─── Phase 3 unified getStorage(PyricApp) dispatch ───────────────────
|
|
31
|
+
//
|
|
32
|
+
// `getStorageSandbox(sandbox)` and `getStorageProd(app)` stay as the
|
|
33
|
+
// direct-handle entry points (per the design rationale's
|
|
34
|
+
// split-factory shape). The unified `getStorage(app: PyricApp)` reads
|
|
35
|
+
// the brand on the `pyric/app` handle and forwards to the matching
|
|
36
|
+
// direct-handle factory. Storage takes optional per-backend options
|
|
37
|
+
// (sandbox: bucket/dbName/rules; prod: bucket) that the unified
|
|
38
|
+
// signature can't express without coupling — so this surface is the
|
|
39
|
+
// no-options entry. Callers that need options keep using the direct
|
|
40
|
+
// `getStorageSandbox` / `getStorageProd` factories.
|
|
41
|
+
export function getStorage(app) {
|
|
42
|
+
return app[APP_TARGET] === 'sandbox'
|
|
43
|
+
? getStorageSandbox(app.sandbox)
|
|
44
|
+
: getStorageProd(app.firebaseApp);
|
|
45
|
+
}
|
|
46
|
+
export { StorageError } from './errors.js';
|
|
47
|
+
export { ref } from './reference.js';
|
|
48
|
+
export { uploadBytes, uploadString } from './upload.js';
|
|
49
|
+
export { getBytes, getBlob, deleteObject } from './download.js';
|
|
50
|
+
export { getMetadata, updateMetadata } from './metadata.js';
|
|
51
|
+
export { listAll } from './list.js';
|
|
52
|
+
export { parseStorageRules, evaluateStorageRules } from './rules.js';
|
|
53
|
+
// ─── Admin / control-plane surface ───────────────────────────────────
|
|
54
|
+
// Firebase Storage provisioning + status. The pure-fetch `api.ts`
|
|
55
|
+
// layer (browser + Node compatible), the `ProjectScope`-shaped
|
|
56
|
+
// handlers, and the agent-tool factory.
|
|
57
|
+
export { provisionStorage, getStorageServiceState, enableStorageService, getDefaultLocation, finalizeDefaultLocation, listFirebaseBuckets, addFirebaseToBucket, deployStorageRules, getBucketCors, setBucketCors, defaultPlaygroundCors, StorageProvisioningError, } from './admin/api.js';
|
|
58
|
+
export { InspectStorageHandler, ProvisionStorageHandler } from './admin/handler.js';
|
|
59
|
+
export { createStorageAdminTools } from './admin/tools.js';
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGjE,sEAAsE;AACtE,+DAA+D;AAC/D,OAAO,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGhF,wEAAwE;AACxE,EAAE;AACF,qEAAqE;AACrE,yDAAyD;AACzD,sEAAsE;AACtE,mEAAmE;AACnE,oEAAoE;AACpE,gEAAgE;AAChE,oEAAoE;AACpE,oEAAoE;AACpE,oDAAoD;AACpD,MAAM,UAAU,UAAU,CAAC,GAAa;IACtC,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS;QAClC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC;QAChC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAGrC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGxD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAWrE,wEAAwE;AACxE,kEAAkE;AAClE,+DAA+D;AAC/D,wCAAwC;AAExC,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AASxB,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `pyric/storage/internal` — host-only admin plane for the sandbox
|
|
3
|
+
* storage backend.
|
|
4
|
+
*
|
|
5
|
+
* The public `pyric/storage` surface is deliberately rules-honest:
|
|
6
|
+
* every operation on a handle from `getStorageSandbox` evaluates the
|
|
7
|
+
* configured storage rules against the handle's context identity.
|
|
8
|
+
* Hosts that must serve firebase-admin semantics (the SharedWorker
|
|
9
|
+
* host resolving `actAs: { mode: 'admin' }` storage ops for
|
|
10
|
+
* `pyric-admin`'s remote dispatch arm, Pyric Studio's admin lens)
|
|
11
|
+
* need a rules-BYPASS handle onto the SAME per-sandbox store.
|
|
12
|
+
*
|
|
13
|
+
* This subpath exists so that bypass never leaks onto the public
|
|
14
|
+
* modular surface — mirroring how `pyric/sandbox/internal` carries
|
|
15
|
+
* the sandbox's host-only seams.
|
|
16
|
+
*/
|
|
17
|
+
export { getAdminStorageSandbox } from './service.js';
|
|
18
|
+
//# sourceMappingURL=internal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/storage/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `pyric/storage/internal` — host-only admin plane for the sandbox
|
|
3
|
+
* storage backend.
|
|
4
|
+
*
|
|
5
|
+
* The public `pyric/storage` surface is deliberately rules-honest:
|
|
6
|
+
* every operation on a handle from `getStorageSandbox` evaluates the
|
|
7
|
+
* configured storage rules against the handle's context identity.
|
|
8
|
+
* Hosts that must serve firebase-admin semantics (the SharedWorker
|
|
9
|
+
* host resolving `actAs: { mode: 'admin' }` storage ops for
|
|
10
|
+
* `pyric-admin`'s remote dispatch arm, Pyric Studio's admin lens)
|
|
11
|
+
* need a rules-BYPASS handle onto the SAME per-sandbox store.
|
|
12
|
+
*
|
|
13
|
+
* This subpath exists so that bypass never leaks onto the public
|
|
14
|
+
* modular surface — mirroring how `pyric/sandbox/internal` carries
|
|
15
|
+
* the sandbox's host-only seams.
|
|
16
|
+
*/
|
|
17
|
+
export { getAdminStorageSandbox } from './service.js';
|
|
18
|
+
//# sourceMappingURL=internal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/storage/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type StorageReference } from './reference.js';
|
|
2
|
+
/**
|
|
3
|
+
* Mirrors `firebase/storage`'s `ListResult`. `nextPageToken` is
|
|
4
|
+
* `undefined` for `listAll`; pagination via `list()` is deferred.
|
|
5
|
+
*/
|
|
6
|
+
export interface ListResult {
|
|
7
|
+
items: StorageReference[];
|
|
8
|
+
prefixes: StorageReference[];
|
|
9
|
+
nextPageToken?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Enumerate every immediate child item + sub-prefix under `refIn`.
|
|
13
|
+
* Works on the root reference too — pass `ref(storage)` to scan the
|
|
14
|
+
* whole bucket.
|
|
15
|
+
*/
|
|
16
|
+
export declare function listAll(refIn: StorageReference): Promise<ListResult>;
|
|
17
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/storage/list.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIrE;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAyD1E"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* List operations — `listAll` only. Paginated `list(ref, options)`
|
|
3
|
+
* is deferred per the implementation scope (Section 6 of the survey); the
|
|
4
|
+
* `ListResult` shape keeps `nextPageToken` optional so consumer
|
|
5
|
+
* code that handles pagination doesn't have to special-case the
|
|
6
|
+
* sandbox.
|
|
7
|
+
*
|
|
8
|
+
* Algorithm:
|
|
9
|
+
* 1. Compute `scanPrefix`. Empty fullPath → `''` (entire bucket).
|
|
10
|
+
* Non-empty fullPath → `fullPath + '/'` so descendants match
|
|
11
|
+
* but the ref itself doesn't.
|
|
12
|
+
* 2. `listByPrefix(scanPrefix)` returns every metadata record
|
|
13
|
+
* under the prefix, sorted by IDB key order (i.e. by path).
|
|
14
|
+
* 3. For each record, compute the path RELATIVE to scanPrefix.
|
|
15
|
+
* A relative path with no `'/'` is a direct child file — push
|
|
16
|
+
* it to `items`. A relative path with `'/'` denotes a
|
|
17
|
+
* sub-folder; the first segment becomes a synthetic prefix
|
|
18
|
+
* reference (deduped — many files can share one folder).
|
|
19
|
+
* 4. Sort prefixes by path for deterministic output. Items are
|
|
20
|
+
* already sorted by virtue of the IDB scan.
|
|
21
|
+
*
|
|
22
|
+
* Survey alignment (Section 6): the JS SDK's `prefixes` carries
|
|
23
|
+
* folder-like references for ANY path with descendants; we match
|
|
24
|
+
* that semantic exactly.
|
|
25
|
+
*/
|
|
26
|
+
import * as fb from 'firebase/storage';
|
|
27
|
+
import { fbRefOf, ref } from './reference.js';
|
|
28
|
+
import { getStorageService, targetOf } from './service.js';
|
|
29
|
+
import { enforceRules } from './enforce.js';
|
|
30
|
+
/**
|
|
31
|
+
* Enumerate every immediate child item + sub-prefix under `refIn`.
|
|
32
|
+
* Works on the root reference too — pass `ref(storage)` to scan the
|
|
33
|
+
* whole bucket.
|
|
34
|
+
*/
|
|
35
|
+
export async function listAll(refIn) {
|
|
36
|
+
const storage = refIn.storage;
|
|
37
|
+
const target = targetOf(storage);
|
|
38
|
+
if (target.kind === 'prod') {
|
|
39
|
+
const result = await fb.listAll(fbRefOf(refIn));
|
|
40
|
+
return {
|
|
41
|
+
items: result.items.map((it) => ref(storage, it.fullPath)),
|
|
42
|
+
prefixes: result.prefixes.map((p) => ref(storage, p.fullPath)),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const service = await getStorageService(storage);
|
|
46
|
+
// ST-B2: enforce rules on the listed prefix. Firebase Storage's
|
|
47
|
+
// `read` permission governs both download AND list, so a `listAll`
|
|
48
|
+
// requires `read` on the scanned ref's path. Prefixes have no
|
|
49
|
+
// backing object, so `resource` is null (a list of an unauthorized
|
|
50
|
+
// tree throws `storage/unauthorized`, same as a denied read). When
|
|
51
|
+
// no rules are configured this is a no-op (open-by-default).
|
|
52
|
+
enforceRules(service, {
|
|
53
|
+
request: {
|
|
54
|
+
auth: target.context.auth,
|
|
55
|
+
method: 'read',
|
|
56
|
+
path: refIn.fullPath,
|
|
57
|
+
},
|
|
58
|
+
resource: null,
|
|
59
|
+
}, target);
|
|
60
|
+
const scanPrefix = refIn.fullPath === '' ? '' : `${refIn.fullPath}/`;
|
|
61
|
+
const records = await service.backend.listByPrefix(scanPrefix);
|
|
62
|
+
const items = [];
|
|
63
|
+
const seenPrefixes = new Set();
|
|
64
|
+
const prefixes = [];
|
|
65
|
+
for (const md of records) {
|
|
66
|
+
if (!md.fullPath.startsWith(scanPrefix))
|
|
67
|
+
continue; // defensive
|
|
68
|
+
const relative = md.fullPath.slice(scanPrefix.length);
|
|
69
|
+
if (relative === '')
|
|
70
|
+
continue;
|
|
71
|
+
const slashIdx = relative.indexOf('/');
|
|
72
|
+
if (slashIdx === -1) {
|
|
73
|
+
// Direct child file.
|
|
74
|
+
items.push(ref(storage, md.fullPath));
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
const folderName = relative.slice(0, slashIdx);
|
|
78
|
+
const folderPath = `${scanPrefix}${folderName}`;
|
|
79
|
+
if (!seenPrefixes.has(folderPath)) {
|
|
80
|
+
seenPrefixes.add(folderPath);
|
|
81
|
+
prefixes.push(ref(storage, folderPath));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// IDB key order already sorts items; prefixes are first-appearance
|
|
86
|
+
// order, sort for determinism so consumer code can rely on a stable
|
|
87
|
+
// shape.
|
|
88
|
+
prefixes.sort((a, b) => (a.fullPath < b.fullPath ? -1 : a.fullPath > b.fullPath ? 1 : 0));
|
|
89
|
+
return { items, prefixes };
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/storage/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { StoredMetadata } from './persistence.js';
|
|
2
|
+
import { type StorageReference } from './reference.js';
|
|
3
|
+
/**
|
|
4
|
+
* Client-settable fields. Passed to `uploadBytes` /
|
|
5
|
+
* `uploadString` / `updateMetadata`. Every field is optional — the
|
|
6
|
+
* upload pipeline fills any unsupplied client fields with sane
|
|
7
|
+
* defaults (e.g. `contentType` falls back to `application/octet-stream`).
|
|
8
|
+
*/
|
|
9
|
+
export interface SettableMetadata {
|
|
10
|
+
contentType?: string;
|
|
11
|
+
cacheControl?: string;
|
|
12
|
+
contentDisposition?: string;
|
|
13
|
+
contentEncoding?: string;
|
|
14
|
+
contentLanguage?: string;
|
|
15
|
+
customMetadata?: {
|
|
16
|
+
[key: string]: string;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Server-set + client-settable fields read back from
|
|
21
|
+
* `uploadBytes` / `getMetadata` / `updateMetadata`. Server-set
|
|
22
|
+
* fields (`bucket`, `fullPath`, `name`, `generation`,
|
|
23
|
+
* `metageneration`, `timeCreated`, `updated`, `size`) are populated
|
|
24
|
+
* by the upload pipeline; client-settable fields round-trip from
|
|
25
|
+
* `SettableMetadata`.
|
|
26
|
+
*/
|
|
27
|
+
export interface FullMetadata extends SettableMetadata {
|
|
28
|
+
bucket: string;
|
|
29
|
+
fullPath: string;
|
|
30
|
+
name: string;
|
|
31
|
+
generation: string;
|
|
32
|
+
metageneration: string;
|
|
33
|
+
timeCreated: string;
|
|
34
|
+
updated: string;
|
|
35
|
+
size: number;
|
|
36
|
+
md5Hash?: string;
|
|
37
|
+
}
|
|
38
|
+
/** Return shape of `uploadBytes` / `uploadString`. */
|
|
39
|
+
export interface UploadResult {
|
|
40
|
+
metadata: FullMetadata;
|
|
41
|
+
ref: StorageReference;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Project a `StoredMetadata` (persistence-layer shape) onto the
|
|
45
|
+
* public `FullMetadata`. Currently a 1:1 cast — the shapes match —
|
|
46
|
+
* but kept as a function so future divergence (e.g. lazy `ref`
|
|
47
|
+
* computation) has a single seam.
|
|
48
|
+
*/
|
|
49
|
+
export declare function toFullMetadata(stored: StoredMetadata): FullMetadata;
|
|
50
|
+
/**
|
|
51
|
+
* Apply a `SettableMetadata` patch onto an existing
|
|
52
|
+
* `StoredMetadata`, replacing only the client-settable fields. The
|
|
53
|
+
* server-set fields (`bucket`, `fullPath`, `name`, `generation`,
|
|
54
|
+
* `timeCreated`, `size`, `md5Hash`) are preserved. `metageneration`
|
|
55
|
+
* is bumped, and `updated` is refreshed to the call moment — both
|
|
56
|
+
* are server-tracked but driven by client-initiated changes.
|
|
57
|
+
*
|
|
58
|
+
* Used by `updateMetadata` in Slice 6. Defined here in Slice 5 so
|
|
59
|
+
* the types stay close to the rest of the metadata model.
|
|
60
|
+
*/
|
|
61
|
+
export declare function applyMetadataPatch(base: StoredMetadata, patch: SettableMetadata, now?: Date): StoredMetadata;
|
|
62
|
+
/** Bump a base-10 numeric string by 1; `'5'` → `'6'`. */
|
|
63
|
+
export declare function bump(value: string): string;
|
|
64
|
+
/**
|
|
65
|
+
* Read the full metadata record at `ref`. Throws when no object
|
|
66
|
+
* exists at the path (`storage/object-not-found`).
|
|
67
|
+
*
|
|
68
|
+
* Mirrors `firebase/storage`'s `getMetadata`. Returns the same
|
|
69
|
+
* `FullMetadata` shape `uploadBytes` produced — server-set fields
|
|
70
|
+
* pinned at upload time, client-settable fields whatever the latest
|
|
71
|
+
* write left them as.
|
|
72
|
+
*/
|
|
73
|
+
export declare function getMetadata(ref: StorageReference): Promise<FullMetadata>;
|
|
74
|
+
/**
|
|
75
|
+
* Update the client-settable metadata at `ref`. Server-set fields
|
|
76
|
+
* (`bucket`, `fullPath`, `name`, `generation`, `timeCreated`,
|
|
77
|
+
* `size`, `md5Hash`) are preserved; `metageneration` bumps and
|
|
78
|
+
* `updated` refreshes. The blob is untouched.
|
|
79
|
+
*
|
|
80
|
+
* Pass `undefined` for a field to leave the previous value in
|
|
81
|
+
* place. To explicitly clear a field, the JS SDK accepts `null` —
|
|
82
|
+
* we don't model that in the v1 scope to keep the patch logic simple.
|
|
83
|
+
* Documented for Slice 9's deferred-features section.
|
|
84
|
+
*/
|
|
85
|
+
export declare function updateMetadata(ref: StorageReference, patch: SettableMetadata): Promise<FullMetadata>;
|
|
86
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/storage/metadata.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAW,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,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,cAAc,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,GAAG,EAAE,gBAAgB,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAEnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,gBAAgB,EACvB,GAAG,GAAE,IAAiB,GACrB,cAAc,CAchB;AAED,yDAAyD;AACzD,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI1C;AAID;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAqB9E;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,YAAY,CAAC,CAsDvB"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metadata types + helpers.
|
|
3
|
+
*
|
|
4
|
+
* Type definitions land in Slice 5 (used by `uploadBytes` for its
|
|
5
|
+
* `SettableMetadata` argument and `UploadResult.metadata` return);
|
|
6
|
+
* the public `getMetadata` / `updateMetadata` operations land in
|
|
7
|
+
* Slice 6 on the back of these same types.
|
|
8
|
+
*
|
|
9
|
+
* The shapes mirror `firebase/storage`'s `FullMetadata` and
|
|
10
|
+
* `SettableMetadata` (survey Section 5) so consumer code typechecks
|
|
11
|
+
* against either implementation. Two intentional differences:
|
|
12
|
+
*
|
|
13
|
+
* - `ref` is omitted from `FullMetadata`. The JS SDK populates it
|
|
14
|
+
* lazily; we don't need that machinery for the v1 scope.
|
|
15
|
+
* - `downloadTokens` is omitted. `getDownloadURL` is deferred (no
|
|
16
|
+
* browser-renderable URLs in the v1 scope).
|
|
17
|
+
*/
|
|
18
|
+
import * as fb from 'firebase/storage';
|
|
19
|
+
import { emitSandboxEvent, makeServiceMutationEvent } from 'pyric/sandbox/internal';
|
|
20
|
+
import { getStorageService, targetOf } from './service.js';
|
|
21
|
+
import { enforceRules } from './enforce.js';
|
|
22
|
+
import { resourceFromStored, requestResourceFor } from './rules.js';
|
|
23
|
+
import { objectNotFound, invalidRootOperation } from './errors.js';
|
|
24
|
+
import { fbRefOf } from './reference.js';
|
|
25
|
+
/**
|
|
26
|
+
* Project a `StoredMetadata` (persistence-layer shape) onto the
|
|
27
|
+
* public `FullMetadata`. Currently a 1:1 cast — the shapes match —
|
|
28
|
+
* but kept as a function so future divergence (e.g. lazy `ref`
|
|
29
|
+
* computation) has a single seam.
|
|
30
|
+
*/
|
|
31
|
+
export function toFullMetadata(stored) {
|
|
32
|
+
return { ...stored };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Apply a `SettableMetadata` patch onto an existing
|
|
36
|
+
* `StoredMetadata`, replacing only the client-settable fields. The
|
|
37
|
+
* server-set fields (`bucket`, `fullPath`, `name`, `generation`,
|
|
38
|
+
* `timeCreated`, `size`, `md5Hash`) are preserved. `metageneration`
|
|
39
|
+
* is bumped, and `updated` is refreshed to the call moment — both
|
|
40
|
+
* are server-tracked but driven by client-initiated changes.
|
|
41
|
+
*
|
|
42
|
+
* Used by `updateMetadata` in Slice 6. Defined here in Slice 5 so
|
|
43
|
+
* the types stay close to the rest of the metadata model.
|
|
44
|
+
*/
|
|
45
|
+
export function applyMetadataPatch(base, patch, now = new Date()) {
|
|
46
|
+
return {
|
|
47
|
+
...base,
|
|
48
|
+
// Client-settable fields are REPLACED wholesale per Firebase
|
|
49
|
+
// semantics; passing `undefined` removes the field.
|
|
50
|
+
contentType: patch.contentType ?? base.contentType,
|
|
51
|
+
cacheControl: patch.cacheControl ?? base.cacheControl,
|
|
52
|
+
contentDisposition: patch.contentDisposition ?? base.contentDisposition,
|
|
53
|
+
contentEncoding: patch.contentEncoding ?? base.contentEncoding,
|
|
54
|
+
contentLanguage: patch.contentLanguage ?? base.contentLanguage,
|
|
55
|
+
customMetadata: patch.customMetadata ?? base.customMetadata,
|
|
56
|
+
metageneration: bump(base.metageneration),
|
|
57
|
+
updated: now.toISOString(),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/** Bump a base-10 numeric string by 1; `'5'` → `'6'`. */
|
|
61
|
+
export function bump(value) {
|
|
62
|
+
const parsed = Number.parseInt(value, 10);
|
|
63
|
+
if (!Number.isFinite(parsed))
|
|
64
|
+
return '1';
|
|
65
|
+
return String(parsed + 1);
|
|
66
|
+
}
|
|
67
|
+
// ─── Public operations (Slice 6) ───────────────────────────────────
|
|
68
|
+
/**
|
|
69
|
+
* Read the full metadata record at `ref`. Throws when no object
|
|
70
|
+
* exists at the path (`storage/object-not-found`).
|
|
71
|
+
*
|
|
72
|
+
* Mirrors `firebase/storage`'s `getMetadata`. Returns the same
|
|
73
|
+
* `FullMetadata` shape `uploadBytes` produced — server-set fields
|
|
74
|
+
* pinned at upload time, client-settable fields whatever the latest
|
|
75
|
+
* write left them as.
|
|
76
|
+
*/
|
|
77
|
+
export async function getMetadata(ref) {
|
|
78
|
+
guardNonRoot(ref, 'getMetadata');
|
|
79
|
+
const target = targetOf(ref.storage);
|
|
80
|
+
if (target.kind === 'prod') {
|
|
81
|
+
const result = await fb.getMetadata(fbRefOf(ref));
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
const service = await getStorageService(ref.storage);
|
|
85
|
+
const stored = await service.backend.getMetadata(ref.fullPath);
|
|
86
|
+
enforceRules(service, {
|
|
87
|
+
request: {
|
|
88
|
+
auth: target.context.auth,
|
|
89
|
+
method: 'read',
|
|
90
|
+
path: ref.fullPath,
|
|
91
|
+
},
|
|
92
|
+
resource: resourceFromStored(stored),
|
|
93
|
+
}, target);
|
|
94
|
+
if (!stored) {
|
|
95
|
+
throw objectNotFound(ref.fullPath);
|
|
96
|
+
}
|
|
97
|
+
return toFullMetadata(stored);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Update the client-settable metadata at `ref`. Server-set fields
|
|
101
|
+
* (`bucket`, `fullPath`, `name`, `generation`, `timeCreated`,
|
|
102
|
+
* `size`, `md5Hash`) are preserved; `metageneration` bumps and
|
|
103
|
+
* `updated` refreshes. The blob is untouched.
|
|
104
|
+
*
|
|
105
|
+
* Pass `undefined` for a field to leave the previous value in
|
|
106
|
+
* place. To explicitly clear a field, the JS SDK accepts `null` —
|
|
107
|
+
* we don't model that in the v1 scope to keep the patch logic simple.
|
|
108
|
+
* Documented for Slice 9's deferred-features section.
|
|
109
|
+
*/
|
|
110
|
+
export async function updateMetadata(ref, patch) {
|
|
111
|
+
guardNonRoot(ref, 'updateMetadata');
|
|
112
|
+
const target = targetOf(ref.storage);
|
|
113
|
+
if (target.kind === 'prod') {
|
|
114
|
+
const result = await fb.updateMetadata(fbRefOf(ref), patch);
|
|
115
|
+
return result;
|
|
116
|
+
}
|
|
117
|
+
const service = await getStorageService(ref.storage);
|
|
118
|
+
const existing = await service.backend.getMetadata(ref.fullPath);
|
|
119
|
+
enforceRules(service, {
|
|
120
|
+
request: {
|
|
121
|
+
auth: target.context.auth,
|
|
122
|
+
method: 'write',
|
|
123
|
+
path: ref.fullPath,
|
|
124
|
+
// The patched view drives `request.resource` for size /
|
|
125
|
+
// contentType / metadata rule checks. Custom metadata is
|
|
126
|
+
// REPLACED wholesale on a patch (see `applyMetadataPatch`), so
|
|
127
|
+
// the about-to-write `request.resource.metadata` is the patch's
|
|
128
|
+
// custom metadata when supplied, else the existing value.
|
|
129
|
+
resource: existing
|
|
130
|
+
? requestResourceFor({
|
|
131
|
+
size: existing.size,
|
|
132
|
+
contentType: patch.contentType ?? existing.contentType,
|
|
133
|
+
customMetadata: patch.customMetadata ?? existing.customMetadata,
|
|
134
|
+
})
|
|
135
|
+
: undefined,
|
|
136
|
+
},
|
|
137
|
+
resource: resourceFromStored(existing),
|
|
138
|
+
}, target);
|
|
139
|
+
if (!existing) {
|
|
140
|
+
throw objectNotFound(ref.fullPath);
|
|
141
|
+
}
|
|
142
|
+
const next = applyMetadataPatch(existing, patch);
|
|
143
|
+
await service.backend.putMetadata(ref.fullPath, next);
|
|
144
|
+
if (target.kind === 'sandbox') {
|
|
145
|
+
try {
|
|
146
|
+
emitSandboxEvent(target.sandbox, makeServiceMutationEvent({
|
|
147
|
+
service: 'storage',
|
|
148
|
+
op: 'metadata_update',
|
|
149
|
+
path: ref.fullPath,
|
|
150
|
+
auth: target.context.auth,
|
|
151
|
+
before: existing,
|
|
152
|
+
after: next,
|
|
153
|
+
detail: { bucket: ref.bucket },
|
|
154
|
+
}), { service: 'storage' });
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
// Observational — never let event emission break a metadata update.
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return toFullMetadata(next);
|
|
161
|
+
}
|
|
162
|
+
function guardNonRoot(ref, op) {
|
|
163
|
+
if (ref.fullPath === '') {
|
|
164
|
+
throw invalidRootOperation(op);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/storage/metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAyB,MAAM,gBAAgB,CAAC;AA2ChE;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAsB;IACnD,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAoB,EACpB,KAAuB,EACvB,MAAY,IAAI,IAAI,EAAE;IAEtB,OAAO;QACL,GAAG,IAAI;QACP,6DAA6D;QAC7D,oDAAoD;QACpD,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW;QAClD,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY;QACrD,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB;QACvE,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe;QAC9D,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe;QAC9D,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc;QAC3D,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QACzC,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE;KAC3B,CAAC;AACJ,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,IAAI,CAAC,KAAa;IAChC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,sEAAsE;AAEtE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAqB;IACrD,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,OAAO,MAAiC,CAAC;IAC3C,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/D,YAAY,CAAC,OAAO,EAAE;QACpB,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;YACzB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,GAAG,CAAC,QAAQ;SACnB;QACD,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC;KACrC,EAAE,MAAM,CAAC,CAAC;IACX,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAqB,EACrB,KAAuB;IAEvB,YAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5D,OAAO,MAAiC,CAAC;IAC3C,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjE,YAAY,CAAC,OAAO,EAAE;QACpB,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;YACzB,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,GAAG,CAAC,QAAQ;YAClB,wDAAwD;YACxD,yDAAyD;YACzD,+DAA+D;YAC/D,gEAAgE;YAChE,0DAA0D;YAC1D,QAAQ,EAAE,QAAQ;gBAChB,CAAC,CAAC,kBAAkB,CAAC;oBACjB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW;oBACtD,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc;iBAChE,CAAC;gBACJ,CAAC,CAAC,SAAS;SACd;QACD,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC;KACvC,EAAE,MAAM,CAAC,CAAC;IACX,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,gBAAgB,CACd,MAAM,CAAC,OAAO,EACd,wBAAwB,CAAC;gBACvB,OAAO,EAAE,SAAS;gBAClB,EAAE,EAAE,iBAAiB;gBACrB,IAAI,EAAE,GAAG,CAAC,QAAQ;gBAClB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;gBACzB,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;aAC/B,CAAC,EACF,EAAE,OAAO,EAAE,SAAS,EAAE,CACvB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;QACtE,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,YAAY,CAAC,GAAqB,EAAE,EAAU;IACrD,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QACxB,MAAM,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;AACH,CAAC"}
|