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 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sandbox/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public type surface for `pyric/sandbox`.
|
|
3
|
+
*
|
|
4
|
+
* Kept service-agnostic on purpose: `/app` is the host the rest of the
|
|
5
|
+
* library plugs into. Service modules (`/firestore`, future `/storage`,
|
|
6
|
+
* `/auth`, `/database`) depend on these types; they don't ship from
|
|
7
|
+
* here. See design rationale for the dependency-direction
|
|
8
|
+
* argument.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Sandbox-layer error. Catch with `instanceof SandboxError` and switch
|
|
12
|
+
* on `code`. `denialContext` is populated for `permission-denied` only
|
|
13
|
+
* (and only after Slice 4 wires it through).
|
|
14
|
+
*
|
|
15
|
+
* Two construction forms are supported:
|
|
16
|
+
* - Positional: `new SandboxError(code, message, denialContext?)` —
|
|
17
|
+
* the original signature, kept for backward compatibility with
|
|
18
|
+
* existing internal call sites.
|
|
19
|
+
* - Options bag: `new SandboxError({ code, message, remediation? })` —
|
|
20
|
+
* used when attaching remediation guidance.
|
|
21
|
+
*/
|
|
22
|
+
export class SandboxError extends Error {
|
|
23
|
+
code;
|
|
24
|
+
denialContext;
|
|
25
|
+
remediation;
|
|
26
|
+
constructor(codeOrOptions, message, denialContext) {
|
|
27
|
+
const isOptions = typeof codeOrOptions === 'object';
|
|
28
|
+
const code = isOptions ? codeOrOptions.code : codeOrOptions;
|
|
29
|
+
const baseMessage = isOptions ? codeOrOptions.message : message;
|
|
30
|
+
const ctx = isOptions ? codeOrOptions.denialContext : denialContext;
|
|
31
|
+
const remediation = isOptions ? codeOrOptions.remediation : undefined;
|
|
32
|
+
const fullMessage = remediation !== undefined
|
|
33
|
+
? `${baseMessage}\n\nRemediation:\n${remediation}`
|
|
34
|
+
: baseMessage;
|
|
35
|
+
super(fullMessage);
|
|
36
|
+
this.name = 'SandboxError';
|
|
37
|
+
this.code = code;
|
|
38
|
+
if (ctx !== undefined) {
|
|
39
|
+
this.denialContext = ctx;
|
|
40
|
+
}
|
|
41
|
+
if (remediation !== undefined) {
|
|
42
|
+
this.remediation = remediation;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sandbox/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiIH;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,IAAI,CAAmB;IACvB,aAAa,CAAiB;IAC9B,WAAW,CAAU;IAI9B,YACE,aAAqD,EACrD,OAAgB,EAChB,aAA6B;QAE7B,MAAM,SAAS,GAAG,OAAO,aAAa,KAAK,QAAQ,CAAC;QACpD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;QAC5D,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAE,OAAkB,CAAC;QAC5E,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;QACpE,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,MAAM,WAAW,GACf,WAAW,KAAK,SAAS;YACvB,CAAC,CAAC,GAAG,WAAW,qBAAqB,WAAW,EAAE;YAClD,CAAC,CAAC,WAAW,CAAC;QAClB,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;QAC3B,CAAC;QACD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QACjC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure-fetch client for the Firebase Storage provisioning APIs.
|
|
3
|
+
* Takes an OAuth access token directly — works equally from a Node
|
|
4
|
+
* agent runtime or a browser. Used by:
|
|
5
|
+
*
|
|
6
|
+
* - `ProvisionStorageHandler` server-side via the agent SDK
|
|
7
|
+
* - Consumers like the multi-tenant playground via direct import
|
|
8
|
+
*
|
|
9
|
+
* The caller is responsible for token scope. `firebase` scope is
|
|
10
|
+
* enough for the `:addFirebase` + `defaultLocation:finalize` calls,
|
|
11
|
+
* but **NOT** for enabling the underlying `firebasestorage.googleapis.com`
|
|
12
|
+
* service (which is the first-time gate). Service-enable requires
|
|
13
|
+
* `cloud-platform` scope OR a service account with
|
|
14
|
+
* `roles/serviceusage.serviceUsageAdmin`. Each function below
|
|
15
|
+
* documents which scope it needs.
|
|
16
|
+
*
|
|
17
|
+
* Endpoints under play:
|
|
18
|
+
* - serviceusage.googleapis.com/v1/projects/{p}/services/{s}:enable
|
|
19
|
+
* - firebase.googleapis.com/v1beta1/projects/{p}/defaultLocation:finalize
|
|
20
|
+
* - firebasestorage.googleapis.com/v1beta/projects/{p}/buckets
|
|
21
|
+
* - firebasestorage.googleapis.com/v1beta/projects/{p}/buckets/{b}:addFirebase
|
|
22
|
+
* - firebaserules.googleapis.com/v1/projects/{p}/releases/firebase.storage
|
|
23
|
+
*/
|
|
24
|
+
export declare class StorageProvisioningError extends Error {
|
|
25
|
+
readonly status: number;
|
|
26
|
+
readonly body: string;
|
|
27
|
+
readonly reason: string | undefined;
|
|
28
|
+
constructor(status: number, body: string, reason: string | undefined, message: string);
|
|
29
|
+
}
|
|
30
|
+
export type ServiceEnableState = 'enabled' | 'disabled' | 'unknown';
|
|
31
|
+
/**
|
|
32
|
+
* Probe whether the `firebasestorage.googleapis.com` service is
|
|
33
|
+
* enabled on the project. Cheap, uses Service Usage `GET`. Requires
|
|
34
|
+
* `serviceusage.services.get` permission (the default Firebase Admin
|
|
35
|
+
* SDK SA has this; user OAuth tokens with `firebase` scope do not).
|
|
36
|
+
*
|
|
37
|
+
* Returns `'unknown'` on permission failures so callers can downgrade
|
|
38
|
+
* to "try the operation; observe SERVICE_DISABLED" rather than block.
|
|
39
|
+
*/
|
|
40
|
+
export declare function getStorageServiceState(accessToken: string, projectId: string): Promise<ServiceEnableState>;
|
|
41
|
+
/**
|
|
42
|
+
* Enable `firebasestorage.googleapis.com` on the project. Requires
|
|
43
|
+
* `serviceusage.services.enable` IAM permission — included in
|
|
44
|
+
* `roles/owner`, `roles/editor` (deprecated), or
|
|
45
|
+
* `roles/serviceusage.serviceUsageAdmin`. The default Firebase Admin
|
|
46
|
+
* SDK service account does NOT have this; the caller's token must
|
|
47
|
+
* either be a user-OAuth with `cloud-platform` scope or a SA with
|
|
48
|
+
* the elevated role.
|
|
49
|
+
*
|
|
50
|
+
* Long-running operation under the hood; the response carries an
|
|
51
|
+
* operation name. We don't poll — the response 200 is enough signal
|
|
52
|
+
* for our purposes, and a brief settle delay handles propagation.
|
|
53
|
+
*/
|
|
54
|
+
export declare function enableStorageService(accessToken: string, projectId: string): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Read the project's current default GCP resources location. Returns
|
|
57
|
+
* null when the project hasn't been finalized yet — e.g. brand-new
|
|
58
|
+
* Firebase projects with no resources. `firebase` scope is sufficient.
|
|
59
|
+
*/
|
|
60
|
+
export declare function getDefaultLocation(accessToken: string, projectId: string): Promise<string | null>;
|
|
61
|
+
/**
|
|
62
|
+
* Set the project's default GCP resources location. IRREVERSIBLE —
|
|
63
|
+
* once set, the location cannot be changed. Skip-if-set is the
|
|
64
|
+
* caller's job; this function unconditionally calls `:finalize`.
|
|
65
|
+
*
|
|
66
|
+
* Per observed behavior, `:finalize` 404s on projects that already
|
|
67
|
+
* have resources provisioned (RTDB, Hosting) without a default
|
|
68
|
+
* location. The error path surfaces that to the caller.
|
|
69
|
+
*/
|
|
70
|
+
export declare function finalizeDefaultLocation(accessToken: string, projectId: string, locationId: string): Promise<void>;
|
|
71
|
+
export interface FirebaseStorageBucket {
|
|
72
|
+
name: string;
|
|
73
|
+
bucketId: string;
|
|
74
|
+
reconciling?: boolean;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* List Firebase-linked Storage buckets on the project. Returns an
|
|
78
|
+
* empty list when none exist yet. Throws when the underlying service
|
|
79
|
+
* is disabled — callers should check `getStorageServiceState` first
|
|
80
|
+
* if they want to distinguish.
|
|
81
|
+
*/
|
|
82
|
+
export declare function listFirebaseBuckets(accessToken: string, projectId: string): Promise<FirebaseStorageBucket[]>;
|
|
83
|
+
/**
|
|
84
|
+
* Link a Cloud Storage bucket to Firebase Storage. Idempotent — if
|
|
85
|
+
* the bucket is already Firebase-linked, the API returns 200 with
|
|
86
|
+
* the existing record. The bucket must already exist as a GCS
|
|
87
|
+
* resource; for the default Firebase bucket name
|
|
88
|
+
* (`{projectId}.firebasestorage.app`), Firebase auto-creates it on
|
|
89
|
+
* first `:addFirebase` call.
|
|
90
|
+
*/
|
|
91
|
+
export declare function addFirebaseToBucket(accessToken: string, projectId: string, bucketId: string): Promise<FirebaseStorageBucket>;
|
|
92
|
+
/**
|
|
93
|
+
* Deploy a Storage rules source for a specific bucket. Firebase
|
|
94
|
+
* Storage uses **per-bucket** release names —
|
|
95
|
+
* `projects/{p}/releases/firebase.storage/{bucketId}` — for actual
|
|
96
|
+
* rule application. The project-wide `firebase.storage` release
|
|
97
|
+
* exists as a legacy alias but isn't bound to any bucket in modern
|
|
98
|
+
* projects; deploying to it leaves the bucket's deny-all rule
|
|
99
|
+
* unchanged.
|
|
100
|
+
*
|
|
101
|
+
* Defaults `bucketId` to `{projectId}.firebasestorage.app` (the
|
|
102
|
+
* Firebase default bucket name). Pass an override when targeting a
|
|
103
|
+
* non-default bucket.
|
|
104
|
+
*/
|
|
105
|
+
export declare function deployStorageRules(accessToken: string, projectId: string, source: string, bucketId?: string): Promise<{
|
|
106
|
+
rulesetName: string;
|
|
107
|
+
}>;
|
|
108
|
+
/**
|
|
109
|
+
* A single CORS rule entry, mirroring the GCS bucket CORS schema.
|
|
110
|
+
* See https://cloud.google.com/storage/docs/cross-origin#cors-elements.
|
|
111
|
+
*/
|
|
112
|
+
export interface CorsRule {
|
|
113
|
+
origin: string[];
|
|
114
|
+
method: string[];
|
|
115
|
+
responseHeader?: string[];
|
|
116
|
+
maxAgeSeconds?: number;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Default rule for a browser playground hosted on Firebase Hosting.
|
|
120
|
+
* Allows GET/POST/PUT/DELETE/HEAD/OPTIONS from the Hosting origin
|
|
121
|
+
* + common localhost dev ports, with response headers needed by the
|
|
122
|
+
* Firebase Storage Web SDK.
|
|
123
|
+
*/
|
|
124
|
+
export declare function defaultPlaygroundCors(hostingOrigin: string): CorsRule[];
|
|
125
|
+
/** Read the current CORS configuration for a bucket. */
|
|
126
|
+
export declare function getBucketCors(accessToken: string, bucketId: string): Promise<CorsRule[]>;
|
|
127
|
+
/**
|
|
128
|
+
* Replace the bucket's CORS configuration. Pass an empty array to
|
|
129
|
+
* clear all rules. The GCS API replaces (not merges) the cors field
|
|
130
|
+
* on PATCH.
|
|
131
|
+
*/
|
|
132
|
+
export declare function setBucketCors(accessToken: string, bucketId: string, cors: CorsRule[]): Promise<void>;
|
|
133
|
+
/**
|
|
134
|
+
* Step-boundary progress narration for {@link provisionStorage}. Lets a caller
|
|
135
|
+
* (the deploy CLI's status board) narrate the multi-second flow — most
|
|
136
|
+
* importantly the post-enable settle wait, which is otherwise a frozen terminal.
|
|
137
|
+
*/
|
|
138
|
+
export type ProvisionProgress = (event: {
|
|
139
|
+
step: string;
|
|
140
|
+
status: 'start' | 'done' | 'skip' | 'progress';
|
|
141
|
+
message: string;
|
|
142
|
+
pct?: number;
|
|
143
|
+
}) => void;
|
|
144
|
+
export interface ProvisionStorageOptions {
|
|
145
|
+
/**
|
|
146
|
+
* Default GCP resources location to use if the project hasn't been
|
|
147
|
+
* finalized yet. Ignored when the location is already set.
|
|
148
|
+
* Default: `'us-central'`.
|
|
149
|
+
*/
|
|
150
|
+
locationId?: string;
|
|
151
|
+
/**
|
|
152
|
+
* Override the default Firebase Storage bucket ID. Defaults to
|
|
153
|
+
* `{projectId}.firebasestorage.app` — the bucket Firebase Console
|
|
154
|
+
* creates automatically.
|
|
155
|
+
*/
|
|
156
|
+
bucketId?: string;
|
|
157
|
+
/**
|
|
158
|
+
* Storage rules source to deploy after the bucket is linked. When
|
|
159
|
+
* omitted, no rules are deployed (the project keeps whatever rules
|
|
160
|
+
* were last released — possibly the default deny-all).
|
|
161
|
+
*/
|
|
162
|
+
rules?: string;
|
|
163
|
+
/**
|
|
164
|
+
* CORS rules to apply to the bucket after it's linked. Required
|
|
165
|
+
* for browser-side reads/writes from a non-Firebase origin —
|
|
166
|
+
* buckets created via the Cloud Console (vs Firebase Console)
|
|
167
|
+
* often ship with no CORS configuration, which manifests as
|
|
168
|
+
* `No 'Access-Control-Allow-Origin' header` on the first
|
|
169
|
+
* `XMLHttpRequest` from a hosted page.
|
|
170
|
+
*
|
|
171
|
+
* Pass `defaultPlaygroundCors(origin)` for a sensible starter
|
|
172
|
+
* config, or a custom array. Omit to leave the bucket's CORS
|
|
173
|
+
* alone.
|
|
174
|
+
*/
|
|
175
|
+
cors?: CorsRule[];
|
|
176
|
+
/** Optional progress callback, invoked at each provisioning step boundary. */
|
|
177
|
+
onProgress?: ProvisionProgress;
|
|
178
|
+
}
|
|
179
|
+
export interface ProvisionStorageResult {
|
|
180
|
+
ok: true;
|
|
181
|
+
serviceEnabled: boolean;
|
|
182
|
+
locationFinalized: boolean;
|
|
183
|
+
locationId: string | null;
|
|
184
|
+
bucketCreated: boolean;
|
|
185
|
+
bucketId: string;
|
|
186
|
+
rulesDeployed: boolean;
|
|
187
|
+
rulesetName?: string;
|
|
188
|
+
corsApplied: boolean;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* End-to-end Storage enablement + provisioning. Each step is
|
|
192
|
+
* idempotent (probe before mutating); the result reports what was
|
|
193
|
+
* actually done.
|
|
194
|
+
*
|
|
195
|
+
* Permission requirements (caller's token):
|
|
196
|
+
* - `roles/serviceusage.serviceUsageAdmin` (or Owner) — to enable
|
|
197
|
+
* the service when it's disabled
|
|
198
|
+
* - `cloud-platform` OAuth scope (or `firebase` if service already
|
|
199
|
+
* enabled)
|
|
200
|
+
*
|
|
201
|
+
* The handler throws `StorageProvisioningError` with the
|
|
202
|
+
* underlying `reason` (e.g. `AUTH_PERMISSION_DENIED`,
|
|
203
|
+
* `SERVICE_DISABLED`) so the caller can route to actionable UX.
|
|
204
|
+
*/
|
|
205
|
+
export declare function provisionStorage(accessToken: string, projectId: string, options?: ProvisionStorageOptions): Promise<ProvisionStorageResult>;
|
|
206
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/storage/admin/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure-fetch client for the Firebase Storage provisioning APIs.
|
|
3
|
+
* Takes an OAuth access token directly — works equally from a Node
|
|
4
|
+
* agent runtime or a browser. Used by:
|
|
5
|
+
*
|
|
6
|
+
* - `ProvisionStorageHandler` server-side via the agent SDK
|
|
7
|
+
* - Consumers like the multi-tenant playground via direct import
|
|
8
|
+
*
|
|
9
|
+
* The caller is responsible for token scope. `firebase` scope is
|
|
10
|
+
* enough for the `:addFirebase` + `defaultLocation:finalize` calls,
|
|
11
|
+
* but **NOT** for enabling the underlying `firebasestorage.googleapis.com`
|
|
12
|
+
* service (which is the first-time gate). Service-enable requires
|
|
13
|
+
* `cloud-platform` scope OR a service account with
|
|
14
|
+
* `roles/serviceusage.serviceUsageAdmin`. Each function below
|
|
15
|
+
* documents which scope it needs.
|
|
16
|
+
*
|
|
17
|
+
* Endpoints under play:
|
|
18
|
+
* - serviceusage.googleapis.com/v1/projects/{p}/services/{s}:enable
|
|
19
|
+
* - firebase.googleapis.com/v1beta1/projects/{p}/defaultLocation:finalize
|
|
20
|
+
* - firebasestorage.googleapis.com/v1beta/projects/{p}/buckets
|
|
21
|
+
* - firebasestorage.googleapis.com/v1beta/projects/{p}/buckets/{b}:addFirebase
|
|
22
|
+
* - firebaserules.googleapis.com/v1/projects/{p}/releases/firebase.storage
|
|
23
|
+
*/
|
|
24
|
+
const SERVICEUSAGE_API = 'https://serviceusage.googleapis.com/v1';
|
|
25
|
+
const FIREBASE_API = 'https://firebase.googleapis.com/v1beta1';
|
|
26
|
+
const STORAGE_API = 'https://firebasestorage.googleapis.com/v1beta';
|
|
27
|
+
const RULES_API = 'https://firebaserules.googleapis.com/v1';
|
|
28
|
+
const GCS_API = 'https://storage.googleapis.com/storage/v1';
|
|
29
|
+
const STORAGE_SERVICE = 'firebasestorage.googleapis.com';
|
|
30
|
+
export class StorageProvisioningError extends Error {
|
|
31
|
+
status;
|
|
32
|
+
body;
|
|
33
|
+
reason;
|
|
34
|
+
constructor(status, body, reason, message) {
|
|
35
|
+
super(message);
|
|
36
|
+
this.status = status;
|
|
37
|
+
this.body = body;
|
|
38
|
+
this.reason = reason;
|
|
39
|
+
this.name = 'StorageProvisioningError';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function parseError(body) {
|
|
43
|
+
try {
|
|
44
|
+
const parsed = JSON.parse(body);
|
|
45
|
+
const reason = parsed.error?.details?.find((d) => d.reason)?.reason;
|
|
46
|
+
return {
|
|
47
|
+
reason,
|
|
48
|
+
message: parsed.error?.message ?? body.slice(0, 400),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return { reason: undefined, message: body.slice(0, 400) };
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async function bearer(accessToken, url, init) {
|
|
56
|
+
const r = await fetch(url, {
|
|
57
|
+
...init,
|
|
58
|
+
headers: {
|
|
59
|
+
Authorization: `Bearer ${accessToken}`,
|
|
60
|
+
...(init?.body ? { 'Content-Type': 'application/json' } : {}),
|
|
61
|
+
...(init?.headers ?? {}),
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
const body = r.ok ? '' : await r.text().catch(() => '');
|
|
65
|
+
return { status: r.status, ok: r.ok, body, response: r };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Probe whether the `firebasestorage.googleapis.com` service is
|
|
69
|
+
* enabled on the project. Cheap, uses Service Usage `GET`. Requires
|
|
70
|
+
* `serviceusage.services.get` permission (the default Firebase Admin
|
|
71
|
+
* SDK SA has this; user OAuth tokens with `firebase` scope do not).
|
|
72
|
+
*
|
|
73
|
+
* Returns `'unknown'` on permission failures so callers can downgrade
|
|
74
|
+
* to "try the operation; observe SERVICE_DISABLED" rather than block.
|
|
75
|
+
*/
|
|
76
|
+
export async function getStorageServiceState(accessToken, projectId) {
|
|
77
|
+
const r = await bearer(accessToken, `${SERVICEUSAGE_API}/projects/${encodeURIComponent(projectId)}/services/${STORAGE_SERVICE}`);
|
|
78
|
+
if (!r.ok)
|
|
79
|
+
return 'unknown';
|
|
80
|
+
const parsed = await r.response.json();
|
|
81
|
+
if (parsed.state === 'ENABLED')
|
|
82
|
+
return 'enabled';
|
|
83
|
+
if (parsed.state === 'DISABLED')
|
|
84
|
+
return 'disabled';
|
|
85
|
+
return 'unknown';
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Enable `firebasestorage.googleapis.com` on the project. Requires
|
|
89
|
+
* `serviceusage.services.enable` IAM permission — included in
|
|
90
|
+
* `roles/owner`, `roles/editor` (deprecated), or
|
|
91
|
+
* `roles/serviceusage.serviceUsageAdmin`. The default Firebase Admin
|
|
92
|
+
* SDK service account does NOT have this; the caller's token must
|
|
93
|
+
* either be a user-OAuth with `cloud-platform` scope or a SA with
|
|
94
|
+
* the elevated role.
|
|
95
|
+
*
|
|
96
|
+
* Long-running operation under the hood; the response carries an
|
|
97
|
+
* operation name. We don't poll — the response 200 is enough signal
|
|
98
|
+
* for our purposes, and a brief settle delay handles propagation.
|
|
99
|
+
*/
|
|
100
|
+
export async function enableStorageService(accessToken, projectId) {
|
|
101
|
+
const r = await bearer(accessToken, `${SERVICEUSAGE_API}/projects/${encodeURIComponent(projectId)}/services/${STORAGE_SERVICE}:enable`, { method: 'POST', body: JSON.stringify({}) });
|
|
102
|
+
if (!r.ok) {
|
|
103
|
+
const { reason, message } = parseError(r.body);
|
|
104
|
+
throw new StorageProvisioningError(r.status, r.body, reason, `Failed to enable ${STORAGE_SERVICE}: ${r.status} ${message}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// ─── Default location ─────────────────────────────────────────────────
|
|
108
|
+
/**
|
|
109
|
+
* Read the project's current default GCP resources location. Returns
|
|
110
|
+
* null when the project hasn't been finalized yet — e.g. brand-new
|
|
111
|
+
* Firebase projects with no resources. `firebase` scope is sufficient.
|
|
112
|
+
*/
|
|
113
|
+
export async function getDefaultLocation(accessToken, projectId) {
|
|
114
|
+
const r = await bearer(accessToken, `${FIREBASE_API}/projects/${encodeURIComponent(projectId)}`);
|
|
115
|
+
if (!r.ok) {
|
|
116
|
+
const { message } = parseError(r.body);
|
|
117
|
+
throw new StorageProvisioningError(r.status, r.body, undefined, `getProject: ${r.status} ${message}`);
|
|
118
|
+
}
|
|
119
|
+
const project = await r.response.json();
|
|
120
|
+
return project.resources?.locationId ?? null;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Set the project's default GCP resources location. IRREVERSIBLE —
|
|
124
|
+
* once set, the location cannot be changed. Skip-if-set is the
|
|
125
|
+
* caller's job; this function unconditionally calls `:finalize`.
|
|
126
|
+
*
|
|
127
|
+
* Per observed behavior, `:finalize` 404s on projects that already
|
|
128
|
+
* have resources provisioned (RTDB, Hosting) without a default
|
|
129
|
+
* location. The error path surfaces that to the caller.
|
|
130
|
+
*/
|
|
131
|
+
export async function finalizeDefaultLocation(accessToken, projectId, locationId) {
|
|
132
|
+
const r = await bearer(accessToken, `${FIREBASE_API}/projects/${encodeURIComponent(projectId)}/defaultLocation:finalize`, { method: 'POST', body: JSON.stringify({ locationId }) });
|
|
133
|
+
if (!r.ok) {
|
|
134
|
+
const { reason, message } = parseError(r.body);
|
|
135
|
+
throw new StorageProvisioningError(r.status, r.body, reason, `defaultLocation:finalize ${locationId}: ${r.status} ${message}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* List Firebase-linked Storage buckets on the project. Returns an
|
|
140
|
+
* empty list when none exist yet. Throws when the underlying service
|
|
141
|
+
* is disabled — callers should check `getStorageServiceState` first
|
|
142
|
+
* if they want to distinguish.
|
|
143
|
+
*/
|
|
144
|
+
export async function listFirebaseBuckets(accessToken, projectId) {
|
|
145
|
+
const r = await bearer(accessToken, `${STORAGE_API}/projects/${encodeURIComponent(projectId)}/buckets`);
|
|
146
|
+
if (!r.ok) {
|
|
147
|
+
const { reason, message } = parseError(r.body);
|
|
148
|
+
throw new StorageProvisioningError(r.status, r.body, reason, `listBuckets: ${r.status} ${message}`);
|
|
149
|
+
}
|
|
150
|
+
const body = await r.response.json();
|
|
151
|
+
return (body.buckets ?? []).map((b) => ({
|
|
152
|
+
name: b.name,
|
|
153
|
+
bucketId: b.name.split('/').pop() ?? b.name,
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Link a Cloud Storage bucket to Firebase Storage. Idempotent — if
|
|
158
|
+
* the bucket is already Firebase-linked, the API returns 200 with
|
|
159
|
+
* the existing record. The bucket must already exist as a GCS
|
|
160
|
+
* resource; for the default Firebase bucket name
|
|
161
|
+
* (`{projectId}.firebasestorage.app`), Firebase auto-creates it on
|
|
162
|
+
* first `:addFirebase` call.
|
|
163
|
+
*/
|
|
164
|
+
export async function addFirebaseToBucket(accessToken, projectId, bucketId) {
|
|
165
|
+
const r = await bearer(accessToken, `${STORAGE_API}/projects/${encodeURIComponent(projectId)}/buckets/${encodeURIComponent(bucketId)}:addFirebase`, { method: 'POST', body: JSON.stringify({}) });
|
|
166
|
+
if (!r.ok) {
|
|
167
|
+
const { reason, message } = parseError(r.body);
|
|
168
|
+
throw new StorageProvisioningError(r.status, r.body, reason, `addFirebase ${bucketId}: ${r.status} ${message}`);
|
|
169
|
+
}
|
|
170
|
+
const body = await r.response.json();
|
|
171
|
+
return {
|
|
172
|
+
name: body.name ?? `projects/${projectId}/buckets/${bucketId}`,
|
|
173
|
+
bucketId,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
// ─── Storage rules helpers ────────────────────────────────────────────
|
|
177
|
+
/**
|
|
178
|
+
* Deploy a Storage rules source for a specific bucket. Firebase
|
|
179
|
+
* Storage uses **per-bucket** release names —
|
|
180
|
+
* `projects/{p}/releases/firebase.storage/{bucketId}` — for actual
|
|
181
|
+
* rule application. The project-wide `firebase.storage` release
|
|
182
|
+
* exists as a legacy alias but isn't bound to any bucket in modern
|
|
183
|
+
* projects; deploying to it leaves the bucket's deny-all rule
|
|
184
|
+
* unchanged.
|
|
185
|
+
*
|
|
186
|
+
* Defaults `bucketId` to `{projectId}.firebasestorage.app` (the
|
|
187
|
+
* Firebase default bucket name). Pass an override when targeting a
|
|
188
|
+
* non-default bucket.
|
|
189
|
+
*/
|
|
190
|
+
export async function deployStorageRules(accessToken, projectId, source, bucketId = `${projectId}.firebasestorage.app`) {
|
|
191
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
192
|
+
const create = await bearer(accessToken, `${RULES_API}/projects/${encodeURIComponent(projectId)}/rulesets`, {
|
|
193
|
+
method: 'POST',
|
|
194
|
+
headers,
|
|
195
|
+
body: JSON.stringify({ source: { files: [{ name: 'storage.rules', content: source }] } }),
|
|
196
|
+
});
|
|
197
|
+
if (!create.ok) {
|
|
198
|
+
const { reason, message } = parseError(create.body);
|
|
199
|
+
throw new StorageProvisioningError(create.status, create.body, reason, `createRuleset: ${create.status} ${message}`);
|
|
200
|
+
}
|
|
201
|
+
const created = await create.response.json();
|
|
202
|
+
const releaseName = `projects/${projectId}/releases/firebase.storage/${bucketId}`;
|
|
203
|
+
// PATCH updates an existing release; if no release exists yet
|
|
204
|
+
// (project just had Storage enabled, no rules ever deployed),
|
|
205
|
+
// PATCH 404s. Fall back to POST `releases.create` to mint the
|
|
206
|
+
// release the first time.
|
|
207
|
+
const patch = await bearer(accessToken, `${RULES_API}/${releaseName}`, {
|
|
208
|
+
method: 'PATCH',
|
|
209
|
+
headers,
|
|
210
|
+
body: JSON.stringify({ release: { name: releaseName, rulesetName: created.name } }),
|
|
211
|
+
});
|
|
212
|
+
if (patch.ok)
|
|
213
|
+
return { rulesetName: created.name };
|
|
214
|
+
if (patch.status === 404) {
|
|
215
|
+
const createRelease = await bearer(accessToken, `${RULES_API}/projects/${encodeURIComponent(projectId)}/releases`, {
|
|
216
|
+
method: 'POST',
|
|
217
|
+
headers,
|
|
218
|
+
body: JSON.stringify({ name: releaseName, rulesetName: created.name }),
|
|
219
|
+
});
|
|
220
|
+
if (!createRelease.ok) {
|
|
221
|
+
const { reason, message } = parseError(createRelease.body);
|
|
222
|
+
throw new StorageProvisioningError(createRelease.status, createRelease.body, reason, `createRelease firebase.storage/${bucketId}: ${createRelease.status} ${message}`);
|
|
223
|
+
}
|
|
224
|
+
return { rulesetName: created.name };
|
|
225
|
+
}
|
|
226
|
+
const { reason, message } = parseError(patch.body);
|
|
227
|
+
throw new StorageProvisioningError(patch.status, patch.body, reason, `updateRelease firebase.storage/${bucketId}: ${patch.status} ${message}`);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Default rule for a browser playground hosted on Firebase Hosting.
|
|
231
|
+
* Allows GET/POST/PUT/DELETE/HEAD/OPTIONS from the Hosting origin
|
|
232
|
+
* + common localhost dev ports, with response headers needed by the
|
|
233
|
+
* Firebase Storage Web SDK.
|
|
234
|
+
*/
|
|
235
|
+
export function defaultPlaygroundCors(hostingOrigin) {
|
|
236
|
+
return [{
|
|
237
|
+
origin: [hostingOrigin, 'http://localhost:5173', 'http://localhost:3000', 'http://localhost:4173'],
|
|
238
|
+
method: ['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS'],
|
|
239
|
+
responseHeader: ['Content-Type', 'Authorization', 'x-goog-meta-*', 'x-firebase-storage-version', 'x-goog-upload-*'],
|
|
240
|
+
maxAgeSeconds: 3600,
|
|
241
|
+
}];
|
|
242
|
+
}
|
|
243
|
+
/** Read the current CORS configuration for a bucket. */
|
|
244
|
+
export async function getBucketCors(accessToken, bucketId) {
|
|
245
|
+
const r = await bearer(accessToken, `${GCS_API}/b/${encodeURIComponent(bucketId)}?fields=cors`);
|
|
246
|
+
if (!r.ok) {
|
|
247
|
+
const { reason, message } = parseError(r.body);
|
|
248
|
+
throw new StorageProvisioningError(r.status, r.body, reason, `getBucketCors ${bucketId}: ${r.status} ${message}`);
|
|
249
|
+
}
|
|
250
|
+
const body = await r.response.json();
|
|
251
|
+
return body.cors ?? [];
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Replace the bucket's CORS configuration. Pass an empty array to
|
|
255
|
+
* clear all rules. The GCS API replaces (not merges) the cors field
|
|
256
|
+
* on PATCH.
|
|
257
|
+
*/
|
|
258
|
+
export async function setBucketCors(accessToken, bucketId, cors) {
|
|
259
|
+
const r = await bearer(accessToken, `${GCS_API}/b/${encodeURIComponent(bucketId)}?fields=cors`, {
|
|
260
|
+
method: 'PATCH',
|
|
261
|
+
body: JSON.stringify({ cors }),
|
|
262
|
+
});
|
|
263
|
+
if (!r.ok) {
|
|
264
|
+
const { reason, message } = parseError(r.body);
|
|
265
|
+
throw new StorageProvisioningError(r.status, r.body, reason, `setBucketCors ${bucketId}: ${r.status} ${message}`);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* End-to-end Storage enablement + provisioning. Each step is
|
|
270
|
+
* idempotent (probe before mutating); the result reports what was
|
|
271
|
+
* actually done.
|
|
272
|
+
*
|
|
273
|
+
* Permission requirements (caller's token):
|
|
274
|
+
* - `roles/serviceusage.serviceUsageAdmin` (or Owner) — to enable
|
|
275
|
+
* the service when it's disabled
|
|
276
|
+
* - `cloud-platform` OAuth scope (or `firebase` if service already
|
|
277
|
+
* enabled)
|
|
278
|
+
*
|
|
279
|
+
* The handler throws `StorageProvisioningError` with the
|
|
280
|
+
* underlying `reason` (e.g. `AUTH_PERMISSION_DENIED`,
|
|
281
|
+
* `SERVICE_DISABLED`) so the caller can route to actionable UX.
|
|
282
|
+
*/
|
|
283
|
+
export async function provisionStorage(accessToken, projectId, options = {}) {
|
|
284
|
+
const locationId = options.locationId ?? 'us-central';
|
|
285
|
+
const bucketId = options.bucketId ?? `${projectId}.firebasestorage.app`;
|
|
286
|
+
const report = options.onProgress;
|
|
287
|
+
// Step 1: enable the service if needed.
|
|
288
|
+
let serviceEnabled = false;
|
|
289
|
+
const state = await getStorageServiceState(accessToken, projectId);
|
|
290
|
+
if (state !== 'enabled') {
|
|
291
|
+
report?.({ step: 'enable-service', status: 'start', message: 'enabling Storage API' });
|
|
292
|
+
await enableStorageService(accessToken, projectId);
|
|
293
|
+
serviceEnabled = true;
|
|
294
|
+
// Brief settle — service-enable is async; immediate buckets
|
|
295
|
+
// calls otherwise still 403 with SERVICE_DISABLED for a few seconds.
|
|
296
|
+
// The progress frame here is what keeps the terminal alive through the wait.
|
|
297
|
+
report?.({ step: 'settle', status: 'start', message: 'waiting for service propagation' });
|
|
298
|
+
await new Promise((r) => setTimeout(r, 5000));
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
report?.({ step: 'enable-service', status: 'skip', message: 'Storage API already enabled' });
|
|
302
|
+
}
|
|
303
|
+
// Step 2: finalize default location if missing.
|
|
304
|
+
const existingLocation = await getDefaultLocation(accessToken, projectId);
|
|
305
|
+
let locationFinalized = false;
|
|
306
|
+
let finalLocation = existingLocation;
|
|
307
|
+
if (!existingLocation) {
|
|
308
|
+
await finalizeDefaultLocation(accessToken, projectId, locationId);
|
|
309
|
+
locationFinalized = true;
|
|
310
|
+
finalLocation = locationId;
|
|
311
|
+
}
|
|
312
|
+
// Step 3: ensure the default Firebase bucket is linked.
|
|
313
|
+
const existing = await listFirebaseBuckets(accessToken, projectId);
|
|
314
|
+
const alreadyLinked = existing.some((b) => b.bucketId === bucketId);
|
|
315
|
+
let bucketCreated = false;
|
|
316
|
+
if (!alreadyLinked) {
|
|
317
|
+
report?.({ step: 'bucket', status: 'start', message: `creating bucket ${bucketId}` });
|
|
318
|
+
await addFirebaseToBucket(accessToken, projectId, bucketId);
|
|
319
|
+
bucketCreated = true;
|
|
320
|
+
}
|
|
321
|
+
// Step 4: optionally deploy rules.
|
|
322
|
+
let rulesDeployed = false;
|
|
323
|
+
let rulesetName;
|
|
324
|
+
if (options.rules) {
|
|
325
|
+
report?.({ step: 'rules', status: 'start', message: 'deploying Storage rules' });
|
|
326
|
+
const result = await deployStorageRules(accessToken, projectId, options.rules, bucketId);
|
|
327
|
+
rulesDeployed = true;
|
|
328
|
+
rulesetName = result.rulesetName;
|
|
329
|
+
}
|
|
330
|
+
// Step 5: optionally apply CORS. Idempotent — caller passes the
|
|
331
|
+
// desired final state and we PATCH the bucket to match.
|
|
332
|
+
let corsApplied = false;
|
|
333
|
+
if (options.cors) {
|
|
334
|
+
await setBucketCors(accessToken, bucketId, options.cors);
|
|
335
|
+
corsApplied = true;
|
|
336
|
+
}
|
|
337
|
+
return {
|
|
338
|
+
ok: true,
|
|
339
|
+
serviceEnabled,
|
|
340
|
+
locationFinalized,
|
|
341
|
+
locationId: finalLocation,
|
|
342
|
+
bucketCreated,
|
|
343
|
+
bucketId,
|
|
344
|
+
rulesDeployed,
|
|
345
|
+
rulesetName,
|
|
346
|
+
corsApplied,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
//# sourceMappingURL=api.js.map
|