ts-procedures 10.1.2 → 10.2.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.
- package/CHANGELOG.md +26 -91
- package/README.md +2 -0
- package/agent_config/claude-code/skills/ts-procedures/anti-patterns.md +8 -0
- package/agent_config/claude-code/skills/ts-procedures/api-reference.md +25 -22
- package/agent_config/claude-code/skills/ts-procedures/patterns.md +24 -13
- package/agent_config/copilot/copilot-instructions.md +1 -1
- package/agent_config/cursor/cursorrules +1 -1
- package/build/adapters/hono/envelope-parity.test.js +6 -17
- package/build/adapters/hono/envelope-parity.test.js.map +1 -1
- package/build/adapters/hono/handlers/http-stream.d.ts +2 -1
- package/build/adapters/hono/handlers/http-stream.js +9 -2
- package/build/adapters/hono/handlers/http-stream.js.map +1 -1
- package/build/adapters/hono/handlers/http.d.ts +2 -1
- package/build/adapters/hono/handlers/http.js +9 -2
- package/build/adapters/hono/handlers/http.js.map +1 -1
- package/build/adapters/hono/handlers/rpc.d.ts +2 -1
- package/build/adapters/hono/handlers/rpc.js +9 -2
- package/build/adapters/hono/handlers/rpc.js.map +1 -1
- package/build/adapters/hono/handlers/stream.d.ts +2 -1
- package/build/adapters/hono/handlers/stream.js +9 -2
- package/build/adapters/hono/handlers/stream.js.map +1 -1
- package/build/adapters/hono/index.d.ts +14 -7
- package/build/adapters/hono/index.js +45 -5
- package/build/adapters/hono/index.js.map +1 -1
- package/build/adapters/hono/index.test.js +55 -0
- package/build/adapters/hono/index.test.js.map +1 -1
- package/build/adapters/hono/request.d.ts +7 -0
- package/build/adapters/hono/request.js +15 -0
- package/build/adapters/hono/request.js.map +1 -1
- package/build/adapters/hono/types.d.ts +31 -0
- package/build/adapters/hono/types.js.map +1 -1
- package/build/codegen/bin/cli.js +1 -1
- package/build/codegen/bin/cli.js.map +1 -1
- package/build/codegen/constants.js +2 -2
- package/build/codegen/constants.js.map +1 -1
- package/build/codegen/emit/api-route.js +1 -1
- package/build/codegen/emit/api-route.js.map +1 -1
- package/build/codegen/emit/scope-file.js +1 -1
- package/build/codegen/emit/scope-file.js.map +1 -1
- package/build/codegen/emit-errors.integration.test.js +2 -2
- package/build/codegen/emit-errors.integration.test.js.map +1 -1
- package/build/codegen/resolve-envelope.js +1 -1
- package/build/codegen/resolve-envelope.js.map +1 -1
- package/build/codegen/test-helpers/run-tsc.js +1 -1
- package/build/codegen/test-helpers/run-tsc.js.map +1 -1
- package/build/core/create-http-stream.d.ts +3 -14
- package/build/core/create-http-stream.js +4 -2
- package/build/core/create-http-stream.js.map +1 -1
- package/build/core/create-http.d.ts +2 -9
- package/build/core/create-http.js +3 -2
- package/build/core/create-http.js.map +1 -1
- package/build/core/create-http.test-d.js +104 -0
- package/build/core/create-http.test-d.js.map +1 -0
- package/build/core/create-stream.js +6 -2
- package/build/core/create-stream.js.map +1 -1
- package/build/core/create.js +5 -4
- package/build/core/create.js.map +1 -1
- package/build/core/create.test.js +63 -0
- package/build/core/create.test.js.map +1 -1
- package/build/core/internal.d.ts +16 -0
- package/build/core/internal.js +22 -0
- package/build/core/internal.js.map +1 -1
- package/build/core/procedures.d.ts +9 -16
- package/build/core/procedures.js +4 -0
- package/build/core/procedures.js.map +1 -1
- package/build/core/types.d.ts +85 -4
- package/build/errors.d.ts +33 -0
- package/build/errors.js +91 -0
- package/build/errors.js.map +1 -0
- package/build/errors.test.d.ts +1 -0
- package/build/errors.test.js +122 -0
- package/build/errors.test.js.map +1 -0
- package/build/exports.d.ts +1 -2
- package/build/exports.js +0 -4
- package/build/exports.js.map +1 -1
- package/build/implementations/http/doc-registry.d.ts +28 -0
- package/build/implementations/http/doc-registry.js +96 -0
- package/build/implementations/http/doc-registry.js.map +1 -0
- package/build/implementations/http/doc-registry.test.d.ts +1 -0
- package/build/implementations/http/doc-registry.test.js +516 -0
- package/build/implementations/http/doc-registry.test.js.map +1 -0
- package/build/implementations/http/error-taxonomy.d.ts +249 -0
- package/build/implementations/http/error-taxonomy.js +252 -0
- package/build/implementations/http/error-taxonomy.js.map +1 -0
- package/build/implementations/http/error-taxonomy.test.d.ts +1 -0
- package/build/implementations/http/error-taxonomy.test.js +399 -0
- package/build/implementations/http/error-taxonomy.test.js.map +1 -0
- package/build/implementations/http/express-rpc/error-taxonomy.test.d.ts +1 -0
- package/build/implementations/http/express-rpc/error-taxonomy.test.js +83 -0
- package/build/implementations/http/express-rpc/error-taxonomy.test.js.map +1 -0
- package/build/implementations/http/express-rpc/index.d.ts +125 -0
- package/build/implementations/http/express-rpc/index.js +216 -0
- package/build/implementations/http/express-rpc/index.js.map +1 -0
- package/build/implementations/http/express-rpc/index.test.d.ts +1 -0
- package/build/implementations/http/express-rpc/index.test.js +684 -0
- package/build/implementations/http/express-rpc/index.test.js.map +1 -0
- package/build/implementations/http/express-rpc/types.d.ts +11 -0
- package/build/implementations/http/express-rpc/types.js +2 -0
- package/build/implementations/http/express-rpc/types.js.map +1 -0
- package/build/implementations/http/hono-api/error-taxonomy.test.d.ts +1 -0
- package/build/implementations/http/hono-api/error-taxonomy.test.js +137 -0
- package/build/implementations/http/hono-api/error-taxonomy.test.js.map +1 -0
- package/build/implementations/http/hono-api/index.d.ts +151 -0
- package/build/implementations/http/hono-api/index.js +344 -0
- package/build/implementations/http/hono-api/index.js.map +1 -0
- package/build/implementations/http/hono-api/index.test.d.ts +1 -0
- package/build/implementations/http/hono-api/index.test.js +992 -0
- package/build/implementations/http/hono-api/index.test.js.map +1 -0
- package/build/implementations/http/hono-api/types.d.ts +13 -0
- package/build/implementations/http/hono-api/types.js +2 -0
- package/build/implementations/http/hono-api/types.js.map +1 -0
- package/build/implementations/http/hono-rpc/error-taxonomy.test.d.ts +1 -0
- package/build/implementations/http/hono-rpc/error-taxonomy.test.js +64 -0
- package/build/implementations/http/hono-rpc/error-taxonomy.test.js.map +1 -0
- package/build/implementations/http/hono-rpc/index.d.ts +130 -0
- package/build/implementations/http/hono-rpc/index.js +209 -0
- package/build/implementations/http/hono-rpc/index.js.map +1 -0
- package/build/implementations/http/hono-rpc/index.test.d.ts +1 -0
- package/build/implementations/http/hono-rpc/index.test.js +828 -0
- package/build/implementations/http/hono-rpc/index.test.js.map +1 -0
- package/build/implementations/http/hono-rpc/types.d.ts +11 -0
- package/build/implementations/http/hono-rpc/types.js +2 -0
- package/build/implementations/http/hono-rpc/types.js.map +1 -0
- package/build/implementations/http/hono-stream/error-taxonomy.test.d.ts +1 -0
- package/build/implementations/http/hono-stream/error-taxonomy.test.js +159 -0
- package/build/implementations/http/hono-stream/error-taxonomy.test.js.map +1 -0
- package/build/implementations/http/hono-stream/index.d.ts +171 -0
- package/build/implementations/http/hono-stream/index.js +415 -0
- package/build/implementations/http/hono-stream/index.js.map +1 -0
- package/build/implementations/http/hono-stream/index.test.d.ts +1 -0
- package/build/implementations/http/hono-stream/index.test.js +1383 -0
- package/build/implementations/http/hono-stream/index.test.js.map +1 -0
- package/build/implementations/http/hono-stream/types.d.ts +15 -0
- package/build/implementations/http/hono-stream/types.js +2 -0
- package/build/implementations/http/hono-stream/types.js.map +1 -0
- package/build/implementations/http/on-request-error.test.d.ts +1 -0
- package/build/implementations/http/on-request-error.test.js +173 -0
- package/build/implementations/http/on-request-error.test.js.map +1 -0
- package/build/implementations/http/route-errors.test.d.ts +1 -0
- package/build/implementations/http/route-errors.test.js +139 -0
- package/build/implementations/http/route-errors.test.js.map +1 -0
- package/build/implementations/types.d.ts +192 -0
- package/build/implementations/types.js +2 -0
- package/build/implementations/types.js.map +1 -0
- package/build/index.d.ts +165 -0
- package/build/index.js +258 -0
- package/build/index.js.map +1 -0
- package/build/index.test.d.ts +1 -0
- package/build/index.test.js +920 -0
- package/build/index.test.js.map +1 -0
- package/build/schema/compute-schema.js +1 -5
- package/build/schema/compute-schema.js.map +1 -1
- package/build/schema/compute-schema.test.js +0 -13
- package/build/schema/compute-schema.test.js.map +1 -1
- package/build/schema/extract-json-schema.d.ts +2 -0
- package/build/schema/extract-json-schema.js +12 -0
- package/build/schema/extract-json-schema.js.map +1 -0
- package/build/schema/extract-json-schema.test.d.ts +1 -0
- package/build/schema/extract-json-schema.test.js +23 -0
- package/build/schema/extract-json-schema.test.js.map +1 -0
- package/build/schema/parser.d.ts +28 -0
- package/build/schema/parser.js +170 -0
- package/build/schema/parser.js.map +1 -0
- package/build/schema/parser.test.d.ts +1 -0
- package/build/schema/parser.test.js +120 -0
- package/build/schema/parser.test.js.map +1 -0
- package/build/schema/resolve-schema-lib.d.ts +12 -0
- package/build/schema/resolve-schema-lib.js +11 -0
- package/build/schema/resolve-schema-lib.js.map +1 -0
- package/build/schema/resolve-schema-lib.test.d.ts +1 -0
- package/build/schema/resolve-schema-lib.test.js +17 -0
- package/build/schema/resolve-schema-lib.test.js.map +1 -0
- package/build/schema/typebox.d.ts +1 -1
- package/build/schema/typebox.js +2 -20
- package/build/schema/typebox.js.map +1 -1
- package/build/schema/typebox.test.js +0 -10
- package/build/schema/typebox.test.js.map +1 -1
- package/build/schema/types.d.ts +8 -0
- package/build/schema/types.js +2 -0
- package/build/schema/types.js.map +1 -0
- package/build/server/context.d.ts +12 -2
- package/build/server/context.js +49 -4
- package/build/server/context.js.map +1 -1
- package/build/server/context.test.js +32 -1
- package/build/server/context.test.js.map +1 -1
- package/build/server/doc-registry.js +0 -3
- package/build/server/doc-registry.js.map +1 -1
- package/build/server/doc-registry.test.js +0 -31
- package/build/server/doc-registry.test.js.map +1 -1
- package/build/server/index.d.ts +0 -1
- package/build/server/index.js +0 -1
- package/build/server/index.js.map +1 -1
- package/build/server/types.d.ts +6 -27
- package/build/stack-utils.d.ts +25 -0
- package/build/stack-utils.js +95 -0
- package/build/stack-utils.js.map +1 -0
- package/build/stack-utils.test.d.ts +1 -0
- package/build/stack-utils.test.js +80 -0
- package/build/stack-utils.test.js.map +1 -0
- package/docs/core.md +8 -0
- package/docs/http-integrations.md +41 -27
- package/package.json +8 -8
- package/src/adapters/astro/README.md +2 -0
- package/src/adapters/hono/envelope-parity.test.ts +6 -18
- package/src/adapters/hono/handlers/http-stream.ts +12 -3
- package/src/adapters/hono/handlers/http.ts +12 -3
- package/src/adapters/hono/handlers/rpc.ts +12 -3
- package/src/adapters/hono/handlers/stream.ts +12 -3
- package/src/adapters/hono/index.test.ts +70 -0
- package/src/adapters/hono/index.ts +53 -11
- package/src/adapters/hono/request.ts +18 -0
- package/src/adapters/hono/types.ts +37 -0
- package/src/codegen/bin/cli.ts +1 -1
- package/src/codegen/constants.ts +2 -2
- package/src/codegen/emit/api-route.ts +1 -1
- package/src/codegen/emit/scope-file.ts +1 -2
- package/src/codegen/emit-errors.integration.test.ts +2 -2
- package/src/codegen/resolve-envelope.ts +1 -1
- package/src/codegen/test-helpers/run-tsc.ts +0 -1
- package/src/core/create-http-stream.ts +20 -13
- package/src/core/create-http.test-d.ts +154 -0
- package/src/core/create-http.ts +19 -8
- package/src/core/create-stream.ts +12 -4
- package/src/core/create.test.ts +74 -0
- package/src/core/create.ts +10 -5
- package/src/core/internal.ts +35 -0
- package/src/core/procedures.ts +4 -0
- package/src/core/types.ts +99 -4
- package/src/exports.ts +6 -4
- package/src/schema/compute-schema.test.ts +0 -16
- package/src/schema/compute-schema.ts +1 -5
- package/src/schema/typebox.test.ts +0 -12
- package/src/schema/typebox.ts +2 -21
- package/src/server/context.test.ts +39 -1
- package/src/server/context.ts +54 -4
- package/src/server/doc-registry.test.ts +0 -34
- package/src/server/doc-registry.ts +0 -3
- package/src/server/index.ts +0 -1
- package/src/server/types.ts +8 -27
- package/build/schema/strip-internal-keywords.d.ts +0 -18
- package/build/schema/strip-internal-keywords.js +0 -33
- package/build/schema/strip-internal-keywords.js.map +0 -1
- package/build/schema/strip-internal-keywords.test.js +0 -38
- package/build/schema/strip-internal-keywords.test.js.map +0 -1
- package/build/server/spec-version.d.ts +0 -24
- package/build/server/spec-version.js +0 -26
- package/build/server/spec-version.js.map +0 -1
- package/build/version.d.ts +0 -9
- package/build/version.js +0 -11
- package/build/version.js.map +0 -1
- package/docs/doc-envelope-spec-v1.md +0 -296
- package/docs/doc-envelope-v1.schema.json +0 -253
- package/src/schema/strip-internal-keywords.test.ts +0 -43
- package/src/schema/strip-internal-keywords.ts +0 -36
- package/src/server/spec-version.ts +0 -27
- package/src/version.ts +0 -11
- /package/build/{schema/strip-internal-keywords.test.d.ts → core/create-http.test-d.d.ts} +0 -0
|
@@ -78,7 +78,7 @@ export async function emitScopeFile(group, options) {
|
|
|
78
78
|
}
|
|
79
79
|
catch (err) {
|
|
80
80
|
const msg = err instanceof Error ? err.message : String(err);
|
|
81
|
-
throw new Error(`[ts-procedures-codegen] Failed to emit route "${route.name}" (kind: ${kind}, scope: ${group.scopeKey}): ${msg}
|
|
81
|
+
throw new Error(`[ts-procedures-codegen] Failed to emit route "${route.name}" (kind: ${kind}, scope: ${group.scopeKey}): ${msg}`);
|
|
82
82
|
}
|
|
83
83
|
const prior = pascalToName.get(chunks.routePascal);
|
|
84
84
|
if (prior != null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope-file.js","sourceRoot":"","sources":["../../../src/codegen/emit/scope-file.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scope-file.js","sourceRoot":"","sources":["../../../src/codegen/emit/scope-file.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AA8B5D,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;GAIG;AACH,SAAS,cAAc,CAAC,KAA8B;IACpD,IAAI,YAAY,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK;QAAE,OAAO,aAAa,CAAA;IACtE,IAAI,YAAY,IAAI,KAAK;QAAE,OAAO,QAAQ,CAAA;IAC1C,IAAI,UAAU,IAAI,KAAK;QAAE,OAAO,KAAK,CAAA;IACrC,OAAO,KAAK,CAAA;AACd,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAiB,EACjB,OAA0B;IAE1B,MAAM,EACJ,IAAI,EAAE,QAAQ,EACd,gBAAgB,GAAG,sBAAsB,EACzC,cAAc,GAAG,KAAK,EACtB,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,aAAa,GACd,GAAG,OAAO,IAAI,EAAE,CAAA;IAEjB,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC5C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAA;IAC1C,MAAM,GAAG,GAAqB;QAC5B,IAAI,EAAE,QAAQ;QACd,cAAc;QACd,WAAW,EAAE,MAAM;QACnB,WAAW;QACX,SAAS;QACT,aAAa;QACb,gBAAgB;KACjB,CAAA;IAED,MAAM,mBAAmB,GAAa,EAAE,CAAA;IACxC,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,IAAI,cAAc,GAAG,KAAK,CAAA;IAC1B,6EAA6E;IAC7E,0EAA0E;IAC1E,oEAAoE;IACpE,0EAA0E;IAC1E,0EAA0E;IAC1E,cAAc;IACd,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAA;IAE9C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,MAAmB,CAAA;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,cAAc,CAAC,KAAgC,CAAC,CAAA;QAE3E,IAAI,CAAC;YACH,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,MAAM,GAAG,MAAM,YAAY,CAAC,KAAwB,EAAE,GAAG,CAAC,CAAA;YAC5D,CAAC;iBAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC1B,MAAM,GAAG,MAAM,YAAY,CAAC,KAAwB,EAAE,GAAG,CAAC,CAAA;YAC5D,CAAC;iBAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,GAAG,MAAM,eAAe,CAAC,KAA2B,EAAE,GAAG,CAAC,CAAA;YAClE,CAAC;iBAAM,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;gBAClC,MAAM,GAAG,MAAM,mBAAmB,CAAC,KAA2B,EAAE,GAAG,CAAC,CAAA;YACtE,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,GAAG,CAAC,CAAA;YACjD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC5D,MAAM,IAAI,KAAK,CACb,iDAAiD,KAAK,CAAC,IAAI,YAAY,IAAI,YAAY,KAAK,CAAC,QAAQ,MAAM,GAAG,EAAE,CACjH,CAAA;QACH,CAAC;QAED,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAClD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,kCAAkC,KAAK,CAAC,QAAQ,cAAc,KAAK,UAAU,KAAK,CAAC,IAAI,6BAA6B,MAAM,CAAC,WAAW,KAAK;gBACzI,kGAAkG;gBAClG,+DAA+D,CAClE,CAAA;QACH,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAEhD,mBAAmB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;QACpD,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC/B,IAAI,MAAM,CAAC,SAAS;YAAE,SAAS,GAAG,IAAI,CAAA;QACtC,IAAI,MAAM,CAAC,SAAS;YAAE,cAAc,GAAG,IAAI,CAAA;IAC7C,CAAC;IAED,2EAA2E;IAC3E,oFAAoF;IACpF,MAAM,aAAa,GAAG,SAAS;QAC7B,CAAC,CAAC,2EAA2E,gBAAgB,GAAG;QAChG,CAAC,CAAC,8DAA8D,gBAAgB,GAAG,CAAA;IAErF,2EAA2E;IAC3E,4EAA4E;IAC5E,kEAAkE;IAClE,IAAI,YAAY,GAAG,EAAE,CAAA;IACrB,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,cAAc,EAAE,CAAC;YACnB,YAAY,GAAG,iBAAiB,YAAY,CAAC,WAAW,CAAC,2BAA2B,CAAA;QACtF,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,2CAA2C,CAAA;QAC5D,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAE7C,4EAA4E;IAC5E,iFAAiF;IACjF,0EAA0E;IAC1E,gEAAgE;IAChE,IAAI,IAAY,CAAA;IAChB,IAAI,cAAc,EAAE,CAAC;QACnB,kFAAkF;QAClF,oEAAoE;QACpE,sEAAsE;QACtE,wEAAwE;QACxE,oEAAoE;QACpE,sDAAsD;QACtD,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;QAClD,MAAM,gBAAgB,GAAG;YACvB,GAAG,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E;gBACE,qEAAqE;gBACrE,uDAAuD;gBACvD,cAAc;gBACd,aAAa;gBACb,OAAO;gBACP,KAAK;aACN,CAAC,IAAI,CAAC,IAAI,CAAC;SACb,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEd,IAAI,GAAG;YACL,oBAAoB,MAAM,IAAI;YAC9B,gBAAgB;YAChB,GAAG;YACH,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACd,CAAC;SAAM,CAAC;QACN,qEAAqE;QACrE,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,GAAG,CAAC;YAC/C,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;YACvC,CAAC,CAAC,EAAE,CAAA;QAEN,IAAI,GAAG;YACL,sDAAsD;YACtD,EAAE;YACF,UAAU;YACV,sDAAsD;YACtD,EAAE;YACF,uBAAuB,MAAM,iCAAiC;YAC9D,YAAY;YACZ,cAAc;YACd,KAAK;YACL,GAAG;YACH,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACd,CAAC;IAED,+EAA+E;IAC/E,gFAAgF;IAChF,IAAI,YAAY,GAAG,EAAE,CAAA;IACrB,IAAI,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrD,YAAY,GAAG,iBAAiB,KAAK,qBAAqB,CAAA;IAC5D,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE3F,OAAO;QACL,cAAc;QACd,YAAY;QACZ,EAAE;QACF,IAAI;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC"}
|
|
@@ -83,7 +83,7 @@ describe('generated _errors.ts — runtime behavior', () => {
|
|
|
83
83
|
const err = e;
|
|
84
84
|
const stdout = err.stdout?.toString() ?? '';
|
|
85
85
|
const stderr = err.stderr?.toString() ?? '';
|
|
86
|
-
throw new Error(`tsc failed in ${outDir}:\nSTDOUT:\n${stdout}\nSTDERR:\n${stderr}
|
|
86
|
+
throw new Error(`tsc failed in ${outDir}:\nSTDOUT:\n${stdout}\nSTDERR:\n${stderr}`);
|
|
87
87
|
}
|
|
88
88
|
// Dynamic import of the compiled output.
|
|
89
89
|
const errorsUrl = `file://${join(outDir, 'out', '_errors.js')}`;
|
|
@@ -144,7 +144,7 @@ describe('generated _errors.ts — runtime behavior', () => {
|
|
|
144
144
|
const err = e;
|
|
145
145
|
const stdout = err.stdout?.toString() ?? '';
|
|
146
146
|
const stderr = err.stderr?.toString() ?? '';
|
|
147
|
-
throw new Error(`tsc failed in ${outDir}:\nSTDOUT:\n${stdout}\nSTDERR:\n${stderr}
|
|
147
|
+
throw new Error(`tsc failed in ${outDir}:\nSTDOUT:\n${stdout}\nSTDERR:\n${stderr}`);
|
|
148
148
|
}
|
|
149
149
|
const errorsUrl = `file://${join(outDir, 'out', '_errors.js')}`;
|
|
150
150
|
const mod = await import(errorsUrl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit-errors.integration.test.js","sourceRoot":"","sources":["../../src/codegen/emit-errors.integration.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"emit-errors.integration.test.js","sourceRoot":"","sources":["../../src/codegen/emit-errors.integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ export async function resolveEnvelope(input) {
|
|
|
15
15
|
}
|
|
16
16
|
catch (err) {
|
|
17
17
|
const msg = err instanceof Error ? err.message : String(err);
|
|
18
|
-
throw new Error(`[ts-procedures-codegen] Failed to connect to ${input.url}: ${msg}
|
|
18
|
+
throw new Error(`[ts-procedures-codegen] Failed to connect to ${input.url}: ${msg}`);
|
|
19
19
|
}
|
|
20
20
|
if (!response.ok) {
|
|
21
21
|
throw new Error(`[ts-procedures-codegen] ${input.url} returned HTTP ${response.status} ${response.statusText}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-envelope.js","sourceRoot":"","sources":["../../src/codegen/resolve-envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAS3C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAmB;IACvD,IAAI,QAAqB,CAAA;IAEzB,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IAC3B,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC9C,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAA;IAC3C,CAAC;SAAM,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,QAAkB,CAAA;QACtB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC5D,MAAM,IAAI,KAAK,CAAC,gDAAgD,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"resolve-envelope.js","sourceRoot":"","sources":["../../src/codegen/resolve-envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAS3C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAmB;IACvD,IAAI,QAAqB,CAAA;IAEzB,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IAC3B,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC9C,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAA;IAC3C,CAAC;SAAM,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,QAAkB,CAAA;QACtB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC5D,MAAM,IAAI,KAAK,CAAC,gDAAgD,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,CAAA;QACtF,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,GAAG,kBAAkB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;QACjH,CAAC;QACD,IAAI,CAAC;YACH,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAgB,CAAA;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,GAAG,kEAAkE,CAAC,CAAA;QACzH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAA;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,8FAA8F,OAAO,QAAQ,EAAE,CAChH,CAAA;IACH,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7C,MAAM,IAAI,KAAK,CACb,+EAA+E,IAAI,KAAK;YACxF,0EAA0E,CAC3E,CAAA;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,mEAAmE;YACnE,yEAAyE;YACzE,uEAAuE;YACvE,yEAAyE,CAC1E,CAAA;IACH,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -43,7 +43,7 @@ export function runTsc(args) {
|
|
|
43
43
|
const stdout = e.stdout?.toString() ?? '';
|
|
44
44
|
const stderr = e.stderr?.toString() ?? '';
|
|
45
45
|
const combined = [stdout, stderr].filter(Boolean).join('\n').trim();
|
|
46
|
-
throw new Error(`[runTsc] tsc failed for ${tsconfigPath}:\n${combined || (e.message ?? '(no output)')}
|
|
46
|
+
throw new Error(`[runTsc] tsc failed for ${tsconfigPath}:\n${combined || (e.message ?? '(no output)')}`);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
//# sourceMappingURL=run-tsc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-tsc.js","sourceRoot":"","sources":["../../../src/codegen/test-helpers/run-tsc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,eAAe,EAAE;QACf,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;QAChB,gBAAgB,EAAE,SAAS;QAC3B,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,IAAI;KACnB;IACD,OAAO,EAAE,CAAC,SAAS,CAAC;CACZ,CAAA;AAEV;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,MAAM,CAAC,IAItB;IACC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC5E,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;QAChC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAClE,IAAI,CAAC;QACH,QAAQ,CAAC,GAAG,OAAO,uBAAuB,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAC9E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAA6D,CAAA;QACvE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;QACzC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;QACzC,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;QACnE,MAAM,IAAI,KAAK,CACb,2BAA2B,YAAY,MAAM,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,aAAa,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"run-tsc.js","sourceRoot":"","sources":["../../../src/codegen/test-helpers/run-tsc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,eAAe,EAAE;QACf,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;QAChB,gBAAgB,EAAE,SAAS;QAC3B,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,IAAI;KACnB;IACD,OAAO,EAAE,CAAC,SAAS,CAAC;CACZ,CAAA;AAEV;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,MAAM,CAAC,IAItB;IACC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC5E,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;QAChC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAClE,IAAI,CAAC;QACH,QAAQ,CAAC,GAAG,OAAO,uBAAuB,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAC9E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAA6D,CAAA;QACvE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;QACzC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;QACzC,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;QACnE,MAAM,IAAI,KAAK,CACb,2BAA2B,YAAY,MAAM,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,aAAa,CAAC,EAAE,CACxF,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,23 +1,13 @@
|
|
|
1
1
|
import type { Infer, Prettify } from '../schema/json-schema.js';
|
|
2
2
|
import type { FactoryRuntime } from './internal.js';
|
|
3
|
-
import type { HttpMethod, ProcedureResult, TStreamContext } from './types.js';
|
|
4
|
-
|
|
5
|
-
[K in keyof TReq]: Infer<TReq[K]>;
|
|
6
|
-
}> : undefined;
|
|
7
|
-
export declare function makeCreateHttpStream<TContext>(runtime: FactoryRuntime<TContext, any>): <TName extends string, TReq extends Record<string, unknown> | undefined, TYieldType, TReturnType = void, TResHeaders = undefined, TErrorKey extends string = string>(name: TName, config: {
|
|
3
|
+
import type { HttpMethod, HttpReq, ProcedureResult, THttpReqInput, THttpStreamSchema, TStreamContext } from './types.js';
|
|
4
|
+
export declare function makeCreateHttpStream<TContext>(runtime: FactoryRuntime<TContext, any>): <TName extends string, TReq extends THttpReqInput | undefined, TYieldType, TReturnType = void, TResHeaders = undefined, TErrorKey extends string = string>(name: TName, config: {
|
|
8
5
|
path: string;
|
|
9
6
|
method: HttpMethod;
|
|
10
7
|
scope?: string;
|
|
11
8
|
errors?: TErrorKey[];
|
|
12
9
|
description?: string;
|
|
13
|
-
schema:
|
|
14
|
-
req?: TReq;
|
|
15
|
-
yield?: TYieldType;
|
|
16
|
-
returnType?: TReturnType;
|
|
17
|
-
res?: TResHeaders extends undefined ? undefined : {
|
|
18
|
-
headers: TResHeaders;
|
|
19
|
-
};
|
|
20
|
-
};
|
|
10
|
+
schema: THttpStreamSchema<TReq, TYieldType, TReturnType, TResHeaders>;
|
|
21
11
|
validateYields?: boolean;
|
|
22
12
|
}, handler: TResHeaders extends undefined ? (ctx: Prettify<TContext & TStreamContext>, req: HttpReq<TReq>) => AsyncGenerator<Infer<TYieldType>, Infer<TReturnType> | void, unknown> : (ctx: Prettify<TContext & TStreamContext>, req: HttpReq<TReq>) => Promise<{
|
|
23
13
|
headers: Infer<TResHeaders>;
|
|
@@ -47,4 +37,3 @@ export declare function makeCreateHttpStream<TContext>(runtime: FactoryRuntime<T
|
|
|
47
37
|
name: TName;
|
|
48
38
|
kind: "http-stream";
|
|
49
39
|
}>;
|
|
50
|
-
export {};
|
|
@@ -2,7 +2,7 @@ import { ProcedureError, ProcedureRegistrationError } from './errors.js';
|
|
|
2
2
|
import { computeSchema } from '../schema/compute-schema.js';
|
|
3
3
|
import { captureDefinitionInfo } from './definition-site.js';
|
|
4
4
|
import { applyPathPrefix, checkPathParamConsistency } from './http-route.js';
|
|
5
|
-
import { assertNotDuplicate, combineSignals, iterateWithGuards, shouldSkipValidation, validateReqChannels, } from './internal.js';
|
|
5
|
+
import { assertNotDuplicate, combineSignals, iterateWithGuards, runWithMiddlewares, shouldSkipValidation, validateReqChannels, } from './internal.js';
|
|
6
6
|
export function makeCreateHttpStream(runtime) {
|
|
7
7
|
/**
|
|
8
8
|
* Defines a streaming HTTP procedure (SSE over a REST-shaped route).
|
|
@@ -41,7 +41,9 @@ export function makeCreateHttpStream(runtime) {
|
|
|
41
41
|
error: errorFactory,
|
|
42
42
|
signal: combineSignals(incomingSignal, abortController.signal),
|
|
43
43
|
};
|
|
44
|
-
const
|
|
44
|
+
const fullCtx = { ...ctx, ...streamCtx };
|
|
45
|
+
// Factory middleware wraps obtaining the stream result (generator or {stream, headers}).
|
|
46
|
+
const handlerResult = runWithMiddlewares(runtime.middlewares, fullCtx, req, (c, r) => handler(c, r));
|
|
45
47
|
const guardOptions = {
|
|
46
48
|
name,
|
|
47
49
|
validateYields,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-http-stream.js","sourceRoot":"","sources":["../../src/core/create-http-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAC5E,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"create-http-stream.js","sourceRoot":"","sources":["../../src/core/create-http-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAC5E,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,eAAe,CAAA;AAYtB,MAAM,UAAU,oBAAoB,CAAW,OAAsC;IACnF;;;;;;;;OAQG;IACH,OAAO,SAAS,gBAAgB,CAQ9B,IAAW,EACX,MAQC,EACD,OAWM;QAEN,MAAM,cAAc,GAAG,qBAAqB,EAAE,CAAA;QAE9C,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;QAC1D,IAAK,MAAM,CAAC,MAAc,EAAE,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,0BAA0B,CAClC,IAAI,EACJ,uGAAuG,IAAI,IAAI,EAC/G,cAAc,CACf,CAAA;QACH,CAAC;QAED,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,aAAa,CAC/C,IAAI,EACJ;YACE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAA0C;YAC7D,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;YAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU;YACpC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAwC;SAC5D,EACD,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,CACzE,CAAA;QAED,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,KAAK,CAAA;QAEzD,MAAM,gBAAgB,GAAI,UAAU,CAAC,GAA2C,EAAE,UAAU,CAAA;QAC5F,yBAAyB,CACvB,IAAI,EACJ,IAAI,EACJ,gBAAuD,EACvD,cAAc,CACf,CAAA;QAED,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,IAAa,EAAE,EAAE,CACtD,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;QACzD,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,KAAK,CAAA;QAErD,MAAM,cAAc,GAAG,KAAK,EAC1B,GAAa,EACb,GAAQ,EACyF,EAAE;YACnG,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;YAE7C,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;gBACxC,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,CAAA;YACjE,CAAC;YAED,MAAM,cAAc,GAAI,GAAgC,CAAC,MAAM,CAAA;YAC/D,MAAM,SAAS,GAAmB;gBAChC,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,cAAc,CAAC,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC;aAC/D,CAAA;YAED,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,SAAS,EAAE,CAAA;YACxC,yFAAyF;YACzF,MAAM,aAAa,GAAQ,kBAAkB,CAC3C,OAAO,CAAC,WAAW,EACnB,OAAO,EACP,GAAG,EACH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,OAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CACjC,CAAA;YACD,MAAM,YAAY,GAAG;gBACnB,IAAI;gBACJ,cAAc;gBACd,aAAa,EAAE,WAAW,CAAC,KAAK;gBAChC,eAAe;gBACf,cAAc;aACf,CAAA;YAED,IAAI,OAAO,aAAa,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,UAAU,EAAE,CAAC;gBAChE,kCAAkC;gBAClC,MAAM,YAAY,GAAI,aAAmD,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAA;gBACjG,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAA;YAClE,CAAC;iBAAM,IAAI,OAAO,aAAa,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;gBACrD,+CAA+C;gBAC/C,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAA;gBACpC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,CAAC;oBACzE,MAAM,IAAI,cAAc,CACtB,IAAI,EACJ,iGAAiG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAC3H,SAAS,EACT,cAAc,CACf,CAAA;gBACH,CAAC;gBACD,MAAM,YAAY,GAAI,QAAQ,CAAC,MAA4C,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAA;gBACnG,OAAO;oBACL,MAAM,EAAE,iBAAiB,CAAC,YAAY,EAAE,YAAY,CAAC;oBACrD,cAAc,EAAE,QAAQ,CAAC,OAAO;iBACjC,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,cAAc,CACtB,IAAI,EACJ,yFAAyF,EACzF,SAAS,EACT,cAAc,CACf,CAAA;YACH,CAAC;QACH,CAAC,CAAA;QAED,yEAAyE;QACzE,yEAAyE;QACzE,wEAAwE;QACxE,oEAAoE;QACpE,MAAM,kBAAkB,GAAG;YACzB,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;YAC5D,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1F,GAAG,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC;YAC1E,GAAG,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC;SAClF,CAAA;QAED,MAAM,mBAAmB,GAA+C;YACtE,IAAI;YACJ,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE;gBACN,IAAI;gBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK;gBACL,MAAM,EAAE,MAAM,CAAC,MAA8B;gBAC7C,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,MAAM,EAAE,kBAAkB;gBAC1B,UAAU,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE;gBAC9D,cAAc;aACf;YACD,OAAO,EAAE,cAAqB;SAC/B,CAAA;QAED,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,mBAA0B,CAAC,CAAA;QACtD,OAAO,CAAC,QAAQ,EAAE,CAAC,mBAA0B,CAAC,CAAA;QAE9C,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,aAAsB,EAAE,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAA;QAalF,OAAO;YACL,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC,OAAO;YACnC,SAAS,EAAE,mBAAmB,CAAC,OAAO;YACtC,IAAI;SAC2C,CAAA;IACnD,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Infer, Prettify } from '../schema/json-schema.js';
|
|
2
2
|
import type { FactoryRuntime } from './internal.js';
|
|
3
|
-
import type { ProcedureResult, TCreateHttpConfig, TLocalContext } from './types.js';
|
|
3
|
+
import type { HttpReq, ProcedureResult, TCreateHttpConfig, THttpReqInput, THttpResInput, TLocalContext } from './types.js';
|
|
4
4
|
/**
|
|
5
5
|
* The handler return shape is gated by the DECLARED response schema, not by
|
|
6
6
|
* duck-typing the returned value — so domain objects that happen to have
|
|
@@ -22,13 +22,7 @@ export type HttpReturn<TRes> = TRes extends {
|
|
|
22
22
|
} : TRes extends {
|
|
23
23
|
body: infer B;
|
|
24
24
|
} ? Infer<B> : void;
|
|
25
|
-
|
|
26
|
-
[K in keyof TReq]: Infer<TReq[K]>;
|
|
27
|
-
}> : undefined;
|
|
28
|
-
export declare function makeCreateHttp<TContext>(runtime: FactoryRuntime<TContext, any>): <TName extends string, TReq extends Record<string, unknown> | undefined = undefined, TRes extends {
|
|
29
|
-
body?: unknown;
|
|
30
|
-
headers?: unknown;
|
|
31
|
-
} | undefined = undefined, TErrorKey extends string = string>(name: TName, config: TCreateHttpConfig<TReq, TRes, TErrorKey>, handler: (ctx: Prettify<TContext & TLocalContext>, req: HttpReq<TReq>) => Promise<HttpReturn<TRes>>) => ProcedureResult<TName, (ctx: Prettify<TContext>, req: HttpReq<TReq>) => Promise<HttpReturn<TRes>>, {
|
|
25
|
+
export declare function makeCreateHttp<TContext>(runtime: FactoryRuntime<TContext, any>): <TName extends string, TReq extends THttpReqInput | undefined = undefined, TRes extends THttpResInput | undefined = undefined, TErrorKey extends string = string>(name: TName, config: TCreateHttpConfig<TReq, TRes, TErrorKey>, handler: (ctx: Prettify<TContext & TLocalContext>, req: HttpReq<TReq>) => Promise<HttpReturn<TRes>>) => ProcedureResult<TName, (ctx: Prettify<TContext>, req: HttpReq<TReq>) => Promise<HttpReturn<TRes>>, {
|
|
32
26
|
path: string;
|
|
33
27
|
method: import("./types.js").HttpMethod;
|
|
34
28
|
successStatus?: number;
|
|
@@ -48,4 +42,3 @@ export declare function makeCreateHttp<TContext>(runtime: FactoryRuntime<TContex
|
|
|
48
42
|
name: TName;
|
|
49
43
|
kind: "http";
|
|
50
44
|
}>;
|
|
51
|
-
export {};
|
|
@@ -2,7 +2,7 @@ import { ProcedureError, ProcedureRegistrationError } from './errors.js';
|
|
|
2
2
|
import { computeSchema } from '../schema/compute-schema.js';
|
|
3
3
|
import { captureDefinitionInfo } from './definition-site.js';
|
|
4
4
|
import { applyPathPrefix, checkPathParamConsistency } from './http-route.js';
|
|
5
|
-
import { assertNotDuplicate, shouldSkipValidation, toProcedureError, validateReqChannels, } from './internal.js';
|
|
5
|
+
import { assertNotDuplicate, runWithMiddlewares, shouldSkipValidation, toProcedureError, validateReqChannels, } from './internal.js';
|
|
6
6
|
export function makeCreateHttp(runtime) {
|
|
7
7
|
/**
|
|
8
8
|
* Defines a REST-shaped HTTP procedure with per-channel input validation
|
|
@@ -45,7 +45,8 @@ export function makeCreateHttp(runtime) {
|
|
|
45
45
|
validateReqChannels(name, validations.req, req, definitionInfo);
|
|
46
46
|
}
|
|
47
47
|
const localCtx = { error: errorFactory };
|
|
48
|
-
|
|
48
|
+
const fullCtx = { ...ctx, ...localCtx };
|
|
49
|
+
return await runWithMiddlewares(runtime.middlewares, fullCtx, req, (c, r) => handler(c, r));
|
|
49
50
|
}
|
|
50
51
|
catch (error) {
|
|
51
52
|
throw toProcedureError(name, definitionInfo, error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-http.js","sourceRoot":"","sources":["../../src/core/create-http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAC5E,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"create-http.js","sourceRoot":"","sources":["../../src/core/create-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Type } from 'typebox';
|
|
2
|
+
import { describe, expectTypeOf, test } from 'vitest';
|
|
3
|
+
import { Procedures } from './procedures.js';
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// Type tests for HTTP input shape autocomplete / DX contract
|
|
6
|
+
// These guard the shapes that power IDE autocomplete for schema.req / schema.res.
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
describe('THttpReqInput / THttpResInput / APIInput', () => {
|
|
9
|
+
test('APIInput accepts only the four known channels', () => {
|
|
10
|
+
// Valid
|
|
11
|
+
const good = {
|
|
12
|
+
pathParams: Type.Object({ id: Type.String() }),
|
|
13
|
+
query: Type.Object({}),
|
|
14
|
+
body: Type.Object({}),
|
|
15
|
+
headers: Type.Object({}),
|
|
16
|
+
};
|
|
17
|
+
expectTypeOf(good).toEqualTypeOf();
|
|
18
|
+
// Invalid channel should not be assignable
|
|
19
|
+
// @ts-expect-error - unknown channel name
|
|
20
|
+
const _bad = { wrong: Type.Object({}) };
|
|
21
|
+
});
|
|
22
|
+
test('THttpResInput shape', () => {
|
|
23
|
+
const resShape = {
|
|
24
|
+
body: Type.Object({ ok: Type.Boolean() }),
|
|
25
|
+
headers: Type.Object({ 'x-foo': Type.String() }),
|
|
26
|
+
};
|
|
27
|
+
expectTypeOf(resShape).toEqualTypeOf();
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
describe('TCreateHttpConfig shapes for literals', () => {
|
|
31
|
+
test('config literal gets the channel keys from the shape (autocomplete contract)', () => {
|
|
32
|
+
const cfg = {
|
|
33
|
+
path: '/x',
|
|
34
|
+
method: 'get',
|
|
35
|
+
schema: {
|
|
36
|
+
req: {
|
|
37
|
+
// These keys should be suggested by the IDE
|
|
38
|
+
pathParams: Type.Object({ id: Type.String() }),
|
|
39
|
+
query: undefined,
|
|
40
|
+
},
|
|
41
|
+
res: {
|
|
42
|
+
body: Type.Object({}),
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
expectTypeOf(cfg).toEqualTypeOf();
|
|
47
|
+
});
|
|
48
|
+
test('using satisfies APIInput on req is valid and preserves specific types', () => {
|
|
49
|
+
const req = {
|
|
50
|
+
pathParams: Type.Object({ id: Type.String() }),
|
|
51
|
+
query: Type.Object({ q: Type.Optional(Type.String()) }),
|
|
52
|
+
};
|
|
53
|
+
const cfg = {
|
|
54
|
+
path: '/y',
|
|
55
|
+
method: 'get',
|
|
56
|
+
schema: { req },
|
|
57
|
+
};
|
|
58
|
+
// The assignment succeeded, proving the shape accepted the keys
|
|
59
|
+
// (specific inference of TReq from literal is a bonus)
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe('handler inference via HttpReq / HttpReturn', () => {
|
|
63
|
+
const procs = Procedures();
|
|
64
|
+
test('full req shape produces correctly typed handler param', () => {
|
|
65
|
+
const { Get } = procs.CreateHttp('Get', {
|
|
66
|
+
path: '/u/:id',
|
|
67
|
+
method: 'get',
|
|
68
|
+
schema: {
|
|
69
|
+
req: {
|
|
70
|
+
pathParams: Type.Object({ id: Type.String() }),
|
|
71
|
+
query: Type.Object({ verbose: Type.Optional(Type.Boolean()) }),
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
}, async (_ctx, req) => {
|
|
75
|
+
expectTypeOf(req).toEqualTypeOf();
|
|
76
|
+
// no res schema => void
|
|
77
|
+
return undefined;
|
|
78
|
+
});
|
|
79
|
+
expectTypeOf().toEqualTypeOf();
|
|
80
|
+
});
|
|
81
|
+
test('res with headers produces { body, headers } return shape', () => {
|
|
82
|
+
const { WithHeaders } = procs.CreateHttp('WithHeaders', {
|
|
83
|
+
path: '/h',
|
|
84
|
+
method: 'get',
|
|
85
|
+
schema: {
|
|
86
|
+
res: {
|
|
87
|
+
body: Type.Object({ data: Type.String() }),
|
|
88
|
+
headers: Type.Object({ 'x-trace': Type.String() }),
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
}, async () => ({ body: { data: 'hi' }, headers: { 'x-trace': 'abc' } }));
|
|
92
|
+
expectTypeOf().toEqualTypeOf();
|
|
93
|
+
});
|
|
94
|
+
test('no schema.res yields void (204-style)', () => {
|
|
95
|
+
const { Logout } = procs.CreateHttp('Logout', { path: '/logout', method: 'post' }, async () => undefined);
|
|
96
|
+
expectTypeOf().toEqualTypeOf();
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
// Smoke test that HttpReq and HttpSchemaInput are exported and usable
|
|
100
|
+
test('HttpReq and HttpSchemaInput are exported and usable', () => {
|
|
101
|
+
expectTypeOf().toHaveProperty('pathParams');
|
|
102
|
+
expectTypeOf().toHaveProperty('query');
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=create-http.test-d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-http.test-d.js","sourceRoot":"","sources":["../../src/core/create-http.test-d.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ProcedureError } from './errors.js';
|
|
2
2
|
import { computeSchema } from '../schema/compute-schema.js';
|
|
3
3
|
import { captureDefinitionInfo } from './definition-site.js';
|
|
4
|
-
import { assertNoHttpFields, assertNotDuplicate, combineSignals, iterateWithGuards, shouldSkipValidation, validateParams, } from './internal.js';
|
|
4
|
+
import { assertNoHttpFields, assertNotDuplicate, combineSignals, iterateWithGuards, runWithMiddlewares, shouldSkipValidation, validateParams, } from './internal.js';
|
|
5
5
|
export function makeCreateStream(runtime) {
|
|
6
6
|
/**
|
|
7
7
|
* Defines a streaming RPC procedure (async generator).
|
|
@@ -52,7 +52,11 @@ export function makeCreateStream(runtime) {
|
|
|
52
52
|
};
|
|
53
53
|
// params is correctly typed at the public API boundary via conditional
|
|
54
54
|
// type; cast here because TS cannot narrow generics inside implementations
|
|
55
|
-
const
|
|
55
|
+
const fullCtx = { ...ctx, ...streamCtx };
|
|
56
|
+
// Apply factory middleware around obtaining the user generator.
|
|
57
|
+
// Middlewares can short-circuit (return a different generator or throw)
|
|
58
|
+
// or augment before the stream starts.
|
|
59
|
+
const userGenerator = runWithMiddlewares(runtime.middlewares, fullCtx, params, (c, p) => handler(c, p));
|
|
56
60
|
return yield* iterateWithGuards(userGenerator[Symbol.asyncIterator](), {
|
|
57
61
|
name,
|
|
58
62
|
validateYields,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-stream.js","sourceRoot":"","sources":["../../src/core/create-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,GACf,MAAM,eAAe,CAAA;AAKtB,MAAM,UAAU,gBAAgB,CAA4B,OAAkD;IAC5G;;;;;;;;;OASG;IACH,OAAO,SAAS,YAAY,CAC1B,IAAW,EACX,MAQmB,EACnB,OAG0E;QAE1E,8CAA8C;QAC9C,MAAM,cAAc,GAAG,qBAAqB,EAAE,CAAA;QAE9C,kBAAkB,CAAC,cAAc,EAAE,IAAI,EAAE,MAAiC,EAAE,cAAc,CAAC,CAAA;QAC3F,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;QAE1D,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;YACrE,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,cAAc;SACf,CAAC,CAAA;QAEF,mEAAmE;QACnE,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,IAAa,EAAE,EAAE,CACtD,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;QAEzD,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,KAAK,CAAA;QAErD,MAAM,mBAAmB,GAA4D;YACnF,IAAI;YACJ,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE;gBACN,GAAG,MAAM;gBACT,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE;oBACV,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,KAAK,EAAE,WAAW,CAAC,KAAK;iBACzB;aACF;YAED,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,cAAc,CAAC,GAAuB,EAAE,MAAsB;gBACrF,sEAAsE;gBACtE,6DAA6D;gBAC7D,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;gBAE7C,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;oBACxC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,CAAA;gBAClE,CAAC;gBAED,MAAM,cAAc,GAAI,GAAgC,CAAC,MAAM,CAAA;gBAC/D,MAAM,SAAS,GAAmB;oBAChC,KAAK,EAAE,YAAY;oBACnB,MAAM,EAAE,cAAc,CAAC,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC;iBAC/D,CAAA;gBAED,uEAAuE;gBACvE,2EAA2E;gBAC3E,MAAM,
|
|
1
|
+
{"version":3,"file":"create-stream.js","sourceRoot":"","sources":["../../src/core/create-stream.ts"],"names":[],"mappings":"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"}
|
package/build/core/create.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ProcedureError } from './errors.js';
|
|
2
2
|
import { computeSchema } from '../schema/compute-schema.js';
|
|
3
3
|
import { captureDefinitionInfo } from './definition-site.js';
|
|
4
|
-
import { assertNoHttpFields, assertNotDuplicate, shouldSkipValidation, toProcedureError, validateParams, } from './internal.js';
|
|
4
|
+
import { assertNoHttpFields, assertNotDuplicate, runWithMiddlewares, shouldSkipValidation, toProcedureError, validateParams, } from './internal.js';
|
|
5
5
|
export function makeCreate(runtime) {
|
|
6
6
|
/**
|
|
7
7
|
* Defines a unary RPC procedure.
|
|
@@ -44,9 +44,10 @@ export function makeCreate(runtime) {
|
|
|
44
44
|
const localCtx = {
|
|
45
45
|
error: errorFactory,
|
|
46
46
|
};
|
|
47
|
-
|
|
48
|
-
//
|
|
49
|
-
|
|
47
|
+
const fullCtx = { ...ctx, ...localCtx };
|
|
48
|
+
// Factory middleware sees the exact same ctx + validated input as the
|
|
49
|
+
// user handler. Supports next({ ctx?, input? }) augmentation.
|
|
50
|
+
return await runWithMiddlewares(runtime.middlewares, fullCtx, params, (c, p) => handler(c, p));
|
|
50
51
|
}
|
|
51
52
|
catch (error) {
|
|
52
53
|
throw toProcedureError(name, definitionInfo, error);
|
package/build/core/create.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/core/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,eAAe,CAAA;AAKtB,MAAM,UAAU,UAAU,CAA4B,OAAkD;IACtG;;;;;;;;;OASG;IACH,OAAO,SAAS,MAAM,CACpB,IAAW,EACX,MAMmB,EACnB,OAGgC;QAEhC,8CAA8C;QAC9C,MAAM,cAAc,GAAG,qBAAqB,EAAE,CAAA;QAE9C,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAiC,EAAE,cAAc,CAAC,CAAA;QACrF,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;QAE1D,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;YACrE,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,cAAc;SACf,CAAC,CAAA;QAEF,mEAAmE;QACnE,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,IAAa,EAAE,EAAE,CACtD,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;QAEzD,MAAM,mBAAmB,GAAsD;YAC7E,IAAI;YACJ,IAAI,EAAE,KAAK;YACX,MAAM,EAAE;gBACN,GAAG,MAAM;gBACT,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE;oBACV,MAAM,EAAE,WAAW,CAAC,MAAM;iBAC3B;aACF;YAED,OAAO,EAAE,KAAK,EAAE,GAAuB,EAAE,MAAsB,EAAE,EAAE;gBACjE,IAAI,CAAC;oBACH,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;wBACxC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,CAAA;oBAClE,CAAC;oBAED,MAAM,QAAQ,GAAkB;wBAC9B,KAAK,EAAE,YAAY;qBACpB,CAAA;oBAED,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/core/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,eAAe,CAAA;AAKtB,MAAM,UAAU,UAAU,CAA4B,OAAkD;IACtG;;;;;;;;;OASG;IACH,OAAO,SAAS,MAAM,CACpB,IAAW,EACX,MAMmB,EACnB,OAGgC;QAEhC,8CAA8C;QAC9C,MAAM,cAAc,GAAG,qBAAqB,EAAE,CAAA;QAE9C,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAiC,EAAE,cAAc,CAAC,CAAA;QACrF,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;QAE1D,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;YACrE,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,cAAc;SACf,CAAC,CAAA;QAEF,mEAAmE;QACnE,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,IAAa,EAAE,EAAE,CACtD,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;QAEzD,MAAM,mBAAmB,GAAsD;YAC7E,IAAI;YACJ,IAAI,EAAE,KAAK;YACX,MAAM,EAAE;gBACN,GAAG,MAAM;gBACT,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE;oBACV,MAAM,EAAE,WAAW,CAAC,MAAM;iBAC3B;aACF;YAED,OAAO,EAAE,KAAK,EAAE,GAAuB,EAAE,MAAsB,EAAE,EAAE;gBACjE,IAAI,CAAC;oBACH,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;wBACxC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,CAAA;oBAClE,CAAC;oBAED,MAAM,QAAQ,GAAkB;wBAC9B,KAAK,EAAE,YAAY;qBACpB,CAAA;oBAED,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,QAAQ,EAAwC,CAAA;oBAE7E,sEAAsE;oBACtE,8DAA8D;oBAC9D,OAAO,MAAM,kBAAkB,CAC7B,OAAO,CAAC,WAAW,EACnB,OAAO,EACP,MAAM,EACN,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAQ,EAAE,CAAQ,CAAC,CACtC,CAAA;gBACH,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,MAAM,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAA;gBACrD,CAAC;YACH,CAAC;SACF,CAAA;QAED,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;QAC/C,OAAO,CAAC,QAAQ,EAAE,CAAC,mBAAmB,CAAC,CAAA;QAEvC,MAAM,IAAI,GAAG;YACX,IAAI;YACJ,IAAI,EAAE,KAAc;YACpB,GAAG,mBAAmB,CAAC,MAAM;SAC9B,CAAA;QAgBD,mEAAmE;QACnE,OAAO;YACL,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC,OAAO;YACnC,SAAS,EAAE,mBAAmB,CAAC,OAAO;YACtC,IAAI;SACoC,CAAA;IAC5C,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -265,6 +265,69 @@ describe('Procedures', () => {
|
|
|
265
265
|
expect(wasAbortedDuringWork).toBe(true);
|
|
266
266
|
});
|
|
267
267
|
});
|
|
268
|
+
describe('Procedures({ middleware }) - factory level, ctx + input aware', () => {
|
|
269
|
+
test('middleware runs with same ctx the handler sees and can inspect input', async () => {
|
|
270
|
+
const calls = [];
|
|
271
|
+
const { Create } = Procedures({
|
|
272
|
+
middleware: [
|
|
273
|
+
({ ctx, input, next }) => {
|
|
274
|
+
calls.push({ userId: ctx.userId, input });
|
|
275
|
+
// "parse the incoming call" using ctx + input
|
|
276
|
+
if (input?.orgId === 'evil') {
|
|
277
|
+
throw ctx.error('tenant violation');
|
|
278
|
+
}
|
|
279
|
+
return next();
|
|
280
|
+
},
|
|
281
|
+
],
|
|
282
|
+
});
|
|
283
|
+
const { GetThing } = Create('GetThing', { schema: { params: Type.Object({ orgId: Type.String() }) } }, async (ctx, p) => {
|
|
284
|
+
return { seenByHandler: ctx.userId, org: p.orgId };
|
|
285
|
+
});
|
|
286
|
+
await GetThing({ userId: 'u1' }, { orgId: 'acme' });
|
|
287
|
+
expect(calls).toHaveLength(1);
|
|
288
|
+
expect(calls[0]).toEqual({ userId: 'u1', input: { orgId: 'acme' } });
|
|
289
|
+
});
|
|
290
|
+
test('middleware can augment ctx and transform input for the handler', async () => {
|
|
291
|
+
const { Create } = Procedures({
|
|
292
|
+
middleware: [
|
|
293
|
+
({ ctx, input, next }) => {
|
|
294
|
+
return next({
|
|
295
|
+
ctx: { ...ctx, extra: 'added' },
|
|
296
|
+
input: { ...input, injected: true },
|
|
297
|
+
});
|
|
298
|
+
},
|
|
299
|
+
],
|
|
300
|
+
});
|
|
301
|
+
const { Echo } = Create('Echo', { schema: { params: Type.Object({ n: Type.Number() }) } }, async (ctx, p) => {
|
|
302
|
+
return { base: ctx.base, extra: ctx.extra, received: p };
|
|
303
|
+
});
|
|
304
|
+
const result = await Echo({ base: 'b' }, { n: 42 });
|
|
305
|
+
expect(result).toEqual({
|
|
306
|
+
base: 'b',
|
|
307
|
+
extra: 'added',
|
|
308
|
+
received: { n: 42, injected: true },
|
|
309
|
+
});
|
|
310
|
+
});
|
|
311
|
+
test('middleware error uses the factory ctx.error and is wrapped as ProcedureError', async () => {
|
|
312
|
+
const { Create } = Procedures({
|
|
313
|
+
middleware: [({ ctx }) => { throw ctx.error('from factory mw'); }],
|
|
314
|
+
});
|
|
315
|
+
const { Fail } = Create('Fail', {}, async () => 'no');
|
|
316
|
+
await expect(Fail({}, {})).rejects.toThrow('from factory mw');
|
|
317
|
+
});
|
|
318
|
+
test('multiple factory middlewares compose (order + next)', async () => {
|
|
319
|
+
const order = [];
|
|
320
|
+
const { Create } = Procedures({
|
|
321
|
+
middleware: [
|
|
322
|
+
async ({ next }) => { order.push('mw1'); return next(); },
|
|
323
|
+
async ({ next }) => { order.push('mw2'); return next(); },
|
|
324
|
+
],
|
|
325
|
+
});
|
|
326
|
+
const { Ok } = Create('Ok', {}, async () => 'ok');
|
|
327
|
+
await Ok({}, {});
|
|
328
|
+
expect(order).toEqual(['mw1', 'mw2']);
|
|
329
|
+
});
|
|
330
|
+
});
|
|
268
331
|
describe('Procedures - Definition Location in Errors', () => {
|
|
269
332
|
test('ProcedureValidationError includes definition location', async () => {
|
|
270
333
|
const { Create } = Procedures();
|