@homedev/fields 1.2.9 → 1.2.11

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/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var{defineProperty:Q,getOwnPropertyNames:y,getOwnPropertyDescriptor:m}=Object,d=Object.prototype.hasOwnProperty;var j=new WeakMap,x=(S)=>{var E=j.get(S),$;if(E)return E;if(E=Q({},"__esModule",{value:!0}),S&&typeof S==="object"||typeof S==="function")y(S).map((U)=>!d.call(E,U)&&Q(E,U,{get:()=>S[U],enumerable:!($=m(S,U))||$.enumerable}));return j.set(S,E),E};var h=(S,E)=>{for(var $ in E)Q(S,$,{get:E[$],enumerable:!0,configurable:!0,set:(U)=>E[$]=()=>U})};var g={};h(g,{processFields:()=>I,getProcessor:()=>Z,getArgs:()=>P});module.exports=x(g);var T=require("@homedev/split");var K=require("@homedev/select"),B=(S,E)=>{if(typeof S.value==="string"){if(S.quoted)return S.value;if(S.value.startsWith("[")&&S.value.endsWith("]")){let $=S.value.slice(1,-1);if($.trim()==="")return[];return $.split(";").map((U)=>{let z=U.trim();if(!isNaN(+z))return+z;return z})}if(S.value.startsWith("{")&&S.value.endsWith("}")){if(S.value.slice(1,-1).trim()==="")return{}}if(S.value==="null")return null;if(S.value==="undefined")return;if(S.value.startsWith("@"))return S.value.slice(1);if(!isNaN(+S.value))return+S.value}return E(S.value)},q=(S,E,$,U,z,G)=>{let H=U?.(S)??S,J=z(H);if(J[0])return J[1];if(!E){let L=K.select($,S),Y=z(L);if(Y[0])return Y[1]}throw Error(G)},_=(S,E,$,U)=>{let z=typeof S.types==="function"?S.types(U,E.value):S.types?.[U];if(!z||z==="ref")return B(E,(H)=>K.select($,H));let G=B(E,()=>E.value);if(Array.isArray(z)){if(!z.includes(G))throw Error(`Argument ${U.toString()} must be one of [${z.join(", ")}]: ${G}`);return G}if(typeof z==="string")switch(z){case"number":return q(G,E.quoted,$,(H)=>Number(H),(H)=>[!isNaN(H),H],`Argument ${U.toString()} must be a number: ${G}`);case"boolean":return q(G,E.quoted,$,null,(H)=>{if([!0,"true","1",1,"yes","on"].includes(H))return[!0,!0];if([!1,"false","0",0,"no","off"].includes(H))return[!0,!1];if([null,"null","undefined",void 0,""].includes(H))return[!0,!1];if(Array.isArray(H))return[!0,H.length>0];return[!1,!1]},`Argument ${U.toString()} must be a boolean: ${G}`);case"string":return G.toString();default:throw Error(`Unknown type for argument ${U.toString()}: ${z}`)}return z(G,$,U,E.quoted)};var Z=(S,E)=>{let $=S[E];if($===void 0)throw Error(`Unhandled field processor type: ${E}`);return typeof $==="function"?{options:{},fn:$}:{options:$,fn:$.fn}},N=(S)=>!S.quoted&&S.value.startsWith("."),V=(S)=>{let E={};for(let $ of S){if(!N($))continue;let U=$.value.indexOf("="),z=U>-1?$.value.slice(1,U):$.value.slice(1),G=U>-1?$.value.slice(U+1):"";if(G.length>=2){let H=G[0],J=G[G.length-1];if(H==='"'&&J==='"'||H==="'"&&J==="'")G=G.slice(1,-1)}if(!E[z])E[z]=[];E[z].push(G)}return E},P=(S,E,$)=>{let U=T.splitWithQuotes(S??""),z=V(U),G=U.filter((J)=>!N(J)),H=E.options.processArgs===!1?[]:G.map((J,L)=>_(E.options,J,$,L));return{rawArgs:G,parsedArgs:H,tags:z}};var M=require("@homedev/navigate");var C=require("@homedev/navigate");var O=(S,E)=>E.keys!==void 0&&S.key.startsWith(".")&&E.keys[S.key.substring(1)]!==void 0,f=async(S,E,$,U)=>{let{key:z,parent:G}=S,H=Z(U.keys,z.substring(1));if(H.options.processArgs!==!1&&(typeof H.options.types==="function"||H.options.types?.[0]!==void 0))S.value=_(H.options,{value:S.value,quoted:!1},$,0);if(typeof S.value!=="string")await I(S.value,{...U,root:{...$,parent:S.parent,parents:S.parents},filters:[...U.filters??[],...H.options.filters??[]]});let J=await H.fn({path:E,root:$,parent:G,key:z,options:U,value:S.value,args:[S.value],rawArgs:[],tags:{}});return J instanceof C.NavigateResult?J:C.NavigateResult.ReplaceParent(J)};var X=require("@homedev/navigate"),k=require("@homedev/select");var W=(S)=>{let E=[],$=0;while($<S.length)if(S[$]==="$"&&S[$+1]==="("&&($===0||S[$-1]!=="\\")){let U=$;$+=2;let z=1;for(;$<S.length;$++)if(S[$]==="(")z++;else if(S[$]===")"){if(z--,z===0){E.push([U,$]);break}}if(z!==0)throw Error(`Unmatched opening $( at position ${U.toString()}`);$++}else $++;return E};class D{value;constructor(S){this.value=S}}var A=async(S,E,$)=>{for(let U=E.length-1;U>=0;U--){let[z,G]=E[U],H=S.slice(z+2,G),J=await A(H,W(H),$);if(typeof J==="object")return J;let L=await $(J,S);if(L instanceof D)return L.value;S=S.slice(0,z)+L+S.slice(G+1)}return S},R=async(S,E)=>A(S,W(S),E);var w=async(S,E,$,U)=>{let z=await(async()=>{let G=/([\w\d.-_/]+):(.+)/.exec(S);if(!G)return await k.select(E,S);let[H,J,L]=G,Y=Z(U.sources,J),F=P(L,Y,E);return await Y.fn({args:F.parsedArgs,rawArgs:F.rawArgs,tags:F.tags,key:J,options:U,root:E,path:$,value:null})})();if(z===null||z===void 0)return"";if(typeof z==="object")return new D(z);return z},b=async(S,E,$,U)=>{let z=await R(E,(G)=>w(G,$,S,U));if(z instanceof X.NavigateResult)return z;if(z===E)return X.NavigateResult.Explore();if(typeof z==="string"){let G=await b(S,z,$,U);if(G.action!==X.NavigateAction.Explore)return G}return X.NavigateResult.ReplaceItem(z)};var I=async(S,E)=>{return E??={},await M.navigate(S,async($)=>{let U=[...$.path,$.key].join(".");if(E?.filters?.length&&E.filters.some((J)=>J.test(U)))return M.NavigateResult.NoExplore();let z=$.path.length===0,G=$.parents.length>0?$.parents.toReversed():[];if(z){if(G.length>0)throw Error("Root object should not have a parent");G=E?.root?.parents?[E.root.parent,...E.root.parents.toReversed()]:[]}let H={...S,...E.root,this:$.parent,parent:G.length>0?G[0]:null,parents:G};try{if($.key.startsWith("$"))return M.NavigateResult.NoExplore();let J=M.NavigateResult.Explore();if(typeof $.value==="string")switch(J=await b(U,$.value,H,E),J.action){case M.NavigateAction.Explore:break;case M.NavigateAction.ReplaceItem:$.value=J.by;break;default:return J}if(O($,E))J=await f($,U,H,E);return J}catch(J){throw Error(`${J.message}
2
- (${U})`)}}),S};
1
+ var{defineProperty:_,getOwnPropertyNames:R,getOwnPropertyDescriptor:x}=Object,h=Object.prototype.hasOwnProperty;var k=new WeakMap,V=(F)=>{var S=k.get(F),P;if(S)return S;if(S=_({},"__esModule",{value:!0}),F&&typeof F==="object"||typeof F==="function")R(F).map((E)=>!h.call(S,E)&&_(S,E,{get:()=>F[E],enumerable:!(P=x(F,E))||P.enumerable}));return k.set(F,S),S};var w=(F,S)=>{for(var P in S)_(F,P,{get:S[P],enumerable:!0,configurable:!0,set:(E)=>S[P]=()=>E})};var p={};w(p,{processFields:()=>b,makeFieldProcessorMap:()=>v,makeFieldProcessorList:()=>n,makeFieldProcessor:()=>B,getProcessor:()=>H,getArgs:()=>K});module.exports=V(p);var O=require("@homedev/split");var D=require("@homedev/navigate"),Q=require("@homedev/select"),q=(F,S)=>{if(typeof F.value==="string"){if(F.quoted)return F.value;if(F.value.startsWith("[")&&F.value.endsWith("]")){let P=F.value.slice(1,-1);if(P.trim()==="")return[];return P.split(";").map((E)=>{let $=E.trim();if(!isNaN(+$))return+$;return $})}if(F.value.startsWith("{")&&F.value.endsWith("}")){if(F.value.slice(1,-1).trim()==="")return{}}if(F.value==="null")return null;if(F.value==="undefined")return;if(F.value.startsWith("@"))return F.value.slice(1);if(!isNaN(+F.value))return+F.value}return S(F.value)},J=(F,S,P,E,$,T)=>{let C=E?.(F)??F,M=$(C);if(M[0])return M[1];if(!S){let L=Q.select(P,F),G=$(L);if(G[0])return G[1]}throw Error(T)},X=(F,S,P,E,$)=>{let T=typeof F.types==="function"?F.types(E,S.value,$):F.types?.[E];if(!T||T==="ref")return q(S,(M)=>Q.select(P,M));let C=q(S,()=>S.value);if(Array.isArray(T)){if(!T.includes(C))throw Error(`Argument ${E.toString()} must be one of [${T.join(", ")}]: ${C}`);return C}if(typeof T==="string"){if(T.endsWith("?")){let M=T.slice(0,-1);if(S.value==="null")return D.NavigateResult.ReplaceItem(null);if(S.value==="undefined")return D.NavigateResult.ReplaceItem(void 0);if(S.value==="")return"";T=M}switch(T){case"any":return C;case"array":return J(C,S.quoted,P,null,(M)=>[Array.isArray(M),M],`Argument ${E.toString()} must be an array: ${C}`);case"object":return J(C,S.quoted,P,null,(M)=>[typeof M==="object"&&M!==null,M],`Argument ${E.toString()} must be an object: ${C}`);case"number":return J(C,S.quoted,P,(M)=>Number(M),(M)=>[!isNaN(M),M],`Argument ${E.toString()} must be a number: ${C}`);case"boolean":return J(C,S.quoted,P,null,(M)=>{if([!0,"true","1",1,"yes","on"].includes(M))return[!0,!0];if([!1,"false","0",0,"no","off"].includes(M))return[!0,!1];if([null,"null","undefined",void 0,""].includes(M))return[!0,!1];if(Array.isArray(M))return[!0,M.length>0];return[!1,!1]},`Argument ${E.toString()} must be a boolean: ${C}`);case"string":return C.toString();default:throw Error(`Unknown type for argument ${E.toString()}: ${T}`)}}return T(C,P,E,S.quoted)};var H=(F,S)=>{let P=F[S];if(P===void 0)throw Error(`Unhandled field processor type: ${S}`);return typeof P==="function"?{options:{},fn:P}:{options:P,fn:P.fn}},y=(F)=>!F.quoted&&F.value.startsWith("."),g=(F)=>{let S={};for(let P of F){if(!y(P))continue;let E=P.value.indexOf("="),$=E>-1?P.value.slice(1,E):P.value.slice(1),T=E>-1?P.value.slice(E+1):"";if(T.length>=2){let C=T[0],M=T[T.length-1];if(C==='"'&&M==='"'||C==="'"&&M==="'")T=T.slice(1,-1)}if(!S[$])S[$]=[];S[$].push(T)}return S},K=(F,S,P)=>{let E=O.splitWithQuotes(F??""),$=g(E),T=E.filter((M)=>!y(M)),C=S.options.processArgs===!1?[]:T.map((M,L)=>X(S.options,M,P,L,T));return{rawArgs:T,parsedArgs:C,tags:$}};var U=require("@homedev/navigate");var j=require("@homedev/navigate");var f=(F,S)=>S.keys!==void 0&&F.key.startsWith(".")&&S.keys[F.key.substring(1)]!==void 0,N=async(F,S,P,E)=>{let{key:$,parent:T}=F,C=H(E.keys,$.substring(1));if(C.options.processArgs!==!1&&(typeof C.options.types==="function"||C.options.types?.[0]!==void 0))F.value=X(C.options,{value:F.value,quoted:!1},P,0);if(typeof F.value!=="string")await b(F.value,{...E,root:{...P,parent:F.parent,parents:F.parents},filters:[...E.filters??[],...C.options.filters??[]]});let M=await C.fn({path:S,root:P,parent:T,key:$,options:E,value:F.value,args:[F.value],rawArgs:[],tags:{}});return M instanceof j.NavigateResult?M:j.NavigateResult.ReplaceParent(M)};var z=require("@homedev/navigate"),m=require("@homedev/select");var I=(F)=>{let S=[],P=0;while(P<F.length)if(F[P]==="$"&&F[P+1]==="("&&(P===0||F[P-1]!=="\\")){let E=P;P+=2;let $=1;for(;P<F.length;P++)if(F[P]==="(")$++;else if(F[P]===")"){if($--,$===0){S.push([E,P]);break}}if($!==0)throw Error(`Unmatched opening $( at position ${E.toString()}`);P++}else P++;return S};class Y{value;constructor(F){this.value=F}}var d=async(F,S,P)=>{for(let E=S.length-1;E>=0;E--){let[$,T]=S[E],C=F.slice($+2,T),M=await d(C,I(C),P);if(typeof M==="object")return M;let L=await P(M,F);if(L instanceof Y)return L.value;F=F.slice(0,$)+L+F.slice(T+1)}return F},A=async(F,S)=>d(F,I(F),S);var c=async(F,S,P,E)=>{let $=await(async()=>{let T=/([\w\d.-_/]+):(.+)/.exec(F);if(!T)return await m.select(S,F);let[C,M,L]=T,G=H(E.sources,M),Z=K(L,G,S);return await G.fn({args:Z.parsedArgs,rawArgs:Z.rawArgs,tags:Z.tags,key:M,options:E,root:S,path:P,value:null})})();if($===null||$===void 0)return"";if(typeof $==="object")return new Y($);return $},W=async(F,S,P,E)=>{let $=await A(S,(T)=>c(T,P,F,E));if($ instanceof z.NavigateResult)return $;if($===S)return z.NavigateResult.Explore();if(typeof $==="string"){let T=await W(F,$,P,E);if(T.action!==z.NavigateAction.Explore)return T}return z.NavigateResult.ReplaceItem($)};var b=async(F,S)=>{return S??={},await U.navigate(F,async(P)=>{let E=[...P.path,P.key].join(".");if(S?.filters?.length&&S.filters.some((M)=>M.test(E)))return U.NavigateResult.NoExplore();let $=P.path.length===0,T=P.parents.length>0?P.parents.toReversed():[];if($){if(T.length>0)throw Error("Root object should not have a parent");T=S?.root?.parents?[S.root.parent,...S.root.parents.toReversed()]:[]}let C={...F,...S.root,this:P.parent,parent:T.length>0?T[0]:null,parents:T};try{if(P.key.startsWith("$"))return U.NavigateResult.NoExplore();let M=U.NavigateResult.Explore();if(typeof P.value==="string")switch(M=await W(E,P.value,C,S),M.action){case U.NavigateAction.Explore:break;case U.NavigateAction.ReplaceItem:P.value=M.by;break;default:return M}if(f(P,S))M=await N(P,E,C,S);return M}catch(M){throw Error(`${M.message}
2
+ (${E})`)}}),F};var B=(F,S)=>S?{fn:(P)=>F(...P.args),types:S}:(P)=>F(...P.args),n=(F,S)=>Object.fromEntries(F.map((P)=>[P.name,B(P,S?.types?.[P.name])])),v=(F,S)=>Object.fromEntries((S?.keys??Object.keys(F)).map((P)=>[P,B(F[P],S?.types?.[P])]));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homedev/fields",
3
- "version": "1.2.9",
3
+ "version": "1.2.11",
4
4
  "description": "field utilities",
