@warlock.js/core 5.28.0 → 5.29.0

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.
Files changed (79) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/esm/container/development-app-modules.d.mts +31 -0
  3. package/esm/container/development-app-modules.d.mts.map +1 -0
  4. package/esm/container/index.d.mts +2 -0
  5. package/esm/container/index.d.mts.map +1 -1
  6. package/esm/container/index.mjs.map +1 -1
  7. package/esm/dev-server/app-module-registry.mjs +52 -0
  8. package/esm/dev-server/app-module-registry.mjs.map +1 -0
  9. package/esm/dev-server/files-orchestrator.mjs +13 -2
  10. package/esm/dev-server/files-orchestrator.mjs.map +1 -1
  11. package/esm/index.d.mts +3 -1
  12. package/esm/index.mjs +2 -1
  13. package/esm/localization/parse-locale-dictionary.d.mts +6 -1
  14. package/esm/localization/parse-locale-dictionary.d.mts.map +1 -1
  15. package/esm/localization/parse-locale-dictionary.mjs +5 -1
  16. package/esm/localization/parse-locale-dictionary.mjs.map +1 -1
  17. package/esm/openapi/response-schemas.mjs +4 -1
  18. package/esm/openapi/response-schemas.mjs.map +1 -1
  19. package/esm/openapi/schema-registry.mjs +6 -0
  20. package/esm/openapi/schema-registry.mjs.map +1 -1
  21. package/esm/resource/index.d.mts +1 -0
  22. package/esm/resource/index.mjs +1 -0
  23. package/esm/resource/nullable-resource.d.mts +44 -0
  24. package/esm/resource/nullable-resource.d.mts.map +1 -0
  25. package/esm/resource/nullable-resource.mjs +38 -0
  26. package/esm/resource/nullable-resource.mjs.map +1 -0
  27. package/esm/resource/resource.d.mts.map +1 -1
  28. package/esm/resource/resource.mjs +22 -3
  29. package/esm/resource/resource.mjs.map +1 -1
  30. package/esm/resource/types.d.mts +10 -5
  31. package/esm/resource/types.d.mts.map +1 -1
  32. package/esm/router/response-schema-types.mjs +2 -0
  33. package/esm/router/response-schema-types.mjs.map +1 -1
  34. package/llms-full.txt +241 -241
  35. package/llms.txt +42 -42
  36. package/package.json +12 -12
  37. package/skills/README.md +39 -39
  38. package/skills/add-connector/SKILL.md +4 -4
  39. package/skills/benchmark-code/SKILL.md +3 -3
  40. package/skills/build-restful/SKILL.md +5 -5
  41. package/skills/build-url/SKILL.md +7 -7
  42. package/skills/configure-app/SKILL.md +7 -7
  43. package/skills/create-controller/SKILL.md +8 -8
  44. package/skills/create-module/SKILL.md +9 -9
  45. package/skills/define-resource/SKILL.md +4 -4
  46. package/skills/encrypt-data/SKILL.md +7 -7
  47. package/skills/generate-openapi/SKILL.md +5 -5
  48. package/skills/hash-password/SKILL.md +8 -8
  49. package/skills/health-checks/SKILL.md +6 -6
  50. package/skills/lower-stage3-decorators/SKILL.md +4 -4
  51. package/skills/process-image/SKILL.md +5 -5
  52. package/skills/register-route/SKILL.md +6 -6
  53. package/skills/request-memo/SKILL.md +4 -4
  54. package/skills/request-tracing/SKILL.md +6 -6
  55. package/skills/resolve-path/SKILL.md +6 -6
  56. package/skills/retry-operation/SKILL.md +4 -4
  57. package/skills/run-app/SKILL.md +11 -11
  58. package/skills/send-mail/SKILL.md +3 -3
  59. package/skills/send-response/SKILL.md +6 -6
  60. package/skills/store-file/SKILL.md +4 -4
  61. package/skills/test-http/SKILL.md +5 -5
  62. package/skills/test-service/SKILL.md +5 -5
  63. package/skills/update-packages/SKILL.md +6 -6
  64. package/skills/upload-file/SKILL.md +7 -7
  65. package/skills/use-app-context/SKILL.md +7 -7
  66. package/skills/use-localization/SKILL.md +6 -6
  67. package/skills/use-middleware/SKILL.md +6 -6
  68. package/skills/use-model-transformers/SKILL.md +6 -6
  69. package/skills/use-repository/SKILL.md +7 -7
  70. package/skills/use-request-locals/SKILL.md +4 -4
  71. package/skills/validate-input/SKILL.md +7 -7
  72. package/skills/warlock-conventions/SKILL.md +6 -6
  73. package/skills/warlock-doctor/SKILL.md +5 -5
  74. package/skills/warlock-routes/SKILL.md +6 -6
  75. package/skills/wire-socket/SKILL.md +4 -4
  76. package/skills/write-cli-command/SKILL.md +6 -6
  77. package/skills/write-middleware/SKILL.md +8 -8
  78. package/skills/write-seeder/SKILL.md +5 -5
  79. package/skills/write-use-case/SKILL.md +3 -3
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: write-middleware
3
- description: 'Author HTTP middleware for @warlock.js/core — the `({ request, response })` signature, short-circuit by returning a response, enrich the request with extra fields, register per-route, per-group, or app-wide. Triggers: `Middleware`, `MiddlewareResponse`, `router.group`, `guarded`, `request.detectIp`, `authMiddleware`; "write a custom middleware", "short-circuit a request", "enrich the request with extra fields", "per-route vs per-group middleware"; typical import `import type { Middleware } from "@warlock.js/core"`. Skip: built-in middleware catalog — `@warlock.js/core/use-middleware/SKILL.md`; route attachment — `@warlock.js/core/register-route/SKILL.md`; response helpers — `@warlock.js/core/send-response/SKILL.md`; competing patterns: `express` `(req, res, next)` middleware, Fastify `preHandler` hooks.'
3
+ description: 'Author HTTP middleware for @warlock.js/core — the `({ request, response })` signature, short-circuit by returning a response, enrich the request with extra fields, register per-route, per-group, or app-wide. Triggers: `Middleware`, `MiddlewareResponse`, `router.group`, `guarded`, `request.detectIp`, `authMiddleware`; "write a custom middleware", "short-circuit a request", "enrich the request with extra fields", "per-route vs per-group middleware"; typical import `import type { Middleware } from "@warlock.js/core"`. Skip: built-in middleware catalog — the `use-middleware` topic; route attachment — the `register-route` topic; response helpers — the `send-response` topic; competing patterns: `express` `(req, res, next)` middleware, Fastify `preHandler` hooks.'
4
4
  ---
