valleyed 4.5.13 → 4.5.14

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 CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [4.5.14](https://github.com/kevinand11/valleyed/compare/v4.5.13...v4.5.14) (2025-07-06)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * correct nested pipes path ([bed1c26](https://github.com/kevinand11/valleyed/commit/bed1c26b1e0ffa755d15f77176c14085c88f383b))
11
+
5
12
  ### [4.5.13](https://github.com/kevinand11/valleyed/compare/v4.5.12...v4.5.13) (2025-07-05)
6
13
 
7
14
 
@@ -139,7 +139,7 @@ function compileNested(data) {
139
139
  pipe: data.pipe,
140
140
  input: data.input,
141
141
  context: `context[\`${random}\`]`,
142
- path: ["key" in data ? data.key : "", data.opts.path].filter(Boolean).join(".") || void 0
142
+ path: [data.opts.path, "key" in data ? data.key : ""].filter(Boolean).join(".") || void 0
143
143
  });
144
144
  data.opts.rootContext[random] = context2;
145
145
  return lines;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/api/base/pipes.ts"],"sourcesContent":["import { createErrorHandler, PipeError } from './errors'\nimport { Context, JsonSchemaBuilder, PipeMeta, Pipe, Entry, PipeOutput, PipeFn, PipeCompiledFn, PipeErrorHandler } from './types'\nimport { getRandomValue } from '../../utils/functions'\nimport { JsonSchema } from '../../utils/types'\n\nexport function walk<T>(pipe: Pipe<any, any>, init: T, nodeFn: (cur: Pipe<any, any>, acc: T) => T) {\n\tlet acc: T = init\n\twhile (pipe) {\n\t\tacc = nodeFn(pipe, acc)\n\t\tpipe = pipe.next!\n\t}\n\treturn acc\n}\n\nexport function context<T extends Pipe<any, any>>(pipe: T): Context {\n\treturn walk(pipe, {} as Context, (p, acc) => ({ ...acc, ...p.context() }))\n}\n\nexport function assert<T extends Pipe<any, any>>(pipe: T, input: unknown): PipeOutput<T> {\n\tconst result = validate(pipe, input)\n\tif (!result.valid) throw result.error\n\treturn result.value\n}\n\nexport function validate<T extends Pipe<any, any>>(\n\tpipe: T,\n\tinput: unknown,\n): { value: PipeOutput<T>; valid: true } | { error: PipeError; valid: false } {\n\ttry {\n\t\tconst fn = pipe.__compiled ?? compile(pipe)\n\t\tconst res = fn(input) as ReturnType<PipeCompiledFn<T>>\n\t\treturn res instanceof PipeError ? { error: res, valid: false } : { value: res, valid: true }\n\t} catch (error) {\n\t\tif (error instanceof PipeError) return { error, valid: false }\n\t\treturn { error: PipeError.root(error instanceof Error ? error.message : `${error}`, input, undefined), valid: false }\n\t}\n}\n\nexport function schema<T extends Pipe<any, any>>(pipe: T, schema: JsonSchema = {}): JsonSchema {\n\tconst cont = context(pipe)\n\treturn walk(pipe, schema, (p, acc) => ({ ...acc, ...p.schema(cont) }))\n}\n\nexport function meta<T extends Pipe<any, any>>(p: T, meta: PipeMeta): T {\n\treturn p.pipe(standard(() => [], { schema: () => meta })) as T\n}\n\nexport function compile<T extends Pipe<any, any>>(\n\tpipe: T,\n\t{\n\t\tfailEarly = true,\n\t}: {\n\t\tfailEarly?: boolean\n\t} = {},\n): PipeCompiledFn<T> {\n\tconst inputStr = 'input'\n\tconst contextStr = 'context'\n\tconst { lines, context } = compilePipeToString({\n\t\tpipe,\n\t\tinput: inputStr,\n\t\tcontext: contextStr,\n\t\tfailEarly,\n\t\tbase: [`return ${inputStr}`],\n\t})\n\tconst allLines = [\n\t\t`return (${inputStr}) => {`,\n\t\t...lines.filter((l) => l.trim() !== '').map((l) => `\\t${l}`),\n\t\t`\tthrow PipeError.root('unhandled root validation', ${inputStr})`,\n\t\t`}`,\n\t]\n\tpipe.__compiled = new Function(contextStr, 'PipeError', allLines.join('\\n'))(context, PipeError)\n\treturn pipe.__compiled!\n}\n\nexport function standard<I, O>(\n\tcompile: Pipe<I, O>['compile'],\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst piper: Pipe<I, O> = {\n\t\tcontext: () => config.context ?? ({} as any),\n\t\tschema: (context: Context) => config.schema?.(context) ?? ({} as any),\n\t\tpipe: (...entries: Entry<any, any>[]) => {\n\t\t\tdelete piper.__compiled\n\t\t\tfor (const cur of entries) {\n\t\t\t\tconst p = typeof cur === 'function' ? define(cur, config) : cur\n\t\t\t\tif (!piper.next) piper.next = p\n\t\t\t\tif (piper.last) piper.last.next = p\n\t\t\t\tpiper.last = p.last ?? p\n\t\t\t}\n\t\t\treturn piper\n\t\t},\n\t\tcompile,\n\t\t'~standard': {\n\t\t\tversion: 1,\n\t\t\tvendor: 'valleyed',\n\t\t\tvalidate(value) {\n\t\t\t\tconst validity = validate(piper, value)\n\t\t\t\tif (validity.valid) return { value: validity.value }\n\t\t\t\treturn {\n\t\t\t\t\tissues: validity.error.messages.map(({ message, path }) => ({\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tpath: path ? path.split('.') : undefined,\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\treturn piper\n}\n\nexport function define<I, O>(\n\tfn: PipeFn<I, O>,\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst key = `define_${getRandomValue()}`\n\treturn standard<I, O>(\n\t\t({ input, context, path }) => [\n\t\t\t`${input} = ${context}['${key}'](${input})`,\n\t\t\t`if (${input} instanceof PipeError) return PipeError.path(${path}, ${input})`,\n\t\t],\n\t\t{\n\t\t\tcontext: { ...config?.context, [key]: fn },\n\t\t\tschema: config?.schema,\n\t\t},\n\t)\n}\n\nexport function compileNested(\n\tdata: {\n\t\tpipe: Pipe<any, any>\n\t\terrorType?: Parameters<typeof createErrorHandler>[1]\n\t\topts: Required<Pick<Parameters<Pipe<any, any>['compile']>[1], 'rootContext' | 'failEarly' | 'path' | 'wrapError'>>\n\t} & { input: string; key?: string },\n) {\n\tconst random = getRandomValue()\n\tconst { lines, context } = compilePipeToString({\n\t\t...data.opts,\n\t\twrapError: createErrorHandler(data.input, data.errorType ?? data.opts.wrapError.type),\n\t\tpipe: data.pipe,\n\t\tinput: data.input,\n\t\tcontext: `context[\\`${random}\\`]`,\n\t\tpath: ['key' in data ? data.key : '', data.opts.path].filter(Boolean).join('.') || undefined,\n\t})\n\tdata.opts.rootContext[random] = context\n\treturn lines\n}\n\nfunction compilePipeToString({\n\tpipe,\n\tinput,\n\tcontext: contextStr,\n\tfailEarly = false,\n\tpath = '',\n\trootContext,\n\twrapError = createErrorHandler(input, 'return'),\n\tbase = [],\n}: {\n\tpipe: Pipe<any, any>\n\tinput: string\n\tcontext: string\n\tfailEarly?: boolean\n\tpath?: string\n\trootContext?: Context\n\twrapError?: PipeErrorHandler\n\tbase?: string[]\n}) {\n\tconst ctx = context(pipe)\n\trootContext ??= ctx\n\tconst compiled = walk(pipe, <ReturnType<Pipe<any, any>['compile']>[]>[], (p, acc) => {\n\t\tacc.push(\n\t\t\tp.compile(\n\t\t\t\t{ input, context: contextStr, path: `${path ? `'${path}'` : undefined}` },\n\t\t\t\t{ rootContext, failEarly, path, wrapError },\n\t\t\t),\n\t\t)\n\t\treturn acc\n\t})\n\tconst lines = mergePipeLines(base, compiled.flat())\n\treturn { lines, context: ctx }\n}\n\nfunction mergePipeLines(base: string[], lines: ReturnType<Pipe<any, any>['compile']>) {\n\treturn (Array.isArray(lines) ? lines : [lines]).reduceRight<string[]>((acc, cur) => {\n\t\tif (typeof cur === 'string') acc.unshift(cur)\n\t\telse if (typeof cur === 'function') acc = cur(acc)\n\t\treturn acc\n\t}, base)\n}\n"],"mappings":"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","names":["schema","meta","context","compile"]}
1
+ {"version":3,"sources":["../../../../src/api/base/pipes.ts"],"sourcesContent":["import { createErrorHandler, PipeError } from './errors'\nimport { Context, JsonSchemaBuilder, PipeMeta, Pipe, Entry, PipeOutput, PipeFn, PipeCompiledFn, PipeErrorHandler } from './types'\nimport { getRandomValue } from '../../utils/functions'\nimport { JsonSchema } from '../../utils/types'\n\nexport function walk<T>(pipe: Pipe<any, any>, init: T, nodeFn: (cur: Pipe<any, any>, acc: T) => T) {\n\tlet acc: T = init\n\twhile (pipe) {\n\t\tacc = nodeFn(pipe, acc)\n\t\tpipe = pipe.next!\n\t}\n\treturn acc\n}\n\nexport function context<T extends Pipe<any, any>>(pipe: T): Context {\n\treturn walk(pipe, {} as Context, (p, acc) => ({ ...acc, ...p.context() }))\n}\n\nexport function assert<T extends Pipe<any, any>>(pipe: T, input: unknown): PipeOutput<T> {\n\tconst result = validate(pipe, input)\n\tif (!result.valid) throw result.error\n\treturn result.value\n}\n\nexport function validate<T extends Pipe<any, any>>(\n\tpipe: T,\n\tinput: unknown,\n): { value: PipeOutput<T>; valid: true } | { error: PipeError; valid: false } {\n\ttry {\n\t\tconst fn = pipe.__compiled ?? compile(pipe)\n\t\tconst res = fn(input) as ReturnType<PipeCompiledFn<T>>\n\t\treturn res instanceof PipeError ? { error: res, valid: false } : { value: res, valid: true }\n\t} catch (error) {\n\t\tif (error instanceof PipeError) return { error, valid: false }\n\t\treturn { error: PipeError.root(error instanceof Error ? error.message : `${error}`, input, undefined), valid: false }\n\t}\n}\n\nexport function schema<T extends Pipe<any, any>>(pipe: T, schema: JsonSchema = {}): JsonSchema {\n\tconst cont = context(pipe)\n\treturn walk(pipe, schema, (p, acc) => ({ ...acc, ...p.schema(cont) }))\n}\n\nexport function meta<T extends Pipe<any, any>>(p: T, meta: PipeMeta): T {\n\treturn p.pipe(standard(() => [], { schema: () => meta })) as T\n}\n\nexport function compile<T extends Pipe<any, any>>(\n\tpipe: T,\n\t{\n\t\tfailEarly = true,\n\t}: {\n\t\tfailEarly?: boolean\n\t} = {},\n): PipeCompiledFn<T> {\n\tconst inputStr = 'input'\n\tconst contextStr = 'context'\n\tconst { lines, context } = compilePipeToString({\n\t\tpipe,\n\t\tinput: inputStr,\n\t\tcontext: contextStr,\n\t\tfailEarly,\n\t\tbase: [`return ${inputStr}`],\n\t})\n\tconst allLines = [\n\t\t`return (${inputStr}) => {`,\n\t\t...lines.filter((l) => l.trim() !== '').map((l) => `\\t${l}`),\n\t\t`\tthrow PipeError.root('unhandled root validation', ${inputStr})`,\n\t\t`}`,\n\t]\n\tpipe.__compiled = new Function(contextStr, 'PipeError', allLines.join('\\n'))(context, PipeError)\n\treturn pipe.__compiled!\n}\n\nexport function standard<I, O>(\n\tcompile: Pipe<I, O>['compile'],\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst piper: Pipe<I, O> = {\n\t\tcontext: () => config.context ?? ({} as any),\n\t\tschema: (context: Context) => config.schema?.(context) ?? ({} as any),\n\t\tpipe: (...entries: Entry<any, any>[]) => {\n\t\t\tdelete piper.__compiled\n\t\t\tfor (const cur of entries) {\n\t\t\t\tconst p = typeof cur === 'function' ? define(cur, config) : cur\n\t\t\t\tif (!piper.next) piper.next = p\n\t\t\t\tif (piper.last) piper.last.next = p\n\t\t\t\tpiper.last = p.last ?? p\n\t\t\t}\n\t\t\treturn piper\n\t\t},\n\t\tcompile,\n\t\t'~standard': {\n\t\t\tversion: 1,\n\t\t\tvendor: 'valleyed',\n\t\t\tvalidate(value) {\n\t\t\t\tconst validity = validate(piper, value)\n\t\t\t\tif (validity.valid) return { value: validity.value }\n\t\t\t\treturn {\n\t\t\t\t\tissues: validity.error.messages.map(({ message, path }) => ({\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tpath: path ? path.split('.') : undefined,\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\treturn piper\n}\n\nexport function define<I, O>(\n\tfn: PipeFn<I, O>,\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst key = `define_${getRandomValue()}`\n\treturn standard<I, O>(\n\t\t({ input, context, path }) => [\n\t\t\t`${input} = ${context}['${key}'](${input})`,\n\t\t\t`if (${input} instanceof PipeError) return PipeError.path(${path}, ${input})`,\n\t\t],\n\t\t{\n\t\t\tcontext: { ...config?.context, [key]: fn },\n\t\t\tschema: config?.schema,\n\t\t},\n\t)\n}\n\nexport function compileNested(\n\tdata: {\n\t\tpipe: Pipe<any, any>\n\t\terrorType?: Parameters<typeof createErrorHandler>[1]\n\t\topts: Required<Pick<Parameters<Pipe<any, any>['compile']>[1], 'rootContext' | 'failEarly' | 'path' | 'wrapError'>>\n\t} & { input: string; key?: string },\n) {\n\tconst random = getRandomValue()\n\tconst { lines, context } = compilePipeToString({\n\t\t...data.opts,\n\t\twrapError: createErrorHandler(data.input, data.errorType ?? data.opts.wrapError.type),\n\t\tpipe: data.pipe,\n\t\tinput: data.input,\n\t\tcontext: `context[\\`${random}\\`]`,\n\t\tpath: [data.opts.path, 'key' in data ? data.key : ''].filter(Boolean).join('.') || undefined,\n\t})\n\tdata.opts.rootContext[random] = context\n\treturn lines\n}\n\nfunction compilePipeToString({\n\tpipe,\n\tinput,\n\tcontext: contextStr,\n\tfailEarly = false,\n\tpath = '',\n\trootContext,\n\twrapError = createErrorHandler(input, 'return'),\n\tbase = [],\n}: {\n\tpipe: Pipe<any, any>\n\tinput: string\n\tcontext: string\n\tfailEarly?: boolean\n\tpath?: string\n\trootContext?: Context\n\twrapError?: PipeErrorHandler\n\tbase?: string[]\n}) {\n\tconst ctx = context(pipe)\n\trootContext ??= ctx\n\tconst compiled = walk(pipe, <ReturnType<Pipe<any, any>['compile']>[]>[], (p, acc) => {\n\t\tacc.push(\n\t\t\tp.compile(\n\t\t\t\t{ input, context: contextStr, path: `${path ? `'${path}'` : undefined}` },\n\t\t\t\t{ rootContext, failEarly, path, wrapError },\n\t\t\t),\n\t\t)\n\t\treturn acc\n\t})\n\tconst lines = mergePipeLines(base, compiled.flat())\n\treturn { lines, context: ctx }\n}\n\nfunction mergePipeLines(base: string[], lines: ReturnType<Pipe<any, any>['compile']>) {\n\treturn (Array.isArray(lines) ? lines : [lines]).reduceRight<string[]>((acc, cur) => {\n\t\tif (typeof cur === 'string') acc.unshift(cur)\n\t\telse if (typeof cur === 'function') acc = cur(acc)\n\t\treturn acc\n\t}, base)\n}\n"],"mappings":"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","names":["schema","meta","context","compile"]}
@@ -1,3 +1,3 @@
1
1
  "use strict";var l=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var w=(e,n)=>{for(var t in n)l(e,t,{get:n[t],enumerable:!0})},O=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of C(n))!g.call(e,o)&&o!==t&&l(e,o,{get:()=>n[o],enumerable:!(r=$(n,o))||r.enumerable});return e};var S=e=>O(l({},"__esModule",{value:!0}),e);var R={};w(R,{assert:()=>_,compile:()=>T,compileNested:()=>F,context:()=>y,define:()=>h,meta:()=>I,schema:()=>k,standard:()=>x,validate:()=>f,walk:()=>c});module.exports=S(R);var a=require('./errors.min.cjs'),u=require('../../utils/functions/index.min.cjs');function c(e,n,t){let r=n;for(;e;)r=t(e,r),e=e.next;return r}function y(e){return c(e,{},(n,t)=>({...t,...n.context()}))}function _(e,n){const t=f(e,n);if(!t.valid)throw t.error;return t.value}function f(e,n){try{const r=(e.__compiled??T(e))(n);return r instanceof a.PipeError?{error:r,valid:!1}:{value:r,valid:!0}}catch(t){return t instanceof a.PipeError?{error:t,valid:!1}:{error:a.PipeError.root(t instanceof Error?t.message:`${t}`,n,void 0),valid:!1}}}function k(e,n={}){const t=y(e);return c(e,n,(r,o)=>({...o,...r.schema(t)}))}function I(e,n){return e.pipe(x(()=>[],{schema:()=>n}))}function T(e,{failEarly:n=!0}={}){const t="input",r="context",{lines:o,context:i}=P({pipe:e,input:t,context:r,failEarly:n,base:[`return ${t}`]}),p=[`return (${t}) => {`,...o.filter(s=>s.trim()!=="").map(s=>` ${s}`),` throw PipeError.root('unhandled root validation', ${t})`,"}"];return e.__compiled=new Function(r,"PipeError",p.join(`
2
- `))(i,a.PipeError),e.__compiled}function x(e,n={}){const t={context:()=>n.context??{},schema:r=>n.schema?.(r)??{},pipe:(...r)=>{delete t.__compiled;for(const o of r){const i=typeof o=="function"?h(o,n):o;t.next||(t.next=i),t.last&&(t.last.next=i),t.last=i.last??i}return t},compile:e,"~standard":{version:1,vendor:"valleyed",validate(r){const o=f(t,r);return o.valid?{value:o.value}:{issues:o.error.messages.map(({message:i,path:p})=>({message:i,path:p?p.split("."):void 0}))}}}};return t}function h(e,n={}){const t=`define_${(0,u.getRandomValue)()}`;return x(({input:r,context:o,path:i})=>[`${r} = ${o}['${t}'](${r})`,`if (${r} instanceof PipeError) return PipeError.path(${i}, ${r})`],{context:{...n?.context,[t]:e},schema:n?.schema})}function F(e){const n=(0,u.getRandomValue)(),{lines:t,context:r}=P({...e.opts,wrapError:(0,a.createErrorHandler)(e.input,e.errorType??e.opts.wrapError.type),pipe:e.pipe,input:e.input,context:`context[\`${n}\`]`,path:["key"in e?e.key:"",e.opts.path].filter(Boolean).join(".")||void 0});return e.opts.rootContext[n]=r,t}function P({pipe:e,input:n,context:t,failEarly:r=!1,path:o="",rootContext:i,wrapError:p=(0,a.createErrorHandler)(n,"return"),base:s=[]}){const m=y(e);i??=m;const v=c(e,[],(E,d)=>(d.push(E.compile({input:n,context:t,path:`${o?`'${o}'`:void 0}`},{rootContext:i,failEarly:r,path:o,wrapError:p})),d));return{lines:J(s,v.flat()),context:m}}function J(e,n){return(Array.isArray(n)?n:[n]).reduceRight((t,r)=>(typeof r=="string"?t.unshift(r):typeof r=="function"&&(t=r(t)),t),e)}0&&(module.exports={assert,compile,compileNested,context,define,meta,schema,standard,validate,walk});
2
+ `))(i,a.PipeError),e.__compiled}function x(e,n={}){const t={context:()=>n.context??{},schema:r=>n.schema?.(r)??{},pipe:(...r)=>{delete t.__compiled;for(const o of r){const i=typeof o=="function"?h(o,n):o;t.next||(t.next=i),t.last&&(t.last.next=i),t.last=i.last??i}return t},compile:e,"~standard":{version:1,vendor:"valleyed",validate(r){const o=f(t,r);return o.valid?{value:o.value}:{issues:o.error.messages.map(({message:i,path:p})=>({message:i,path:p?p.split("."):void 0}))}}}};return t}function h(e,n={}){const t=`define_${(0,u.getRandomValue)()}`;return x(({input:r,context:o,path:i})=>[`${r} = ${o}['${t}'](${r})`,`if (${r} instanceof PipeError) return PipeError.path(${i}, ${r})`],{context:{...n?.context,[t]:e},schema:n?.schema})}function F(e){const n=(0,u.getRandomValue)(),{lines:t,context:r}=P({...e.opts,wrapError:(0,a.createErrorHandler)(e.input,e.errorType??e.opts.wrapError.type),pipe:e.pipe,input:e.input,context:`context[\`${n}\`]`,path:[e.opts.path,"key"in e?e.key:""].filter(Boolean).join(".")||void 0});return e.opts.rootContext[n]=r,t}function P({pipe:e,input:n,context:t,failEarly:r=!1,path:o="",rootContext:i,wrapError:p=(0,a.createErrorHandler)(n,"return"),base:s=[]}){const m=y(e);i??=m;const v=c(e,[],(E,d)=>(d.push(E.compile({input:n,context:t,path:`${o?`'${o}'`:void 0}`},{rootContext:i,failEarly:r,path:o,wrapError:p})),d));return{lines:J(s,v.flat()),context:m}}function J(e,n){return(Array.isArray(n)?n:[n]).reduceRight((t,r)=>(typeof r=="string"?t.unshift(r):typeof r=="function"&&(t=r(t)),t),e)}0&&(module.exports={assert,compile,compileNested,context,define,meta,schema,standard,validate,walk});
3
3
  //# sourceMappingURL=pipes.min.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/api/base/pipes.ts"],"sourcesContent":["import { createErrorHandler, PipeError } from './errors'\nimport { Context, JsonSchemaBuilder, PipeMeta, Pipe, Entry, PipeOutput, PipeFn, PipeCompiledFn, PipeErrorHandler } from './types'\nimport { getRandomValue } from '../../utils/functions'\nimport { JsonSchema } from '../../utils/types'\n\nexport function walk<T>(pipe: Pipe<any, any>, init: T, nodeFn: (cur: Pipe<any, any>, acc: T) => T) {\n\tlet acc: T = init\n\twhile (pipe) {\n\t\tacc = nodeFn(pipe, acc)\n\t\tpipe = pipe.next!\n\t}\n\treturn acc\n}\n\nexport function context<T extends Pipe<any, any>>(pipe: T): Context {\n\treturn walk(pipe, {} as Context, (p, acc) => ({ ...acc, ...p.context() }))\n}\n\nexport function assert<T extends Pipe<any, any>>(pipe: T, input: unknown): PipeOutput<T> {\n\tconst result = validate(pipe, input)\n\tif (!result.valid) throw result.error\n\treturn result.value\n}\n\nexport function validate<T extends Pipe<any, any>>(\n\tpipe: T,\n\tinput: unknown,\n): { value: PipeOutput<T>; valid: true } | { error: PipeError; valid: false } {\n\ttry {\n\t\tconst fn = pipe.__compiled ?? compile(pipe)\n\t\tconst res = fn(input) as ReturnType<PipeCompiledFn<T>>\n\t\treturn res instanceof PipeError ? { error: res, valid: false } : { value: res, valid: true }\n\t} catch (error) {\n\t\tif (error instanceof PipeError) return { error, valid: false }\n\t\treturn { error: PipeError.root(error instanceof Error ? error.message : `${error}`, input, undefined), valid: false }\n\t}\n}\n\nexport function schema<T extends Pipe<any, any>>(pipe: T, schema: JsonSchema = {}): JsonSchema {\n\tconst cont = context(pipe)\n\treturn walk(pipe, schema, (p, acc) => ({ ...acc, ...p.schema(cont) }))\n}\n\nexport function meta<T extends Pipe<any, any>>(p: T, meta: PipeMeta): T {\n\treturn p.pipe(standard(() => [], { schema: () => meta })) as T\n}\n\nexport function compile<T extends Pipe<any, any>>(\n\tpipe: T,\n\t{\n\t\tfailEarly = true,\n\t}: {\n\t\tfailEarly?: boolean\n\t} = {},\n): PipeCompiledFn<T> {\n\tconst inputStr = 'input'\n\tconst contextStr = 'context'\n\tconst { lines, context } = compilePipeToString({\n\t\tpipe,\n\t\tinput: inputStr,\n\t\tcontext: contextStr,\n\t\tfailEarly,\n\t\tbase: [`return ${inputStr}`],\n\t})\n\tconst allLines = [\n\t\t`return (${inputStr}) => {`,\n\t\t...lines.filter((l) => l.trim() !== '').map((l) => `\\t${l}`),\n\t\t`\tthrow PipeError.root('unhandled root validation', ${inputStr})`,\n\t\t`}`,\n\t]\n\tpipe.__compiled = new Function(contextStr, 'PipeError', allLines.join('\\n'))(context, PipeError)\n\treturn pipe.__compiled!\n}\n\nexport function standard<I, O>(\n\tcompile: Pipe<I, O>['compile'],\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst piper: Pipe<I, O> = {\n\t\tcontext: () => config.context ?? ({} as any),\n\t\tschema: (context: Context) => config.schema?.(context) ?? ({} as any),\n\t\tpipe: (...entries: Entry<any, any>[]) => {\n\t\t\tdelete piper.__compiled\n\t\t\tfor (const cur of entries) {\n\t\t\t\tconst p = typeof cur === 'function' ? define(cur, config) : cur\n\t\t\t\tif (!piper.next) piper.next = p\n\t\t\t\tif (piper.last) piper.last.next = p\n\t\t\t\tpiper.last = p.last ?? p\n\t\t\t}\n\t\t\treturn piper\n\t\t},\n\t\tcompile,\n\t\t'~standard': {\n\t\t\tversion: 1,\n\t\t\tvendor: 'valleyed',\n\t\t\tvalidate(value) {\n\t\t\t\tconst validity = validate(piper, value)\n\t\t\t\tif (validity.valid) return { value: validity.value }\n\t\t\t\treturn {\n\t\t\t\t\tissues: validity.error.messages.map(({ message, path }) => ({\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tpath: path ? path.split('.') : undefined,\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\treturn piper\n}\n\nexport function define<I, O>(\n\tfn: PipeFn<I, O>,\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst key = `define_${getRandomValue()}`\n\treturn standard<I, O>(\n\t\t({ input, context, path }) => [\n\t\t\t`${input} = ${context}['${key}'](${input})`,\n\t\t\t`if (${input} instanceof PipeError) return PipeError.path(${path}, ${input})`,\n\t\t],\n\t\t{\n\t\t\tcontext: { ...config?.context, [key]: fn },\n\t\t\tschema: config?.schema,\n\t\t},\n\t)\n}\n\nexport function compileNested(\n\tdata: {\n\t\tpipe: Pipe<any, any>\n\t\terrorType?: Parameters<typeof createErrorHandler>[1]\n\t\topts: Required<Pick<Parameters<Pipe<any, any>['compile']>[1], 'rootContext' | 'failEarly' | 'path' | 'wrapError'>>\n\t} & { input: string; key?: string },\n) {\n\tconst random = getRandomValue()\n\tconst { lines, context } = compilePipeToString({\n\t\t...data.opts,\n\t\twrapError: createErrorHandler(data.input, data.errorType ?? data.opts.wrapError.type),\n\t\tpipe: data.pipe,\n\t\tinput: data.input,\n\t\tcontext: `context[\\`${random}\\`]`,\n\t\tpath: ['key' in data ? data.key : '', data.opts.path].filter(Boolean).join('.') || undefined,\n\t})\n\tdata.opts.rootContext[random] = context\n\treturn lines\n}\n\nfunction compilePipeToString({\n\tpipe,\n\tinput,\n\tcontext: contextStr,\n\tfailEarly = false,\n\tpath = '',\n\trootContext,\n\twrapError = createErrorHandler(input, 'return'),\n\tbase = [],\n}: {\n\tpipe: Pipe<any, any>\n\tinput: string\n\tcontext: string\n\tfailEarly?: boolean\n\tpath?: string\n\trootContext?: Context\n\twrapError?: PipeErrorHandler\n\tbase?: string[]\n}) {\n\tconst ctx = context(pipe)\n\trootContext ??= ctx\n\tconst compiled = walk(pipe, <ReturnType<Pipe<any, any>['compile']>[]>[], (p, acc) => {\n\t\tacc.push(\n\t\t\tp.compile(\n\t\t\t\t{ input, context: contextStr, path: `${path ? `'${path}'` : undefined}` },\n\t\t\t\t{ rootContext, failEarly, path, wrapError },\n\t\t\t),\n\t\t)\n\t\treturn acc\n\t})\n\tconst lines = mergePipeLines(base, compiled.flat())\n\treturn { lines, context: ctx }\n}\n\nfunction mergePipeLines(base: string[], lines: ReturnType<Pipe<any, any>['compile']>) {\n\treturn (Array.isArray(lines) ? lines : [lines]).reduceRight<string[]>((acc, cur) => {\n\t\tif (typeof cur === 'string') acc.unshift(cur)\n\t\telse if (typeof cur === 'function') acc = cur(acc)\n\t\treturn acc\n\t}, base)\n}\n"],"mappings":"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","names":["pipes_exports","__export","assert","compile","compileNested","context","define","meta","schema","standard","validate","walk","__toCommonJS","import_errors","import_functions","pipe","init","nodeFn","acc","p","input","result","res","error","cont","failEarly","inputStr","contextStr","lines","compilePipeToString","allLines","l","config","piper","entries","cur","value","validity","message","path","fn","key","data","random","rootContext","wrapError","base","ctx","compiled","mergePipeLines"]}
1
+ {"version":3,"sources":["../../../../src/api/base/pipes.ts"],"sourcesContent":["import { createErrorHandler, PipeError } from './errors'\nimport { Context, JsonSchemaBuilder, PipeMeta, Pipe, Entry, PipeOutput, PipeFn, PipeCompiledFn, PipeErrorHandler } from './types'\nimport { getRandomValue } from '../../utils/functions'\nimport { JsonSchema } from '../../utils/types'\n\nexport function walk<T>(pipe: Pipe<any, any>, init: T, nodeFn: (cur: Pipe<any, any>, acc: T) => T) {\n\tlet acc: T = init\n\twhile (pipe) {\n\t\tacc = nodeFn(pipe, acc)\n\t\tpipe = pipe.next!\n\t}\n\treturn acc\n}\n\nexport function context<T extends Pipe<any, any>>(pipe: T): Context {\n\treturn walk(pipe, {} as Context, (p, acc) => ({ ...acc, ...p.context() }))\n}\n\nexport function assert<T extends Pipe<any, any>>(pipe: T, input: unknown): PipeOutput<T> {\n\tconst result = validate(pipe, input)\n\tif (!result.valid) throw result.error\n\treturn result.value\n}\n\nexport function validate<T extends Pipe<any, any>>(\n\tpipe: T,\n\tinput: unknown,\n): { value: PipeOutput<T>; valid: true } | { error: PipeError; valid: false } {\n\ttry {\n\t\tconst fn = pipe.__compiled ?? compile(pipe)\n\t\tconst res = fn(input) as ReturnType<PipeCompiledFn<T>>\n\t\treturn res instanceof PipeError ? { error: res, valid: false } : { value: res, valid: true }\n\t} catch (error) {\n\t\tif (error instanceof PipeError) return { error, valid: false }\n\t\treturn { error: PipeError.root(error instanceof Error ? error.message : `${error}`, input, undefined), valid: false }\n\t}\n}\n\nexport function schema<T extends Pipe<any, any>>(pipe: T, schema: JsonSchema = {}): JsonSchema {\n\tconst cont = context(pipe)\n\treturn walk(pipe, schema, (p, acc) => ({ ...acc, ...p.schema(cont) }))\n}\n\nexport function meta<T extends Pipe<any, any>>(p: T, meta: PipeMeta): T {\n\treturn p.pipe(standard(() => [], { schema: () => meta })) as T\n}\n\nexport function compile<T extends Pipe<any, any>>(\n\tpipe: T,\n\t{\n\t\tfailEarly = true,\n\t}: {\n\t\tfailEarly?: boolean\n\t} = {},\n): PipeCompiledFn<T> {\n\tconst inputStr = 'input'\n\tconst contextStr = 'context'\n\tconst { lines, context } = compilePipeToString({\n\t\tpipe,\n\t\tinput: inputStr,\n\t\tcontext: contextStr,\n\t\tfailEarly,\n\t\tbase: [`return ${inputStr}`],\n\t})\n\tconst allLines = [\n\t\t`return (${inputStr}) => {`,\n\t\t...lines.filter((l) => l.trim() !== '').map((l) => `\\t${l}`),\n\t\t`\tthrow PipeError.root('unhandled root validation', ${inputStr})`,\n\t\t`}`,\n\t]\n\tpipe.__compiled = new Function(contextStr, 'PipeError', allLines.join('\\n'))(context, PipeError)\n\treturn pipe.__compiled!\n}\n\nexport function standard<I, O>(\n\tcompile: Pipe<I, O>['compile'],\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst piper: Pipe<I, O> = {\n\t\tcontext: () => config.context ?? ({} as any),\n\t\tschema: (context: Context) => config.schema?.(context) ?? ({} as any),\n\t\tpipe: (...entries: Entry<any, any>[]) => {\n\t\t\tdelete piper.__compiled\n\t\t\tfor (const cur of entries) {\n\t\t\t\tconst p = typeof cur === 'function' ? define(cur, config) : cur\n\t\t\t\tif (!piper.next) piper.next = p\n\t\t\t\tif (piper.last) piper.last.next = p\n\t\t\t\tpiper.last = p.last ?? p\n\t\t\t}\n\t\t\treturn piper\n\t\t},\n\t\tcompile,\n\t\t'~standard': {\n\t\t\tversion: 1,\n\t\t\tvendor: 'valleyed',\n\t\t\tvalidate(value) {\n\t\t\t\tconst validity = validate(piper, value)\n\t\t\t\tif (validity.valid) return { value: validity.value }\n\t\t\t\treturn {\n\t\t\t\t\tissues: validity.error.messages.map(({ message, path }) => ({\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tpath: path ? path.split('.') : undefined,\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\treturn piper\n}\n\nexport function define<I, O>(\n\tfn: PipeFn<I, O>,\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst key = `define_${getRandomValue()}`\n\treturn standard<I, O>(\n\t\t({ input, context, path }) => [\n\t\t\t`${input} = ${context}['${key}'](${input})`,\n\t\t\t`if (${input} instanceof PipeError) return PipeError.path(${path}, ${input})`,\n\t\t],\n\t\t{\n\t\t\tcontext: { ...config?.context, [key]: fn },\n\t\t\tschema: config?.schema,\n\t\t},\n\t)\n}\n\nexport function compileNested(\n\tdata: {\n\t\tpipe: Pipe<any, any>\n\t\terrorType?: Parameters<typeof createErrorHandler>[1]\n\t\topts: Required<Pick<Parameters<Pipe<any, any>['compile']>[1], 'rootContext' | 'failEarly' | 'path' | 'wrapError'>>\n\t} & { input: string; key?: string },\n) {\n\tconst random = getRandomValue()\n\tconst { lines, context } = compilePipeToString({\n\t\t...data.opts,\n\t\twrapError: createErrorHandler(data.input, data.errorType ?? data.opts.wrapError.type),\n\t\tpipe: data.pipe,\n\t\tinput: data.input,\n\t\tcontext: `context[\\`${random}\\`]`,\n\t\tpath: [data.opts.path, 'key' in data ? data.key : ''].filter(Boolean).join('.') || undefined,\n\t})\n\tdata.opts.rootContext[random] = context\n\treturn lines\n}\n\nfunction compilePipeToString({\n\tpipe,\n\tinput,\n\tcontext: contextStr,\n\tfailEarly = false,\n\tpath = '',\n\trootContext,\n\twrapError = createErrorHandler(input, 'return'),\n\tbase = [],\n}: {\n\tpipe: Pipe<any, any>\n\tinput: string\n\tcontext: string\n\tfailEarly?: boolean\n\tpath?: string\n\trootContext?: Context\n\twrapError?: PipeErrorHandler\n\tbase?: string[]\n}) {\n\tconst ctx = context(pipe)\n\trootContext ??= ctx\n\tconst compiled = walk(pipe, <ReturnType<Pipe<any, any>['compile']>[]>[], (p, acc) => {\n\t\tacc.push(\n\t\t\tp.compile(\n\t\t\t\t{ input, context: contextStr, path: `${path ? `'${path}'` : undefined}` },\n\t\t\t\t{ rootContext, failEarly, path, wrapError },\n\t\t\t),\n\t\t)\n\t\treturn acc\n\t})\n\tconst lines = mergePipeLines(base, compiled.flat())\n\treturn { lines, context: ctx }\n}\n\nfunction mergePipeLines(base: string[], lines: ReturnType<Pipe<any, any>['compile']>) {\n\treturn (Array.isArray(lines) ? lines : [lines]).reduceRight<string[]>((acc, cur) => {\n\t\tif (typeof cur === 'string') acc.unshift(cur)\n\t\telse if (typeof cur === 'function') acc = cur(acc)\n\t\treturn acc\n\t}, base)\n}\n"],"mappings":"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","names":["pipes_exports","__export","assert","compile","compileNested","context","define","meta","schema","standard","validate","walk","__toCommonJS","import_errors","import_functions","pipe","init","nodeFn","acc","p","input","result","res","error","cont","failEarly","inputStr","contextStr","lines","compilePipeToString","allLines","l","config","piper","entries","cur","value","validity","message","path","fn","key","data","random","rootContext","wrapError","base","ctx","compiled","mergePipeLines"]}
@@ -1,3 +1,3 @@
1
1
  import{createErrorHandler as y,PipeError as s}from "./errors.min.mjs";import{getRandomValue as f}from "../../utils/functions/index.min.mjs";function c(t,r,e){let n=r;for(;t;)n=e(t,n),t=t.next;return n}function x(t){return c(t,{},(r,e)=>({...e,...r.context()}))}function A(t,r){const e=m(t,r);if(!e.valid)throw e.error;return e.value}function m(t,r){try{const n=(t.__compiled??v(t))(r);return n instanceof s?{error:n,valid:!1}:{value:n,valid:!0}}catch(e){return e instanceof s?{error:e,valid:!1}:{error:s.root(e instanceof Error?e.message:`${e}`,r,void 0),valid:!1}}}function L(t,r={}){const e=x(t);return c(t,r,(n,o)=>({...o,...n.schema(e)}))}function M(t,r){return t.pipe(d(()=>[],{schema:()=>r}))}function v(t,{failEarly:r=!0}={}){const e="input",n="context",{lines:o,context:i}=P({pipe:t,input:e,context:n,failEarly:r,base:[`return ${e}`]}),a=[`return (${e}) => {`,...o.filter(p=>p.trim()!=="").map(p=>` ${p}`),` throw PipeError.root('unhandled root validation', ${e})`,"}"];return t.__compiled=new Function(n,"PipeError",a.join(`
2
- `))(i,s),t.__compiled}function d(t,r={}){const e={context:()=>r.context??{},schema:n=>r.schema?.(n)??{},pipe:(...n)=>{delete e.__compiled;for(const o of n){const i=typeof o=="function"?E(o,r):o;e.next||(e.next=i),e.last&&(e.last.next=i),e.last=i.last??i}return e},compile:t,"~standard":{version:1,vendor:"valleyed",validate(n){const o=m(e,n);return o.valid?{value:o.value}:{issues:o.error.messages.map(({message:i,path:a})=>({message:i,path:a?a.split("."):void 0}))}}}};return e}function E(t,r={}){const e=`define_${f()}`;return d(({input:n,context:o,path:i})=>[`${n} = ${o}['${e}'](${n})`,`if (${n} instanceof PipeError) return PipeError.path(${i}, ${n})`],{context:{...r?.context,[e]:t},schema:r?.schema})}function q(t){const r=f(),{lines:e,context:n}=P({...t.opts,wrapError:y(t.input,t.errorType??t.opts.wrapError.type),pipe:t.pipe,input:t.input,context:`context[\`${r}\`]`,path:["key"in t?t.key:"",t.opts.path].filter(Boolean).join(".")||void 0});return t.opts.rootContext[r]=n,e}function P({pipe:t,input:r,context:e,failEarly:n=!1,path:o="",rootContext:i,wrapError:a=y(r,"return"),base:p=[]}){const l=x(t);i??=l;const T=c(t,[],(h,u)=>(u.push(h.compile({input:r,context:e,path:`${o?`'${o}'`:void 0}`},{rootContext:i,failEarly:n,path:o,wrapError:a})),u));return{lines:$(p,T.flat()),context:l}}function $(t,r){return(Array.isArray(r)?r:[r]).reduceRight((e,n)=>(typeof n=="string"?e.unshift(n):typeof n=="function"&&(e=n(e)),e),t)}export{A as assert,v as compile,q as compileNested,x as context,E as define,M as meta,L as schema,d as standard,m as validate,c as walk};
2
+ `))(i,s),t.__compiled}function d(t,r={}){const e={context:()=>r.context??{},schema:n=>r.schema?.(n)??{},pipe:(...n)=>{delete e.__compiled;for(const o of n){const i=typeof o=="function"?E(o,r):o;e.next||(e.next=i),e.last&&(e.last.next=i),e.last=i.last??i}return e},compile:t,"~standard":{version:1,vendor:"valleyed",validate(n){const o=m(e,n);return o.valid?{value:o.value}:{issues:o.error.messages.map(({message:i,path:a})=>({message:i,path:a?a.split("."):void 0}))}}}};return e}function E(t,r={}){const e=`define_${f()}`;return d(({input:n,context:o,path:i})=>[`${n} = ${o}['${e}'](${n})`,`if (${n} instanceof PipeError) return PipeError.path(${i}, ${n})`],{context:{...r?.context,[e]:t},schema:r?.schema})}function q(t){const r=f(),{lines:e,context:n}=P({...t.opts,wrapError:y(t.input,t.errorType??t.opts.wrapError.type),pipe:t.pipe,input:t.input,context:`context[\`${r}\`]`,path:[t.opts.path,"key"in t?t.key:""].filter(Boolean).join(".")||void 0});return t.opts.rootContext[r]=n,e}function P({pipe:t,input:r,context:e,failEarly:n=!1,path:o="",rootContext:i,wrapError:a=y(r,"return"),base:p=[]}){const l=x(t);i??=l;const T=c(t,[],(h,u)=>(u.push(h.compile({input:r,context:e,path:`${o?`'${o}'`:void 0}`},{rootContext:i,failEarly:n,path:o,wrapError:a})),u));return{lines:$(p,T.flat()),context:l}}function $(t,r){return(Array.isArray(r)?r:[r]).reduceRight((e,n)=>(typeof n=="string"?e.unshift(n):typeof n=="function"&&(e=n(e)),e),t)}export{A as assert,v as compile,q as compileNested,x as context,E as define,M as meta,L as schema,d as standard,m as validate,c as walk};
3
3
  //# sourceMappingURL=pipes.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/api/base/pipes.ts"],"sourcesContent":["import { createErrorHandler, PipeError } from './errors'\nimport { Context, JsonSchemaBuilder, PipeMeta, Pipe, Entry, PipeOutput, PipeFn, PipeCompiledFn, PipeErrorHandler } from './types'\nimport { getRandomValue } from '../../utils/functions'\nimport { JsonSchema } from '../../utils/types'\n\nexport function walk<T>(pipe: Pipe<any, any>, init: T, nodeFn: (cur: Pipe<any, any>, acc: T) => T) {\n\tlet acc: T = init\n\twhile (pipe) {\n\t\tacc = nodeFn(pipe, acc)\n\t\tpipe = pipe.next!\n\t}\n\treturn acc\n}\n\nexport function context<T extends Pipe<any, any>>(pipe: T): Context {\n\treturn walk(pipe, {} as Context, (p, acc) => ({ ...acc, ...p.context() }))\n}\n\nexport function assert<T extends Pipe<any, any>>(pipe: T, input: unknown): PipeOutput<T> {\n\tconst result = validate(pipe, input)\n\tif (!result.valid) throw result.error\n\treturn result.value\n}\n\nexport function validate<T extends Pipe<any, any>>(\n\tpipe: T,\n\tinput: unknown,\n): { value: PipeOutput<T>; valid: true } | { error: PipeError; valid: false } {\n\ttry {\n\t\tconst fn = pipe.__compiled ?? compile(pipe)\n\t\tconst res = fn(input) as ReturnType<PipeCompiledFn<T>>\n\t\treturn res instanceof PipeError ? { error: res, valid: false } : { value: res, valid: true }\n\t} catch (error) {\n\t\tif (error instanceof PipeError) return { error, valid: false }\n\t\treturn { error: PipeError.root(error instanceof Error ? error.message : `${error}`, input, undefined), valid: false }\n\t}\n}\n\nexport function schema<T extends Pipe<any, any>>(pipe: T, schema: JsonSchema = {}): JsonSchema {\n\tconst cont = context(pipe)\n\treturn walk(pipe, schema, (p, acc) => ({ ...acc, ...p.schema(cont) }))\n}\n\nexport function meta<T extends Pipe<any, any>>(p: T, meta: PipeMeta): T {\n\treturn p.pipe(standard(() => [], { schema: () => meta })) as T\n}\n\nexport function compile<T extends Pipe<any, any>>(\n\tpipe: T,\n\t{\n\t\tfailEarly = true,\n\t}: {\n\t\tfailEarly?: boolean\n\t} = {},\n): PipeCompiledFn<T> {\n\tconst inputStr = 'input'\n\tconst contextStr = 'context'\n\tconst { lines, context } = compilePipeToString({\n\t\tpipe,\n\t\tinput: inputStr,\n\t\tcontext: contextStr,\n\t\tfailEarly,\n\t\tbase: [`return ${inputStr}`],\n\t})\n\tconst allLines = [\n\t\t`return (${inputStr}) => {`,\n\t\t...lines.filter((l) => l.trim() !== '').map((l) => `\\t${l}`),\n\t\t`\tthrow PipeError.root('unhandled root validation', ${inputStr})`,\n\t\t`}`,\n\t]\n\tpipe.__compiled = new Function(contextStr, 'PipeError', allLines.join('\\n'))(context, PipeError)\n\treturn pipe.__compiled!\n}\n\nexport function standard<I, O>(\n\tcompile: Pipe<I, O>['compile'],\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst piper: Pipe<I, O> = {\n\t\tcontext: () => config.context ?? ({} as any),\n\t\tschema: (context: Context) => config.schema?.(context) ?? ({} as any),\n\t\tpipe: (...entries: Entry<any, any>[]) => {\n\t\t\tdelete piper.__compiled\n\t\t\tfor (const cur of entries) {\n\t\t\t\tconst p = typeof cur === 'function' ? define(cur, config) : cur\n\t\t\t\tif (!piper.next) piper.next = p\n\t\t\t\tif (piper.last) piper.last.next = p\n\t\t\t\tpiper.last = p.last ?? p\n\t\t\t}\n\t\t\treturn piper\n\t\t},\n\t\tcompile,\n\t\t'~standard': {\n\t\t\tversion: 1,\n\t\t\tvendor: 'valleyed',\n\t\t\tvalidate(value) {\n\t\t\t\tconst validity = validate(piper, value)\n\t\t\t\tif (validity.valid) return { value: validity.value }\n\t\t\t\treturn {\n\t\t\t\t\tissues: validity.error.messages.map(({ message, path }) => ({\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tpath: path ? path.split('.') : undefined,\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\treturn piper\n}\n\nexport function define<I, O>(\n\tfn: PipeFn<I, O>,\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst key = `define_${getRandomValue()}`\n\treturn standard<I, O>(\n\t\t({ input, context, path }) => [\n\t\t\t`${input} = ${context}['${key}'](${input})`,\n\t\t\t`if (${input} instanceof PipeError) return PipeError.path(${path}, ${input})`,\n\t\t],\n\t\t{\n\t\t\tcontext: { ...config?.context, [key]: fn },\n\t\t\tschema: config?.schema,\n\t\t},\n\t)\n}\n\nexport function compileNested(\n\tdata: {\n\t\tpipe: Pipe<any, any>\n\t\terrorType?: Parameters<typeof createErrorHandler>[1]\n\t\topts: Required<Pick<Parameters<Pipe<any, any>['compile']>[1], 'rootContext' | 'failEarly' | 'path' | 'wrapError'>>\n\t} & { input: string; key?: string },\n) {\n\tconst random = getRandomValue()\n\tconst { lines, context } = compilePipeToString({\n\t\t...data.opts,\n\t\twrapError: createErrorHandler(data.input, data.errorType ?? data.opts.wrapError.type),\n\t\tpipe: data.pipe,\n\t\tinput: data.input,\n\t\tcontext: `context[\\`${random}\\`]`,\n\t\tpath: ['key' in data ? data.key : '', data.opts.path].filter(Boolean).join('.') || undefined,\n\t})\n\tdata.opts.rootContext[random] = context\n\treturn lines\n}\n\nfunction compilePipeToString({\n\tpipe,\n\tinput,\n\tcontext: contextStr,\n\tfailEarly = false,\n\tpath = '',\n\trootContext,\n\twrapError = createErrorHandler(input, 'return'),\n\tbase = [],\n}: {\n\tpipe: Pipe<any, any>\n\tinput: string\n\tcontext: string\n\tfailEarly?: boolean\n\tpath?: string\n\trootContext?: Context\n\twrapError?: PipeErrorHandler\n\tbase?: string[]\n}) {\n\tconst ctx = context(pipe)\n\trootContext ??= ctx\n\tconst compiled = walk(pipe, <ReturnType<Pipe<any, any>['compile']>[]>[], (p, acc) => {\n\t\tacc.push(\n\t\t\tp.compile(\n\t\t\t\t{ input, context: contextStr, path: `${path ? `'${path}'` : undefined}` },\n\t\t\t\t{ rootContext, failEarly, path, wrapError },\n\t\t\t),\n\t\t)\n\t\treturn acc\n\t})\n\tconst lines = mergePipeLines(base, compiled.flat())\n\treturn { lines, context: ctx }\n}\n\nfunction mergePipeLines(base: string[], lines: ReturnType<Pipe<any, any>['compile']>) {\n\treturn (Array.isArray(lines) ? lines : [lines]).reduceRight<string[]>((acc, cur) => {\n\t\tif (typeof cur === 'string') acc.unshift(cur)\n\t\telse if (typeof cur === 'function') acc = cur(acc)\n\t\treturn acc\n\t}, base)\n}\n"],"mappings":"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","names":["createErrorHandler","PipeError","getRandomValue","walk","pipe","init","nodeFn","acc","context","p","assert","input","result","validate","res","compile","error","schema","cont","meta","standard","failEarly","inputStr","contextStr","lines","compilePipeToString","allLines","l","config","piper","entries","cur","define","value","validity","message","path","fn","key","compileNested","data","random","rootContext","wrapError","base","ctx","compiled","mergePipeLines"]}
1
+ {"version":3,"sources":["../../../../src/api/base/pipes.ts"],"sourcesContent":["import { createErrorHandler, PipeError } from './errors'\nimport { Context, JsonSchemaBuilder, PipeMeta, Pipe, Entry, PipeOutput, PipeFn, PipeCompiledFn, PipeErrorHandler } from './types'\nimport { getRandomValue } from '../../utils/functions'\nimport { JsonSchema } from '../../utils/types'\n\nexport function walk<T>(pipe: Pipe<any, any>, init: T, nodeFn: (cur: Pipe<any, any>, acc: T) => T) {\n\tlet acc: T = init\n\twhile (pipe) {\n\t\tacc = nodeFn(pipe, acc)\n\t\tpipe = pipe.next!\n\t}\n\treturn acc\n}\n\nexport function context<T extends Pipe<any, any>>(pipe: T): Context {\n\treturn walk(pipe, {} as Context, (p, acc) => ({ ...acc, ...p.context() }))\n}\n\nexport function assert<T extends Pipe<any, any>>(pipe: T, input: unknown): PipeOutput<T> {\n\tconst result = validate(pipe, input)\n\tif (!result.valid) throw result.error\n\treturn result.value\n}\n\nexport function validate<T extends Pipe<any, any>>(\n\tpipe: T,\n\tinput: unknown,\n): { value: PipeOutput<T>; valid: true } | { error: PipeError; valid: false } {\n\ttry {\n\t\tconst fn = pipe.__compiled ?? compile(pipe)\n\t\tconst res = fn(input) as ReturnType<PipeCompiledFn<T>>\n\t\treturn res instanceof PipeError ? { error: res, valid: false } : { value: res, valid: true }\n\t} catch (error) {\n\t\tif (error instanceof PipeError) return { error, valid: false }\n\t\treturn { error: PipeError.root(error instanceof Error ? error.message : `${error}`, input, undefined), valid: false }\n\t}\n}\n\nexport function schema<T extends Pipe<any, any>>(pipe: T, schema: JsonSchema = {}): JsonSchema {\n\tconst cont = context(pipe)\n\treturn walk(pipe, schema, (p, acc) => ({ ...acc, ...p.schema(cont) }))\n}\n\nexport function meta<T extends Pipe<any, any>>(p: T, meta: PipeMeta): T {\n\treturn p.pipe(standard(() => [], { schema: () => meta })) as T\n}\n\nexport function compile<T extends Pipe<any, any>>(\n\tpipe: T,\n\t{\n\t\tfailEarly = true,\n\t}: {\n\t\tfailEarly?: boolean\n\t} = {},\n): PipeCompiledFn<T> {\n\tconst inputStr = 'input'\n\tconst contextStr = 'context'\n\tconst { lines, context } = compilePipeToString({\n\t\tpipe,\n\t\tinput: inputStr,\n\t\tcontext: contextStr,\n\t\tfailEarly,\n\t\tbase: [`return ${inputStr}`],\n\t})\n\tconst allLines = [\n\t\t`return (${inputStr}) => {`,\n\t\t...lines.filter((l) => l.trim() !== '').map((l) => `\\t${l}`),\n\t\t`\tthrow PipeError.root('unhandled root validation', ${inputStr})`,\n\t\t`}`,\n\t]\n\tpipe.__compiled = new Function(contextStr, 'PipeError', allLines.join('\\n'))(context, PipeError)\n\treturn pipe.__compiled!\n}\n\nexport function standard<I, O>(\n\tcompile: Pipe<I, O>['compile'],\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst piper: Pipe<I, O> = {\n\t\tcontext: () => config.context ?? ({} as any),\n\t\tschema: (context: Context) => config.schema?.(context) ?? ({} as any),\n\t\tpipe: (...entries: Entry<any, any>[]) => {\n\t\t\tdelete piper.__compiled\n\t\t\tfor (const cur of entries) {\n\t\t\t\tconst p = typeof cur === 'function' ? define(cur, config) : cur\n\t\t\t\tif (!piper.next) piper.next = p\n\t\t\t\tif (piper.last) piper.last.next = p\n\t\t\t\tpiper.last = p.last ?? p\n\t\t\t}\n\t\t\treturn piper\n\t\t},\n\t\tcompile,\n\t\t'~standard': {\n\t\t\tversion: 1,\n\t\t\tvendor: 'valleyed',\n\t\t\tvalidate(value) {\n\t\t\t\tconst validity = validate(piper, value)\n\t\t\t\tif (validity.valid) return { value: validity.value }\n\t\t\t\treturn {\n\t\t\t\t\tissues: validity.error.messages.map(({ message, path }) => ({\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tpath: path ? path.split('.') : undefined,\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\treturn piper\n}\n\nexport function define<I, O>(\n\tfn: PipeFn<I, O>,\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst key = `define_${getRandomValue()}`\n\treturn standard<I, O>(\n\t\t({ input, context, path }) => [\n\t\t\t`${input} = ${context}['${key}'](${input})`,\n\t\t\t`if (${input} instanceof PipeError) return PipeError.path(${path}, ${input})`,\n\t\t],\n\t\t{\n\t\t\tcontext: { ...config?.context, [key]: fn },\n\t\t\tschema: config?.schema,\n\t\t},\n\t)\n}\n\nexport function compileNested(\n\tdata: {\n\t\tpipe: Pipe<any, any>\n\t\terrorType?: Parameters<typeof createErrorHandler>[1]\n\t\topts: Required<Pick<Parameters<Pipe<any, any>['compile']>[1], 'rootContext' | 'failEarly' | 'path' | 'wrapError'>>\n\t} & { input: string; key?: string },\n) {\n\tconst random = getRandomValue()\n\tconst { lines, context } = compilePipeToString({\n\t\t...data.opts,\n\t\twrapError: createErrorHandler(data.input, data.errorType ?? data.opts.wrapError.type),\n\t\tpipe: data.pipe,\n\t\tinput: data.input,\n\t\tcontext: `context[\\`${random}\\`]`,\n\t\tpath: [data.opts.path, 'key' in data ? data.key : ''].filter(Boolean).join('.') || undefined,\n\t})\n\tdata.opts.rootContext[random] = context\n\treturn lines\n}\n\nfunction compilePipeToString({\n\tpipe,\n\tinput,\n\tcontext: contextStr,\n\tfailEarly = false,\n\tpath = '',\n\trootContext,\n\twrapError = createErrorHandler(input, 'return'),\n\tbase = [],\n}: {\n\tpipe: Pipe<any, any>\n\tinput: string\n\tcontext: string\n\tfailEarly?: boolean\n\tpath?: string\n\trootContext?: Context\n\twrapError?: PipeErrorHandler\n\tbase?: string[]\n}) {\n\tconst ctx = context(pipe)\n\trootContext ??= ctx\n\tconst compiled = walk(pipe, <ReturnType<Pipe<any, any>['compile']>[]>[], (p, acc) => {\n\t\tacc.push(\n\t\t\tp.compile(\n\t\t\t\t{ input, context: contextStr, path: `${path ? `'${path}'` : undefined}` },\n\t\t\t\t{ rootContext, failEarly, path, wrapError },\n\t\t\t),\n\t\t)\n\t\treturn acc\n\t})\n\tconst lines = mergePipeLines(base, compiled.flat())\n\treturn { lines, context: ctx }\n}\n\nfunction mergePipeLines(base: string[], lines: ReturnType<Pipe<any, any>['compile']>) {\n\treturn (Array.isArray(lines) ? lines : [lines]).reduceRight<string[]>((acc, cur) => {\n\t\tif (typeof cur === 'string') acc.unshift(cur)\n\t\telse if (typeof cur === 'function') acc = cur(acc)\n\t\treturn acc\n\t}, base)\n}\n"],"mappings":"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","names":["createErrorHandler","PipeError","getRandomValue","walk","pipe","init","nodeFn","acc","context","p","assert","input","result","validate","res","compile","error","schema","cont","meta","standard","failEarly","inputStr","contextStr","lines","compilePipeToString","allLines","l","config","piper","entries","cur","define","value","validity","message","path","fn","key","compileNested","data","random","rootContext","wrapError","base","ctx","compiled","mergePipeLines"]}
@@ -107,7 +107,7 @@ function compileNested(data) {
107
107
  pipe: data.pipe,
108
108
  input: data.input,
109
109
  context: `context[\`${random}\`]`,
110
- path: ["key" in data ? data.key : "", data.opts.path].filter(Boolean).join(".") || void 0
110
+ path: [data.opts.path, "key" in data ? data.key : ""].filter(Boolean).join(".") || void 0
111
111
  });