5
5
  "author": "julzor",
6
6
  "license": "ISC",
package/dist/index.d.ts DELETED
@@ -1,51 +0,0 @@
1
- import { NavigateResult } from '@homedev/navigate';
2
-
3
- export declare interface FieldContext {
4
- path: string;
5
- root: any;
6
- options: ProcessFieldsOptions;
7
- value: string | object | number | NavigateResult | null;
8
- key: string;
9
- args: any[];
10
- rawArgs: {
11
- value: string;
12
- quoted: boolean;
13
- }[];
14
- tags: Record<string, string[]>;
15
- parent?: any;
16
- }
17
-
18
- export declare interface FieldProcessor {
19
- fn: FieldProcessorFunc;
20
- options: FieldProcessorOptions;
21
- }
22
-
23
- export declare type FieldProcessorFunc = (context: FieldContext) => any;
24
-
25
- export declare type FieldProcessorMap = Record<string, FieldProcessorFunc | (FieldProcessorOptions & {
26
- fn: FieldProcessorFunc;
27
- })>;
28
-
29
- export declare interface FieldProcessorOptions {
30
- filters?: RegExp[];
31
- processArgs?: boolean;
32
- types?: Record<number, string | any[] | ((value: string, root: any, index: number, quoted: boolean) => any)> | ((n: number, value: any) => any);
33
- }
34
-
35
- /**
36
- * @public
37
- * @param obj
38
- * @param options
39
- * @returns
40
- */
41
- export declare const processFields: (obj: any, options?: ProcessFieldsOptions) => Promise<any>;
42
-
43
- export declare interface ProcessFieldsOptions {
44
- sources?: FieldProcessorMap;
45
- keys?: FieldProcessorMap;
46
- filters?: RegExp[];
47
- root?: Record<any, any>;
48
- globalContext?: any;
49
- }
50
-
51
- export { }