json-crawl
Advanced tools
Comparing version 0.1.0 to 0.2.0
@@ -1,3 +0,3 @@ | ||
import { CloneHook, SyncCloneHook } from "./types"; | ||
export declare const clone: <T>(data: any, hooks?: CloneHook<T> | CloneHook<T>[], state?: T) => Promise<any>; | ||
export declare const syncClone: <T>(data: any, hooks?: SyncCloneHook<T> | SyncCloneHook<T>[], state?: T) => any; | ||
import { CloneHook, CloneState, CrawlParams, SyncCloneHook } from "./types"; | ||
export declare const clone: <T, R>(data: any, hooks?: CloneHook<T, R> | CloneHook<T, R>[], params?: CrawlParams<CloneState<T>, R>) => Promise<any>; | ||
export declare const syncClone: <T, R, C>(data: any, hooks?: SyncCloneHook<T, R> | SyncCloneHook<T, R>[], params?: CrawlParams<CloneState<T>, R>) => any; |
@@ -1,3 +0,3 @@ | ||
import { CrawlHook, SyncCrawlHook } from "./types"; | ||
export declare const crawl: <T>(data: any, hooks: CrawlHook<T> | CrawlHook<T>[], state: T) => Promise<void>; | ||
export declare const syncCrawl: <T>(data: any, hooks: SyncCrawlHook<T> | SyncCrawlHook<T>[], state: T) => void; | ||
import { CrawlHook, SyncCrawlHook, CrawlParams } from "./types"; | ||
export declare const crawl: <T, R = any>(data: any, hooks: CrawlHook<T, R> | CrawlHook<T, R>[], params?: CrawlParams<T, R>) => Promise<void>; | ||
export declare const syncCrawl: <T, R>(data: any, hooks: SyncCrawlHook<T, R> | SyncCrawlHook<T, R>[], params?: CrawlParams<T, R>) => void; |
@@ -6,1 +6,2 @@ export * from "./crawl"; | ||
export * from "./transform"; | ||
export * from "./rules"; |
@@ -1,21 +0,37 @@ | ||
const h = (c) => typeof c == "object" && c !== null, p = (c) => Array.isArray(c), u = async (c, n, i) => { | ||
var l; | ||
n = p(n) ? n : [n]; | ||
const o = [{ data: c, state: i, path: [], keys: [], keyIndex: -1 }]; | ||
for (; o.length > 0; ) { | ||
const e = o[o.length - 1]; | ||
const h = (r) => typeof r == "object" && r !== null, y = (r) => Array.isArray(r), p = (r = {}, t, o, n = {}) => { | ||
const c = `/${t}`; | ||
let e = r; | ||
if (c in e) | ||
e = e[c]; | ||
else if ("/*" in e) | ||
e = e["/*"]; | ||
else | ||
return; | ||
return typeof e == "function" ? e(o, n) : e; | ||
}, w = (r, t, o = {}) => { | ||
let n = r; | ||
for (let c = 0; c < t.length; c++) | ||
if (n = p(n, t[c], t.slice(0, c), o), !n) | ||
return; | ||
return n; | ||
}, g = async (r, t, o = {}) => { | ||
var c; | ||
t = y(t) ? t : [t]; | ||
const n = [{ data: r, state: o.state, path: [], keys: [], keyIndex: -1, rules: o.rules }]; | ||
for (; n.length > 0; ) { | ||
const e = n[n.length - 1]; | ||
if (e.keyIndex >= e.keys.length) { | ||
for (; (l = e.hooks) != null && l.length; ) | ||
for (; (c = e.hooks) != null && c.length; ) | ||
e.hooks.pop()(); | ||
o.pop(); | ||
n.pop(); | ||
continue; | ||
} | ||
const r = e.keys[e.keyIndex++], [s, a] = o.length > 1 ? [e.data[r], [...e.path, r]] : [e.data, e.path]; | ||
let t = { value: s, state: e.state }; | ||
const i = e.keys[e.keyIndex++], [l, a, f] = n.length > 1 ? [e.data[i], [...e.path, i], p(e.rules, i, [...e.path, i], o.state)] : [e.data, e.path, o.rules]; | ||
let s = { value: l, state: e.state }; | ||
const d = []; | ||
for (const y of n) | ||
!y || !t || (t = await y(t.value, { path: a, key: r, state: t.state }), t != null && t.exitHook && d.push(t.exitHook)); | ||
if (t && h(t.value)) { | ||
const y = p(t.value) ? [...t.value.keys()] : Object.keys(t.value); | ||
o.push({ hooks: d, state: t.state, data: t.value, path: a, keys: y, keyIndex: 0 }); | ||
for (const u of t) | ||
!u || !s || (s = await u(s.value, { path: a, key: i, state: s.state, rules: f }), s != null && s.exitHook && d.push(s.exitHook)); | ||
if (s && h(s.value)) { | ||
const u = y(s.value) ? [...s.value.keys()] : Object.keys(s.value); | ||
n.push({ hooks: d, state: s.state, data: s.value, path: a, keys: u, keyIndex: 0, rules: f }); | ||
} else | ||
@@ -25,22 +41,22 @@ for (; d.length; ) | ||
} | ||
}, f = (c, n, i) => { | ||
var l; | ||
n = p(n) ? n : [n]; | ||
const o = [{ data: c, state: i, path: [], keys: [], keyIndex: -1 }]; | ||
for (; o.length > 0; ) { | ||
const e = o[o.length - 1]; | ||
}, x = (r, t, o = {}) => { | ||
var c; | ||
t = y(t) ? t : [t]; | ||
const n = [{ data: r, state: o.state, path: [], keys: [], keyIndex: -1, rules: o.rules }]; | ||
for (; n.length > 0; ) { | ||
const e = n[n.length - 1]; | ||
if (e.keyIndex >= e.keys.length) { | ||
for (; (l = e.hooks) != null && l.length; ) | ||
for (; (c = e.hooks) != null && c.length; ) | ||
e.hooks.pop()(); | ||
o.pop(); | ||
n.pop(); | ||
continue; | ||
} | ||
const r = e.keys[e.keyIndex++], [s, a] = o.length > 1 ? [e.data[r], [...e.path, r]] : [e.data, e.path]; | ||
let t = { value: s, state: e.state }; | ||
const i = e.keys[e.keyIndex++], [l, a, f] = n.length > 1 ? [e.data[i], [...e.path, i], p(e.rules, i, [...e.path, i], o.state)] : [e.data, e.path, o.rules]; | ||
let s = { value: l, state: e.state }; | ||
const d = []; | ||
for (const y of n) | ||
!y || !t || (t = y(t.value, { path: a, key: r, state: t.state || e.state }), t != null && t.exitHook && d.push(t.exitHook)); | ||
if (t && h(t.value)) { | ||
const y = p(t.value) ? [...t.value.keys()] : Object.keys(t.value); | ||
o.push({ hooks: d, state: t.state, data: t.value, path: a, keys: y, keyIndex: 0 }); | ||
for (const u of t) | ||
!u || !s || (s = u(s.value, { path: a, key: i, state: s.state || e.state, rules: f }), s != null && s.exitHook && d.push(s.exitHook)); | ||
if (s && h(s.value)) { | ||
const u = y(s.value) ? [...s.value.keys()] : Object.keys(s.value); | ||
n.push({ hooks: d, state: s.state, data: s.value, path: a, keys: u, keyIndex: 0, rules: f }); | ||
} else | ||
@@ -50,24 +66,26 @@ for (; d.length; ) | ||
} | ||
}, g = async (c, n = [], i = {}) => { | ||
n = Array.isArray(n) ? n : [n]; | ||
const o = {}, l = async (e, { path: r, key: s, state: a }) => (s = r.length ? s : "#", a.node[s] = h(e) ? Array.isArray(e) ? [] : {} : e, { value: e, state: { ...a, node: a.node[s] } }); | ||
return await u(c, [...n, l], { ...i, root: o, node: o }), o["#"]; | ||
}, x = (c, n = [], i = {}) => { | ||
n = Array.isArray(n) ? n : [n]; | ||
const o = {}, l = (e, { path: r, key: s, state: a }) => (s = r.length ? s : "#", a.node[s] = h(e) ? Array.isArray(e) ? [] : {} : e, { value: e, state: { ...a, node: a.node[s] } }); | ||
return f(c, [...n, l], { ...i, root: o, node: o }), o["#"]; | ||
}, w = async (c, n = [], i = {}) => { | ||
n = p(n) ? n : [n]; | ||
const o = { "#": c }, l = async (e, { path: r, key: s, state: a }) => (s = r.length ? s : "#", e === void 0 ? p(a.node) && typeof s == "number" ? a.node.splice(s, 1) : delete a.node[s] : a.node[s] = e, { value: e, state: a }); | ||
return await u(c, [...n, l], { ...i, root: o, node: o }), o["#"]; | ||
}, A = async (r, t = [], o = {}) => { | ||
t = Array.isArray(t) ? t : [t]; | ||
const n = {}, c = async (e, { path: i, key: l, state: a }) => (l = i.length ? l : "#", a.node[l] = h(e) ? Array.isArray(e) ? [] : {} : e, { value: e, state: { ...a, node: a.node[l] } }); | ||
return await g(r, [...t, c], { ...o, state: { ...o.state, root: n, node: n } }), n["#"]; | ||
}, H = (r, t = [], o = {}) => { | ||
t = Array.isArray(t) ? t : [t]; | ||
const n = {}, c = (e, { path: i, key: l, state: a }) => (l = i.length ? l : "#", a.node[l] = h(e) ? Array.isArray(e) ? [] : {} : e, { value: e, state: { ...a, node: a.node[l] } }); | ||
return x(r, [...t, c], { ...o, state: { ...o.state, root: n, node: n } }), n["#"]; | ||
}, k = async (r, t = [], o = {}) => { | ||
t = y(t) ? t : [t]; | ||
const n = { "#": r }, c = async (e, { path: i, key: l, state: a }) => (l = i.length ? l : "#", e === void 0 ? y(a.node) && typeof l == "number" ? a.node.splice(l, 1) : delete a.node[l] : a.node[l] = e, { value: e, state: a }); | ||
return await g(r, [...t, c], { ...o, state: { ...o.state, root: n, node: n } }), n["#"]; | ||
}; | ||
export { | ||
g as clone, | ||
u as crawl, | ||
p as isArray, | ||
A as clone, | ||
g as crawl, | ||
w as findCrawlRules, | ||
p as getNodeRules, | ||
y as isArray, | ||
h as isObject, | ||
x as syncClone, | ||
f as syncCrawl, | ||
w as transform | ||
H as syncClone, | ||
x as syncCrawl, | ||
k as transform | ||
}; | ||
//# sourceMappingURL=json-crawl.es.js.map |
@@ -1,2 +0,2 @@ | ||
(function(l,d){typeof exports=="object"&&typeof module<"u"?d(exports):typeof define=="function"&&define.amd?define(["exports"],d):(l=typeof globalThis<"u"?globalThis:l||self,d(l.JsonCrawl={}))})(this,function(l){"use strict";const d=c=>typeof c=="object"&&c!==null,u=c=>Array.isArray(c),h=async(c,n,y)=>{var r;n=u(n)?n:[n];const o=[{data:c,state:y,path:[],keys:[],keyIndex:-1}];for(;o.length>0;){const e=o[o.length-1];if(e.keyIndex>=e.keys.length){for(;(r=e.hooks)!=null&&r.length;)e.hooks.pop()();o.pop();continue}const i=e.keys[e.keyIndex++],[s,a]=o.length>1?[e.data[i],[...e.path,i]]:[e.data,e.path];let t={value:s,state:e.state};const f=[];for(const p of n)!p||!t||(t=await p(t.value,{path:a,key:i,state:t.state}),t!=null&&t.exitHook&&f.push(t.exitHook));if(t&&d(t.value)){const p=u(t.value)?[...t.value.keys()]:Object.keys(t.value);o.push({hooks:f,state:t.state,data:t.value,path:a,keys:p,keyIndex:0})}else for(;f.length;)f.pop()()}},g=(c,n,y)=>{var r;n=u(n)?n:[n];const o=[{data:c,state:y,path:[],keys:[],keyIndex:-1}];for(;o.length>0;){const e=o[o.length-1];if(e.keyIndex>=e.keys.length){for(;(r=e.hooks)!=null&&r.length;)e.hooks.pop()();o.pop();continue}const i=e.keys[e.keyIndex++],[s,a]=o.length>1?[e.data[i],[...e.path,i]]:[e.data,e.path];let t={value:s,state:e.state};const f=[];for(const p of n)!p||!t||(t=p(t.value,{path:a,key:i,state:t.state||e.state}),t!=null&&t.exitHook&&f.push(t.exitHook));if(t&&d(t.value)){const p=u(t.value)?[...t.value.keys()]:Object.keys(t.value);o.push({hooks:f,state:t.state,data:t.value,path:a,keys:p,keyIndex:0})}else for(;f.length;)f.pop()()}},w=async(c,n=[],y={})=>{n=Array.isArray(n)?n:[n];const o={},r=async(e,{path:i,key:s,state:a})=>(s=i.length?s:"#",a.node[s]=d(e)?Array.isArray(e)?[]:{}:e,{value:e,state:{...a,node:a.node[s]}});return await h(c,[...n,r],{...y,root:o,node:o}),o["#"]},A=(c,n=[],y={})=>{n=Array.isArray(n)?n:[n];const o={},r=(e,{path:i,key:s,state:a})=>(s=i.length?s:"#",a.node[s]=d(e)?Array.isArray(e)?[]:{}:e,{value:e,state:{...a,node:a.node[s]}});return g(c,[...n,r],{...y,root:o,node:o}),o["#"]},x=async(c,n=[],y={})=>{n=u(n)?n:[n];const o={"#":c},r=async(e,{path:i,key:s,state:a})=>(s=i.length?s:"#",e===void 0?u(a.node)&&typeof s=="number"?a.node.splice(s,1):delete a.node[s]:a.node[s]=e,{value:e,state:a});return await h(c,[...n,r],{...y,root:o,node:o}),o["#"]};l.clone=w,l.crawl=h,l.isArray=u,l.isObject=d,l.syncClone=A,l.syncCrawl=g,l.transform=x,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); | ||
(function(d,u){typeof exports=="object"&&typeof module<"u"?u(exports):typeof define=="function"&&define.amd?define(["exports"],u):(d=typeof globalThis<"u"?globalThis:d||self,u(d.JsonCrawl={}))})(this,function(d){"use strict";const u=i=>typeof i=="object"&&i!==null,h=i=>Array.isArray(i),p=(i={},t,o,n={})=>{const c=`/${t}`;let e=i;if(c in e)e=e[c];else if("/*"in e)e=e["/*"];else return;return typeof e=="function"?e(o,n):e},b=(i,t,o={})=>{let n=i;for(let c=0;c<t.length;c++)if(n=p(n,t[c],t.slice(0,c),o),!n)return;return n},w=async(i,t,o={})=>{var c;t=h(t)?t:[t];const n=[{data:i,state:o.state,path:[],keys:[],keyIndex:-1,rules:o.rules}];for(;n.length>0;){const e=n[n.length-1];if(e.keyIndex>=e.keys.length){for(;(c=e.hooks)!=null&&c.length;)e.hooks.pop()();n.pop();continue}const a=e.keys[e.keyIndex++],[l,r,g]=n.length>1?[e.data[a],[...e.path,a],p(e.rules,a,[...e.path,a],o.state)]:[e.data,e.path,o.rules];let s={value:l,state:e.state};const y=[];for(const f of t)!f||!s||(s=await f(s.value,{path:r,key:a,state:s.state,rules:g}),s!=null&&s.exitHook&&y.push(s.exitHook));if(s&&u(s.value)){const f=h(s.value)?[...s.value.keys()]:Object.keys(s.value);n.push({hooks:y,state:s.state,data:s.value,path:r,keys:f,keyIndex:0,rules:g})}else for(;y.length;)y.pop()()}},A=(i,t,o={})=>{var c;t=h(t)?t:[t];const n=[{data:i,state:o.state,path:[],keys:[],keyIndex:-1,rules:o.rules}];for(;n.length>0;){const e=n[n.length-1];if(e.keyIndex>=e.keys.length){for(;(c=e.hooks)!=null&&c.length;)e.hooks.pop()();n.pop();continue}const a=e.keys[e.keyIndex++],[l,r,g]=n.length>1?[e.data[a],[...e.path,a],p(e.rules,a,[...e.path,a],o.state)]:[e.data,e.path,o.rules];let s={value:l,state:e.state};const y=[];for(const f of t)!f||!s||(s=f(s.value,{path:r,key:a,state:s.state||e.state,rules:g}),s!=null&&s.exitHook&&y.push(s.exitHook));if(s&&u(s.value)){const f=h(s.value)?[...s.value.keys()]:Object.keys(s.value);n.push({hooks:y,state:s.state,data:s.value,path:r,keys:f,keyIndex:0,rules:g})}else for(;y.length;)y.pop()()}},x=async(i,t=[],o={})=>{t=Array.isArray(t)?t:[t];const n={},c=async(e,{path:a,key:l,state:r})=>(l=a.length?l:"#",r.node[l]=u(e)?Array.isArray(e)?[]:{}:e,{value:e,state:{...r,node:r.node[l]}});return await w(i,[...t,c],{...o,state:{...o.state,root:n,node:n}}),n["#"]},H=(i,t=[],o={})=>{t=Array.isArray(t)?t:[t];const n={},c=(e,{path:a,key:l,state:r})=>(l=a.length?l:"#",r.node[l]=u(e)?Array.isArray(e)?[]:{}:e,{value:e,state:{...r,node:r.node[l]}});return A(i,[...t,c],{...o,state:{...o.state,root:n,node:n}}),n["#"]},k=async(i,t=[],o={})=>{t=h(t)?t:[t];const n={"#":i},c=async(e,{path:a,key:l,state:r})=>(l=a.length?l:"#",e===void 0?h(r.node)&&typeof l=="number"?r.node.splice(l,1):delete r.node[l]:r.node[l]=e,{value:e,state:r});return await w(i,[...t,c],{...o,state:{...o.state,root:n,node:n}}),n["#"]};d.clone=x,d.crawl=w,d.findCrawlRules=b,d.getNodeRules=p,d.isArray=h,d.isObject=u,d.syncClone=H,d.syncCrawl=A,d.transform=k,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})}); | ||
//# sourceMappingURL=json-crawl.umd.js.map |
@@ -1,2 +0,2 @@ | ||
import type { CloneHook } from "./types"; | ||
export declare const transform: <T>(data: any, hooks?: CloneHook<T> | CloneHook<T>[], state?: T) => Promise<any>; | ||
import type { CloneHook, CloneState, CrawlParams } from "./types"; | ||
export declare const transform: <T, R>(data: any, hooks?: CloneHook<T, R> | CloneHook<T, R>[], params?: CrawlParams<CloneState<T>, R>) => Promise<any>; |
export type JsonPath = (string | number)[]; | ||
export interface CrawlContext<T> { | ||
export interface CrawlParams<T, R = any> { | ||
state?: T; | ||
rules?: CrawlRules<R, T>; | ||
} | ||
export interface CrawlContext<T, R = any> { | ||
readonly path: JsonPath; | ||
readonly key: string | number; | ||
state: T; | ||
rules?: CrawlRules<R, T>; | ||
} | ||
@@ -18,6 +23,11 @@ export type ExitHook = () => void; | ||
node: any; | ||
} & T; | ||
export type CloneHook<T> = CrawlHook<CloneState<T>>; | ||
export type CrawlHook<T> = (value: unknown, ctx: CrawlContext<T>) => Promise<CrawlHookResponse<T> | null> | CrawlHookResponse<T> | null; | ||
export type SyncCloneHook<T> = SyncCrawlHook<CloneState<T>>; | ||
export type SyncCrawlHook<T> = (value: unknown, ctx: CrawlContext<T>) => CrawlHookResponse<T> | null; | ||
} & (T | {}); | ||
export type CloneHook<T = any, R = any> = CrawlHook<CloneState<T>, R>; | ||
export type CrawlHook<T = any, R = any> = (value: unknown, ctx: CrawlContext<T, R>) => Promise<CrawlHookResponse<T> | null> | CrawlHookResponse<T> | null; | ||
export type SyncCloneHook<T = any, R = any> = SyncCrawlHook<CloneState<T>, R>; | ||
export type SyncCrawlHook<T = any, R = any> = (value: unknown, ctx: CrawlContext<T, R>) => CrawlHookResponse<T> | null; | ||
export type CrawlRulesFunc<R, T = any> = (path: JsonPath, state: T) => CrawlRules<R, T>; | ||
export type CrawlRulesKey = `/${string | number}`; | ||
export type CrawlRules<R, T = any> = { | ||
[key: CrawlRulesKey | '/*']: CrawlRules<R, T> | CrawlRulesFunc<R, T>; | ||
} & (R | {}); |
@@ -1,3 +0,3 @@ | ||
import { CloneHook, SyncCloneHook } from "./types"; | ||
export declare const clone: <T>(data: any, hooks?: CloneHook<T> | CloneHook<T>[], state?: T) => Promise<any>; | ||
export declare const syncClone: <T>(data: any, hooks?: SyncCloneHook<T> | SyncCloneHook<T>[], state?: T) => any; | ||
import { CloneHook, CloneState, CrawlParams, SyncCloneHook } from "./types"; | ||
export declare const clone: <T, R>(data: any, hooks?: CloneHook<T, R> | CloneHook<T, R>[], params?: CrawlParams<CloneState<T>, R>) => Promise<any>; | ||
export declare const syncClone: <T, R, C>(data: any, hooks?: SyncCloneHook<T, R> | SyncCloneHook<T, R>[], params?: CrawlParams<CloneState<T>, R>) => any; |
@@ -7,3 +7,3 @@ "use strict"; | ||
const utils_1 = require("./utils"); | ||
const clone = (data, hooks = [], state = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { | ||
const clone = (data, hooks = [], params = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { | ||
hooks = Array.isArray(hooks) ? hooks : [hooks]; | ||
@@ -16,7 +16,7 @@ const root = {}; | ||
}); | ||
yield (0, crawl_1.crawl)(data, [...hooks, cloneHook], Object.assign(Object.assign({}, state), { root, node: root })); | ||
yield (0, crawl_1.crawl)(data, [...hooks, cloneHook], Object.assign(Object.assign({}, params), { state: Object.assign(Object.assign({}, params.state), { root, node: root }) })); | ||
return root["#"]; | ||
}); | ||
exports.clone = clone; | ||
const syncClone = (data, hooks = [], state = {}) => { | ||
const syncClone = (data, hooks = [], params = {}) => { | ||
hooks = Array.isArray(hooks) ? hooks : [hooks]; | ||
@@ -29,6 +29,6 @@ const root = {}; | ||
}; | ||
(0, crawl_1.syncCrawl)(data, [...hooks, cloneHook], Object.assign(Object.assign({}, state), { root, node: root })); | ||
(0, crawl_1.syncCrawl)(data, [...hooks, cloneHook], Object.assign(Object.assign({}, params), { state: Object.assign(Object.assign({}, params.state), { root, node: root }) })); | ||
return root["#"]; | ||
}; | ||
exports.syncClone = syncClone; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLG1DQUEwQztBQUMxQyxtQ0FBa0M7QUFFM0IsTUFBTSxLQUFLLEdBQUcsQ0FBVSxJQUFTLEVBQUUsUUFBdUMsRUFBRSxFQUFFLFFBQVEsRUFBTyxFQUFFLEVBQUU7SUFDdEcsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM5QyxNQUFNLElBQUksR0FBUSxFQUFFLENBQUE7SUFFcEIsTUFBTSxTQUFTLEdBQWlCLENBQU8sS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ3BFLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtRQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUEsZ0JBQVEsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFDNUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZ0NBQUssS0FBSyxLQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFtQixFQUFFLENBQUE7SUFDL0UsQ0FBQyxDQUFBLENBQUE7SUFFRCxNQUFNLElBQUEsYUFBSyxFQUFnQixJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxTQUFTLENBQUMsa0NBQU8sS0FBSyxLQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFHLENBQUE7SUFFdkYsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDbEIsQ0FBQyxDQUFBLENBQUE7QUFiWSxRQUFBLEtBQUssU0FhakI7QUFFTSxNQUFNLFNBQVMsR0FBRyxDQUFJLElBQVMsRUFBRSxRQUErQyxFQUFFLEVBQUUsUUFBUSxFQUFPLEVBQUUsRUFBRTtJQUM1RyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlDLE1BQU0sSUFBSSxHQUFRLEVBQUUsQ0FBQTtJQUVwQixNQUFNLFNBQVMsR0FBcUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7UUFDbEUsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO1FBQzdCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBQSxnQkFBUSxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUM1RSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxnQ0FBSyxLQUFLLEtBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQW1CLEVBQUUsQ0FBQTtJQUMvRSxDQUFDLENBQUE7SUFFRCxJQUFBLGlCQUFTLEVBQWdCLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLFNBQVMsQ0FBQyxrQ0FBTyxLQUFLLEtBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUcsQ0FBQTtJQUVyRixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNsQixDQUFDLENBQUE7QUFiWSxRQUFBLFNBQVMsYUFhckIifQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLG1DQUEwQztBQUMxQyxtQ0FBa0M7QUFFM0IsTUFBTSxLQUFLLEdBQUcsQ0FBYSxJQUFTLEVBQUUsUUFBNkMsRUFBRSxFQUFFLFNBQXlDLEVBQUUsRUFBRSxFQUFFO0lBQzNJLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDOUMsTUFBTSxJQUFJLEdBQVEsRUFBRSxDQUFBO0lBRXBCLE1BQU0sU0FBUyxHQUFvQixDQUFPLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtRQUN2RSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUE7UUFDN0IsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFBLGdCQUFRLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO1FBQzVFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGdDQUFLLEtBQUssS0FBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBbUIsRUFBRSxDQUFBO0lBQy9FLENBQUMsQ0FBQSxDQUFBO0lBRUQsTUFBTSxJQUFBLGFBQUssRUFBbUIsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsU0FBUyxDQUFDLGtDQUFPLE1BQU0sS0FBRSxLQUFLLGtDQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLE9BQUssQ0FBQTtJQUV2SCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNsQixDQUFDLENBQUEsQ0FBQTtBQWJZLFFBQUEsS0FBSyxTQWFqQjtBQUVNLE1BQU0sU0FBUyxHQUFHLENBQVUsSUFBUyxFQUFFLFFBQXFELEVBQUUsRUFBRSxTQUF3QyxFQUFFLEVBQUUsRUFBRTtJQUNuSixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlDLE1BQU0sSUFBSSxHQUFRLEVBQUUsQ0FBQTtJQUVwQixNQUFNLFNBQVMsR0FBd0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7UUFDckUsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO1FBQzdCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBQSxnQkFBUSxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUM1RSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxnQ0FBSyxLQUFLLEtBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQW1CLEVBQUUsQ0FBQTtJQUMvRSxDQUFDLENBQUE7SUFFRCxJQUFBLGlCQUFTLEVBQW1CLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLFNBQVMsQ0FBQyxrQ0FBTyxNQUFNLEtBQUUsS0FBSyxrQ0FBTyxNQUFNLENBQUMsS0FBSyxLQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxPQUFLLENBQUE7SUFFckgsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDbEIsQ0FBQyxDQUFBO0FBYlksUUFBQSxTQUFTLGFBYXJCIn0= |
@@ -1,3 +0,3 @@ | ||
import { CrawlHook, SyncCrawlHook } from "./types"; | ||
export declare const crawl: <T>(data: any, hooks: CrawlHook<T> | CrawlHook<T>[], state: T) => Promise<void>; | ||
export declare const syncCrawl: <T>(data: any, hooks: SyncCrawlHook<T> | SyncCrawlHook<T>[], state: T) => void; | ||
import { CrawlHook, SyncCrawlHook, CrawlParams } from "./types"; | ||
export declare const crawl: <T, R = any>(data: any, hooks: CrawlHook<T, R> | CrawlHook<T, R>[], params?: CrawlParams<T, R>) => Promise<void>; | ||
export declare const syncCrawl: <T, R>(data: any, hooks: SyncCrawlHook<T, R> | SyncCrawlHook<T, R>[], params?: CrawlParams<T, R>) => void; |
@@ -6,6 +6,7 @@ "use strict"; | ||
const utils_1 = require("./utils"); | ||
const crawl = (data, hooks, state) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { | ||
const rules_1 = require("./rules"); | ||
const crawl = (data, hooks, params = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { | ||
var _a; | ||
hooks = (0, utils_1.isArray)(hooks) ? hooks : [hooks]; | ||
const nodes = [{ data, state, path: [], keys: [], keyIndex: -1 }]; | ||
const nodes = [{ data, state: params.state, path: [], keys: [], keyIndex: -1, rules: params.rules }]; | ||
while (nodes.length > 0) { | ||
@@ -23,5 +24,5 @@ const node = nodes[nodes.length - 1]; | ||
const key = node.keys[node.keyIndex++]; | ||
const [value, path] = nodes.length > 1 | ||
? [node.data[key], [...node.path, key]] | ||
: [node.data, node.path]; // root node | ||
const [value, path, rules] = nodes.length > 1 | ||
? [node.data[key], [...node.path, key], (0, rules_1.getNodeRules)(node.rules, key, [...node.path, key], params.state)] | ||
: [node.data, node.path, params.rules]; // root node | ||
let result = { value, state: node.state }; | ||
@@ -34,3 +35,3 @@ const exitHooks = []; | ||
} | ||
result = yield hook(result.value, { path, key, state: result.state }); | ||
result = yield hook(result.value, { path, key, state: result.state, rules }); | ||
(result === null || result === void 0 ? void 0 : result.exitHook) && exitHooks.push(result.exitHook); | ||
@@ -42,3 +43,3 @@ } | ||
// move to child nodes | ||
nodes.push({ hooks: exitHooks, state: result.state, data: result.value, path, keys, keyIndex: 0 }); | ||
nodes.push({ hooks: exitHooks, state: result.state, data: result.value, path, keys, keyIndex: 0, rules }); | ||
} | ||
@@ -54,6 +55,6 @@ else { | ||
exports.crawl = crawl; | ||
const syncCrawl = (data, hooks, state) => { | ||
const syncCrawl = (data, hooks, params = {}) => { | ||
var _a; | ||
hooks = (0, utils_1.isArray)(hooks) ? hooks : [hooks]; | ||
const nodes = [{ data, state, path: [], keys: [], keyIndex: -1 }]; | ||
const nodes = [{ data, state: params.state, path: [], keys: [], keyIndex: -1, rules: params.rules }]; | ||
while (nodes.length > 0) { | ||
@@ -71,5 +72,5 @@ const node = nodes[nodes.length - 1]; | ||
const key = node.keys[node.keyIndex++]; | ||
const [value, path] = nodes.length > 1 | ||
? [node.data[key], [...node.path, key]] | ||
: [node.data, node.path]; // root node | ||
const [value, path, rules] = nodes.length > 1 | ||
? [node.data[key], [...node.path, key], (0, rules_1.getNodeRules)(node.rules, key, [...node.path, key], params.state)] | ||
: [node.data, node.path, params.rules]; // root node | ||
let result = { value, state: node.state }; | ||
@@ -82,3 +83,3 @@ const exitHook = []; | ||
} | ||
result = hook(result.value, { path, key, state: result.state || node.state }); | ||
result = hook(result.value, { path, key, state: result.state || node.state, rules }); | ||
(result === null || result === void 0 ? void 0 : result.exitHook) && exitHook.push(result.exitHook); | ||
@@ -90,3 +91,3 @@ } | ||
// move to child nodes | ||
nodes.push({ hooks: exitHook, state: result.state, data: result.value, path, keys, keyIndex: 0 }); | ||
nodes.push({ hooks: exitHook, state: result.state, data: result.value, path, keys, keyIndex: 0, rules }); | ||
} | ||
@@ -102,2 +103,2 @@ else { | ||
exports.syncCrawl = syncCrawl; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jhd2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3Jhd2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLG1DQUEyQztBQW1CcEMsTUFBTSxLQUFLLEdBQUcsQ0FBVSxJQUFTLEVBQUUsS0FBb0MsRUFBRSxLQUFRLEVBQWlCLEVBQUU7O0lBQ3pHLEtBQUssR0FBRyxJQUFBLGVBQU8sRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRXhDLE1BQU0sS0FBSyxHQUFtQixDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUVqRixPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFBO1FBRWxDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNyQyxvQkFBb0I7WUFDcEIsT0FBTyxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLE1BQU0sRUFBRTtnQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRyxFQUFFLENBQUE7YUFBRTtZQUVsRCxzQkFBc0I7WUFDdEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFBO1lBQ1gsU0FBUTtTQUNUO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUV0QyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FB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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jhd2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3Jhd2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLG1DQUEyQztBQUMzQyxtQ0FBc0M7QUFzQi9CLE1BQU0sS0FBSyxHQUFHLENBQW1CLElBQVMsRUFBRSxLQUEwQyxFQUFFLFNBQTRCLEVBQUUsRUFBaUIsRUFBRTs7SUFDOUksS0FBSyxHQUFHLElBQUEsZUFBTyxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFeEMsTUFBTSxLQUFLLEdBQXNCLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQU0sRUFBRSxDQUFDLENBQUE7SUFFekgsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUN2QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQTtRQUVsQyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDckMsb0JBQW9CO1lBQ3BCLE9BQU8sTUFBQSxJQUFJLENBQUMsS0FBSywwQ0FBRSxNQUFNLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUcsRUFBRSxDQUFBO2FBQUU7WUFFbEQsc0JBQXNCO1lBQ3RCLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQTtZQUNYLFNBQVE7U0FDVDtRQUVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFFdEMsTUFBTSxDQUFD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 |
@@ -6,1 +6,2 @@ export * from "./crawl"; | ||
export * from "./transform"; | ||
export * from "./rules"; |
@@ -9,2 +9,3 @@ "use strict"; | ||
tslib_1.__exportStar(require("./transform"), exports); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBQXVCO0FBQ3ZCLGtEQUF1QjtBQUN2QixrREFBdUI7QUFDdkIsa0RBQXVCO0FBQ3ZCLHNEQUEyQiJ9 | ||
tslib_1.__exportStar(require("./rules"), exports); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBQXVCO0FBQ3ZCLGtEQUF1QjtBQUN2QixrREFBdUI7QUFDdkIsa0RBQXVCO0FBQ3ZCLHNEQUEyQjtBQUMzQixrREFBdUIifQ== |
@@ -1,2 +0,2 @@ | ||
import type { CloneHook } from "./types"; | ||
export declare const transform: <T>(data: any, hooks?: CloneHook<T> | CloneHook<T>[], state?: T) => Promise<any>; | ||
import type { CloneHook, CloneState, CrawlParams } from "./types"; | ||
export declare const transform: <T, R>(data: any, hooks?: CloneHook<T, R> | CloneHook<T, R>[], params?: CrawlParams<CloneState<T>, R>) => Promise<any>; |
@@ -7,3 +7,3 @@ "use strict"; | ||
const crawl_1 = require("./crawl"); | ||
const transform = (data, hooks = [], state = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { | ||
const transform = (data, hooks = [], params = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { | ||
hooks = (0, utils_1.isArray)(hooks) ? hooks : [hooks]; | ||
@@ -26,6 +26,6 @@ const root = { "#": data }; | ||
}); | ||
yield (0, crawl_1.crawl)(data, [...hooks, transformHook], Object.assign(Object.assign({}, state), { root, node: root })); | ||
yield (0, crawl_1.crawl)(data, [...hooks, transformHook], Object.assign(Object.assign({}, params), { state: Object.assign(Object.assign({}, params.state), { root, node: root }) })); | ||
return root["#"]; | ||
}); | ||
exports.transform = transform; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RyYW5zZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsbUNBQWlDO0FBQ2pDLG1DQUErQjtBQUV4QixNQUFNLFNBQVMsR0FBRyxDQUFVLElBQVMsRUFBRSxRQUF1QyxFQUFFLEVBQUUsUUFBUSxFQUFRLEVBQUUsRUFBRTtJQUMzRyxLQUFLLEdBQUcsSUFBQSxlQUFPLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN4QyxNQUFNLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUUxQixNQUFNLGFBQWEsR0FBaUIsQ0FBTyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7UUFDeEUsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO1FBQzdCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN2QixJQUFJLElBQUEsZUFBTyxFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7Z0JBQ2xELEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTthQUMxQjtpQkFBTTtnQkFDTCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDdkI7U0FDRjthQUFNO1lBQ0wsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUE7U0FDeEI7UUFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFBO0lBQ3pCLENBQUMsQ0FBQSxDQUFBO0lBRUQsTUFBTSxJQUFBLGFBQUssRUFBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxhQUFhLENBQUMsa0NBQU8sS0FBSyxLQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFHLENBQUE7SUFFNUUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDbEIsQ0FBQyxDQUFBLENBQUE7QUFyQlksUUFBQSxTQUFTLGFBcUJyQiJ9 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RyYW5zZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsbUNBQWlDO0FBQ2pDLG1DQUErQjtBQUV4QixNQUFNLFNBQVMsR0FBRyxDQUFhLElBQVMsRUFBRSxRQUE2QyxFQUFFLEVBQUUsU0FBd0MsRUFBRSxFQUFFLEVBQUU7SUFDOUksS0FBSyxHQUFHLElBQUEsZUFBTyxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDeEMsTUFBTSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFFMUIsTUFBTSxhQUFhLEdBQW9CLENBQU8sS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQzNFLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtRQUM3QixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsSUFBSSxJQUFBLGVBQU8sRUFBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO2dCQUNsRCxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7YUFDMUI7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ3ZCO1NBQ0Y7YUFBTTtZQUNMLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFBO1NBQ3hCO1FBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQTtJQUN6QixDQUFDLENBQUEsQ0FBQTtJQUVELE1BQU0sSUFBQSxhQUFLLEVBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsYUFBYSxDQUFDLGtDQUFPLE1BQU0sS0FBRSxLQUFLLGtDQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLE9BQUssQ0FBQTtJQUV6RyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNsQixDQUFDLENBQUEsQ0FBQTtBQXJCWSxRQUFBLFNBQVMsYUFxQnJCIn0= |
export type JsonPath = (string | number)[]; | ||
export interface CrawlContext<T> { | ||
export interface CrawlParams<T, R = any> { | ||
state?: T; | ||
rules?: CrawlRules<R, T>; | ||
} | ||
export interface CrawlContext<T, R = any> { | ||
readonly path: JsonPath; | ||
readonly key: string | number; | ||
state: T; | ||
rules?: CrawlRules<R, T>; | ||
} | ||
@@ -18,6 +23,11 @@ export type ExitHook = () => void; | ||
node: any; | ||
} & T; | ||
export type CloneHook<T> = CrawlHook<CloneState<T>>; | ||
export type CrawlHook<T> = (value: unknown, ctx: CrawlContext<T>) => Promise<CrawlHookResponse<T> | null> | CrawlHookResponse<T> | null; | ||
export type SyncCloneHook<T> = SyncCrawlHook<CloneState<T>>; | ||
export type SyncCrawlHook<T> = (value: unknown, ctx: CrawlContext<T>) => CrawlHookResponse<T> | null; | ||
} & (T | {}); | ||
export type CloneHook<T = any, R = any> = CrawlHook<CloneState<T>, R>; | ||
export type CrawlHook<T = any, R = any> = (value: unknown, ctx: CrawlContext<T, R>) => Promise<CrawlHookResponse<T> | null> | CrawlHookResponse<T> | null; | ||
export type SyncCloneHook<T = any, R = any> = SyncCrawlHook<CloneState<T>, R>; | ||
export type SyncCrawlHook<T = any, R = any> = (value: unknown, ctx: CrawlContext<T, R>) => CrawlHookResponse<T> | null; | ||
export type CrawlRulesFunc<R, T = any> = (path: JsonPath, state: T) => CrawlRules<R, T>; | ||
export type CrawlRulesKey = `/${string | number}`; | ||
export type CrawlRules<R, T = any> = { | ||
[key: CrawlRulesKey | '/*']: CrawlRules<R, T> | CrawlRulesFunc<R, T>; | ||
} & (R | {}); |
@@ -1,3 +0,3 @@ | ||
import { CloneHook, SyncCloneHook } from "./types"; | ||
export declare const clone: <T>(data: any, hooks?: CloneHook<T> | CloneHook<T>[], state?: T) => Promise<any>; | ||
export declare const syncClone: <T>(data: any, hooks?: SyncCloneHook<T> | SyncCloneHook<T>[], state?: T) => any; | ||
import { CloneHook, CloneState, CrawlParams, SyncCloneHook } from "./types"; | ||
export declare const clone: <T, R>(data: any, hooks?: CloneHook<T, R> | CloneHook<T, R>[], params?: CrawlParams<CloneState<T>, R>) => Promise<any>; | ||
export declare const syncClone: <T, R, C>(data: any, hooks?: SyncCloneHook<T, R> | SyncCloneHook<T, R>[], params?: CrawlParams<CloneState<T>, R>) => any; |
@@ -7,3 +7,3 @@ "use strict"; | ||
const utils_1 = require("./utils"); | ||
const clone = (data, hooks = [], state = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { | ||
const clone = (data, hooks = [], params = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { | ||
hooks = Array.isArray(hooks) ? hooks : [hooks]; | ||
@@ -16,7 +16,7 @@ const root = {}; | ||
}); | ||
yield (0, crawl_1.crawl)(data, [...hooks, cloneHook], Object.assign(Object.assign({}, state), { root, node: root })); | ||
yield (0, crawl_1.crawl)(data, [...hooks, cloneHook], Object.assign(Object.assign({}, params), { state: Object.assign(Object.assign({}, params.state), { root, node: root }) })); | ||
return root["#"]; | ||
}); | ||
exports.clone = clone; | ||
const syncClone = (data, hooks = [], state = {}) => { | ||
const syncClone = (data, hooks = [], params = {}) => { | ||
hooks = Array.isArray(hooks) ? hooks : [hooks]; | ||
@@ -29,6 +29,6 @@ const root = {}; | ||
}; | ||
(0, crawl_1.syncCrawl)(data, [...hooks, cloneHook], Object.assign(Object.assign({}, state), { root, node: root })); | ||
(0, crawl_1.syncCrawl)(data, [...hooks, cloneHook], Object.assign(Object.assign({}, params), { state: Object.assign(Object.assign({}, params.state), { root, node: root }) })); | ||
return root["#"]; | ||
}; | ||
exports.syncClone = syncClone; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLG1DQUEwQztBQUMxQyxtQ0FBa0M7QUFFM0IsTUFBTSxLQUFLLEdBQUcsQ0FBVSxJQUFTLEVBQUUsUUFBdUMsRUFBRSxFQUFFLFFBQVEsRUFBTyxFQUFFLEVBQUU7SUFDdEcsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM5QyxNQUFNLElBQUksR0FBUSxFQUFFLENBQUE7SUFFcEIsTUFBTSxTQUFTLEdBQWlCLENBQU8sS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ3BFLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtRQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUEsZ0JBQVEsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFDNUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZ0NBQUssS0FBSyxLQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFtQixFQUFFLENBQUE7SUFDL0UsQ0FBQyxDQUFBLENBQUE7SUFFRCxNQUFNLElBQUEsYUFBSyxFQUFnQixJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxTQUFTLENBQUMsa0NBQU8sS0FBSyxLQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFHLENBQUE7SUFFdkYsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDbEIsQ0FBQyxDQUFBLENBQUE7QUFiWSxRQUFBLEtBQUssU0FhakI7QUFFTSxNQUFNLFNBQVMsR0FBRyxDQUFJLElBQVMsRUFBRSxRQUErQyxFQUFFLEVBQUUsUUFBUSxFQUFPLEVBQUUsRUFBRTtJQUM1RyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlDLE1BQU0sSUFBSSxHQUFRLEVBQUUsQ0FBQTtJQUVwQixNQUFNLFNBQVMsR0FBcUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7UUFDbEUsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO1FBQzdCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBQSxnQkFBUSxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUM1RSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxnQ0FBSyxLQUFLLEtBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQW1CLEVBQUUsQ0FBQTtJQUMvRSxDQUFDLENBQUE7SUFFRCxJQUFBLGlCQUFTLEVBQWdCLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLFNBQVMsQ0FBQyxrQ0FBTyxLQUFLLEtBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUcsQ0FBQTtJQUVyRixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNsQixDQUFDLENBQUE7QUFiWSxRQUFBLFNBQVMsYUFhckIifQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLG1DQUEwQztBQUMxQyxtQ0FBa0M7QUFFM0IsTUFBTSxLQUFLLEdBQUcsQ0FBYSxJQUFTLEVBQUUsUUFBNkMsRUFBRSxFQUFFLFNBQXlDLEVBQUUsRUFBRSxFQUFFO0lBQzNJLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDOUMsTUFBTSxJQUFJLEdBQVEsRUFBRSxDQUFBO0lBRXBCLE1BQU0sU0FBUyxHQUFvQixDQUFPLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtRQUN2RSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUE7UUFDN0IsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFBLGdCQUFRLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO1FBQzVFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGdDQUFLLEtBQUssS0FBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBbUIsRUFBRSxDQUFBO0lBQy9FLENBQUMsQ0FBQSxDQUFBO0lBRUQsTUFBTSxJQUFBLGFBQUssRUFBbUIsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsU0FBUyxDQUFDLGtDQUFPLE1BQU0sS0FBRSxLQUFLLGtDQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLE9BQUssQ0FBQTtJQUV2SCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNsQixDQUFDLENBQUEsQ0FBQTtBQWJZLFFBQUEsS0FBSyxTQWFqQjtBQUVNLE1BQU0sU0FBUyxHQUFHLENBQVUsSUFBUyxFQUFFLFFBQXFELEVBQUUsRUFBRSxTQUF3QyxFQUFFLEVBQUUsRUFBRTtJQUNuSixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlDLE1BQU0sSUFBSSxHQUFRLEVBQUUsQ0FBQTtJQUVwQixNQUFNLFNBQVMsR0FBd0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7UUFDckUsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO1FBQzdCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBQSxnQkFBUSxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUM1RSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxnQ0FBSyxLQUFLLEtBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQW1CLEVBQUUsQ0FBQTtJQUMvRSxDQUFDLENBQUE7SUFFRCxJQUFBLGlCQUFTLEVBQW1CLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLFNBQVMsQ0FBQyxrQ0FBTyxNQUFNLEtBQUUsS0FBSyxrQ0FBTyxNQUFNLENBQUMsS0FBSyxLQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxPQUFLLENBQUE7SUFFckgsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDbEIsQ0FBQyxDQUFBO0FBYlksUUFBQSxTQUFTLGFBYXJCIn0= |
@@ -1,3 +0,3 @@ | ||
import { CrawlHook, SyncCrawlHook } from "./types"; | ||
export declare const crawl: <T>(data: any, hooks: CrawlHook<T> | CrawlHook<T>[], state: T) => Promise<void>; | ||
export declare const syncCrawl: <T>(data: any, hooks: SyncCrawlHook<T> | SyncCrawlHook<T>[], state: T) => void; | ||
import { CrawlHook, SyncCrawlHook, CrawlParams } from "./types"; | ||
export declare const crawl: <T, R = any>(data: any, hooks: CrawlHook<T, R> | CrawlHook<T, R>[], params?: CrawlParams<T, R>) => Promise<void>; | ||
export declare const syncCrawl: <T, R>(data: any, hooks: SyncCrawlHook<T, R> | SyncCrawlHook<T, R>[], params?: CrawlParams<T, R>) => void; |
@@ -6,6 +6,7 @@ "use strict"; | ||
const utils_1 = require("./utils"); | ||
const crawl = (data, hooks, state) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { | ||
const rules_1 = require("./rules"); | ||
const crawl = (data, hooks, params = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { | ||
var _a; | ||
hooks = (0, utils_1.isArray)(hooks) ? hooks : [hooks]; | ||
const nodes = [{ data, state, path: [], keys: [], keyIndex: -1 }]; | ||
const nodes = [{ data, state: params.state, path: [], keys: [], keyIndex: -1, rules: params.rules }]; | ||
while (nodes.length > 0) { | ||
@@ -23,5 +24,5 @@ const node = nodes[nodes.length - 1]; | ||
const key = node.keys[node.keyIndex++]; | ||
const [value, path] = nodes.length > 1 | ||
? [node.data[key], [...node.path, key]] | ||
: [node.data, node.path]; // root node | ||
const [value, path, rules] = nodes.length > 1 | ||
? [node.data[key], [...node.path, key], (0, rules_1.getNodeRules)(node.rules, key, [...node.path, key], params.state)] | ||
: [node.data, node.path, params.rules]; // root node | ||
let result = { value, state: node.state }; | ||
@@ -34,3 +35,3 @@ const exitHooks = []; | ||
} | ||
result = yield hook(result.value, { path, key, state: result.state }); | ||
result = yield hook(result.value, { path, key, state: result.state, rules }); | ||
(result === null || result === void 0 ? void 0 : result.exitHook) && exitHooks.push(result.exitHook); | ||
@@ -42,3 +43,3 @@ } | ||
// move to child nodes | ||
nodes.push({ hooks: exitHooks, state: result.state, data: result.value, path, keys, keyIndex: 0 }); | ||
nodes.push({ hooks: exitHooks, state: result.state, data: result.value, path, keys, keyIndex: 0, rules }); | ||
} | ||
@@ -54,6 +55,6 @@ else { | ||
exports.crawl = crawl; | ||
const syncCrawl = (data, hooks, state) => { | ||
const syncCrawl = (data, hooks, params = {}) => { | ||
var _a; | ||
hooks = (0, utils_1.isArray)(hooks) ? hooks : [hooks]; | ||
const nodes = [{ data, state, path: [], keys: [], keyIndex: -1 }]; | ||
const nodes = [{ data, state: params.state, path: [], keys: [], keyIndex: -1, rules: params.rules }]; | ||
while (nodes.length > 0) { | ||
@@ -71,5 +72,5 @@ const node = nodes[nodes.length - 1]; | ||
const key = node.keys[node.keyIndex++]; | ||
const [value, path] = nodes.length > 1 | ||
? [node.data[key], [...node.path, key]] | ||
: [node.data, node.path]; // root node | ||
const [value, path, rules] = nodes.length > 1 | ||
? [node.data[key], [...node.path, key], (0, rules_1.getNodeRules)(node.rules, key, [...node.path, key], params.state)] | ||
: [node.data, node.path, params.rules]; // root node | ||
let result = { value, state: node.state }; | ||
@@ -82,3 +83,3 @@ const exitHook = []; | ||
} | ||
result = hook(result.value, { path, key, state: result.state || node.state }); | ||
result = hook(result.value, { path, key, state: result.state || node.state, rules }); | ||
(result === null || result === void 0 ? void 0 : result.exitHook) && exitHook.push(result.exitHook); | ||
@@ -90,3 +91,3 @@ } | ||
// move to child nodes | ||
nodes.push({ hooks: exitHook, state: result.state, data: result.value, path, keys, keyIndex: 0 }); | ||
nodes.push({ hooks: exitHook, state: result.state, data: result.value, path, keys, keyIndex: 0, rules }); | ||
} | ||
@@ -102,2 +103,2 @@ else { | ||
exports.syncCrawl = syncCrawl; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jhd2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3Jhd2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLG1DQUEyQztBQW1CcEMsTUFBTSxLQUFLLEdBQUcsQ0FBVSxJQUFTLEVBQUUsS0FBb0MsRUFBRSxLQUFRLEVBQWlCLEVBQUU7O0lBQ3pHLEtBQUssR0FBRyxJQUFBLGVBQU8sRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRXhDLE1BQU0sS0FBSyxHQUFtQixDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUVqRixPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFBO1FBRWxDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNyQyxvQkFBb0I7WUFDcEIsT0FBTyxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLE1BQU0sRUFBRTtnQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRyxFQUFFLENBQUE7YUFBRTtZQUVsRCxzQkFBc0I7WUFDdEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFBO1lBQ1gsU0FBUTtTQUNUO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUV0QyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FB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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jhd2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3Jhd2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLG1DQUEyQztBQUMzQyxtQ0FBc0M7QUFzQi9CLE1BQU0sS0FBSyxHQUFHLENBQW1CLElBQVMsRUFBRSxLQUEwQyxFQUFFLFNBQTRCLEVBQUUsRUFBaUIsRUFBRTs7SUFDOUksS0FBSyxHQUFHLElBQUEsZUFBTyxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFeEMsTUFBTSxLQUFLLEdBQXNCLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQU0sRUFBRSxDQUFDLENBQUE7SUFFekgsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUN2QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQTtRQUVsQyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDckMsb0JBQW9CO1lBQ3BCLE9BQU8sTUFBQSxJQUFJLENBQUMsS0FBSywwQ0FBRSxNQUFNLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUcsRUFBRSxDQUFBO2FBQUU7WUFFbEQsc0JBQXNCO1lBQ3RCLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQTtZQUNYLFNBQVE7U0FDVDtRQUVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFFdEMsTUFBTSxDQUFD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 |
@@ -6,1 +6,2 @@ export * from "./crawl"; | ||
export * from "./transform"; | ||
export * from "./rules"; |
@@ -9,2 +9,3 @@ "use strict"; | ||
tslib_1.__exportStar(require("./transform"), exports); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBQXVCO0FBQ3ZCLGtEQUF1QjtBQUN2QixrREFBdUI7QUFDdkIsa0RBQXVCO0FBQ3ZCLHNEQUEyQiJ9 | ||
tslib_1.__exportStar(require("./rules"), exports); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBQXVCO0FBQ3ZCLGtEQUF1QjtBQUN2QixrREFBdUI7QUFDdkIsa0RBQXVCO0FBQ3ZCLHNEQUEyQjtBQUMzQixrREFBdUIifQ== |
@@ -1,2 +0,2 @@ | ||
import type { CloneHook } from "./types"; | ||
export declare const transform: <T>(data: any, hooks?: CloneHook<T> | CloneHook<T>[], state?: T) => Promise<any>; | ||
import type { CloneHook, CloneState, CrawlParams } from "./types"; | ||
export declare const transform: <T, R>(data: any, hooks?: CloneHook<T, R> | CloneHook<T, R>[], params?: CrawlParams<CloneState<T>, R>) => Promise<any>; |
@@ -7,3 +7,3 @@ "use strict"; | ||
const crawl_1 = require("./crawl"); | ||
const transform = (data, hooks = [], state = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { | ||
const transform = (data, hooks = [], params = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { | ||
hooks = (0, utils_1.isArray)(hooks) ? hooks : [hooks]; | ||
@@ -26,6 +26,6 @@ const root = { "#": data }; | ||
}); | ||
yield (0, crawl_1.crawl)(data, [...hooks, transformHook], Object.assign(Object.assign({}, state), { root, node: root })); | ||
yield (0, crawl_1.crawl)(data, [...hooks, transformHook], Object.assign(Object.assign({}, params), { state: Object.assign(Object.assign({}, params.state), { root, node: root }) })); | ||
return root["#"]; | ||
}); | ||
exports.transform = transform; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RyYW5zZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsbUNBQWlDO0FBQ2pDLG1DQUErQjtBQUV4QixNQUFNLFNBQVMsR0FBRyxDQUFVLElBQVMsRUFBRSxRQUF1QyxFQUFFLEVBQUUsUUFBUSxFQUFRLEVBQUUsRUFBRTtJQUMzRyxLQUFLLEdBQUcsSUFBQSxlQUFPLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN4QyxNQUFNLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUUxQixNQUFNLGFBQWEsR0FBaUIsQ0FBTyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7UUFDeEUsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO1FBQzdCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN2QixJQUFJLElBQUEsZUFBTyxFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7Z0JBQ2xELEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTthQUMxQjtpQkFBTTtnQkFDTCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDdkI7U0FDRjthQUFNO1lBQ0wsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUE7U0FDeEI7UUFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFBO0lBQ3pCLENBQUMsQ0FBQSxDQUFBO0lBRUQsTUFBTSxJQUFBLGFBQUssRUFBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxhQUFhLENBQUMsa0NBQU8sS0FBSyxLQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFHLENBQUE7SUFFNUUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDbEIsQ0FBQyxDQUFBLENBQUE7QUFyQlksUUFBQSxTQUFTLGFBcUJyQiJ9 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RyYW5zZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsbUNBQWlDO0FBQ2pDLG1DQUErQjtBQUV4QixNQUFNLFNBQVMsR0FBRyxDQUFhLElBQVMsRUFBRSxRQUE2QyxFQUFFLEVBQUUsU0FBd0MsRUFBRSxFQUFFLEVBQUU7SUFDOUksS0FBSyxHQUFHLElBQUEsZUFBTyxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDeEMsTUFBTSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFFMUIsTUFBTSxhQUFhLEdBQW9CLENBQU8sS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQzNFLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtRQUM3QixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsSUFBSSxJQUFBLGVBQU8sRUFBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO2dCQUNsRCxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7YUFDMUI7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ3ZCO1NBQ0Y7YUFBTTtZQUNMLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFBO1NBQ3hCO1FBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQTtJQUN6QixDQUFDLENBQUEsQ0FBQTtJQUVELE1BQU0sSUFBQSxhQUFLLEVBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsYUFBYSxDQUFDLGtDQUFPLE1BQU0sS0FBRSxLQUFLLGtDQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLE9BQUssQ0FBQTtJQUV6RyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNsQixDQUFDLENBQUEsQ0FBQTtBQXJCWSxRQUFBLFNBQVMsYUFxQnJCIn0= |
export type JsonPath = (string | number)[]; | ||
export interface CrawlContext<T> { | ||
export interface CrawlParams<T, R = any> { | ||
state?: T; | ||
rules?: CrawlRules<R, T>; | ||
} | ||
export interface CrawlContext<T, R = any> { | ||
readonly path: JsonPath; | ||
readonly key: string | number; | ||
state: T; | ||
rules?: CrawlRules<R, T>; | ||
} | ||
@@ -18,6 +23,11 @@ export type ExitHook = () => void; | ||
node: any; | ||
} & T; | ||
export type CloneHook<T> = CrawlHook<CloneState<T>>; | ||
export type CrawlHook<T> = (value: unknown, ctx: CrawlContext<T>) => Promise<CrawlHookResponse<T> | null> | CrawlHookResponse<T> | null; | ||
export type SyncCloneHook<T> = SyncCrawlHook<CloneState<T>>; | ||
export type SyncCrawlHook<T> = (value: unknown, ctx: CrawlContext<T>) => CrawlHookResponse<T> | null; | ||
} & (T | {}); | ||
export type CloneHook<T = any, R = any> = CrawlHook<CloneState<T>, R>; | ||
export type CrawlHook<T = any, R = any> = (value: unknown, ctx: CrawlContext<T, R>) => Promise<CrawlHookResponse<T> | null> | CrawlHookResponse<T> | null; | ||
export type SyncCloneHook<T = any, R = any> = SyncCrawlHook<CloneState<T>, R>; | ||
export type SyncCrawlHook<T = any, R = any> = (value: unknown, ctx: CrawlContext<T, R>) => CrawlHookResponse<T> | null; | ||
export type CrawlRulesFunc<R, T = any> = (path: JsonPath, state: T) => CrawlRules<R, T>; | ||
export type CrawlRulesKey = `/${string | number}`; | ||
export type CrawlRules<R, T = any> = { | ||
[key: CrawlRulesKey | '/*']: CrawlRules<R, T> | CrawlRulesFunc<R, T>; | ||
} & (R | {}); |
{ | ||
"name": "json-crawl", | ||
"version": "0.1.0", | ||
"version": "0.2.0", | ||
"description": "Async and sync crawler for json object", | ||
@@ -5,0 +5,0 @@ "module": "dist/esm/index.js", |
# json-crawl | ||
<img alt="npm" src="https://img.shields.io/npm/v/json-crawl"> <img alt="npm" src="https://img.shields.io/npm/dm/json-crawl?label=npm"> <img alt="npm type definitions" src="https://img.shields.io/npm/types/json-crawl"> <img alt="GitHub" src="https://img.shields.io/github/license/udamir/json-crawl"> | ||
This package provides utility functions for crawling/cloning json objcts like a tree | ||
This package provides utility functions for crawling/cloning json objects like a tree | ||
@@ -45,11 +45,17 @@ | ||
const initialState = { | ||
// Initial state object for hooks (optional) | ||
const params = { | ||
state: { | ||
// Initial state object for hooks (optional) | ||
}, | ||
rules: { | ||
// Crawl rules map | ||
} | ||
}; | ||
// deep Clone | ||
const cloned = syncClone(data, hooks, initialState) | ||
const cloned = syncClone(data, hooks, params) | ||
// crawl | ||
syncCrawl(data, hooks, initialState) | ||
syncCrawl(data, hooks, params) | ||
@@ -56,0 +62,0 @@ ``` |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
87652
42
653
71