@c9up/ream 0.2.21 → 0.2.23

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.
@@ -1 +1 @@
1
- {"version":3,"file":"HttpKernel.d.ts","sourceRoot":"","sources":["../src/HttpKernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAGzD,OAAO,EAAqB,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAA0B,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAEnB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,KAAK,EAAmC,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGjF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,kBAAkB,CAAA;IAC9B,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACvC;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IAC5C,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,KAAK,IAAI,CAAA;IACpD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,qBAAqB,EAAE,aAAa,GAAG,SAAS,CAAA;IAC7E;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,IAAI,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,IAAI,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IAChC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,gBAAgB,GACvB,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CA0T7D"}
1
+ {"version":3,"file":"HttpKernel.d.ts","sourceRoot":"","sources":["../src/HttpKernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAIzD,OAAO,EAAqB,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAA0B,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAEnB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,KAAK,EAAmC,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGjF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,kBAAkB,CAAA;IAC9B,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACvC;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IAC5C,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,KAAK,IAAI,CAAA;IACpD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,qBAAqB,EAAE,aAAa,GAAG,SAAS,CAAA;IAC7E;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,IAAI,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,IAAI,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IAChC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,gBAAgB,GACvB,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CA6U7D"}
@@ -10,6 +10,7 @@
10
10
  * @implements FR21, FR22, FR23, FR24
11
11
  */
12
12
  import { debugHttp } from './debug.js';
13
+ import { hotReloadCount } from './dev/hmr.js';
13
14
  import { E_ROUTE_NOT_FOUND, ExceptionHandler } from './http/Exception.js';
14
15
  import { HttpContext } from './http/HttpContext.js';
15
16
  import { composeMiddleware } from './middleware/Pipeline.js';
@@ -25,6 +26,15 @@ export function createHttpKernel(config) {
25
26
  // router.clear() drops the route objects, their chains become unreachable
26
27
  // and are GC'd — no need to monkey-patch router.clear (which leaked a
27
28
  // wrapper chain when createHttpKernel ran more than once on one router).
29
+ // `hotAt` is what makes hot reloading reach the router at all. A lazy
30
+ // controller is promoted to a concrete one on first request and the whole
31
+ // pipeline is cached per route — so once hot-hook swapped a module, both
32
+ // still pointed at the class from before, the process kept serving it, and
33
+ // the swap looked like it had not happened. Remembering when an entry was
34
+ // built lets a later swap throw it away.
35
+ //
36
+ // In production this is a number compared against a constant zero: nothing
37
+ // bumps the counter when `@c9up/ream/hot` was never loaded.
28
38
  const pipelineCache = new WeakMap();
29
39
  // Resolve the events emitter once, only when the app registered
30
40
  // `EventsProvider`. Lazy + cached: the binding may not exist yet at kernel
@@ -148,7 +158,18 @@ export function createHttpKernel(config) {
148
158
  if (!match) {
149
159
  throw new E_ROUTE_NOT_FOUND(reqData.method, reqData.path);
150
160
  }
161
+ const hotAt = hotReloadCount();
151
162
  let cached = pipelineCache.get(match.route);
163
+ if (cached !== undefined && cached.hotAt !== hotAt) {
164
+ // A module was swapped since this was built. Drop the pipeline AND
165
+ // the promoted controller, so the loader runs again and `import()`
166
+ // hands back what hot-hook just invalidated rather than the copy in
167
+ // the ESM cache.
168
+ pipelineCache.delete(match.route);
169
+ if (match.route.lazyController)
170
+ match.route.controller = undefined;
171
+ cached = undefined;
172
+ }
152
173
  if (!cached) {
153
174
  // Promote a lazy/string controller to a concrete controller tuple on
154
175
  // first request (imported once, then reused). Done before handler +
@@ -198,7 +219,7 @@ export function createHttpKernel(config) {
198
219
  const chain = config.middleware.buildChain(match.route.middleware, [...routerMw, ...match.route.inlineMiddleware], async (c) => {
199
220
  await routeHandler(c);
200
221
  }, { guards, roles, permissions, validators });
201
- cached = { chain };
222
+ cached = { chain, hotAt };
202
223
  pipelineCache.set(match.route, cached);
203
224
  }
204
225
  // API versioning headers (per-request, cheap)
@@ -1 +1 @@
1
- {"version":3,"file":"HttpKernel.js","sourceRoot":"","sources":["../src/HttpKernel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HttpKernel.js","sourceRoot":"","sources":["../src/HttpKernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAA0B,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAM3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAkF5D,MAAM,UAAU,gBAAgB,CAC9B,MAAwB;IAExB,2EAA2E;IAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,CAAA;IACtF,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAA;IAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAA;IAE9C,uEAAuE;IACvE,6EAA6E;IAC7E,2EAA2E;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,sEAAsE;IACtE,yEAAyE;IACzE,sEAAsE;IACtE,0EAA0E;IAC1E,yEAAyE;IACzE,2EAA2E;IAC3E,0EAA0E;IAC1E,yCAAyC;IACzC,EAAE;IACF,2EAA2E;IAC3E,4DAA4D;IAC5D,MAAM,aAAa,GAAG,IAAI,OAAO,EAAiE,CAAA;IAElG,gEAAgE;IAChE,2EAA2E;IAC3E,+EAA+E;IAC/E,IAAI,aAAkC,CAAA;IACtC,IAAI,cAAc,GAAG,KAAK,CAAA;IAC1B,MAAM,aAAa,GAAG,KAAK,IAAkC,EAAE;QAC7D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,IAAI,CAAA;YACrB,IAAI,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,aAAa,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAU,QAAQ,CAAC,CAAA;YACnE,CAAC;QACH,CAAC;QACD,OAAO,aAAa,CAAA;IACtB,CAAC,CAAA;IAED,+EAA+E;IAC/E,8EAA8E;IAC9E,+EAA+E;IAC/E,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAC5B,IAAI,UAAoC,CAAA;IACxC,IAAI,SAAgC,CAAA;IACpC,IAAI,UAAyC,CAAA;IAC7C,MAAM,eAAe,GAAG,KAAK,IAAmB,EAAE;QAChD,IAAI,gBAAgB;YAAE,OAAM;QAC5B,gBAAgB,GAAG,IAAI,CAAA;QACvB,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAA;QAC1B,IAAI,CAAC,CAAC;YAAE,OAAM;QACd,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;YAAE,UAAU,GAAG,MAAM,CAAC,CAAC,OAAO,CAAe,YAAY,CAAC,CAAA;QACjF,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,SAAS,GAAG,MAAM,CAAC,CAAC,OAAO,CAAY,WAAW,CAAC,CAAA;QAC3E,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,UAAU,GAAG,MAAM,CAAC,CAAC,OAAO,CAAoB,QAAQ,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,OAAO,KAAK,EAAE,OAA0B,EAA+B,EAAE;QACvE,uEAAuE;QACvE,wEAAwE;QACxE,uEAAuE;QAEvE,oBAAoB;QACpB,MAAM,UAAU,GAAG,yBAAyB,CAAA;QAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAA;QAC9F,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;QAElF,uDAAuD;QACvD,mEAAmE;QACnE,oEAAoE;QACpE,kEAAkE;QAClE,oEAAoE;QACpE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAA;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACrE,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,SAAS,CACP,aAAa,EACb,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,IAAI,EACZ,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAC5D,CAAA;QACH,CAAC;QACD,MAAM,SAAS,GAAG,KAAK;YACrB,CAAC,CAAC;gBACE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;gBACzB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;gBACtB,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU;gBAClC,6DAA6D;gBAC7D,gEAAgE;gBAChE,+DAA+D;gBAC/D,6DAA6D;gBAC7D,yBAAyB;gBACzB,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,SAA+B;gBAC1E,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM;aACvC;YACH,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;QAEnC,sDAAsD;QACtD,oEAAoE;QACpE,uEAAuE;QACvE,0EAA0E;QAC1E,+DAA+D;QAC/D,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,CAAA;QACnD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;QAC7F,0EAA0E;QAC1E,4EAA4E;QAC5E,QAAQ,EAAE,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;QACrC,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAC3C,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;QAC7D,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC1C,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;QACvD,CAAC;QACD,IAAI,MAAM,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACxC,kEAAkE;YAClE,qEAAqE;YACrE,kBAAkB;YAClB,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QACD,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAC7E,4EAA4E;QAC5E,MAAM,eAAe,EAAE,CAAA;QACvB,IAAI,UAAU;YAAE,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;QAC/C,IAAI,SAAS;YAAE,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;QAC1C,IAAI,UAAU;YAAE,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QAC7C,GAAG,CAAC,MAAM,GAAG,MAAM,aAAa,EAAE,CAAA;QAClC,8EAA8E;QAC9E,yEAAyE;QACzE,6DAA6D;QAC7D,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE;YAC/B,EAAE,EAAE,aAAa;YACjB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;QACF,iEAAiE;QACjE,+DAA+D;QAC/D,gEAAgE;QAChE,qCAAqC;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,CAAA;QACxC,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;QACxC,CAAC;QAED,IAAI,CAAC;YACH,oCAAoC;YACpC,uGAAuG;YACvG,MAAM,WAAW,GAAuB,KAAK,EAAE,QAAQ,EAAE,EAAE;gBACzD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,IAAI,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;gBAC3D,CAAC;gBAED,MAAM,KAAK,GAAG,cAAc,EAAE,CAAA;gBAC9B,IAAI,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;gBAC3C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;oBACnD,mEAAmE;oBACnE,mEAAmE;oBACnE,oEAAoE;oBACpE,iBAAiB;oBACjB,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;oBACjC,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc;wBAAE,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAA;oBAClE,MAAM,GAAG,SAAS,CAAA;gBACpB,CAAC;gBAED,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,qEAAqE;oBACrE,oEAAoE;oBACpE,qEAAqE;oBACrE,gCAAgC;oBAChC,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;wBAC1D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,CAAA;wBACrD,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG;4BACvB,MAAM,EAAE,GAAG,CAAC,OAAO;4BACnB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM;yBAC1C,CAAA;oBACH,CAAC;oBAED,mCAAmC;oBACnC,IAAI,YAA6C,CAAA;oBACjD,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;wBAC3B,YAAY,GAAG,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;oBAClF,CAAC;yBAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;wBAC/B,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAA;oBACpC,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,KAAK,CACb,SAAS,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,qCAAqC,CACrF,CAAA;oBACH,CAAC;oBAED,4EAA4E;oBAC5E,IAAI,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;oBACpC,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;oBAClC,IAAI,WAAW,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;oBAE9C,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;wBAC3B,MAAM,IAAI,GAAG,2BAA2B,CACtC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAC7B,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAC9B,CAAA;wBACD,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;wBACpC,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;wBACjC,WAAW,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;oBACrD,CAAC;oBAED,yEAAyE;oBACzE,qEAAqE;oBACrE,gEAAgE;oBAChE,qEAAqE;oBACrE,MAAM,UAAU,GAAuB,MAAM,OAAO,CAAC,GAAG,CACtD,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;wBAClC,MAAM,KAAK,GAAG,aAAa,IAAI,EAAE,CAAA;wBACjC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;4BAClC,MAAM,IAAI,KAAK,CACb,4CAA4C,IAAI,uBAAuB;gCACrE,qCAAqC,KAAK,4BAA4B,CACzE,CAAA;wBACH,CAAC;wBACD,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,CAAmB,KAAK,CAAC,CAAA;oBAC1D,CAAC,CAAC,CACH,CAAA;oBAED,wBAAwB;oBACxB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CACxC,KAAK,CAAC,KAAK,CAAC,UAAU,EACtB,CAAC,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAC9C,KAAK,EAAE,CAAC,EAAE,EAAE;wBACV,MAAM,YAAY,CAAC,CAAC,CAAC,CAAA;oBACvB,CAAC,EACD,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,CAC3C,CAAA;oBAED,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;oBACzB,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;gBACxC,CAAC;gBAED,8CAA8C;gBAC9C,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACxB,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAChE,CAAC;gBACD,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;oBAC3B,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;oBAC/C,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;oBAChF,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;wBAClC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;oBACnE,CAAC;gBACH,CAAC;gBAED,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAA;YAC9C,CAAC,CAAA;YAED,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,mBAAmB;YACnB,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,GAAG,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAA;YAClE,MAAM,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC,CAAA;YAEnE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;gBAChC,EAAE,EAAE,aAAa;gBACjB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE;aACjC,CAAC,CAAA;YACF,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtB,SAAS,CACP,kBAAkB,EAClB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,IAAI,EACZ,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,EACxB,aAAa,CACd,CAAA;YACH,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;YACvE,yEAAyE;YACzE,2DAA2D;YAC3D,GAAG,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAA;YACjC,OAAO,UAAU,CAAA;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,+DAA+D;YAC/D,+DAA+D;YAC/D,8DAA8D;YAC9D,+DAA+D;YAC/D,4DAA4D;YAC5D,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;YAChC,IAAI,CAAC;gBACH,iDAAiD;gBACjD,+DAA+D;gBAC/D,sEAAsE;gBACtE,qEAAqE;gBACrE,4DAA4D;gBAC5D,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBAChC,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YAClC,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAA;gBACvD,GAAG,CAAC,QAAQ;qBACT,MAAM,CAAC,GAAG,CAAC;qBACX,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,4BAA4B,EAAE,EAAE,CAAC,CAAA;YAC1F,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YAC5B,CAAC;YAED,oEAAoE;YACpE,wEAAwE;YACxE,yEAAyE;YACzE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE;gBAC5B,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAA;YAEF,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;gBAChC,EAAE,EAAE,aAAa;gBACjB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE;aACjC,CAAC,CAAA;YACF,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtB,SAAS,CACP,kBAAkB,EAClB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,IAAI,EACZ,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,EACxB,aAAa,CACd,CAAA;YACH,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;YACvE,yEAAyE;YACzE,2DAA2D;YAC3D,GAAG,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAA;YACjC,OAAO,UAAU,CAAA;QACnB,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,UAAsD,EACtD,SAAqB;IAErB,OAAO,KAAK,EAAE,GAAgB,EAAE,EAAE;QAChC,sEAAsE;QACtE,0EAA0E;QAC1E,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,IAAI,SAAS,CAAA;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAA;QAC1F,MAAM,MAAM,GAAI,QAAuE,CACrF,UAAU,CAAC,MAAM,CAClB,CAAA;QACD,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,sBAAsB,UAAU,CAAC,MAAM,kBAAkB,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAClF,CAAA;QACH,CAAC;QACD,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IAClC,CAAC,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,2BAA2B,CAClC,MAAsB,EACtB,MAAc;IAEd,IAAI,CAAC;QACH,MAAM,MAAM,GACV,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;QACjF,MAAM,KAAK,GACT,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;QAChF,MAAM,WAAW,GACf,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;QACtF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAA;IACnD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,GAAgB,EAChB,eAA4C;IAE5C,uEAAuE;IACvE,mEAAmE;IACnE,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAA;IAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;IAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;IACzC,MAAM,IAAI,GAAG,mBAAmB,CAC9B,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,EACtB,OAAO,EACP,QAAQ,EACR,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAChF,CAAA;IACD,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE;QAChC,OAAO,EAAE,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC;QACvE,IAAI;QACJ,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,uBAAuB,CAC9B,OAA+B,EAC/B,QAAgB,EAChB,IAAY;IAEZ,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAA;IACrC,MAAM,UAAU,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA;IACjC,IAAI,UAAU,CAAC,gBAAgB,CAAC,KAAK,SAAS,EAAE,CAAC;QAC/C,UAAU,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;IACxE,CAAC;IACD,uEAAuE;IACvE,wEAAwE;IACxE,yEAAyE;IACzE,8DAA8D;IAC9D,KAAK,MAAM,IAAI,IAAI;QACjB,MAAM;QACN,aAAa;QACb,QAAQ;QACR,gBAAgB;QAChB,aAAa;QACb,aAAa;QACb,qBAAqB;QACrB,kBAAkB;KACnB,EAAE,CAAC;QACF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAC1B,IAAY,EACZ,OAA+B,EAC/B,QAA4B,EAC5B,MAAe;IAEf,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAA;IAC9E,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAA;IACvE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;IAC3C,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAC/F,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Reading `hotHook` out of the application's package.json.
3
+ *
4
+ * The boundaries are the APPLICATION's to declare, as they are upstream: they
5
+ * depend on a layout the framework does not own, and hot-hook requires every
6
+ * file matching one to be dynamically imported — a glob that also catches a
7
+ * statically imported service reports `shouldBeReloadable` and costs a FULL
8
+ * reload, worse than the restart it replaced. `ream new` writes the block;
9
+ * `ream doctor` reports its absence.
10
+ *
11
+ * Extracted from the loader entry so the parsing can be tested: that entry
12
+ * registers an ESM loader the moment it is imported, which a test cannot undo.
13
+ */
14
+ export interface HotHookConfig {
15
+ root?: string;
16
+ boundaries?: string[];
17
+ restart?: string[];
18
+ ignore?: string[];
19
+ throwWhenBoundariesAreNotDynamicallyImported?: boolean;
20
+ }
21
+ /** Read `hotHook` out of a parsed package.json, with no assumptions. */
22
+ export declare function readHotHookConfig(pkg: unknown): HotHookConfig;
23
+ //# sourceMappingURL=hotConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hotConfig.d.ts","sourceRoot":"","sources":["../../src/dev/hotConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,4CAA4C,CAAC,EAAE,OAAO,CAAA;CACvD;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAkB7D"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Reading `hotHook` out of the application's package.json.
3
+ *
4
+ * The boundaries are the APPLICATION's to declare, as they are upstream: they
5
+ * depend on a layout the framework does not own, and hot-hook requires every
6
+ * file matching one to be dynamically imported — a glob that also catches a
7
+ * statically imported service reports `shouldBeReloadable` and costs a FULL
8
+ * reload, worse than the restart it replaced. `ream new` writes the block;
9
+ * `ream doctor` reports its absence.
10
+ *
11
+ * Extracted from the loader entry so the parsing can be tested: that entry
12
+ * registers an ESM loader the moment it is imported, which a test cannot undo.
13
+ */
14
+ /** Read `hotHook` out of a parsed package.json, with no assumptions. */
15
+ export function readHotHookConfig(pkg) {
16
+ if (typeof pkg !== 'object' || pkg === null)
17
+ return {};
18
+ const raw = Reflect.get(pkg, 'hotHook');
19
+ if (typeof raw !== 'object' || raw === null)
20
+ return {};
21
+ const stringArray = (key) => {
22
+ const value = Reflect.get(raw, key);
23
+ if (!Array.isArray(value))
24
+ return undefined;
25
+ return value.filter((entry) => typeof entry === 'string');
26
+ };
27
+ const root = Reflect.get(raw, 'root');
28
+ const strict = Reflect.get(raw, 'throwWhenBoundariesAreNotDynamicallyImported');
29
+ return {
30
+ root: typeof root === 'string' ? root : undefined,
31
+ boundaries: stringArray('boundaries'),
32
+ restart: stringArray('restart'),
33
+ ignore: stringArray('ignore'),
34
+ throwWhenBoundariesAreNotDynamicallyImported: typeof strict === 'boolean' ? strict : undefined,
35
+ };
36
+ }
37
+ //# sourceMappingURL=hotConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hotConfig.js","sourceRoot":"","sources":["../../src/dev/hotConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,wEAAwE;AACxE,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,CAAA;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IACvC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,CAAA;IACtD,MAAM,WAAW,GAAG,CAAC,GAAW,EAAwB,EAAE;QACxD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAA;QAC3C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAA;IAC5E,CAAC,CAAA;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,8CAA8C,CAAC,CAAA;IAC/E,OAAO;QACL,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACjD,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC;QACrC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC;QAC/B,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC;QAC7B,4CAA4C,EAAE,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;KAC/F,CAAA;AACH,CAAC"}
package/dist/hot.js CHANGED
@@ -26,42 +26,19 @@
26
26
  * upstream's behaviour, unmodified.
27
27
  */
28
28
  import { hotReloadHappened } from './dev/hmr.js';
29
+ import { readHotHookConfig } from './dev/hotConfig.js';
29
30
  /** Exit code meaning "restart me" — see `EXIT_RESTART` in the CLI's dev module. */
30
31
  const FULL_RELOAD_EXIT_CODE = 75;
31
- /** Read `hotHook` out of the application's package.json, with no assumptions. */
32
- function readConfig(pkg) {
33
- if (typeof pkg !== 'object' || pkg === null)
34
- return {};
35
- const raw = Reflect.get(pkg, 'hotHook');
36
- if (typeof raw !== 'object' || raw === null)
37
- return {};
38
- const stringArray = (key) => {
39
- const value = Reflect.get(raw, key);
40
- if (!Array.isArray(value))
41
- return undefined;
42
- return value.filter((entry) => typeof entry === 'string');
43
- };
44
- const root = Reflect.get(raw, 'root');
45
- const strict = Reflect.get(raw, 'throwWhenBoundariesAreNotDynamicallyImported');
46
- return {
47
- root: typeof root === 'string' ? root : undefined,
48
- boundaries: stringArray('boundaries'),
49
- restart: stringArray('restart'),
50
- ignore: stringArray('ignore'),
51
- throwWhenBoundariesAreNotDynamicallyImported: typeof strict === 'boolean' ? strict : undefined,
52
- };
53
- }
54
32
  const { readFile } = await import('node:fs/promises');
55
33
  const { dirname, resolve } = await import('node:path');
56
34
  const packageJsonPath = resolve(process.cwd(), 'package.json');
57
35
  let config = {};
58
36
  try {
59
- config = readConfig(JSON.parse(await readFile(packageJsonPath, 'utf8')));
37
+ config = readHotHookConfig(JSON.parse(await readFile(packageJsonPath, 'utf8')));
60
38
  }
61
39
  catch {
62
- // No package.json, or unreadable: hot-hook still works, it just has no
63
- // boundaries, so every change asks for a restart. That is the old
64
- // behaviour, not a failure worth stopping dev over.
40
+ // No package.json, or unreadable: fall through to the conventional
41
+ // boundaries below rather than stopping dev over it.
65
42
  }
66
43
  // `hot-hook` is an optional peer, declared by the application because it is a
67
44
  // dev dependency there and has no business in a production install. Imported by
package/dist/hot.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hot.js","sourceRoot":"","sources":["../src/hot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hot.js","sourceRoot":"","sources":["../src/hot.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -121,5 +121,5 @@ export { BaseEvent, Emitter, type EmitterResolver, type ListenerClass, } from '.
121
121
  export { type BufferedEvent, type BufferedEventName, type EventFinder, EventsBuffer, } from './events/EventsBuffer.js';
122
122
  export type { ErrorReporter, LockBackend, LockBackendFactory, LockRedisClient, LockRedisResolver, RunTaskOutcome, ScheduleEvent, ScheduleEventSink, ScheduleInvocation, ScheduleMetadata, ScheduleProviderOptions, SchedulerConfig, SchedulerOptions, ScheduleTaskCompletedEvent, ScheduleTaskFailedEvent, ScheduleTaskSkippedEvent, ScheduleTaskStartedEvent, TaskInfo, TaskStats, } from './scheduler/index.js';
123
123
  export { defineSchedulerConfig, getScheduleMetadata, locks, MemoryLockBackend, RedisLockBackend, SCHEDULE_METADATA_KEY, Schedule, ScheduleProvider, Scheduler, StatsTracker, } from './scheduler/index.js';
124
- export declare const VERSION = "0.2.21";
124
+ export declare const VERSION = "0.2.23";
125
125
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -92,5 +92,5 @@ export { defineConfig as defineEventsConfig } from './events/config.js';
92
92
  export { BaseEvent, Emitter, } from './events/Emitter.js';
93
93
  export { EventsBuffer, } from './events/EventsBuffer.js';
94
94
  export { defineSchedulerConfig, getScheduleMetadata, locks, MemoryLockBackend, RedisLockBackend, SCHEDULE_METADATA_KEY, Schedule, ScheduleProvider, Scheduler, StatsTracker, } from './scheduler/index.js';
95
- export const VERSION = '0.2.21';
95
+ export const VERSION = '0.2.23';
96
96
  //# sourceMappingURL=index.js.map
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c9up/ream",
3
- "version": "0.2.21",
3
+ "version": "0.2.23",
4
4
  "description": "Ream — Rust-powered Node.js application framework",
5
5
  "license": "MIT",
6
6
  "type": "module",
Binary file
package/src/HttpKernel.ts CHANGED
@@ -12,6 +12,7 @@
12
12
 
13
13
  import type { Container } from './container/Container.js'
14
14
  import { debugHttp } from './debug.js'
15
+ import { hotReloadCount } from './dev/hmr.js'
15
16
  import type { Emitter } from './events/Emitter.js'
16
17
  import { E_ROUTE_NOT_FOUND, ExceptionHandler } from './http/Exception.js'
17
18
  import { type ChildLoggerSource, HttpContext } from './http/HttpContext.js'
@@ -117,7 +118,16 @@ export function createHttpKernel(
117
118
  // router.clear() drops the route objects, their chains become unreachable
118
119
  // and are GC'd — no need to monkey-patch router.clear (which leaked a
119
120
  // wrapper chain when createHttpKernel ran more than once on one router).
120
- const pipelineCache = new WeakMap<RouteDefinition, { chain: MiddlewareFunction }>()
121
+ // `hotAt` is what makes hot reloading reach the router at all. A lazy
122
+ // controller is promoted to a concrete one on first request and the whole
123
+ // pipeline is cached per route — so once hot-hook swapped a module, both
124
+ // still pointed at the class from before, the process kept serving it, and
125
+ // the swap looked like it had not happened. Remembering when an entry was
126
+ // built lets a later swap throw it away.
127
+ //
128
+ // In production this is a number compared against a constant zero: nothing
129
+ // bumps the counter when `@c9up/ream/hot` was never loaded.
130
+ const pipelineCache = new WeakMap<RouteDefinition, { chain: MiddlewareFunction; hotAt: number }>()
121
131
 
122
132
  // Resolve the events emitter once, only when the app registered
123
133
  // `EventsProvider`. Lazy + cached: the binding may not exist yet at kernel
@@ -245,7 +255,17 @@ export function createHttpKernel(
245
255
  throw new E_ROUTE_NOT_FOUND(reqData.method, reqData.path)
246
256
  }
247
257
 
258
+ const hotAt = hotReloadCount()
248
259
  let cached = pipelineCache.get(match.route)
260
+ if (cached !== undefined && cached.hotAt !== hotAt) {
261
+ // A module was swapped since this was built. Drop the pipeline AND
262
+ // the promoted controller, so the loader runs again and `import()`
263
+ // hands back what hot-hook just invalidated rather than the copy in
264
+ // the ESM cache.
265
+ pipelineCache.delete(match.route)
266
+ if (match.route.lazyController) match.route.controller = undefined
267
+ cached = undefined
268
+ }
249
269
 
250
270
  if (!cached) {
251
271
  // Promote a lazy/string controller to a concrete controller tuple on
@@ -314,7 +334,7 @@ export function createHttpKernel(
314
334
  { guards, roles, permissions, validators },
315
335
  )
316
336
 
317
- cached = { chain }
337
+ cached = { chain, hotAt }
318
338
  pipelineCache.set(match.route, cached)
319
339
  }
320
340
 
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Reading `hotHook` out of the application's package.json.
3
+ *
4
+ * The boundaries are the APPLICATION's to declare, as they are upstream: they
5
+ * depend on a layout the framework does not own, and hot-hook requires every
6
+ * file matching one to be dynamically imported — a glob that also catches a
7
+ * statically imported service reports `shouldBeReloadable` and costs a FULL
8
+ * reload, worse than the restart it replaced. `ream new` writes the block;
9
+ * `ream doctor` reports its absence.
10
+ *
11
+ * Extracted from the loader entry so the parsing can be tested: that entry
12
+ * registers an ESM loader the moment it is imported, which a test cannot undo.
13
+ */
14
+
15
+ export interface HotHookConfig {
16
+ root?: string
17
+ boundaries?: string[]
18
+ restart?: string[]
19
+ ignore?: string[]
20
+ throwWhenBoundariesAreNotDynamicallyImported?: boolean
21
+ }
22
+
23
+ /** Read `hotHook` out of a parsed package.json, with no assumptions. */
24
+ export function readHotHookConfig(pkg: unknown): HotHookConfig {
25
+ if (typeof pkg !== 'object' || pkg === null) return {}
26
+ const raw = Reflect.get(pkg, 'hotHook')
27
+ if (typeof raw !== 'object' || raw === null) return {}
28
+ const stringArray = (key: string): string[] | undefined => {
29
+ const value = Reflect.get(raw, key)
30
+ if (!Array.isArray(value)) return undefined
31
+ return value.filter((entry): entry is string => typeof entry === 'string')
32
+ }
33
+ const root = Reflect.get(raw, 'root')
34
+ const strict = Reflect.get(raw, 'throwWhenBoundariesAreNotDynamicallyImported')
35
+ return {
36
+ root: typeof root === 'string' ? root : undefined,
37
+ boundaries: stringArray('boundaries'),
38
+ restart: stringArray('restart'),
39
+ ignore: stringArray('ignore'),
40
+ throwWhenBoundariesAreNotDynamicallyImported: typeof strict === 'boolean' ? strict : undefined,
41
+ }
42
+ }
package/src/hot.ts CHANGED
@@ -27,6 +27,7 @@
27
27
  */
28
28
 
29
29
  import { hotReloadHappened } from './dev/hmr.js'
30
+ import { type HotHookConfig, readHotHookConfig } from './dev/hotConfig.js'
30
31
 
31
32
  /** Exit code meaning "restart me" — see `EXIT_RESTART` in the CLI's dev module. */
32
33
  const FULL_RELOAD_EXIT_CODE = 75
@@ -43,46 +44,16 @@ interface HotHook {
43
44
  }): Promise<void>
44
45
  }
45
46
 
46
- interface HotHookConfig {
47
- root?: string
48
- boundaries?: string[]
49
- restart?: string[]
50
- ignore?: string[]
51
- throwWhenBoundariesAreNotDynamicallyImported?: boolean
52
- }
53
-
54
- /** Read `hotHook` out of the application's package.json, with no assumptions. */
55
- function readConfig(pkg: unknown): HotHookConfig {
56
- if (typeof pkg !== 'object' || pkg === null) return {}
57
- const raw = Reflect.get(pkg, 'hotHook')
58
- if (typeof raw !== 'object' || raw === null) return {}
59
- const stringArray = (key: string): string[] | undefined => {
60
- const value = Reflect.get(raw, key)
61
- if (!Array.isArray(value)) return undefined
62
- return value.filter((entry): entry is string => typeof entry === 'string')
63
- }
64
- const root = Reflect.get(raw, 'root')
65
- const strict = Reflect.get(raw, 'throwWhenBoundariesAreNotDynamicallyImported')
66
- return {
67
- root: typeof root === 'string' ? root : undefined,
68
- boundaries: stringArray('boundaries'),
69
- restart: stringArray('restart'),
70
- ignore: stringArray('ignore'),
71
- throwWhenBoundariesAreNotDynamicallyImported: typeof strict === 'boolean' ? strict : undefined,
72
- }
73
- }
74
-
75
47
  const { readFile } = await import('node:fs/promises')
76
48
  const { dirname, resolve } = await import('node:path')
77
49
 
78
50
  const packageJsonPath = resolve(process.cwd(), 'package.json')
79
51
  let config: HotHookConfig = {}
80
52
  try {
81
- config = readConfig(JSON.parse(await readFile(packageJsonPath, 'utf8')))
53
+ config = readHotHookConfig(JSON.parse(await readFile(packageJsonPath, 'utf8')))
82
54
  } catch {
83
- // No package.json, or unreadable: hot-hook still works, it just has no
84
- // boundaries, so every change asks for a restart. That is the old
85
- // behaviour, not a failure worth stopping dev over.
55
+ // No package.json, or unreadable: fall through to the conventional
56
+ // boundaries below rather than stopping dev over it.
86
57
  }
87
58
 
88
59
  // `hot-hook` is an optional peer, declared by the application because it is a
package/src/index.ts CHANGED
@@ -385,4 +385,4 @@ export {
385
385
  StatsTracker,
386
386
  } from './scheduler/index.js'
387
387
 
388
- export const VERSION = '0.2.21'
388
+ export const VERSION = '0.2.23'