@mono-labs/dev 0.1.265 → 0.1.267
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 +6 -3
- package/dist/cache-relay.d.ts +7 -3
- package/dist/cache-relay.d.ts.map +1 -1
- package/dist/cache-relay.js +11 -6
- package/dist/local-server/index.d.ts +2 -2
- package/dist/local-server/index.d.ts.map +1 -1
- package/dist/local-server/index.js +5 -2
- package/dist/websocket/channel-store.js +8 -8
- package/package.json +1 -1
- package/src/cache-relay.ts +11 -6
- package/src/local-server/index.ts +61 -48
- package/src/websocket/channel-store.ts +8 -8
package/README.md
CHANGED
|
@@ -198,14 +198,17 @@ Redis abstraction with namespaced operations. Requires `ioredis` peer dependency
|
|
|
198
198
|
```typescript
|
|
199
199
|
import { getCacheRelay } from '@mono-labs/dev'
|
|
200
200
|
|
|
201
|
-
// Auto-connects using process.env.
|
|
201
|
+
// Auto-connects using process.env.CUSTOM_REDIS_URL (defaults to localhost:6379)
|
|
202
202
|
const cache = getCacheRelay()
|
|
203
|
+
|
|
204
|
+
// Or specify a custom env var name:
|
|
205
|
+
const cache2 = getCacheRelay('MY_REDIS')
|
|
203
206
|
```
|
|
204
207
|
|
|
205
|
-
Set `
|
|
208
|
+
Set `CUSTOM_REDIS_URL` to override the default connection target:
|
|
206
209
|
|
|
207
210
|
```bash
|
|
208
|
-
|
|
211
|
+
CUSTOM_REDIS_URL=my-redis-host:6380 node app.js
|
|
209
212
|
```
|
|
210
213
|
|
|
211
214
|
**Top-level convenience methods:**
|
package/dist/cache-relay.d.ts
CHANGED
|
@@ -146,17 +146,21 @@ export interface CacheRelay {
|
|
|
146
146
|
/**
|
|
147
147
|
* Initialize (or reinitialize) the CacheRelay singleton.
|
|
148
148
|
*
|
|
149
|
-
*
|
|
149
|
+
* @param envVarName - Name of the environment variable holding the Redis
|
|
150
|
+
* `host:port` connection string. Defaults to `CUSTOM_REDIS_URL`.
|
|
151
|
+
* When the env var is unset the relay falls back to `localhost:6379`.
|
|
150
152
|
* @returns the CacheRelay instance
|
|
151
153
|
*
|
|
152
154
|
* Only creates a new Redis connection when the connection string changes.
|
|
153
155
|
* Requires `ioredis` as a peer dependency — throws a clear error if missing.
|
|
154
156
|
*/
|
|
155
|
-
export declare function initCacheRelay(): CacheRelay;
|
|
157
|
+
export declare function initCacheRelay(envVarName?: string): CacheRelay;
|
|
156
158
|
/**
|
|
157
159
|
* Get the current CacheRelay singleton.
|
|
158
160
|
* Lazily initializes with default settings (`localhost:6379`) if not yet created.
|
|
161
|
+
*
|
|
162
|
+
* @param envVarName - Forwarded to {@link initCacheRelay} on first call.
|
|
159
163
|
*/
|
|
160
|
-
export declare function getCacheRelay(): CacheRelay;
|
|
164
|
+
export declare function getCacheRelay(envVarName?: string): CacheRelay;
|
|
161
165
|
export {};
|
|
162
166
|
//# sourceMappingURL=cache-relay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-relay.d.ts","sourceRoot":"","sources":["../src/cache-relay.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cache-relay.d.ts","sourceRoot":"","sources":["../src/cache-relay.ts"],"names":[],"mappings":"AAKA,KAAK,WAAW,GAAG,GAAG,CAAA;AAItB,MAAM,WAAW,SAAS;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnE,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;IACnD,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAClC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAClC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACnD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,OAAO;IACvB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACvD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACpD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACtD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACpD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACpC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACpC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACjC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;IAClE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACtE;AAED,MAAM,WAAW,OAAO;IACvB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACxD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACxC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACzC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAClE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACjC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACzD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CAC/D;AAED,MAAM,WAAW,MAAM;IACtB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACvD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAClC,KAAK,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC3C,KAAK,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC3C,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,YAAY;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAChE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAClE,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAA;IACvG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACxF,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACrE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC1D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACzD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAClC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvE,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACzE,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACzF;AAED,MAAM,WAAW,MAAM;IACtB,MAAM,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACtD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACjC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAClC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACtC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAClC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAC/G;AAED,MAAM,WAAW,SAAS;IACzB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1D,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/F,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,IAAI,WAAW,CAAA;IACpB,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;CAC/C;AAED,MAAM,WAAW,SAAS;IACzB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACtE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACtE;AAED,MAAM,WAAW,MAAM;IACtB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACtF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5E,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC1F,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CACzG;AAED,MAAM,WAAW,cAAc;IAC9B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACxD,KAAK,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACzC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9D;AAED,MAAM,WAAW,SAAS;IACzB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAClE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACjE,EAAE,CAAC,SAAS,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CAChG;AAED,MAAM,WAAW,SAAS;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7E,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IACjE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACjC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IAClF,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CAClD;AAID,MAAM,WAAW,UAAU;IAC1B,6BAA6B;IAC7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACxC,iCAAiC;IACjC,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IACjD,iDAAiD;IACjD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClF,8BAA8B;IAC9B,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEvC,4CAA4C;IAC5C,GAAG,EAAE,WAAW,CAAA;IAEhB,OAAO,EAAE,SAAS,CAAA;IAClB,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,YAAY,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,CAAA;IACjB,YAAY,EAAE,cAAc,CAAA;IAC5B,OAAO,EAAE,SAAS,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,cAAc,CAAA;IAC3B,OAAO,EAAE,SAAS,CAAA;IAClB,OAAO,EAAE,SAAS,CAAA;CAClB;AA8RD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,CA4B9D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,CAG7D"}
|
package/dist/cache-relay.js
CHANGED
|
@@ -262,16 +262,19 @@ function buildCacheRelay(redis) {
|
|
|
262
262
|
/**
|
|
263
263
|
* Initialize (or reinitialize) the CacheRelay singleton.
|
|
264
264
|
*
|
|
265
|
-
*
|
|
265
|
+
* @param envVarName - Name of the environment variable holding the Redis
|
|
266
|
+
* `host:port` connection string. Defaults to `CUSTOM_REDIS_URL`.
|
|
267
|
+
* When the env var is unset the relay falls back to `localhost:6379`.
|
|
266
268
|
* @returns the CacheRelay instance
|
|
267
269
|
*
|
|
268
270
|
* Only creates a new Redis connection when the connection string changes.
|
|
269
271
|
* Requires `ioredis` as a peer dependency — throws a clear error if missing.
|
|
270
272
|
*/
|
|
271
|
-
function initCacheRelay() {
|
|
272
|
-
const
|
|
273
|
+
function initCacheRelay(envVarName) {
|
|
274
|
+
const envKey = envVarName || 'CUSTOM_REDIS_URL';
|
|
275
|
+
const rawUrl = process.env[envKey] ?? 'localhost';
|
|
273
276
|
// Normalize: bare hostname (no port) → hostname:6379
|
|
274
|
-
const connStr =
|
|
277
|
+
const connStr = rawUrl.includes(':') ? rawUrl : `${rawUrl}:6379`;
|
|
275
278
|
// Reuse existing instance when the connection string hasn't changed
|
|
276
279
|
if (_cacheRelay && _currentConnectionString === connStr)
|
|
277
280
|
return _cacheRelay;
|
|
@@ -294,9 +297,11 @@ function initCacheRelay() {
|
|
|
294
297
|
/**
|
|
295
298
|
* Get the current CacheRelay singleton.
|
|
296
299
|
* Lazily initializes with default settings (`localhost:6379`) if not yet created.
|
|
300
|
+
*
|
|
301
|
+
* @param envVarName - Forwarded to {@link initCacheRelay} on first call.
|
|
297
302
|
*/
|
|
298
|
-
function getCacheRelay() {
|
|
303
|
+
function getCacheRelay(envVarName) {
|
|
299
304
|
if (!_cacheRelay)
|
|
300
|
-
return initCacheRelay();
|
|
305
|
+
return initCacheRelay(envVarName);
|
|
301
306
|
return _cacheRelay;
|
|
302
307
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
|
-
import
|
|
2
|
+
import { attachSocketAdapter } from '../websocket';
|
|
3
3
|
import type { SocketAdapterConfig } from '../websocket/types';
|
|
4
4
|
import type { ApiGatewayHandler, ALBHandler, LambdaOptionsApiGateway, LambdaOptionsALB, LocalServerConfig } from './types';
|
|
5
5
|
export type { ApiGatewayHandler, ALBHandler, LocalServerConfig } from './types';
|
|
@@ -11,7 +11,7 @@ export declare class LocalServer {
|
|
|
11
11
|
lambda(path: string, handler: ApiGatewayHandler): this;
|
|
12
12
|
lambda(path: string, handler: ApiGatewayHandler, options: LambdaOptionsApiGateway): this;
|
|
13
13
|
lambda(path: string, handler: ALBHandler, options: LambdaOptionsALB): this;
|
|
14
|
-
attachSocket(
|
|
14
|
+
attachSocket(config?: SocketAdapterConfig): ReturnType<typeof attachSocketAdapter>;
|
|
15
15
|
listen(port: number, hostname?: string): void;
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/local-server/index.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/local-server/index.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,SAAS,CAAC;AAa9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EACX,iBAAiB,EACjB,UAAU,EACV,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEhF,qBAAa,WAAW;IACvB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;IAC9B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,MAAM,CAAoB;gBAEtB,MAAM,CAAC,EAAE,iBAAiB;IAgBtC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IACtD,MAAM,CACL,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,uBAAuB,GAC9B,IAAI;IACP,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAmC1E,YAAY,CAEX,MAAM,CAAC,EAAE,mBAAmB,GAC1B,UAAU,CAAC,OAAO,mBAAmB,CAAC;IAUzC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;CAS7C"}
|
|
@@ -10,6 +10,7 @@ const cors_1 = __importDefault(require("cors"));
|
|
|
10
10
|
const ws_1 = require("ws");
|
|
11
11
|
const aws_event_synthesis_1 = require("../aws-event-synthesis");
|
|
12
12
|
const event_synthesizer_1 = require("./event-synthesizer");
|
|
13
|
+
const websocket_1 = require("../websocket");
|
|
13
14
|
class LocalServer {
|
|
14
15
|
app;
|
|
15
16
|
httpServer;
|
|
@@ -49,14 +50,16 @@ class LocalServer {
|
|
|
49
50
|
});
|
|
50
51
|
return this;
|
|
51
52
|
}
|
|
52
|
-
attachSocket(
|
|
53
|
+
attachSocket(
|
|
54
|
+
//adapterFn: typeof attachSocketAdapter,
|
|
55
|
+
config) {
|
|
53
56
|
const wss = new ws_1.WebSocketServer({ server: this.httpServer });
|
|
54
57
|
const mergedConfig = {
|
|
55
58
|
...config,
|
|
56
59
|
useRedis: config?.useRedis ?? this.config.useRedis,
|
|
57
60
|
debug: config?.debug ?? this.config.debug,
|
|
58
61
|
};
|
|
59
|
-
return
|
|
62
|
+
return (0, websocket_1.attachSocketAdapter)(wss, mergedConfig);
|
|
60
63
|
}
|
|
61
64
|
listen(port, hostname) {
|
|
62
65
|
const host = hostname ?? '0.0.0.0';
|
|
@@ -69,23 +69,23 @@ class RedisChannelStore {
|
|
|
69
69
|
}
|
|
70
70
|
async subscribe(connectionId, channel) {
|
|
71
71
|
const relay = this.getRelay();
|
|
72
|
-
await relay.
|
|
73
|
-
await relay.
|
|
72
|
+
await relay.sets.add(`${this.channelKeyPrefix}${channel}`, connectionId);
|
|
73
|
+
await relay.sets.add(`${this.connChannelsPrefix}${connectionId}`, channel);
|
|
74
74
|
}
|
|
75
75
|
async unsubscribe(connectionId, channel) {
|
|
76
76
|
const relay = this.getRelay();
|
|
77
|
-
await relay.
|
|
78
|
-
await relay.
|
|
77
|
+
await relay.sets.rem(`${this.channelKeyPrefix}${channel}`, connectionId);
|
|
78
|
+
await relay.sets.rem(`${this.connChannelsPrefix}${connectionId}`, channel);
|
|
79
79
|
}
|
|
80
80
|
async getSubscribers(channel) {
|
|
81
81
|
const relay = this.getRelay();
|
|
82
|
-
return relay.
|
|
82
|
+
return relay.sets.members(`${this.channelKeyPrefix}${channel}`);
|
|
83
83
|
}
|
|
84
84
|
async removeAll(connectionId) {
|
|
85
85
|
const relay = this.getRelay();
|
|
86
|
-
const channels = await relay.
|
|
87
|
-
await Promise.allSettled(channels.map((channel) => relay.
|
|
88
|
-
await relay.
|
|
86
|
+
const channels = await relay.sets.members(`${this.connChannelsPrefix}${connectionId}`);
|
|
87
|
+
await Promise.allSettled(channels.map((channel) => relay.sets.rem(`${this.channelKeyPrefix}${channel}`, connectionId)));
|
|
88
|
+
await relay.del(`${this.connChannelsPrefix}${connectionId}`);
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
exports.RedisChannelStore = RedisChannelStore;
|
package/package.json
CHANGED
package/src/cache-relay.ts
CHANGED
|
@@ -445,17 +445,20 @@ function buildCacheRelay(redis: RedisClient): CacheRelay {
|
|
|
445
445
|
/**
|
|
446
446
|
* Initialize (or reinitialize) the CacheRelay singleton.
|
|
447
447
|
*
|
|
448
|
-
*
|
|
448
|
+
* @param envVarName - Name of the environment variable holding the Redis
|
|
449
|
+
* `host:port` connection string. Defaults to `CUSTOM_REDIS_URL`.
|
|
450
|
+
* When the env var is unset the relay falls back to `localhost:6379`.
|
|
449
451
|
* @returns the CacheRelay instance
|
|
450
452
|
*
|
|
451
453
|
* Only creates a new Redis connection when the connection string changes.
|
|
452
454
|
* Requires `ioredis` as a peer dependency — throws a clear error if missing.
|
|
453
455
|
*/
|
|
454
|
-
export function initCacheRelay(): CacheRelay {
|
|
455
|
-
const
|
|
456
|
+
export function initCacheRelay(envVarName?: string): CacheRelay {
|
|
457
|
+
const envKey = envVarName || 'CUSTOM_REDIS_URL'
|
|
458
|
+
const rawUrl = process.env[envKey] ?? 'localhost'
|
|
456
459
|
|
|
457
460
|
// Normalize: bare hostname (no port) → hostname:6379
|
|
458
|
-
const connStr =
|
|
461
|
+
const connStr = rawUrl.includes(':') ? rawUrl : `${rawUrl}:6379`
|
|
459
462
|
|
|
460
463
|
// Reuse existing instance when the connection string hasn't changed
|
|
461
464
|
if (_cacheRelay && _currentConnectionString === connStr) return _cacheRelay
|
|
@@ -483,8 +486,10 @@ export function initCacheRelay(): CacheRelay {
|
|
|
483
486
|
/**
|
|
484
487
|
* Get the current CacheRelay singleton.
|
|
485
488
|
* Lazily initializes with default settings (`localhost:6379`) if not yet created.
|
|
489
|
+
*
|
|
490
|
+
* @param envVarName - Forwarded to {@link initCacheRelay} on first call.
|
|
486
491
|
*/
|
|
487
|
-
export function getCacheRelay(): CacheRelay {
|
|
488
|
-
if (!_cacheRelay) return initCacheRelay()
|
|
492
|
+
export function getCacheRelay(envVarName?: string): CacheRelay {
|
|
493
|
+
if (!_cacheRelay) return initCacheRelay(envVarName)
|
|
489
494
|
return _cacheRelay
|
|
490
495
|
}
|
|
@@ -1,99 +1,112 @@
|
|
|
1
|
-
import http from 'node:http'
|
|
2
|
-
|
|
3
|
-
import express from 'express'
|
|
4
|
-
import cors from 'cors'
|
|
5
|
-
import { WebSocketServer } from 'ws'
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import
|
|
1
|
+
import http from 'node:http';
|
|
2
|
+
|
|
3
|
+
import express from 'express';
|
|
4
|
+
import cors from 'cors';
|
|
5
|
+
import { WebSocketServer } from 'ws';
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
createMockLambdaContext,
|
|
9
|
+
sendLambdaResult,
|
|
10
|
+
} from '../aws-event-synthesis';
|
|
11
|
+
import {
|
|
12
|
+
synthesizeApiGatewayEvent,
|
|
13
|
+
synthesizeALBEvent,
|
|
14
|
+
} from './event-synthesizer';
|
|
15
|
+
|
|
16
|
+
import { attachSocketAdapter } from '../websocket';
|
|
17
|
+
import type { SocketAdapterConfig } from '../websocket/types';
|
|
12
18
|
import type {
|
|
13
19
|
ApiGatewayHandler,
|
|
14
20
|
ALBHandler,
|
|
15
21
|
LambdaOptionsApiGateway,
|
|
16
22
|
LambdaOptionsALB,
|
|
17
23
|
LocalServerConfig,
|
|
18
|
-
} from './types'
|
|
24
|
+
} from './types';
|
|
19
25
|
|
|
20
|
-
export type { ApiGatewayHandler, ALBHandler, LocalServerConfig } from './types'
|
|
26
|
+
export type { ApiGatewayHandler, ALBHandler, LocalServerConfig } from './types';
|
|
21
27
|
|
|
22
28
|
export class LocalServer {
|
|
23
|
-
readonly app: express.Express
|
|
24
|
-
private httpServer: http.Server
|
|
25
|
-
private config: LocalServerConfig
|
|
29
|
+
readonly app: express.Express;
|
|
30
|
+
private httpServer: http.Server;
|
|
31
|
+
private config: LocalServerConfig;
|
|
26
32
|
|
|
27
33
|
constructor(config?: LocalServerConfig) {
|
|
28
|
-
this.config = config ?? {}
|
|
29
|
-
this.app = express()
|
|
34
|
+
this.config = config ?? {};
|
|
35
|
+
this.app = express();
|
|
30
36
|
|
|
31
|
-
this.app.use(express.json())
|
|
32
|
-
this.app.use(cors())
|
|
37
|
+
this.app.use(express.json());
|
|
38
|
+
this.app.use(cors());
|
|
33
39
|
|
|
34
40
|
this.app.get('/', (_req, res) => {
|
|
35
|
-
res.send('Hello from Express HTTP Server')
|
|
36
|
-
})
|
|
41
|
+
res.send('Hello from Express HTTP Server');
|
|
42
|
+
});
|
|
37
43
|
|
|
38
|
-
this.httpServer = http.createServer(this.app)
|
|
44
|
+
this.httpServer = http.createServer(this.app);
|
|
39
45
|
}
|
|
40
46
|
|
|
41
47
|
// --- Type-safe overloads ---
|
|
42
48
|
|
|
43
|
-
lambda(path: string, handler: ApiGatewayHandler): this
|
|
44
|
-
lambda(
|
|
45
|
-
|
|
49
|
+
lambda(path: string, handler: ApiGatewayHandler): this;
|
|
50
|
+
lambda(
|
|
51
|
+
path: string,
|
|
52
|
+
handler: ApiGatewayHandler,
|
|
53
|
+
options: LambdaOptionsApiGateway
|
|
54
|
+
): this;
|
|
55
|
+
lambda(path: string, handler: ALBHandler, options: LambdaOptionsALB): this;
|
|
46
56
|
lambda(
|
|
47
57
|
path: string,
|
|
48
58
|
handler: ApiGatewayHandler | ALBHandler,
|
|
49
|
-
options?: LambdaOptionsApiGateway | LambdaOptionsALB
|
|
59
|
+
options?: LambdaOptionsApiGateway | LambdaOptionsALB
|
|
50
60
|
): this {
|
|
51
|
-
const eventType = options?.eventType ?? 'api-gateway'
|
|
61
|
+
const eventType = options?.eventType ?? 'api-gateway';
|
|
52
62
|
|
|
53
63
|
this.app.use(path, async (req: express.Request, res: express.Response) => {
|
|
54
64
|
try {
|
|
55
|
-
const context = createMockLambdaContext()
|
|
65
|
+
const context = createMockLambdaContext();
|
|
56
66
|
|
|
57
67
|
if (eventType === 'alb') {
|
|
58
|
-
const event = synthesizeALBEvent(req)
|
|
59
|
-
const result = await (handler as ALBHandler)(event, context)
|
|
60
|
-
sendLambdaResult(res, result)
|
|
68
|
+
const event = synthesizeALBEvent(req);
|
|
69
|
+
const result = await (handler as ALBHandler)(event, context);
|
|
70
|
+
sendLambdaResult(res, result);
|
|
61
71
|
} else {
|
|
62
|
-
const event = synthesizeApiGatewayEvent(req)
|
|
63
|
-
const result = await (handler as ApiGatewayHandler)(event, context)
|
|
64
|
-
sendLambdaResult(res, result ?? {})
|
|
72
|
+
const event = synthesizeApiGatewayEvent(req);
|
|
73
|
+
const result = await (handler as ApiGatewayHandler)(event, context);
|
|
74
|
+
sendLambdaResult(res, result ?? {});
|
|
65
75
|
}
|
|
66
76
|
} catch (err) {
|
|
67
|
-
console.error(
|
|
77
|
+
console.error(
|
|
78
|
+
`[LocalServer] Error handling ${req.method} ${req.originalUrl}:`,
|
|
79
|
+
err
|
|
80
|
+
);
|
|
68
81
|
if (!res.headersSent) {
|
|
69
|
-
res.status(500).json({ error: 'Internal Server Error' })
|
|
82
|
+
res.status(500).json({ error: 'Internal Server Error' });
|
|
70
83
|
}
|
|
71
84
|
}
|
|
72
|
-
})
|
|
85
|
+
});
|
|
73
86
|
|
|
74
|
-
return this
|
|
87
|
+
return this;
|
|
75
88
|
}
|
|
76
89
|
|
|
77
90
|
attachSocket(
|
|
78
|
-
adapterFn: typeof attachSocketAdapter,
|
|
79
|
-
config?: SocketAdapterConfig
|
|
91
|
+
//adapterFn: typeof attachSocketAdapter,
|
|
92
|
+
config?: SocketAdapterConfig
|
|
80
93
|
): ReturnType<typeof attachSocketAdapter> {
|
|
81
|
-
const wss = new WebSocketServer({ server: this.httpServer })
|
|
94
|
+
const wss = new WebSocketServer({ server: this.httpServer });
|
|
82
95
|
const mergedConfig: SocketAdapterConfig = {
|
|
83
96
|
...config,
|
|
84
97
|
useRedis: config?.useRedis ?? this.config.useRedis,
|
|
85
98
|
debug: config?.debug ?? this.config.debug,
|
|
86
|
-
}
|
|
87
|
-
return
|
|
99
|
+
};
|
|
100
|
+
return attachSocketAdapter(wss, mergedConfig);
|
|
88
101
|
}
|
|
89
102
|
|
|
90
103
|
listen(port: number, hostname?: string): void {
|
|
91
|
-
const host = hostname ?? '0.0.0.0'
|
|
104
|
+
const host = hostname ?? '0.0.0.0';
|
|
92
105
|
this.httpServer.listen(port, host, () => {
|
|
93
106
|
if (this.config.debug) {
|
|
94
|
-
console.info(`HTTP Server running at http://localhost:${port}`)
|
|
95
|
-
console.info(`WebSocket server running on ws://localhost:${port}`)
|
|
107
|
+
console.info(`HTTP Server running at http://localhost:${port}`);
|
|
108
|
+
console.info(`WebSocket server running on ws://localhost:${port}`);
|
|
96
109
|
}
|
|
97
|
-
})
|
|
110
|
+
});
|
|
98
111
|
}
|
|
99
112
|
}
|
|
@@ -86,31 +86,31 @@ export class RedisChannelStore implements ChannelStore {
|
|
|
86
86
|
|
|
87
87
|
async subscribe(connectionId: ConnectionId, channel: string): Promise<void> {
|
|
88
88
|
const relay = this.getRelay()
|
|
89
|
-
await relay.
|
|
90
|
-
await relay.
|
|
89
|
+
await relay.sets.add(`${this.channelKeyPrefix}${channel}`, connectionId)
|
|
90
|
+
await relay.sets.add(`${this.connChannelsPrefix}${connectionId}`, channel)
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
async unsubscribe(connectionId: ConnectionId, channel: string): Promise<void> {
|
|
94
94
|
const relay = this.getRelay()
|
|
95
|
-
await relay.
|
|
96
|
-
await relay.
|
|
95
|
+
await relay.sets.rem(`${this.channelKeyPrefix}${channel}`, connectionId)
|
|
96
|
+
await relay.sets.rem(`${this.connChannelsPrefix}${connectionId}`, channel)
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
async getSubscribers(channel: string): Promise<ConnectionId[]> {
|
|
100
100
|
const relay = this.getRelay()
|
|
101
|
-
return relay.
|
|
101
|
+
return relay.sets.members(`${this.channelKeyPrefix}${channel}`)
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
async removeAll(connectionId: ConnectionId): Promise<void> {
|
|
105
105
|
const relay = this.getRelay()
|
|
106
|
-
const channels: string[] = await relay.
|
|
106
|
+
const channels: string[] = await relay.sets.members(`${this.connChannelsPrefix}${connectionId}`)
|
|
107
107
|
|
|
108
108
|
await Promise.allSettled(
|
|
109
109
|
channels.map((channel) =>
|
|
110
|
-
relay.
|
|
110
|
+
relay.sets.rem(`${this.channelKeyPrefix}${channel}`, connectionId)
|
|
111
111
|
)
|
|
112
112
|
)
|
|
113
113
|
|
|
114
|
-
await relay.
|
|
114
|
+
await relay.del(`${this.connChannelsPrefix}${connectionId}`)
|
|
115
115
|
}
|
|
116
116
|
}
|