5
5
 
6
6
  # Warlock — write a middleware
@@ -51,7 +51,7 @@ export const requireFeatureFlag: Middleware = async ({ request, response }) => {
51
51
  };
52
52
  ```
53
53
 
54
- If you short-circuit, the controller never runs. The response helper you pick (`forbidden`, `unauthorized`, `badRequest`, etc.) sets the status — see [`send-response`](../send-response/SKILL.md).
54
+ If you short-circuit, the controller never runs. The response helper you pick (`forbidden`, `unauthorized`, `badRequest`, etc.) sets the status — see the `send-response` topic.
55
55
 
56
56
  ## Enriching the request
57
57
 
@@ -200,7 +200,7 @@ export const optionalAuth: Middleware = async ({ request, response }) => {
200
200
 
201
201
  ## Using built-in middleware
202
202
 
203
- `@warlock.js/core` ships seven built-in middlewares (rate limit, concurrency cap, body cap, idempotency, maintenance, IP filter, response cache) under the `middleware` namespace from `@warlock.js/core`. They cover the patterns most apps need — see [`use-middleware`](../use-middleware/SKILL.md) for the catalog, per-primitive deep-dives, error semantics, and gotchas specific to using them.
203
+ `@warlock.js/core` ships seven built-in middlewares (rate limit, concurrency cap, body cap, idempotency, maintenance, IP filter, response cache) under the `middleware` namespace from `@warlock.js/core`. They cover the patterns most apps need — see the `use-middleware` topic for the catalog, per-primitive deep-dives, error semantics, and gotchas specific to using them.
204
204
 
205
205
  `X-Request-Id` correlation is wired automatically (inherit + echo on every response) — the same skill covers that too. It's not a middleware; nothing to register.
206
206
 
@@ -217,8 +217,8 @@ export const optionalAuth: Middleware = async ({ request, response }) => {
217
217
 
218
218
  ## See also
219
219
 
220
- - [`use-middleware/SKILL.md`](../use-middleware/SKILL.md) — the built-in middleware catalog (`rateLimit`, `idempotency`, `maxBodySize`, etc.) + request-id correlation.
221
- - [`register-route/SKILL.md`](../register-route/SKILL.md) — where middleware attaches: `router.group` and route-options.
222
- - [`create-controller/SKILL.md`](../create-controller/SKILL.md) — how the controller picks up `request.locals.user`, `request.validated()`, etc., set by upstream middleware.
223
- - [`send-response/SKILL.md`](../send-response/SKILL.md) — the response helpers used to short-circuit.
224
- - [`warlock-conventions/SKILL.md`](../warlock-conventions/SKILL.md) — the `guarded()` / `guardedAdmin()` / `publicRoutes()` convention.
220
+ - The `use-middleware` topic — the built-in middleware catalog (`rateLimit`, `idempotency`, `maxBodySize`, etc.) + request-id correlation.
221
+ - The `register-route` topic — where middleware attaches: `router.group` and route-options.
222
+ - The `create-controller` topic — how the controller picks up `request.locals.user`, `request.validated()`, etc., set by upstream middleware.
223
+ - The `send-response` topic — the response helpers used to short-circuit.
224
+ - The `warlock-conventions` topic — the `guarded()` / `guardedAdmin()` / `publicRoutes()` convention.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: write-seeder
3
- description: 'Author a seed file under `src/app/<module>/seeds/<name>.ts` using the `seeder()` factory — `name`, `dependsOn`, `once`, `order`, `batchSize`, `run({ track, now, batchSize })`. Auto-discovered by `warlock seed`; tracked in a `seeds` table; per-record refs in `seed_records` so `warlock seed --drop` can undo a seed. Triggers: `seeder`, `Seeder`, `SeedResult`, `SeedContext`, `SeedClock`, `track`, `now`, `batchSize`, `SeedersManager`, `warlock seed`, `--fresh`, `--drop`, `--list`, `--path`; "seed default roles", "undo a seed", "one-time data migration", "auto-discovered seeds", "order seeds by dependency", "deterministic seed timestamps", "inject a seed clock"; typical import `import { seeder } from "@warlock.js/core"`. Skip: module folder layout — `@warlock.js/core/create-module/SKILL.md`; repository CRUD — `@warlock.js/core/use-repository/SKILL.md`; CLI flags — `@warlock.js/core/write-cli-command/SKILL.md`; competing patterns: hand-rolled `node scripts/seed.js`, `typeorm-seeding`.'
3
+ description: 'Author a seed file under `src/app/<module>/seeds/<name>.ts` using the `seeder()` factory — `name`, `dependsOn`, `once`, `order`, `batchSize`, `run({ track, now, batchSize })`. Auto-discovered by `warlock seed`; tracked in a `seeds` table; per-record refs in `seed_records` so `warlock seed --drop` can undo a seed. Triggers: `seeder`, `Seeder`, `SeedResult`, `SeedContext`, `SeedClock`, `track`, `now`, `batchSize`, `SeedersManager`, `warlock seed`, `--fresh`, `--drop`, `--list`, `--path`; "seed default roles", "undo a seed", "one-time data migration", "auto-discovered seeds", "order seeds by dependency", "deterministic seed timestamps", "inject a seed clock"; typical import `import { seeder } from "@warlock.js/core"`. Skip: module folder layout — the `create-module` topic; repository CRUD — the `use-repository` topic; CLI flags — the `write-cli-command` topic; competing patterns: hand-rolled `node scripts/seed.js`, `typeorm-seeding`.'
4
4
  ---
5
5
 
6
6
  # Warlock — write a seeder
@@ -371,7 +371,7 @@ warlock seed --transaction # (default true) — pass --transaction=false to s
371
371
 
372
372
  ## See also
373
373
 
374
- - [`create-module/SKILL.md`](../create-module/SKILL.md) — the `seeds/` folder layout in a module, `generate.module` scaffolding.
375
- - [`use-repository/SKILL.md`](../use-repository/SKILL.md) — the model `create` / `first` calls used inside seeds.
376
- - [`write-cli-command/SKILL.md`](../write-cli-command/SKILL.md) — the `warlock seed` CLI flags and full preload shape.
377
- - [`warlock-conventions/SKILL.md`](../warlock-conventions/SKILL.md) — `seeds/` is the canonical folder name (singular `seed/` is incorrect).
374
+ - The `create-module` topic — the `seeds/` folder layout in a module, `generate.module` scaffolding.
375
+ - The `use-repository` topic — the model `create` / `first` calls used inside seeds.
376
+ - The `write-cli-command` topic — the `warlock seed` CLI flags and full preload shape.
377
+ - The `warlock-conventions` topic — `seeds/` is the canonical folder name (singular `seed/` is incorrect).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: write-use-case
3
- description: 'Author `useCase()` pipelines for business logic — guards, schema, before/after middleware, retry, benchmark, broadcast, lifecycle callbacks; transport-agnostic and observable by default. Input is inferred from the `schema`. Triggers: `useCase`, `UseCaseContext`, `UseCaseResult`, `retry`, `benchmark`, `broadcast`, `description`, `globalUseCasesEvents`, `UseCaseBroadcastChannel`; "encapsulate a business operation", "share logic between HTTP and CLI", "add guards and lifecycle hooks", "broadcast a use case result", "transport-agnostic pipeline"; typical import `import { useCase } from "@warlock.js/core"`. Skip: thin handler shape — `@warlock.js/core/create-controller/SKILL.md`; schema details — `@warlock.js/core/validate-input/SKILL.md`; the standalone retry util — `@warlock.js/core/retry-operation/SKILL.md`; competing libs `@nestjs/cqrs`, `inversify`, hand-rolled service classes.'
3
+ description: 'Author `useCase()` pipelines for business logic — guards, schema, before/after middleware, retry, benchmark, broadcast, lifecycle callbacks; transport-agnostic and observable by default. Input is inferred from the `schema`. Triggers: `useCase`, `UseCaseContext`, `UseCaseResult`, `retry`, `benchmark`, `broadcast`, `description`, `globalUseCasesEvents`, `UseCaseBroadcastChannel`; "encapsulate a business operation", "share logic between HTTP and CLI", "add guards and lifecycle hooks", "broadcast a use case result", "transport-agnostic pipeline"; typical import `import { useCase } from "@warlock.js/core"`. Skip: thin handler shape — the `create-controller` topic; schema details — the `validate-input` topic; the standalone retry util — the `retry-operation` topic; competing libs `@nestjs/cqrs`, `inversify`, hand-rolled service classes.'
4
4
  ---
5
5
 
6
6
  # Warlock — write a use case
@@ -290,6 +290,6 @@ For the plain-function flavour (`warlock generate.use-case <module>/<verb-noun>`
290
290
 
291
291
  ## See also
292
292
 
293
- - [`@warlock.js/core/create-controller/SKILL.md`](@warlock.js/core/create-controller/SKILL.md) — the usual next step: invoke this use case from an HTTP controller.
294
- - [`@warlock.js/herald/publish-message/SKILL.md`](@warlock.js/herald/publish-message/SKILL.md) — the message bus the `broadcast` adapter publishes to (cross-package).
293
+ - The `create-controller` topic — the usual next step: invoke this use case from an HTTP controller.
294
+ - The `publish-message` topic of the `warlock-js-herald` skill — the message bus the `broadcast` adapter publishes to (cross-package).
295
295