@jlnstack/procedure 0.0.1
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 +7 -0
- package/README.md +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.cjs +14 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.mjs +14 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.cjs +27 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.mjs +27 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPrimitive.cjs +16 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPrimitive.mjs +16 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPropertyKey.cjs +11 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPropertyKey.mjs +11 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/typeof.cjs +18 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/typeof.mjs +12 -0
- package/dist/core-internal.cjs +71 -0
- package/dist/core-internal.d.cts +33 -0
- package/dist/core-internal.d.cts.map +1 -0
- package/dist/core-internal.d.mts +33 -0
- package/dist/core-internal.d.mts.map +1 -0
- package/dist/core-internal.mjs +71 -0
- package/dist/core-internal.mjs.map +1 -0
- package/dist/core.cjs +12 -0
- package/dist/core.d.cts +15 -0
- package/dist/core.d.cts.map +1 -0
- package/dist/core.d.mts +15 -0
- package/dist/core.d.mts.map +1 -0
- package/dist/core.mjs +13 -0
- package/dist/core.mjs.map +1 -0
- package/dist/index.cjs +3 -0
- package/dist/index.d.cts +2 -0
- package/dist/index.d.mts +2 -0
- package/dist/index.mjs +3 -0
- package/dist/next.cjs +45 -0
- package/dist/next.d.cts +47 -0
- package/dist/next.d.cts.map +1 -0
- package/dist/next.d.mts +47 -0
- package/dist/next.d.mts.map +1 -0
- package/dist/next.mjs +46 -0
- package/dist/next.mjs.map +1 -0
- package/dist/react.cjs +25 -0
- package/dist/react.d.cts +20 -0
- package/dist/react.d.cts.map +1 -0
- package/dist/react.d.mts +20 -0
- package/dist/react.d.mts.map +1 -0
- package/dist/react.mjs +26 -0
- package/dist/react.mjs.map +1 -0
- package/dist/types.d.cts +6 -0
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.mts +6 -0
- package/dist/types.d.mts.map +1 -0
- package/package.json +64 -0
- package/src/core-internal.ts +206 -0
- package/src/core.ts +29 -0
- package/src/index.ts +1 -0
- package/src/next.ts +161 -0
- package/src/react.ts +66 -0
- package/src/types.ts +4 -0
- package/test/core.test-d.ts +89 -0
- package/test/core.test.ts +57 -0
- package/test/next.test-d.ts +177 -0
- package/test/next.test.ts +230 -0
- package/tsconfig.build.json +7 -0
- package/tsconfig.json +5 -0
- package/tsdown.config.ts +23 -0
- package/vitest.config.ts +10 -0
package/CHANGELOG.md
ADDED
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const require_toPropertyKey = require('./toPropertyKey.cjs');
|
|
2
|
+
|
|
3
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/defineProperty.js
|
|
4
|
+
function _defineProperty(e, r, t) {
|
|
5
|
+
return (r = require_toPropertyKey.toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
6
|
+
value: t,
|
|
7
|
+
enumerable: !0,
|
|
8
|
+
configurable: !0,
|
|
9
|
+
writable: !0
|
|
10
|
+
}) : e[r] = t, e;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
//#endregion
|
|
14
|
+
exports._defineProperty = _defineProperty;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { toPropertyKey } from "./toPropertyKey.mjs";
|
|
2
|
+
|
|
3
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/defineProperty.js
|
|
4
|
+
function _defineProperty(e, r, t) {
|
|
5
|
+
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
6
|
+
value: t,
|
|
7
|
+
enumerable: !0,
|
|
8
|
+
configurable: !0,
|
|
9
|
+
writable: !0
|
|
10
|
+
}) : e[r] = t, e;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
//#endregion
|
|
14
|
+
export { _defineProperty };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const require_defineProperty = require('./defineProperty.cjs');
|
|
2
|
+
|
|
3
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/objectSpread2.js
|
|
4
|
+
function ownKeys(e, r) {
|
|
5
|
+
var t = Object.keys(e);
|
|
6
|
+
if (Object.getOwnPropertySymbols) {
|
|
7
|
+
var o = Object.getOwnPropertySymbols(e);
|
|
8
|
+
r && (o = o.filter(function(r$1) {
|
|
9
|
+
return Object.getOwnPropertyDescriptor(e, r$1).enumerable;
|
|
10
|
+
})), t.push.apply(t, o);
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
}
|
|
14
|
+
function _objectSpread2(e) {
|
|
15
|
+
for (var r = 1; r < arguments.length; r++) {
|
|
16
|
+
var t = null != arguments[r] ? arguments[r] : {};
|
|
17
|
+
r % 2 ? ownKeys(Object(t), !0).forEach(function(r$1) {
|
|
18
|
+
require_defineProperty._defineProperty(e, r$1, t[r$1]);
|
|
19
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r$1) {
|
|
20
|
+
Object.defineProperty(e, r$1, Object.getOwnPropertyDescriptor(t, r$1));
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return e;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
exports._objectSpread2 = _objectSpread2;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { _defineProperty } from "./defineProperty.mjs";
|
|
2
|
+
|
|
3
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/objectSpread2.js
|
|
4
|
+
function ownKeys(e, r) {
|
|
5
|
+
var t = Object.keys(e);
|
|
6
|
+
if (Object.getOwnPropertySymbols) {
|
|
7
|
+
var o = Object.getOwnPropertySymbols(e);
|
|
8
|
+
r && (o = o.filter(function(r$1) {
|
|
9
|
+
return Object.getOwnPropertyDescriptor(e, r$1).enumerable;
|
|
10
|
+
})), t.push.apply(t, o);
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
}
|
|
14
|
+
function _objectSpread2(e) {
|
|
15
|
+
for (var r = 1; r < arguments.length; r++) {
|
|
16
|
+
var t = null != arguments[r] ? arguments[r] : {};
|
|
17
|
+
r % 2 ? ownKeys(Object(t), !0).forEach(function(r$1) {
|
|
18
|
+
_defineProperty(e, r$1, t[r$1]);
|
|
19
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r$1) {
|
|
20
|
+
Object.defineProperty(e, r$1, Object.getOwnPropertyDescriptor(t, r$1));
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return e;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
export { _objectSpread2 };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const require_typeof = require('./typeof.cjs');
|
|
2
|
+
|
|
3
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/toPrimitive.js
|
|
4
|
+
function toPrimitive(t, r) {
|
|
5
|
+
if ("object" != require_typeof._typeof(t) || !t) return t;
|
|
6
|
+
var e = t[Symbol.toPrimitive];
|
|
7
|
+
if (void 0 !== e) {
|
|
8
|
+
var i = e.call(t, r || "default");
|
|
9
|
+
if ("object" != require_typeof._typeof(i)) return i;
|
|
10
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
11
|
+
}
|
|
12
|
+
return ("string" === r ? String : Number)(t);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
exports.toPrimitive = toPrimitive;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { _typeof } from "./typeof.mjs";
|
|
2
|
+
|
|
3
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/toPrimitive.js
|
|
4
|
+
function toPrimitive(t, r) {
|
|
5
|
+
if ("object" != _typeof(t) || !t) return t;
|
|
6
|
+
var e = t[Symbol.toPrimitive];
|
|
7
|
+
if (void 0 !== e) {
|
|
8
|
+
var i = e.call(t, r || "default");
|
|
9
|
+
if ("object" != _typeof(i)) return i;
|
|
10
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
11
|
+
}
|
|
12
|
+
return ("string" === r ? String : Number)(t);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { toPrimitive };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const require_typeof = require('./typeof.cjs');
|
|
2
|
+
const require_toPrimitive = require('./toPrimitive.cjs');
|
|
3
|
+
|
|
4
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/toPropertyKey.js
|
|
5
|
+
function toPropertyKey(t) {
|
|
6
|
+
var i = require_toPrimitive.toPrimitive(t, "string");
|
|
7
|
+
return "symbol" == require_typeof._typeof(i) ? i : i + "";
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
//#endregion
|
|
11
|
+
exports.toPropertyKey = toPropertyKey;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { _typeof } from "./typeof.mjs";
|
|
2
|
+
import { toPrimitive } from "./toPrimitive.mjs";
|
|
3
|
+
|
|
4
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/toPropertyKey.js
|
|
5
|
+
function toPropertyKey(t) {
|
|
6
|
+
var i = toPrimitive(t, "string");
|
|
7
|
+
return "symbol" == _typeof(i) ? i : i + "";
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
//#endregion
|
|
11
|
+
export { toPropertyKey };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/typeof.js
|
|
3
|
+
function _typeof(o) {
|
|
4
|
+
"@babel/helpers - typeof";
|
|
5
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o$1) {
|
|
6
|
+
return typeof o$1;
|
|
7
|
+
} : function(o$1) {
|
|
8
|
+
return o$1 && "function" == typeof Symbol && o$1.constructor === Symbol && o$1 !== Symbol.prototype ? "symbol" : typeof o$1;
|
|
9
|
+
}, _typeof(o);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
Object.defineProperty(exports, '_typeof', {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () {
|
|
16
|
+
return _typeof;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/typeof.js
|
|
2
|
+
function _typeof(o) {
|
|
3
|
+
"@babel/helpers - typeof";
|
|
4
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o$1) {
|
|
5
|
+
return typeof o$1;
|
|
6
|
+
} : function(o$1) {
|
|
7
|
+
return o$1 && "function" == typeof Symbol && o$1.constructor === Symbol && o$1 !== Symbol.prototype ? "symbol" : typeof o$1;
|
|
8
|
+
}, _typeof(o);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
//#endregion
|
|
12
|
+
export { _typeof };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
const require_objectSpread2 = require('./_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.cjs');
|
|
2
|
+
|
|
3
|
+
//#region src/core-internal.ts
|
|
4
|
+
const createProcedureBuilder = (middlewares, factory) => {
|
|
5
|
+
const create = factory !== null && factory !== void 0 ? factory : createProcedureBuilder;
|
|
6
|
+
return {
|
|
7
|
+
use: (middleware) => {
|
|
8
|
+
if (Array.isArray(middleware)) {
|
|
9
|
+
const combined = async ({ input, ctx, next }) => {
|
|
10
|
+
return next({ ctx: (await Promise.all(middleware.map((mw) => mw({
|
|
11
|
+
input,
|
|
12
|
+
ctx,
|
|
13
|
+
next: (opts) => Promise.resolve({
|
|
14
|
+
result: void 0,
|
|
15
|
+
ctx: opts.ctx
|
|
16
|
+
})
|
|
17
|
+
})))).reduce((acc, r) => require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, acc), r.ctx), ctx) });
|
|
18
|
+
};
|
|
19
|
+
return create([...middlewares, { run: combined }], factory);
|
|
20
|
+
}
|
|
21
|
+
return create([...middlewares, { run: middleware }], factory);
|
|
22
|
+
},
|
|
23
|
+
input(schema) {
|
|
24
|
+
return create([createInputMiddleware(schema), ...middlewares], factory);
|
|
25
|
+
},
|
|
26
|
+
run(fn) {
|
|
27
|
+
return (async (input) => {
|
|
28
|
+
const executeProcedure = async (index, ctx) => {
|
|
29
|
+
if (index >= middlewares.length) return Promise.resolve(fn({
|
|
30
|
+
ctx,
|
|
31
|
+
input
|
|
32
|
+
})).then((result$1) => ({
|
|
33
|
+
result: result$1,
|
|
34
|
+
ctx
|
|
35
|
+
}));
|
|
36
|
+
const mw = middlewares[index];
|
|
37
|
+
if (!mw) return Promise.resolve(fn({
|
|
38
|
+
ctx,
|
|
39
|
+
input
|
|
40
|
+
})).then((result$1) => ({
|
|
41
|
+
result: result$1,
|
|
42
|
+
ctx
|
|
43
|
+
}));
|
|
44
|
+
return Promise.resolve(mw.run({
|
|
45
|
+
input,
|
|
46
|
+
ctx,
|
|
47
|
+
next: (opts) => {
|
|
48
|
+
return executeProcedure(index + 1, require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, ctx !== null && ctx !== void 0 ? ctx : {}), opts.ctx)).then((result$1) => require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, result$1), {}, { ctx: opts.ctx }));
|
|
49
|
+
}
|
|
50
|
+
}));
|
|
51
|
+
};
|
|
52
|
+
const { result } = await executeProcedure(0, void 0);
|
|
53
|
+
return result;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
function createInputMiddleware(schema) {
|
|
59
|
+
return createMiddleware("INPUT_VALIDATION", async (opts) => {
|
|
60
|
+
if ((await schema["~standard"].validate(opts.input)).issues) throw new Error("Input validation failed");
|
|
61
|
+
return opts.next({ ctx: opts.ctx });
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const createMiddleware = (id, fn) => ({
|
|
65
|
+
id,
|
|
66
|
+
run: fn
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
//#endregion
|
|
70
|
+
exports.createMiddleware = createMiddleware;
|
|
71
|
+
exports.createProcedureBuilder = createProcedureBuilder;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Awaitable, Prettify } from "./types.cjs";
|
|
2
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
3
|
+
|
|
4
|
+
//#region src/core-internal.d.ts
|
|
5
|
+
interface MiddlewareResult<TCtx> {
|
|
6
|
+
result: unknown;
|
|
7
|
+
ctx: TCtx;
|
|
8
|
+
}
|
|
9
|
+
type Middleware<TInput, TContext, TResult> = (args: {
|
|
10
|
+
input: TInput;
|
|
11
|
+
ctx: TContext;
|
|
12
|
+
next: <T>(opts: {
|
|
13
|
+
ctx: T;
|
|
14
|
+
}) => Awaitable<MiddlewareResult<T>>;
|
|
15
|
+
}) => Awaitable<MiddlewareResult<TResult>>;
|
|
16
|
+
type InferMiddlewareOutput<T> = T extends Middleware<any, any, infer O> ? O : never;
|
|
17
|
+
type InferMiddlewareArrayOutput<T extends readonly Middleware<any, any, any>[]> = T extends readonly [infer First, ...infer Rest] ? First extends Middleware<any, any, infer O> ? Rest extends readonly Middleware<any, any, any>[] ? Prettify<O & InferMiddlewareArrayOutput<Rest>> : O : never : {};
|
|
18
|
+
type InferMiddlewareArrayInput<T extends readonly Middleware<any, any, any>[]> = T extends readonly [infer First, ...infer Rest] ? First extends Middleware<infer I, any, any> ? Rest extends readonly Middleware<any, any, any>[] ? MergeInput<I, InferMiddlewareArrayInput<Rest>> : I : never : Record<string, never>;
|
|
19
|
+
type MergeInput<A, B> = Prettify<(A extends Record<string, never> | undefined ? {} : A) & (B extends Record<string, never> | undefined ? {} : B)>;
|
|
20
|
+
interface ProcedureBuilder<TContext, TInput = Record<string, never>> {
|
|
21
|
+
use<TInputExt, TMiddleware extends Middleware<TInputExt, TContext, any>>(middleware: TMiddleware): ProcedureBuilder<InferMiddlewareOutput<TMiddleware>, MergeInput<TInput, TInputExt>>;
|
|
22
|
+
use<TMiddlewares extends readonly Middleware<any, TContext, any>[]>(middlewares: [...TMiddlewares]): ProcedureBuilder<InferMiddlewareArrayOutput<TMiddlewares>, MergeInput<TInput, InferMiddlewareArrayInput<TMiddlewares>>>;
|
|
23
|
+
input<TSchema extends StandardSchemaV1>(schema: TSchema): ProcedureBuilder<TContext, MergeInput<TInput, StandardSchemaV1.InferInput<TSchema>>>;
|
|
24
|
+
run: Run<TContext, TInput>;
|
|
25
|
+
}
|
|
26
|
+
type IsPartialObject<T> = T extends object ? {} extends T ? true : false : false;
|
|
27
|
+
type Run<TContext, TInput = Record<string, never>, TResultConstraint = unknown> = <TResult extends TResultConstraint>(fn: (args: {
|
|
28
|
+
input: TInput;
|
|
29
|
+
ctx: TContext;
|
|
30
|
+
}) => Awaitable<TResult>) => TInput extends Record<string, never> | undefined ? () => Promise<TResult> : IsPartialObject<TInput> extends true ? (input?: TInput) => Promise<TResult> : (input: TInput) => Promise<TResult>;
|
|
31
|
+
//#endregion
|
|
32
|
+
export { InferMiddlewareArrayInput, InferMiddlewareArrayOutput, InferMiddlewareOutput, MergeInput, Middleware, ProcedureBuilder, Run };
|
|
33
|
+
//# sourceMappingURL=core-internal.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-internal.d.cts","names":[],"sources":["../src/core-internal.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Awaitable, Prettify } from "./types.mjs";
|
|
2
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
3
|
+
|
|
4
|
+
//#region src/core-internal.d.ts
|
|
5
|
+
interface MiddlewareResult<TCtx> {
|
|
6
|
+
result: unknown;
|
|
7
|
+
ctx: TCtx;
|
|
8
|
+
}
|
|
9
|
+
type Middleware<TInput, TContext, TResult> = (args: {
|
|
10
|
+
input: TInput;
|
|
11
|
+
ctx: TContext;
|
|
12
|
+
next: <T>(opts: {
|
|
13
|
+
ctx: T;
|
|
14
|
+
}) => Awaitable<MiddlewareResult<T>>;
|
|
15
|
+
}) => Awaitable<MiddlewareResult<TResult>>;
|
|
16
|
+
type InferMiddlewareOutput<T> = T extends Middleware<any, any, infer O> ? O : never;
|
|
17
|
+
type InferMiddlewareArrayOutput<T extends readonly Middleware<any, any, any>[]> = T extends readonly [infer First, ...infer Rest] ? First extends Middleware<any, any, infer O> ? Rest extends readonly Middleware<any, any, any>[] ? Prettify<O & InferMiddlewareArrayOutput<Rest>> : O : never : {};
|
|
18
|
+
type InferMiddlewareArrayInput<T extends readonly Middleware<any, any, any>[]> = T extends readonly [infer First, ...infer Rest] ? First extends Middleware<infer I, any, any> ? Rest extends readonly Middleware<any, any, any>[] ? MergeInput<I, InferMiddlewareArrayInput<Rest>> : I : never : Record<string, never>;
|
|
19
|
+
type MergeInput<A, B> = Prettify<(A extends Record<string, never> | undefined ? {} : A) & (B extends Record<string, never> | undefined ? {} : B)>;
|
|
20
|
+
interface ProcedureBuilder<TContext, TInput = Record<string, never>> {
|
|
21
|
+
use<TInputExt, TMiddleware extends Middleware<TInputExt, TContext, any>>(middleware: TMiddleware): ProcedureBuilder<InferMiddlewareOutput<TMiddleware>, MergeInput<TInput, TInputExt>>;
|
|
22
|
+
use<TMiddlewares extends readonly Middleware<any, TContext, any>[]>(middlewares: [...TMiddlewares]): ProcedureBuilder<InferMiddlewareArrayOutput<TMiddlewares>, MergeInput<TInput, InferMiddlewareArrayInput<TMiddlewares>>>;
|
|
23
|
+
input<TSchema extends StandardSchemaV1>(schema: TSchema): ProcedureBuilder<TContext, MergeInput<TInput, StandardSchemaV1.InferInput<TSchema>>>;
|
|
24
|
+
run: Run<TContext, TInput>;
|
|
25
|
+
}
|
|
26
|
+
type IsPartialObject<T> = T extends object ? {} extends T ? true : false : false;
|
|
27
|
+
type Run<TContext, TInput = Record<string, never>, TResultConstraint = unknown> = <TResult extends TResultConstraint>(fn: (args: {
|
|
28
|
+
input: TInput;
|
|
29
|
+
ctx: TContext;
|
|
30
|
+
}) => Awaitable<TResult>) => TInput extends Record<string, never> | undefined ? () => Promise<TResult> : IsPartialObject<TInput> extends true ? (input?: TInput) => Promise<TResult> : (input: TInput) => Promise<TResult>;
|
|
31
|
+
//#endregion
|
|
32
|
+
export { InferMiddlewareArrayInput, InferMiddlewareArrayOutput, InferMiddlewareOutput, MergeInput, Middleware, ProcedureBuilder, Run };
|
|
33
|
+
//# sourceMappingURL=core-internal.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-internal.d.mts","names":[],"sources":["../src/core-internal.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { _objectSpread2 } from "./_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/core-internal.ts
|
|
4
|
+
const createProcedureBuilder = (middlewares, factory) => {
|
|
5
|
+
const create = factory !== null && factory !== void 0 ? factory : createProcedureBuilder;
|
|
6
|
+
return {
|
|
7
|
+
use: (middleware) => {
|
|
8
|
+
if (Array.isArray(middleware)) {
|
|
9
|
+
const combined = async ({ input, ctx, next }) => {
|
|
10
|
+
return next({ ctx: (await Promise.all(middleware.map((mw) => mw({
|
|
11
|
+
input,
|
|
12
|
+
ctx,
|
|
13
|
+
next: (opts) => Promise.resolve({
|
|
14
|
+
result: void 0,
|
|
15
|
+
ctx: opts.ctx
|
|
16
|
+
})
|
|
17
|
+
})))).reduce((acc, r) => _objectSpread2(_objectSpread2({}, acc), r.ctx), ctx) });
|
|
18
|
+
};
|
|
19
|
+
return create([...middlewares, { run: combined }], factory);
|
|
20
|
+
}
|
|
21
|
+
return create([...middlewares, { run: middleware }], factory);
|
|
22
|
+
},
|
|
23
|
+
input(schema) {
|
|
24
|
+
return create([createInputMiddleware(schema), ...middlewares], factory);
|
|
25
|
+
},
|
|
26
|
+
run(fn) {
|
|
27
|
+
return (async (input) => {
|
|
28
|
+
const executeProcedure = async (index, ctx) => {
|
|
29
|
+
if (index >= middlewares.length) return Promise.resolve(fn({
|
|
30
|
+
ctx,
|
|
31
|
+
input
|
|
32
|
+
})).then((result$1) => ({
|
|
33
|
+
result: result$1,
|
|
34
|
+
ctx
|
|
35
|
+
}));
|
|
36
|
+
const mw = middlewares[index];
|
|
37
|
+
if (!mw) return Promise.resolve(fn({
|
|
38
|
+
ctx,
|
|
39
|
+
input
|
|
40
|
+
})).then((result$1) => ({
|
|
41
|
+
result: result$1,
|
|
42
|
+
ctx
|
|
43
|
+
}));
|
|
44
|
+
return Promise.resolve(mw.run({
|
|
45
|
+
input,
|
|
46
|
+
ctx,
|
|
47
|
+
next: (opts) => {
|
|
48
|
+
return executeProcedure(index + 1, _objectSpread2(_objectSpread2({}, ctx !== null && ctx !== void 0 ? ctx : {}), opts.ctx)).then((result$1) => _objectSpread2(_objectSpread2({}, result$1), {}, { ctx: opts.ctx }));
|
|
49
|
+
}
|
|
50
|
+
}));
|
|
51
|
+
};
|
|
52
|
+
const { result } = await executeProcedure(0, void 0);
|
|
53
|
+
return result;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
function createInputMiddleware(schema) {
|
|
59
|
+
return createMiddleware("INPUT_VALIDATION", async (opts) => {
|
|
60
|
+
if ((await schema["~standard"].validate(opts.input)).issues) throw new Error("Input validation failed");
|
|
61
|
+
return opts.next({ ctx: opts.ctx });
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const createMiddleware = (id, fn) => ({
|
|
65
|
+
id,
|
|
66
|
+
run: fn
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
//#endregion
|
|
70
|
+
export { createMiddleware, createProcedureBuilder };
|
|
71
|
+
//# sourceMappingURL=core-internal.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-internal.mjs","names":["combined: Middleware<any, any, any>","result"],"sources":["../src/core-internal.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport type { Awaitable, Prettify } from \"./types\";\n\nexport interface MiddlewareResult<TCtx> {\n result: unknown;\n ctx: TCtx;\n}\n\nexport type Middleware<TInput, TContext, TResult> = (args: {\n input: TInput;\n ctx: TContext;\n next: <T>(opts: { ctx: T }) => Awaitable<MiddlewareResult<T>>;\n}) => Awaitable<MiddlewareResult<TResult>>;\n\nexport interface InternalMiddleware {\n id?: string;\n run: Middleware<any, any, any>;\n}\n\nexport type InferMiddlewareOutput<T> = T extends Middleware<any, any, infer O>\n ? O\n : never;\n\nexport type InferMiddlewareArrayOutput<\n T extends readonly Middleware<any, any, any>[],\n> = T extends readonly [infer First, ...infer Rest]\n ? First extends Middleware<any, any, infer O>\n ? Rest extends readonly Middleware<any, any, any>[]\n ? Prettify<O & InferMiddlewareArrayOutput<Rest>>\n : O\n : never\n : {};\n\nexport type InferMiddlewareArrayInput<\n T extends readonly Middleware<any, any, any>[],\n> = T extends readonly [infer First, ...infer Rest]\n ? First extends Middleware<infer I, any, any>\n ? Rest extends readonly Middleware<any, any, any>[]\n ? MergeInput<I, InferMiddlewareArrayInput<Rest>>\n : I\n : never\n : Record<string, never>;\n\nexport type MergeInput<A, B> = Prettify<\n (A extends Record<string, never> | undefined ? {} : A) &\n (B extends Record<string, never> | undefined ? {} : B)\n>;\n\nexport interface ProcedureBuilder<TContext, TInput = Record<string, never>> {\n use<TInputExt, TMiddleware extends Middleware<TInputExt, TContext, any>>(\n middleware: TMiddleware,\n ): ProcedureBuilder<\n InferMiddlewareOutput<TMiddleware>,\n MergeInput<TInput, TInputExt>\n >;\n\n use<TMiddlewares extends readonly Middleware<any, TContext, any>[]>(\n middlewares: [...TMiddlewares],\n ): ProcedureBuilder<\n InferMiddlewareArrayOutput<TMiddlewares>,\n MergeInput<TInput, InferMiddlewareArrayInput<TMiddlewares>>\n >;\n\n input<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n ): ProcedureBuilder<\n TContext,\n MergeInput<TInput, StandardSchemaV1.InferInput<TSchema>>\n >;\n\n run: Run<TContext, TInput>;\n}\n\ntype IsPartialObject<T> = T extends object\n ? {} extends T\n ? true\n : false\n : false;\n\nexport type Run<\n TContext,\n TInput = Record<string, never>,\n TResultConstraint = unknown,\n> = <TResult extends TResultConstraint>(\n fn: (args: { input: TInput; ctx: TContext }) => Awaitable<TResult>,\n) => TInput extends Record<string, never> | undefined\n ? () => Promise<TResult>\n : IsPartialObject<TInput> extends true\n ? (input?: TInput) => Promise<TResult>\n : (input: TInput) => Promise<TResult>;\n\nexport type ProcedureBuilderFactory = (\n mws: InternalMiddleware[],\n factory?: ProcedureBuilderFactory,\n) => ProcedureBuilder<any, any>;\n\nexport const createProcedureBuilder = <\n TContext,\n TInput = Record<string, never>,\n>(\n middlewares: InternalMiddleware[],\n factory?: ProcedureBuilderFactory,\n): ProcedureBuilder<TContext, TInput> => {\n const create = factory ?? createProcedureBuilder;\n\n const builder: ProcedureBuilder<TContext, TInput> = {\n use: (middleware: any) => {\n if (Array.isArray(middleware)) {\n const combined: Middleware<any, any, any> = async ({\n input,\n ctx,\n next,\n }) => {\n const results = await Promise.all(\n middleware.map((mw) =>\n mw({\n input,\n ctx,\n next: <T>(opts: { ctx: T }) =>\n Promise.resolve({ result: undefined, ctx: opts.ctx }),\n }),\n ),\n );\n const mergedCtx = results.reduce(\n // biome-ignore lint/performance/noAccumulatingSpread: idc\n (acc, r) => ({ ...acc, ...r.ctx }),\n ctx,\n );\n return next({ ctx: mergedCtx });\n };\n return create([...middlewares, { run: combined }], factory);\n }\n\n return create([...middlewares, { run: middleware }], factory);\n },\n\n input(schema: any) {\n return create([createInputMiddleware(schema), ...middlewares], factory);\n },\n\n run(fn: any) {\n return (async (input?: TInput) => {\n const executeProcedure = async (\n index: number,\n ctx: unknown,\n ): Promise<MiddlewareResult<any>> => {\n if (index >= middlewares.length) {\n return Promise.resolve(fn({ ctx, input })).then((result) => ({\n result,\n ctx,\n }));\n }\n\n const mw = middlewares[index];\n if (!mw) {\n return Promise.resolve(fn({ ctx, input })).then((result) => ({\n result,\n ctx,\n }));\n }\n\n return Promise.resolve(\n mw.run({\n input,\n ctx,\n next: <T>(opts: { ctx: T }) => {\n return executeProcedure(index + 1, {\n ...(ctx ?? {}),\n ...opts.ctx,\n }).then((result) => ({\n ...result,\n ctx: opts.ctx,\n })) as Promise<MiddlewareResult<T>>;\n },\n }),\n );\n };\n\n const { result } = await executeProcedure(0, undefined);\n return result;\n }) as any;\n },\n };\n\n return builder;\n};\n\nfunction createInputMiddleware<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n) {\n return createMiddleware(\"INPUT_VALIDATION\", async (opts) => {\n const result = await schema[\"~standard\"].validate(opts.input);\n if (result.issues) {\n throw new Error(\"Input validation failed\");\n }\n return opts.next({ ctx: opts.ctx });\n });\n}\n\nexport const createMiddleware = <TInput, TContext>(\n id: string,\n fn: Middleware<TInput, TContext, any>,\n): InternalMiddleware => ({\n id,\n run: fn,\n});\n"],"mappings":";;;AAgGA,MAAa,0BAIX,aACA,YACuC;CACvC,MAAM,SAAS,mDAAW;AAiF1B,QA/EoD;EAClD,MAAM,eAAoB;AACxB,OAAI,MAAM,QAAQ,WAAW,EAAE;IAC7B,MAAMA,WAAsC,OAAO,EACjD,OACA,KACA,WACI;AAgBJ,YAAO,KAAK,EAAE,MAfE,MAAM,QAAQ,IAC5B,WAAW,KAAK,OACd,GAAG;MACD;MACA;MACA,OAAU,SACR,QAAQ,QAAQ;OAAE,QAAQ;OAAW,KAAK,KAAK;OAAK,CAAC;MACxD,CAAC,CACH,CACF,EACyB,QAEvB,KAAK,wCAAY,MAAQ,EAAE,MAC5B,IACD,EAC6B,CAAC;;AAEjC,WAAO,OAAO,CAAC,GAAG,aAAa,EAAE,KAAK,UAAU,CAAC,EAAE,QAAQ;;AAG7D,UAAO,OAAO,CAAC,GAAG,aAAa,EAAE,KAAK,YAAY,CAAC,EAAE,QAAQ;;EAG/D,MAAM,QAAa;AACjB,UAAO,OAAO,CAAC,sBAAsB,OAAO,EAAE,GAAG,YAAY,EAAE,QAAQ;;EAGzE,IAAI,IAAS;AACX,WAAQ,OAAO,UAAmB;IAChC,MAAM,mBAAmB,OACvB,OACA,QACmC;AACnC,SAAI,SAAS,YAAY,OACvB,QAAO,QAAQ,QAAQ,GAAG;MAAE;MAAK;MAAO,CAAC,CAAC,CAAC,MAAM,cAAY;MAC3D;MACA;MACD,EAAE;KAGL,MAAM,KAAK,YAAY;AACvB,SAAI,CAAC,GACH,QAAO,QAAQ,QAAQ,GAAG;MAAE;MAAK;MAAO,CAAC,CAAC,CAAC,MAAM,cAAY;MAC3D;MACA;MACD,EAAE;AAGL,YAAO,QAAQ,QACb,GAAG,IAAI;MACL;MACA;MACA,OAAU,SAAqB;AAC7B,cAAO,iBAAiB,QAAQ,qCAC1B,uCAAO,EAAE,GACV,KAAK,KACR,CAAC,MAAM,+CACJC,iBACH,KAAK,KAAK,OACT;;MAEN,CAAC,CACH;;IAGH,MAAM,EAAE,WAAW,MAAM,iBAAiB,GAAG,OAAU;AACvD,WAAO;;;EAGZ;;AAKH,SAAS,sBACP,QACA;AACA,QAAO,iBAAiB,oBAAoB,OAAO,SAAS;AAE1D,OADe,MAAM,OAAO,aAAa,SAAS,KAAK,MAAM,EAClD,OACT,OAAM,IAAI,MAAM,0BAA0B;AAE5C,SAAO,KAAK,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC;GACnC;;AAGJ,MAAa,oBACX,IACA,QACwB;CACxB;CACA,KAAK;CACN"}
|
package/dist/core.cjs
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const require_core_internal = require('./core-internal.cjs');
|
|
2
|
+
|
|
3
|
+
//#region src/core.ts
|
|
4
|
+
const init = (options) => ({
|
|
5
|
+
middleware: (fn) => fn,
|
|
6
|
+
procedure: require_core_internal.createProcedureBuilder([require_core_internal.createMiddleware("INITIAL_CONTEXT", async ({ next }) => {
|
|
7
|
+
return next({ ctx: await options.ctx() });
|
|
8
|
+
})])
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
//#endregion
|
|
12
|
+
exports.init = init;
|
package/dist/core.d.cts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Awaitable } from "./types.cjs";
|
|
2
|
+
import { Middleware, ProcedureBuilder } from "./core-internal.cjs";
|
|
3
|
+
|
|
4
|
+
//#region src/core.d.ts
|
|
5
|
+
interface InitOptions<TContext> {
|
|
6
|
+
ctx: () => Awaitable<TContext>;
|
|
7
|
+
}
|
|
8
|
+
interface ProcedureFactory<TContext> {
|
|
9
|
+
middleware: <TInput, TResult>(fn: Middleware<TInput, TContext, TResult>) => Middleware<TInput, TContext, TResult>;
|
|
10
|
+
procedure: ProcedureBuilder<TContext>;
|
|
11
|
+
}
|
|
12
|
+
declare const init: <TContext>(options: InitOptions<TContext>) => ProcedureFactory<TContext>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { InitOptions, ProcedureFactory, init };
|
|
15
|
+
//# sourceMappingURL=core.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.cts","names":[],"sources":["../src/core.ts"],"sourcesContent":[],"mappings":";;;;UAQiB;aACJ,UAAU;AADvB;AAA4B,UAIX,gBAJW,CAAA,QAAA,CAAA,CAAA;YACL,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,EAAA,EAKf,UALe,CAKJ,MALI,EAKI,QALJ,EAKc,OALd,CAAA,EAAA,GAMhB,UANgB,CAML,MANK,EAMG,QANH,EAMa,OANb,CAAA;WAAV,EAOA,gBAPA,CAOiB,QAPjB,CAAA;;AAGI,cAOJ,IAPoB,EAAA,CAAA,QAAA,CAAA,CAAA,OAAA,EAQtB,WARsB,CAQV,QARU,CAAA,EAAA,GAS9B,gBAT8B,CASb,QATa,CAAA"}
|
package/dist/core.d.mts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Awaitable } from "./types.mjs";
|
|
2
|
+
import { Middleware, ProcedureBuilder } from "./core-internal.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/core.d.ts
|
|
5
|
+
interface InitOptions<TContext> {
|
|
6
|
+
ctx: () => Awaitable<TContext>;
|
|
7
|
+
}
|
|
8
|
+
interface ProcedureFactory<TContext> {
|
|
9
|
+
middleware: <TInput, TResult>(fn: Middleware<TInput, TContext, TResult>) => Middleware<TInput, TContext, TResult>;
|
|
10
|
+
procedure: ProcedureBuilder<TContext>;
|
|
11
|
+
}
|
|
12
|
+
declare const init: <TContext>(options: InitOptions<TContext>) => ProcedureFactory<TContext>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { InitOptions, ProcedureFactory, init };
|
|
15
|
+
//# sourceMappingURL=core.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.mts","names":[],"sources":["../src/core.ts"],"sourcesContent":[],"mappings":";;;;UAQiB;aACJ,UAAU;AADvB;AAA4B,UAIX,gBAJW,CAAA,QAAA,CAAA,CAAA;YACL,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,EAAA,EAKf,UALe,CAKJ,MALI,EAKI,QALJ,EAKc,OALd,CAAA,EAAA,GAMhB,UANgB,CAML,MANK,EAMG,QANH,EAMa,OANb,CAAA;WAAV,EAOA,gBAPA,CAOiB,QAPjB,CAAA;;AAGI,cAOJ,IAPoB,EAAA,CAAA,QAAA,CAAA,CAAA,OAAA,EAQtB,WARsB,CAQV,QARU,CAAA,EAAA,GAS9B,gBAT8B,CASb,QATa,CAAA"}
|
package/dist/core.mjs
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createMiddleware, createProcedureBuilder } from "./core-internal.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/core.ts
|
|
4
|
+
const init = (options) => ({
|
|
5
|
+
middleware: (fn) => fn,
|
|
6
|
+
procedure: createProcedureBuilder([createMiddleware("INITIAL_CONTEXT", async ({ next }) => {
|
|
7
|
+
return next({ ctx: await options.ctx() });
|
|
8
|
+
})])
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
//#endregion
|
|
12
|
+
export { init };
|
|
13
|
+
//# sourceMappingURL=core.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.mjs","names":[],"sources":["../src/core.ts"],"sourcesContent":["import {\n createMiddleware,\n createProcedureBuilder,\n type Middleware,\n type ProcedureBuilder,\n} from \"./core-internal\";\nimport type { Awaitable } from \"./types\";\n\nexport interface InitOptions<TContext> {\n ctx: () => Awaitable<TContext>;\n}\n\nexport interface ProcedureFactory<TContext> {\n middleware: <TInput, TResult>(\n fn: Middleware<TInput, TContext, TResult>,\n ) => Middleware<TInput, TContext, TResult>;\n procedure: ProcedureBuilder<TContext>;\n}\n\nexport const init = <TContext>(\n options: InitOptions<TContext>,\n): ProcedureFactory<TContext> => ({\n middleware: (fn) => fn,\n procedure: createProcedureBuilder([\n createMiddleware(\"INITIAL_CONTEXT\", async ({ next }) => {\n return next({ ctx: await options.ctx() });\n }),\n ]),\n});\n"],"mappings":";;;AAmBA,MAAa,QACX,aACgC;CAChC,aAAa,OAAO;CACpB,WAAW,uBAAuB,CAChC,iBAAiB,mBAAmB,OAAO,EAAE,WAAW;AACtD,SAAO,KAAK,EAAE,KAAK,MAAM,QAAQ,KAAK,EAAE,CAAC;GACzC,CACH,CAAC;CACH"}
|
package/dist/index.cjs
ADDED
package/dist/index.d.cts
ADDED
package/dist/index.d.mts
ADDED
package/dist/index.mjs
ADDED
package/dist/next.cjs
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const require_objectSpread2 = require('./_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.cjs');
|
|
2
|
+
const require_core_internal = require('./core-internal.cjs');
|
|
3
|
+
const require_core = require('./core.cjs');
|
|
4
|
+
|
|
5
|
+
//#region src/next.ts
|
|
6
|
+
const createNextBuilder = (middlewares, factory) => {
|
|
7
|
+
const core = require_core_internal.createProcedureBuilder(middlewares, factory !== null && factory !== void 0 ? factory : createNextBuilder);
|
|
8
|
+
return require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, core), {}, {
|
|
9
|
+
params() {
|
|
10
|
+
const mw = require_core_internal.createMiddleware("NEXT_PARAMS", async ({ input, ctx, next }) => {
|
|
11
|
+
const params = await input.params;
|
|
12
|
+
return next({ ctx: require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, ctx), {}, { params }) });
|
|
13
|
+
});
|
|
14
|
+
return createNextBuilder([...middlewares, mw], factory);
|
|
15
|
+
},
|
|
16
|
+
searchParams(schema) {
|
|
17
|
+
const mw = require_core_internal.createMiddleware("NEXT_SEARCH_PARAMS", async ({ input, ctx, next }) => {
|
|
18
|
+
const searchParams = await input.searchParams;
|
|
19
|
+
const result = await schema["~standard"].validate(searchParams);
|
|
20
|
+
if (result.issues) throw new Error("Invalid search params");
|
|
21
|
+
return next({ ctx: require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, ctx), {}, { searchParams: result.value }) });
|
|
22
|
+
});
|
|
23
|
+
return createNextBuilder([...middlewares, mw], factory);
|
|
24
|
+
},
|
|
25
|
+
page: core.run,
|
|
26
|
+
rsc: core.run,
|
|
27
|
+
metadata: core.run,
|
|
28
|
+
layout: core.run,
|
|
29
|
+
layoutMetadata: core.run,
|
|
30
|
+
staticParams: core.run
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
const init = (options) => {
|
|
34
|
+
const core = require_core.init(options);
|
|
35
|
+
const initialMiddlewares = [require_core_internal.createMiddleware("INITIAL_CONTEXT", async ({ next }) => {
|
|
36
|
+
return next({ ctx: await options.ctx() });
|
|
37
|
+
})];
|
|
38
|
+
return {
|
|
39
|
+
middleware: core.middleware,
|
|
40
|
+
procedure: createNextBuilder(initialMiddlewares)
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
//#endregion
|
|
45
|
+
exports.init = init;
|
package/dist/next.d.cts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Prettify } from "./types.cjs";
|
|
2
|
+
import { InferMiddlewareArrayInput, InferMiddlewareArrayOutput, InferMiddlewareOutput, MergeInput, Middleware, Run } from "./core-internal.cjs";
|
|
3
|
+
import { InitOptions } from "./core.cjs";
|
|
4
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
5
|
+
import { Metadata } from "next";
|
|
6
|
+
import { ReactNode } from "react";
|
|
7
|
+
|
|
8
|
+
//#region src/next.d.ts
|
|
9
|
+
type ExtractParams<TInput> = TInput extends {
|
|
10
|
+
params: infer P;
|
|
11
|
+
} ? P : never;
|
|
12
|
+
interface NextProcedureBuilder<TContext, TInput = {}> {
|
|
13
|
+
use<TInputExt, TMiddleware extends Middleware<TInputExt, TContext, any>>(middleware: TMiddleware): NextProcedureBuilder<InferMiddlewareOutput<TMiddleware>, MergeInput<TInput, TInputExt>>;
|
|
14
|
+
use<TMiddlewares extends readonly Middleware<any, TContext, any>[]>(middlewares: [...TMiddlewares]): NextProcedureBuilder<InferMiddlewareArrayOutput<TMiddlewares>, MergeInput<TInput, InferMiddlewareArrayInput<TMiddlewares>>>;
|
|
15
|
+
input<TSchema extends StandardSchemaV1>(schema: TSchema): NextProcedureBuilder<TContext, TInput & StandardSchemaV1.InferInput<TSchema>>;
|
|
16
|
+
params<T, TSchema extends StandardSchemaV1 | undefined = undefined>(schema?: TSchema): NextProcedureBuilder<Prettify<TContext & {
|
|
17
|
+
params: TSchema extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<TSchema> : T;
|
|
18
|
+
}>, Prettify<TInput & {
|
|
19
|
+
params: Promise<TSchema extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<TSchema> : T>;
|
|
20
|
+
}>>;
|
|
21
|
+
searchParams<TSchema extends StandardSchemaV1>(schema: TSchema): NextProcedureBuilder<Prettify<TContext & {
|
|
22
|
+
searchParams: StandardSchemaV1.InferOutput<TSchema>;
|
|
23
|
+
}>, Prettify<TInput & {
|
|
24
|
+
searchParams: Promise<Record<string, string | string[] | undefined>>;
|
|
25
|
+
}>>;
|
|
26
|
+
run: Run<TContext, TInput>;
|
|
27
|
+
page: Run<TContext, Prettify<TInput & {
|
|
28
|
+
searchParams: Promise<Record<string, string | string[] | undefined>>;
|
|
29
|
+
params: Promise<{
|
|
30
|
+
[key: string]: string;
|
|
31
|
+
}>;
|
|
32
|
+
}>, ReactNode>;
|
|
33
|
+
rsc: Run<TContext, TInput, ReactNode>;
|
|
34
|
+
metadata: Run<TContext, TInput, Metadata>;
|
|
35
|
+
layout: Run<TContext, TInput & {
|
|
36
|
+
children: ReactNode;
|
|
37
|
+
}, ReactNode>;
|
|
38
|
+
layoutMetadata: Run<Prettify<Omit<TContext, "searchParams">>, Prettify<Omit<TInput, "searchParams">>, Metadata>;
|
|
39
|
+
staticParams: Run<TContext, TInput, ExtractParams<TContext>[]>;
|
|
40
|
+
}
|
|
41
|
+
declare const init: <TContext>(options: InitOptions<TContext>) => {
|
|
42
|
+
middleware: <TInput, TResult>(fn: Middleware<TInput, TContext, TResult>) => Middleware<TInput, TContext, TResult>;
|
|
43
|
+
procedure: NextProcedureBuilder<TContext>;
|
|
44
|
+
};
|
|
45
|
+
//#endregion
|
|
46
|
+
export { init };
|
|
47
|
+
//# sourceMappingURL=next.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next.d.cts","names":[],"sources":["../src/next.ts"],"sourcesContent":[],"mappings":"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"}
|