112
112
  data.opts.rootContext[random] = context2;
113
113
  return lines;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/api/base/pipes.ts"],"sourcesContent":["import { createErrorHandler, PipeError } from './errors'\nimport { Context, JsonSchemaBuilder, PipeMeta, Pipe, Entry, PipeOutput, PipeFn, PipeCompiledFn, PipeErrorHandler } from './types'\nimport { getRandomValue } from '../../utils/functions'\nimport { JsonSchema } from '../../utils/types'\n\nexport function walk<T>(pipe: Pipe<any, any>, init: T, nodeFn: (cur: Pipe<any, any>, acc: T) => T) {\n\tlet acc: T = init\n\twhile (pipe) {\n\t\tacc = nodeFn(pipe, acc)\n\t\tpipe = pipe.next!\n\t}\n\treturn acc\n}\n\nexport function context<T extends Pipe<any, any>>(pipe: T): Context {\n\treturn walk(pipe, {} as Context, (p, acc) => ({ ...acc, ...p.context() }))\n}\n\nexport function assert<T extends Pipe<any, any>>(pipe: T, input: unknown): PipeOutput<T> {\n\tconst result = validate(pipe, input)\n\tif (!result.valid) throw result.error\n\treturn result.value\n}\n\nexport function validate<T extends Pipe<any, any>>(\n\tpipe: T,\n\tinput: unknown,\n): { value: PipeOutput<T>; valid: true } | { error: PipeError; valid: false } {\n\ttry {\n\t\tconst fn = pipe.__compiled ?? compile(pipe)\n\t\tconst res = fn(input) as ReturnType<PipeCompiledFn<T>>\n\t\treturn res instanceof PipeError ? { error: res, valid: false } : { value: res, valid: true }\n\t} catch (error) {\n\t\tif (error instanceof PipeError) return { error, valid: false }\n\t\treturn { error: PipeError.root(error instanceof Error ? error.message : `${error}`, input, undefined), valid: false }\n\t}\n}\n\nexport function schema<T extends Pipe<any, any>>(pipe: T, schema: JsonSchema = {}): JsonSchema {\n\tconst cont = context(pipe)\n\treturn walk(pipe, schema, (p, acc) => ({ ...acc, ...p.schema(cont) }))\n}\n\nexport function meta<T extends Pipe<any, any>>(p: T, meta: PipeMeta): T {\n\treturn p.pipe(standard(() => [], { schema: () => meta })) as T\n}\n\nexport function compile<T extends Pipe<any, any>>(\n\tpipe: T,\n\t{\n\t\tfailEarly = true,\n\t}: {\n\t\tfailEarly?: boolean\n\t} = {},\n): PipeCompiledFn<T> {\n\tconst inputStr = 'input'\n\tconst contextStr = 'context'\n\tconst { lines, context } = compilePipeToString({\n\t\tpipe,\n\t\tinput: inputStr,\n\t\tcontext: contextStr,\n\t\tfailEarly,\n\t\tbase: [`return ${inputStr}`],\n\t})\n\tconst allLines = [\n\t\t`return (${inputStr}) => {`,\n\t\t...lines.filter((l) => l.trim() !== '').map((l) => `\\t${l}`),\n\t\t`\tthrow PipeError.root('unhandled root validation', ${inputStr})`,\n\t\t`}`,\n\t]\n\tpipe.__compiled = new Function(contextStr, 'PipeError', allLines.join('\\n'))(context, PipeError)\n\treturn pipe.__compiled!\n}\n\nexport function standard<I, O>(\n\tcompile: Pipe<I, O>['compile'],\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst piper: Pipe<I, O> = {\n\t\tcontext: () => config.context ?? ({} as any),\n\t\tschema: (context: Context) => config.schema?.(context) ?? ({} as any),\n\t\tpipe: (...entries: Entry<any, any>[]) => {\n\t\t\tdelete piper.__compiled\n\t\t\tfor (const cur of entries) {\n\t\t\t\tconst p = typeof cur === 'function' ? define(cur, config) : cur\n\t\t\t\tif (!piper.next) piper.next = p\n\t\t\t\tif (piper.last) piper.last.next = p\n\t\t\t\tpiper.last = p.last ?? p\n\t\t\t}\n\t\t\treturn piper\n\t\t},\n\t\tcompile,\n\t\t'~standard': {\n\t\t\tversion: 1,\n\t\t\tvendor: 'valleyed',\n\t\t\tvalidate(value) {\n\t\t\t\tconst validity = validate(piper, value)\n\t\t\t\tif (validity.valid) return { value: validity.value }\n\t\t\t\treturn {\n\t\t\t\t\tissues: validity.error.messages.map(({ message, path }) => ({\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tpath: path ? path.split('.') : undefined,\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\treturn piper\n}\n\nexport function define<I, O>(\n\tfn: PipeFn<I, O>,\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst key = `define_${getRandomValue()}`\n\treturn standard<I, O>(\n\t\t({ input, context, path }) => [\n\t\t\t`${input} = ${context}['${key}'](${input})`,\n\t\t\t`if (${input} instanceof PipeError) return PipeError.path(${path}, ${input})`,\n\t\t],\n\t\t{\n\t\t\tcontext: { ...config?.context, [key]: fn },\n\t\t\tschema: config?.schema,\n\t\t},\n\t)\n}\n\nexport function compileNested(\n\tdata: {\n\t\tpipe: Pipe<any, any>\n\t\terrorType?: Parameters<typeof createErrorHandler>[1]\n\t\topts: Required<Pick<Parameters<Pipe<any, any>['compile']>[1], 'rootContext' | 'failEarly' | 'path' | 'wrapError'>>\n\t} & { input: string; key?: string },\n) {\n\tconst random = getRandomValue()\n\tconst { lines, context } = compilePipeToString({\n\t\t...data.opts,\n\t\twrapError: createErrorHandler(data.input, data.errorType ?? data.opts.wrapError.type),\n\t\tpipe: data.pipe,\n\t\tinput: data.input,\n\t\tcontext: `context[\\`${random}\\`]`,\n\t\tpath: ['key' in data ? data.key : '', data.opts.path].filter(Boolean).join('.') || undefined,\n\t})\n\tdata.opts.rootContext[random] = context\n\treturn lines\n}\n\nfunction compilePipeToString({\n\tpipe,\n\tinput,\n\tcontext: contextStr,\n\tfailEarly = false,\n\tpath = '',\n\trootContext,\n\twrapError = createErrorHandler(input, 'return'),\n\tbase = [],\n}: {\n\tpipe: Pipe<any, any>\n\tinput: string\n\tcontext: string\n\tfailEarly?: boolean\n\tpath?: string\n\trootContext?: Context\n\twrapError?: PipeErrorHandler\n\tbase?: string[]\n}) {\n\tconst ctx = context(pipe)\n\trootContext ??= ctx\n\tconst compiled = walk(pipe, <ReturnType<Pipe<any, any>['compile']>[]>[], (p, acc) => {\n\t\tacc.push(\n\t\t\tp.compile(\n\t\t\t\t{ input, context: contextStr, path: `${path ? `'${path}'` : undefined}` },\n\t\t\t\t{ rootContext, failEarly, path, wrapError },\n\t\t\t),\n\t\t)\n\t\treturn acc\n\t})\n\tconst lines = mergePipeLines(base, compiled.flat())\n\treturn { lines, context: ctx }\n}\n\nfunction mergePipeLines(base: string[], lines: ReturnType<Pipe<any, any>['compile']>) {\n\treturn (Array.isArray(lines) ? lines : [lines]).reduceRight<string[]>((acc, cur) => {\n\t\tif (typeof cur === 'string') acc.unshift(cur)\n\t\telse if (typeof cur === 'function') acc = cur(acc)\n\t\treturn acc\n\t}, base)\n}\n"],"mappings":"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","names":["schema","meta","context","compile"]}
1
+ {"version":3,"sources":["../../../../src/api/base/pipes.ts"],"sourcesContent":["import { createErrorHandler, PipeError } from './errors'\nimport { Context, JsonSchemaBuilder, PipeMeta, Pipe, Entry, PipeOutput, PipeFn, PipeCompiledFn, PipeErrorHandler } from './types'\nimport { getRandomValue } from '../../utils/functions'\nimport { JsonSchema } from '../../utils/types'\n\nexport function walk<T>(pipe: Pipe<any, any>, init: T, nodeFn: (cur: Pipe<any, any>, acc: T) => T) {\n\tlet acc: T = init\n\twhile (pipe) {\n\t\tacc = nodeFn(pipe, acc)\n\t\tpipe = pipe.next!\n\t}\n\treturn acc\n}\n\nexport function context<T extends Pipe<any, any>>(pipe: T): Context {\n\treturn walk(pipe, {} as Context, (p, acc) => ({ ...acc, ...p.context() }))\n}\n\nexport function assert<T extends Pipe<any, any>>(pipe: T, input: unknown): PipeOutput<T> {\n\tconst result = validate(pipe, input)\n\tif (!result.valid) throw result.error\n\treturn result.value\n}\n\nexport function validate<T extends Pipe<any, any>>(\n\tpipe: T,\n\tinput: unknown,\n): { value: PipeOutput<T>; valid: true } | { error: PipeError; valid: false } {\n\ttry {\n\t\tconst fn = pipe.__compiled ?? compile(pipe)\n\t\tconst res = fn(input) as ReturnType<PipeCompiledFn<T>>\n\t\treturn res instanceof PipeError ? { error: res, valid: false } : { value: res, valid: true }\n\t} catch (error) {\n\t\tif (error instanceof PipeError) return { error, valid: false }\n\t\treturn { error: PipeError.root(error instanceof Error ? error.message : `${error}`, input, undefined), valid: false }\n\t}\n}\n\nexport function schema<T extends Pipe<any, any>>(pipe: T, schema: JsonSchema = {}): JsonSchema {\n\tconst cont = context(pipe)\n\treturn walk(pipe, schema, (p, acc) => ({ ...acc, ...p.schema(cont) }))\n}\n\nexport function meta<T extends Pipe<any, any>>(p: T, meta: PipeMeta): T {\n\treturn p.pipe(standard(() => [], { schema: () => meta })) as T\n}\n\nexport function compile<T extends Pipe<any, any>>(\n\tpipe: T,\n\t{\n\t\tfailEarly = true,\n\t}: {\n\t\tfailEarly?: boolean\n\t} = {},\n): PipeCompiledFn<T> {\n\tconst inputStr = 'input'\n\tconst contextStr = 'context'\n\tconst { lines, context } = compilePipeToString({\n\t\tpipe,\n\t\tinput: inputStr,\n\t\tcontext: contextStr,\n\t\tfailEarly,\n\t\tbase: [`return ${inputStr}`],\n\t})\n\tconst allLines = [\n\t\t`return (${inputStr}) => {`,\n\t\t...lines.filter((l) => l.trim() !== '').map((l) => `\\t${l}`),\n\t\t`\tthrow PipeError.root('unhandled root validation', ${inputStr})`,\n\t\t`}`,\n\t]\n\tpipe.__compiled = new Function(contextStr, 'PipeError', allLines.join('\\n'))(context, PipeError)\n\treturn pipe.__compiled!\n}\n\nexport function standard<I, O>(\n\tcompile: Pipe<I, O>['compile'],\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst piper: Pipe<I, O> = {\n\t\tcontext: () => config.context ?? ({} as any),\n\t\tschema: (context: Context) => config.schema?.(context) ?? ({} as any),\n\t\tpipe: (...entries: Entry<any, any>[]) => {\n\t\t\tdelete piper.__compiled\n\t\t\tfor (const cur of entries) {\n\t\t\t\tconst p = typeof cur === 'function' ? define(cur, config) : cur\n\t\t\t\tif (!piper.next) piper.next = p\n\t\t\t\tif (piper.last) piper.last.next = p\n\t\t\t\tpiper.last = p.last ?? p\n\t\t\t}\n\t\t\treturn piper\n\t\t},\n\t\tcompile,\n\t\t'~standard': {\n\t\t\tversion: 1,\n\t\t\tvendor: 'valleyed',\n\t\t\tvalidate(value) {\n\t\t\t\tconst validity = validate(piper, value)\n\t\t\t\tif (validity.valid) return { value: validity.value }\n\t\t\t\treturn {\n\t\t\t\t\tissues: validity.error.messages.map(({ message, path }) => ({\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tpath: path ? path.split('.') : undefined,\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\treturn piper\n}\n\nexport function define<I, O>(\n\tfn: PipeFn<I, O>,\n\tconfig: {\n\t\tcontext?: Context\n\t\tschema?: (context: Context) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O> {\n\tconst key = `define_${getRandomValue()}`\n\treturn standard<I, O>(\n\t\t({ input, context, path }) => [\n\t\t\t`${input} = ${context}['${key}'](${input})`,\n\t\t\t`if (${input} instanceof PipeError) return PipeError.path(${path}, ${input})`,\n\t\t],\n\t\t{\n\t\t\tcontext: { ...config?.context, [key]: fn },\n\t\t\tschema: config?.schema,\n\t\t},\n\t)\n}\n\nexport function compileNested(\n\tdata: {\n\t\tpipe: Pipe<any, any>\n\t\terrorType?: Parameters<typeof createErrorHandler>[1]\n\t\topts: Required<Pick<Parameters<Pipe<any, any>['compile']>[1], 'rootContext' | 'failEarly' | 'path' | 'wrapError'>>\n\t} & { input: string; key?: string },\n) {\n\tconst random = getRandomValue()\n\tconst { lines, context } = compilePipeToString({\n\t\t...data.opts,\n\t\twrapError: createErrorHandler(data.input, data.errorType ?? data.opts.wrapError.type),\n\t\tpipe: data.pipe,\n\t\tinput: data.input,\n\t\tcontext: `context[\\`${random}\\`]`,\n\t\tpath: [data.opts.path, 'key' in data ? data.key : ''].filter(Boolean).join('.') || undefined,\n\t})\n\tdata.opts.rootContext[random] = context\n\treturn lines\n}\n\nfunction compilePipeToString({\n\tpipe,\n\tinput,\n\tcontext: contextStr,\n\tfailEarly = false,\n\tpath = '',\n\trootContext,\n\twrapError = createErrorHandler(input, 'return'),\n\tbase = [],\n}: {\n\tpipe: Pipe<any, any>\n\tinput: string\n\tcontext: string\n\tfailEarly?: boolean\n\tpath?: string\n\trootContext?: Context\n\twrapError?: PipeErrorHandler\n\tbase?: string[]\n}) {\n\tconst ctx = context(pipe)\n\trootContext ??= ctx\n\tconst compiled = walk(pipe, <ReturnType<Pipe<any, any>['compile']>[]>[], (p, acc) => {\n\t\tacc.push(\n\t\t\tp.compile(\n\t\t\t\t{ input, context: contextStr, path: `${path ? `'${path}'` : undefined}` },\n\t\t\t\t{ rootContext, failEarly, path, wrapError },\n\t\t\t),\n\t\t)\n\t\treturn acc\n\t})\n\tconst lines = mergePipeLines(base, compiled.flat())\n\treturn { lines, context: ctx }\n}\n\nfunction mergePipeLines(base: string[], lines: ReturnType<Pipe<any, any>['compile']>) {\n\treturn (Array.isArray(lines) ? lines : [lines]).reduceRight<string[]>((acc, cur) => {\n\t\tif (typeof cur === 'string') acc.unshift(cur)\n\t\telse if (typeof cur === 'function') acc = cur(acc)\n\t\treturn acc\n\t}, base)\n}\n"],"mappings":"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","names":["schema","meta","context","compile"]}
@@ -107,7 +107,7 @@ function compileNested(data) {
107
107
  pipe: data.pipe,
108
108
  input: data.input,
109
109
  context: `context[\`${random}\`]`,
110
- path: ["key" in data ? data.key : "", data.opts.path].filter(Boolean).join(".") || void 0
110
+ path: [data.opts.path, "key" in data ? data.key : ""].filter(Boolean).join(".") || void 0
111
111
  });
112
112
  data.opts.rootContext[random] = context2;
113
113
  return lines;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valleyed",
3
- "version": "4.5.13",
3
+ "version": "4.5.14",
4
4
  "description": "A lightweight package with definitions for various validation rules, and helper services to consume said rules.",
5
5
  "type": "module",
6
6
  "sideEffects": false,