@homedev/fields 1.2.6 → 1.2.8

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.
@@ -0,0 +1,51 @@
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 { }
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,V=(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 w=(S,E)=>{for(var $ in E)Q(S,$,{get:E[$],enumerable:!0,configurable:!0,set:(U)=>E[$]=()=>U})};var g={};w(g,{processFields:()=>I,getProcessor:()=>Z,getArgs:()=>P});module.exports=V(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("]"))return S.value.slice(1,-1).split(";").map(($)=>{let U=$.trim();if(!isNaN(+U))return+U;return U});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)};var _=(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("."),x=(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=x(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 h=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)=>h(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}
1
+ var{defineProperty:Q,getOwnPropertyNames:y,getOwnPropertyDescriptor:m}=Object,d=Object.prototype.hasOwnProperty;var j=new WeakMap,V=(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 w=(S,E)=>{for(var $ in E)Q(S,$,{get:E[$],enumerable:!0,configurable:!0,set:(U)=>E[$]=()=>U})};var g={};w(g,{processFields:()=>I,getProcessor:()=>Z,getArgs:()=>P});module.exports=V(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("]"))return S.value.slice(1,-1).split(";").map(($)=>{let U=$.trim();if(!isNaN(+U))return+U;return U});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("."),x=(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=x(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 h=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)=>h(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
2
  (${U})`)}}),S};
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@homedev/fields",
3
- "version": "1.2.6",
3
+ "version": "1.2.8",
4
4
  "description": "field utilities",
5
5
  "author": "julzor",
6
6
  "license": "ISC",
7
7
  "main": "dist/index.js",
8
8
  "type": "module",
9
9
  "dependencies": {
10
- "@homedev/navigate": "^1.1.1",
10
+ "@homedev/navigate": "^1.1.3",
11
11
  "@homedev/select": "^1.1.3",
12
- "@homedev/split": "^1.1.3"
12
+ "@homedev/split": "^1.1.4"
13
13
  },
14
14
  "typings": "dist/index.d.ts"
15
15
  }