backend-manager 5.9.25 → 5.9.26

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/CLAUDE.md CHANGED
@@ -41,10 +41,13 @@ All `npx mgr <cmd>` aliases work: `npx bm <cmd>`, `npx bem <cmd>`, `npx backend-
41
41
 
42
42
  ### For Framework Development (This Repository)
43
43
 
44
+ > **🚫 NEVER use `npx mgr ...` from the framework repo.** `npx mgr` is for CONSUMER projects (where the bin is linked in `functions/node_modules/.bin/`). From the framework repo, use `npm test`, `npm run prepare`, etc. — the `scripts` in `package.json` call the local `bin/` directly.
45
+
44
46
  1. `npm install` — install BEM's own deps
45
47
  2. `npm run prepare` — build once: copies `src/` → `dist/` via prepare-package
46
48
  3. `npm run prepare:watch` — watch mode
47
- 4. Test in the **designated test consumer** `../ultimate-jekyll-backend` is BEM's consumer for validating framework changes end-to-end (exercise any consumer-level flow there freely: emulator, tests, deploy paths). From inside it, run `npx mgr install dev` to swap BEM to this local repo — required whenever you edit the framework source and want the consumer to pick up the changes (the consumer otherwise keeps its installed `node_modules/backend-manager`). Reverse with `npx mgr install live`. If `npx mgr` then errors with "could not determine executable to run", the local install skipped bin-linking — re-run `npm install` to relink, or call `node node_modules/backend-manager/bin/backend-manager <cmd>` directly.
49
+ 4. `npm test`run framework tests via the bundled fixture project (equivalent to `node bin/backend-manager test`). Accepts the same target syntax: `npm test -- mgr:helpers/content/blog-auto-publisher`
50
+ 5. Test in the **designated test consumer** — `../ultimate-jekyll-backend` is BEM's consumer for validating framework changes end-to-end (exercise any consumer-level flow there freely: emulator, tests, deploy paths). From inside it, run `npx mgr install dev` to swap BEM to this local repo — required whenever you edit the framework source and want the consumer to pick up the changes (the consumer otherwise keeps its installed `node_modules/backend-manager`). Reverse with `npx mgr install live`. If `npx mgr` then errors with "could not determine executable to run", the local install skipped bin-linking — re-run `npm install` to relink, or call `node node_modules/backend-manager/bin/backend-manager <cmd>` directly.
48
51
 
49
52
  ## Architecture
50
53
 
@@ -91,7 +94,8 @@ See [docs/cli-firestore-auth.md](docs/cli-firestore-auth.md) and [docs/cli-logs.
91
94
 
92
95
  ## Development Workflow
93
96
 
94
- - **🚫 NEVER run `npx mgr serve` / `npx mgr emulator`**they're the user's long-running dev processes. Assume they're already running; if they aren't, **instruct the user to run them** rather than running them yourself (running them again kills theirs). To see output, **read the `functions/*.log` files** (`dev.log`, `emulator.log`, `test.log`) never tail/attach to the process. Running `npx mgr test` is fine (it auto-starts its own emulator if needed).
97
+ - **🚫 NEVER use `npx mgr ...` from the framework repo**`npx mgr` is for CONSUMER projects only (where the bin lives in `functions/node_modules/.bin/`). From the framework repo, use `npm test`, `npm run prepare`, etc. the `scripts` in `package.json` call `node bin/backend-manager` directly. This applies to ALL four OMEGA frameworks (BEM/UJM/BXM/EM).
98
+ - **🚫 NEVER run `npx mgr serve` / `npx mgr emulator`** (consumer projects) — they're the user's long-running dev processes. Assume they're already running; if they aren't, **instruct the user to run them** rather than running them yourself (running them again kills theirs). To see output, **read the `functions/*.log` files** (`dev.log`, `emulator.log`, `test.log`) — never tail/attach to the process. Running `npx mgr test` is fine (it auto-starts its own emulator if needed).
95
99
  - **Where the output logs live:** BEM CLI commands tee output to `<projectDir>/functions/` (not `logs/` — BEM's deliberate exception, co-located with firebase-tools' `*-debug.log`): `dev.log` (`npx mgr serve`), `deploy.log` (`npx mgr deploy`), `emulator.log` (`npx mgr emulator` / test with own emulator), `test.log` (`npx mgr test`), `production.log` (`npx mgr logs`). The `dev`/`test` names match EM/BXM/UJM; see [docs/logging.md](docs/logging.md).
96
100
  - **If the user reports an error**, check the emulator/test output for the root cause before guessing.
97
101
  - **Live-test UI changes via CDP.** When working on admin dashboards or browser-facing endpoints, use the `chrome-devtools` MCP tools (screenshots, click, evaluate JS, console logs) to verify the change works in the running browser. See `~/.claude/mcp-server/servers/chrome-devtools/CLAUDE.md`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "backend-manager",
3
- "version": "5.9.25",
3
+ "version": "5.9.26",
4
4
  "description": "Quick tools for developing Firebase functions",
5
5
  "main": "src/manager/index.js",
6
6
  "files": [
@@ -70,22 +70,22 @@
70
70
  "@anthropic-ai/sdk": "^0.99.0",
71
71
  "@firebase/rules-unit-testing": "^5.0.1",
72
72
  "@google-cloud/firestore": "^7.11.6",
73
- "@google-cloud/pubsub": "^5.3.0",
74
- "@google-cloud/storage": "^7.19.0",
75
- "@inquirer/prompts": "^8.5.0",
73
+ "@google-cloud/pubsub": "^5.3.1",
74
+ "@google-cloud/storage": "^7.21.0",
75
+ "@inquirer/prompts": "^8.5.2",
76
76
  "@modelcontextprotocol/sdk": "^1.29.0",
77
77
  "@octokit/rest": "^22.0.1",
78
78
  "@resvg/resvg-js": "^2.6.2",
79
79
  "@sendgrid/mail": "^8.1.6",
80
80
  "@sentry/node": "^10.54.0",
81
- "body-parser": "^2.2.2",
81
+ "body-parser": "^2.3.0",
82
82
  "busboy": "^1.6.0",
83
83
  "chalk": "^5.6.2",
84
84
  "cheerio": "^1.2.0",
85
85
  "cors": "^2.8.6",
86
86
  "dotenv": "^17.4.2",
87
87
  "express": "^5.2.1",
88
- "fast-xml-parser": "^5.9.2",
88
+ "fast-xml-parser": "^5.9.3",
89
89
  "fs-jetpack": "^5.1.0",
90
90
  "glob": "^13.0.6",
91
91
  "hcaptcha": "^0.2.0",
@@ -103,11 +103,11 @@
103
103
  "node-powertools": "^3.0.0",
104
104
  "npm-api": "^1.0.1",
105
105
  "pushid": "^1.0.0",
106
- "sanitize-html": "^2.17.4",
107
- "sharp": "^0.34.5",
106
+ "sanitize-html": "^2.17.5",
107
+ "sharp": "^0.35.2",
108
108
  "stripe": "^22.2.0",
109
109
  "uid-generator": "^2.0.0",
110
- "uuid": "^14.0.0",
110
+ "uuid": "^14.0.1",
111
111
  "wonderful-fetch": "^2.0.5",
112
112
  "wonderful-log": "^1.0.7",
113
113
  "wonderful-version": "^1.3.2",
@@ -2,5 +2,5 @@
2
2
  "env": {
3
3
  "TEST_EXTENDED_MODE": ""
4
4
  },
5
- "updatedAt": "2026-06-30T09:27:32.974Z"
5
+ "updatedAt": "2026-06-30T09:47:03.821Z"
6
6
  }
@@ -2,7 +2,11 @@ WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
2
2
  WARNING: sun.misc.Unsafe::objectFieldOffset has been called by akka.util.Unsafe (file:/Users/ian/.cache/firebase/emulators/firebase-database-emulator-v4.11.2.jar)
3
3
  WARNING: Please consider reporting this to the maintainers of class akka.util.Unsafe
4
4
  WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release
5
- 02:27:39.303 [NamespaceSystem-akka.actor.default-dispatcher-4] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started
6
- 02:27:39.394 [main] INFO com.firebase.server.forge.App$ - Listening at 127.0.0.1:9000
7
- 02:27:48.479 [Thread-0] INFO com.firebase.server.forge.App$ - Attempting graceful shutdown.
8
- 02:27:48.481 [Thread-0] INFO com.firebase.server.forge.App$ - Graceful shutdown complete.
5
+ 02:47:10.430 [NamespaceSystem-akka.actor.default-dispatcher-4] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started
6
+ 02:47:10.526 [main] INFO com.firebase.server.forge.App$ - Listening at 127.0.0.1:9000
7
+ 02:47:20.571 [NamespaceSystem-akka.actor.default-dispatcher-4] INFO com.firebase.core.namespace.NamespaceActor - demo-backend-manager-default-rtdb successfully activated FBKV (SurveyIdle(0)) wait: 68ms, init: 0ms
8
+ 02:47:20.599 [NamespaceSystem-blocking-namespace-operation-dispatcher-6] INFO com.firebase.core.namespace.StateManager - Namespace demo-backend-manager-default-rtdb status Active to Active
9
+ 02:47:32.673 [Thread-0] INFO com.firebase.server.forge.App$ - Attempting graceful shutdown.
10
+ 02:47:32.678 [NamespaceSystem-akka.actor.default-dispatcher-4] INFO com.firebase.core.namespace.Terminator$Terminator - 1 actors left to terminate: demo-backend-manager-default-rtdb
11
+ 02:47:32.681 [NamespaceSystem-akka.actor.default-dispatcher-5] INFO com.firebase.core.namespace.NamespaceActor - stopped namespace actor for demo-backend-manager-default-rtdb
12
+ 02:47:32.684 [Thread-0] INFO com.firebase.server.forge.App$ - Graceful shutdown complete.
@@ -2,7 +2,7 @@ WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
2
2
  WARNING: sun.misc.Unsafe::allocateMemory has been called by io.netty.util.internal.PlatformDependent0$2 (file:/Users/ian/.cache/firebase/emulators/cloud-firestore-emulator-v1.21.0.jar)
3
3
  WARNING: Please consider reporting this to the maintainers of class io.netty.util.internal.PlatformDependent0$2
4
4
  WARNING: sun.misc.Unsafe::allocateMemory will be removed in a future release
5
- Jun 30, 2026 2:27:38 AM com.google.cloud.datastore.emulator.firestore.websocket.WebSocketServer start
5
+ Jun 30, 2026 2:47:09 AM com.google.cloud.datastore.emulator.firestore.websocket.WebSocketServer start
6
6
  INFO: Started WebSocket server on ws://127.0.0.1:9150
7
7
 
8
8
  API endpoint: http://127.0.0.1:8080
@@ -20,5 +20,115 @@ If you are running a Firestore in Datastore Mode project, run:
20
20
  Note: Support for Datastore Mode is in preview. If you encounter any bugs please file at https://github.com/firebase/firebase-tools/issues.
21
21
  Dev App Server is now running.
22
22
 
23
+ Jun 30, 2026 2:47:19 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
24
+ INFO: Detected non-HTTP/2 connection.
25
+ Jun 30, 2026 2:47:20 AM io.grpc.netty.TcpMetrics loadEpollInfo
26
+ INFO: Epoll available during static init of TcpMetrics:false
27
+ Jun 30, 2026 2:47:20 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
28
+ INFO: Detected HTTP/2 connection.
29
+ Jun 30, 2026 2:47:21 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
30
+ INFO: Detected HTTP/2 connection.
31
+ Jun 30, 2026 2:47:21 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
32
+ INFO: Detected HTTP/2 connection.
33
+ Jun 30, 2026 2:47:30 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
34
+ INFO: Detected HTTP/2 connection.
35
+ Jun 30, 2026 2:47:30 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
36
+ INFO: Detected HTTP/2 connection.
37
+ Jun 30, 2026 2:47:30 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
38
+ INFO: Detected HTTP/2 connection.
39
+ Jun 30, 2026 2:47:30 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
40
+ INFO: Detected HTTP/2 connection.
41
+ Jun 30, 2026 2:47:30 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
42
+ INFO: Detected HTTP/2 connection.
43
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
44
+ INFO: Detected HTTP/2 connection.
45
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
46
+ INFO: Detected HTTP/2 connection.
47
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
48
+ INFO: Detected HTTP/2 connection.
49
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
50
+ INFO: Detected HTTP/2 connection.
51
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
52
+ INFO: Detected HTTP/2 connection.
53
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
54
+ INFO: Detected HTTP/2 connection.
55
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
56
+ INFO: Detected HTTP/2 connection.
57
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
58
+ INFO: Detected HTTP/2 connection.
59
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
60
+ INFO: Detected HTTP/2 connection.
61
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
62
+ INFO: Detected HTTP/2 connection.
63
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
64
+ INFO: Detected HTTP/2 connection.
65
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
66
+ INFO: Detected HTTP/2 connection.
67
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
68
+ INFO: Detected HTTP/2 connection.
69
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
70
+ INFO: Detected HTTP/2 connection.
71
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
72
+ INFO: Detected HTTP/2 connection.
73
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
74
+ INFO: Detected HTTP/2 connection.
75
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
76
+ INFO: Detected HTTP/2 connection.
77
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
78
+ INFO: Detected HTTP/2 connection.
79
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
80
+ INFO: Detected HTTP/2 connection.
81
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
82
+ INFO: Detected HTTP/2 connection.
83
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
84
+ INFO: Detected HTTP/2 connection.
85
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
86
+ INFO: Detected HTTP/2 connection.
87
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
88
+ INFO: Detected HTTP/2 connection.
89
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
90
+ INFO: Detected HTTP/2 connection.
91
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
92
+ INFO: Detected HTTP/2 connection.
93
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
94
+ INFO: Detected HTTP/2 connection.
95
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
96
+ INFO: Detected HTTP/2 connection.
97
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
98
+ INFO: Detected HTTP/2 connection.
99
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
100
+ INFO: Detected HTTP/2 connection.
101
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
102
+ INFO: Detected HTTP/2 connection.
103
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
104
+ INFO: Detected HTTP/2 connection.
105
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
106
+ INFO: Detected HTTP/2 connection.
107
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
108
+ INFO: Detected HTTP/2 connection.
109
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
110
+ INFO: Detected HTTP/2 connection.
111
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
112
+ INFO: Detected HTTP/2 connection.
113
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
114
+ INFO: Detected HTTP/2 connection.
115
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
116
+ INFO: Detected HTTP/2 connection.
117
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
118
+ INFO: Detected HTTP/2 connection.
119
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
120
+ INFO: Detected HTTP/2 connection.
121
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
122
+ INFO: Detected HTTP/2 connection.
123
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
124
+ INFO: Detected HTTP/2 connection.
125
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
126
+ INFO: Detected HTTP/2 connection.
127
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
128
+ INFO: Detected HTTP/2 connection.
129
+ Jun 30, 2026 2:47:31 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
130
+ INFO: Detected HTTP/2 connection.
131
+ Jun 30, 2026 2:47:32 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
132
+ INFO: Detected HTTP/2 connection.
23
133
  *** shutting down gRPC server since JVM is shutting down
24
134
  *** server shut down
@@ -1,6 +1,6 @@
1
1
  This is the Google Pub/Sub fake.
2
2
  Implementation may be incomplete or differ from the real system.
3
- Jun 30, 2026 2:27:42 AM com.google.cloud.pubsub.testing.v1.Main main
3
+ Jun 30, 2026 2:47:13 AM com.google.cloud.pubsub.testing.v1.Main main
4
4
  INFO: IAM integration is disabled. IAM policy methods and ACL checks are not supported
5
5
  SLF4J(W): No SLF4J providers were found.
6
6
  SLF4J(W): Defaulting to no-operation (NOP) logger implementation
@@ -9,7 +9,9 @@ WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
9
9
  WARNING: sun.misc.Unsafe::allocateMemory has been called by io.netty.util.internal.PlatformDependent0$2 (file:/Users/ian/.cache/firebase/emulators/pubsub-emulator-0.8.33/pubsub-emulator/lib/cloud-pubsub-emulator-0.8.33-all.jar)
10
10
  WARNING: Please consider reporting this to the maintainers of class io.netty.util.internal.PlatformDependent0$2
11
11
  WARNING: sun.misc.Unsafe::allocateMemory will be removed in a future release
12
- Jun 30, 2026 2:27:42 AM com.google.cloud.pubsub.testing.v1.Main main
12
+ Jun 30, 2026 2:47:14 AM com.google.cloud.pubsub.testing.v1.Main main
13
13
  INFO: Server started, listening on 8085
14
+ Jun 30, 2026 2:47:20 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
15
+ INFO: Detected HTTP/2 connection.
14
16
  *** shutting down gRPC server since JVM is shutting down
15
17
  *** server shut down