aontu 0.0.7 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/aontu.ts CHANGED
@@ -1,20 +1,30 @@
1
1
  /* Copyright (c) 2021 Richard Rodger, MIT License */
2
2
 
3
3
  import { Options } from './lib/common'
4
- import { Lang } from './lib/lang'
4
+ import { Lang, includeFileResolver } from './lib/lang'
5
5
  import { Unify } from './lib/unify'
6
- import { Nil } from './lib/val'
6
+ import { Val, Nil } from './lib/val'
7
+
8
+ /*
9
+ NEXT:
10
+ inject path from multisource into Vals when created
11
+ report via nil error
12
+ also trace deps into top val and watch via model
13
+ */
7
14
 
8
15
  // TODO: error reporting
16
+
9
17
  // TODO: debug tracing
10
18
  // TODO: providers - e.g source files from paths
11
19
 
12
- type Val = {
13
- canon: string
14
- gen: (log: any[]) => any
15
- }
16
-
17
- const EmptyResolver = () => new Nil()
20
+ // const NoResolver: Resolver = () => ({
21
+ // kind: '<no-kind>',
22
+ // path: '<no-path>',
23
+ // full: '<no-full>',
24
+ // base: '<no-base>',
25
+ // abs: true,
26
+ // found: false,
27
+ // })
18
28
 
19
29
  /* `Aontu('a:1') => opts={src:'a:1',print:0,...}`
20
30
  * `Aontu('a:1',{print:1}) => opts={src:'a:1',print:1,...}`
@@ -22,10 +32,18 @@ const EmptyResolver = () => new Nil()
22
32
  */
23
33
  function Aontu(src: string | Partial<Options>, popts?: Partial<Options>): Val {
24
34
  let opts = util.options(src, popts)
35
+
25
36
  let lang = new Lang(opts)
26
- let val = lang.parse(opts.src)
27
- let uni = new Unify(val)
28
- return uni.res
37
+ let deps = {}
38
+ let val = lang.parse(opts.src, { deps: deps })
39
+ let uni = new Unify(val as unknown as Val)
40
+ let res = uni.res
41
+ let err = uni.err
42
+
43
+ res.deps = deps
44
+ res.err = err
45
+
46
+ return res
29
47
  }
30
48
 
31
49
  const util = {
@@ -33,12 +51,14 @@ const util = {
33
51
  src: string | Partial<Options>,
34
52
  popts?: Partial<Options>
35
53
  ): Options => {
54
+ // Convert convenience first param into Options.src
36
55
  let srcopts: Partial<Options> = 'string' === typeof src ? { src } : src
56
+
37
57
  let opts: Options = {
38
58
  ...{
39
59
  src: '',
40
60
  print: 0,
41
- resolver: EmptyResolver,
61
+ resolver: includeFileResolver,
42
62
  },
43
63
  ...srcopts,
44
64
  ...(popts || {}),
@@ -47,5 +67,5 @@ const util = {
47
67
  },
48
68
  }
49
69
 
50
- export { Aontu, Val, util }
70
+ export { Aontu, Val, Nil, Lang, util }
51
71
  export default Aontu
package/dist/aontu.d.ts CHANGED
@@ -1,11 +1,9 @@
1
1
  import { Options } from './lib/common';
2
- declare type Val = {
3
- canon: string;
4
- gen: (log: any[]) => any;
5
- };
2
+ import { Lang } from './lib/lang';
3
+ import { Val, Nil } from './lib/val';
6
4
  declare function Aontu(src: string | Partial<Options>, popts?: Partial<Options>): Val;
7
5
  declare const util: {
8
- options: (src: string | Partial<Options>, popts?: Partial<Options> | undefined) => Options;
6
+ options: (src: string | Partial<Options>, popts?: Partial<Options>) => Options;
9
7
  };
10
- export { Aontu, Val, util };
8
+ export { Aontu, Val, Nil, Lang, util };
11
9
  export default Aontu;
package/dist/aontu.js CHANGED
@@ -1,11 +1,30 @@
1
1
  "use strict";
2
2
  /* Copyright (c) 2021 Richard Rodger, MIT License */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.util = exports.Aontu = void 0;
4
+ exports.util = exports.Lang = exports.Nil = exports.Val = exports.Aontu = void 0;
5
5
  const lang_1 = require("./lib/lang");
6
+ Object.defineProperty(exports, "Lang", { enumerable: true, get: function () { return lang_1.Lang; } });
6
7
  const unify_1 = require("./lib/unify");
7
8
  const val_1 = require("./lib/val");
8
- const EmptyResolver = () => new val_1.Nil();
9
+ Object.defineProperty(exports, "Val", { enumerable: true, get: function () { return val_1.Val; } });
10
+ Object.defineProperty(exports, "Nil", { enumerable: true, get: function () { return val_1.Nil; } });
11
+ /*
12
+ NEXT:
13
+ inject path from multisource into Vals when created
14
+ report via nil error
15
+ also trace deps into top val and watch via model
16
+ */
17
+ // TODO: error reporting
18
+ // TODO: debug tracing
19
+ // TODO: providers - e.g source files from paths
20
+ // const NoResolver: Resolver = () => ({
21
+ // kind: '<no-kind>',
22
+ // path: '<no-path>',
23
+ // full: '<no-full>',
24
+ // base: '<no-base>',
25
+ // abs: true,
26
+ // found: false,
27
+ // })
9
28
  /* `Aontu('a:1') => opts={src:'a:1',print:0,...}`
10
29
  * `Aontu('a:1',{print:1}) => opts={src:'a:1',print:1,...}`
11
30
  * `Aontu({src:'a:1'},{src:'a:2'}) => opts={src:'a:2',print:0,...}`
@@ -13,19 +32,25 @@ const EmptyResolver = () => new val_1.Nil();
13
32
  function Aontu(src, popts) {
14
33
  let opts = util.options(src, popts);
15
34
  let lang = new lang_1.Lang(opts);
16
- let val = lang.parse(opts.src);
35
+ let deps = {};
36
+ let val = lang.parse(opts.src, { deps: deps });
17
37
  let uni = new unify_1.Unify(val);
18
- return uni.res;
38
+ let res = uni.res;
39
+ let err = uni.err;
40
+ res.deps = deps;
41
+ res.err = err;
42
+ return res;
19
43
  }
20
44
  exports.Aontu = Aontu;
21
45
  const util = {
22
46
  options: (src, popts) => {
47
+ // Convert convenience first param into Options.src
23
48
  let srcopts = 'string' === typeof src ? { src } : src;
24
49
  let opts = {
25
50
  ...{
26
51
  src: '',
27
52
  print: 0,
28
- resolver: EmptyResolver,
53
+ resolver: lang_1.includeFileResolver,
29
54
  },
30
55
  ...srcopts,
31
56
  ...(popts || {}),
package/dist/aontu.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"aontu.js","sourceRoot":"","sources":["../aontu.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAGpD,qCAAiC;AACjC,uCAAmC;AACnC,mCAA+B;AAW/B,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,IAAI,SAAG,EAAE,CAAA;AAErC;;;GAGG;AACH,SAAS,KAAK,CAAC,GAA8B,EAAE,KAAwB;IACrE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACnC,IAAI,IAAI,GAAG,IAAI,WAAI,CAAC,IAAI,CAAC,CAAA;IACzB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,GAAG,GAAG,IAAI,aAAK,CAAC,GAAG,CAAC,CAAA;IACxB,OAAO,GAAG,CAAC,GAAG,CAAA;AAChB,CAAC;AAqBQ,sBAAK;AAnBd,MAAM,IAAI,GAAG;IACX,OAAO,EAAE,CACP,GAA8B,EAC9B,KAAwB,EACf,EAAE;QACX,IAAI,OAAO,GAAqB,QAAQ,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;QACvE,IAAI,IAAI,GAAY;YAClB,GAAG;gBACD,GAAG,EAAE,EAAE;gBACP,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,aAAa;aACxB;YACD,GAAG,OAAO;YACV,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SACjB,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AAEoB,oBAAI;AACzB,kBAAe,KAAK,CAAA"}
1
+ {"version":3,"file":"aontu.js","sourceRoot":"","sources":["../aontu.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAGpD,qCAAsD;AAkE5B,qFAlEjB,WAAI,OAkEiB;AAjE9B,uCAAmC;AACnC,mCAAoC;AAgEpB,oFAhEP,SAAG,OAgEO;AAAE,oFAhEP,SAAG,OAgEO;AA9DxB;;;;;EAKE;AAEF,wBAAwB;AAExB,sBAAsB;AACtB,gDAAgD;AAEhD,wCAAwC;AACxC,uBAAuB;AACvB,uBAAuB;AACvB,uBAAuB;AACvB,uBAAuB;AACvB,eAAe;AACf,kBAAkB;AAClB,KAAK;AAEL;;;GAGG;AACH,SAAS,KAAK,CAAC,GAA8B,EAAE,KAAwB;IACrE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAEnC,IAAI,IAAI,GAAG,IAAI,WAAI,CAAC,IAAI,CAAC,CAAA;IACzB,IAAI,IAAI,GAAG,EAAE,CAAA;IACb,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9C,IAAI,GAAG,GAAG,IAAI,aAAK,CAAC,GAAqB,CAAC,CAAA;IAC1C,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAA;IACjB,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAA;IAEjB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;IACf,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IAEb,OAAO,GAAG,CAAA;AACZ,CAAC;AAuBQ,sBAAK;AArBd,MAAM,IAAI,GAAG;IACX,OAAO,EAAE,CACP,GAA8B,EAC9B,KAAwB,EACf,EAAE;QACX,mDAAmD;QACnD,IAAI,OAAO,GAAqB,QAAQ,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;QAEvE,IAAI,IAAI,GAAY;YAClB,GAAG;gBACD,GAAG,EAAE,EAAE;gBACP,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,0BAAmB;aAC9B;YACD,GAAG,OAAO;YACV,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SACjB,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AAE+B,oBAAI;AACpC,kBAAe,KAAK,CAAA"}
package/dist/aontu.min.js CHANGED
@@ -1 +1,63 @@
1
- !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Aontu=e()}}((function(){var e={exports:{}};(function(n){(function(){!function(t){"object"==typeof e.exports?e.exports=t():("undefined"!=typeof window?window:void 0!==n?n:"undefined"!=typeof self?self:this).Jsonic=t()}((function(){var e={exports:{}};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.make=e.exports.util=e.exports.Alt=e.exports.RuleSpec=e.exports.Rule=e.exports.Parser=e.exports.Lexer=e.exports.JsonicError=e.exports.Jsonic=void 0;const n=Object.keys,t=Object.entries,r=Object.assign,s=Object.defineProperty,o="object",l="string",i="function",a="unexpected",c="map",u="list",p="elem",f="pair",d="val",h="block_indent_",g="imp,map",m="imp,list",v="imp,null",b="open",y="close",x="null";class w extends SyntaxError{constructor(e,n,t,s,o){let l=H(e,n=L({},n),t,s,o);super(l.message),r(this,l),B(this)}toJSON(){return{...this,__error:!0,name:this.name,message:this.message,stack:this.stack}}}e.exports.JsonicError=w;class k{constructor(e){this.match={},E("@LTP",e),E("@LTX",e),E("@LCS",e),E("@LML",e),this.end={tin:E("#ZZ",e),loc:0,len:0,row:0,col:0,val:void 0,src:void 0}}start(e){const t=e.opts,r=e.cnfg;let s=e=>E(e,r),o=e=>E(e,r),l=e.F,c=s("@LTP"),u=s("@LTX"),p=s("@LCS"),f=s("@LML"),d=s("#ZZ"),g=s("#SP"),m=s("#CM"),v=s("#NR"),b=s("#ST"),y=s("#TX"),x=s("#VL"),w=s("#LN"),k={tin:d,loc:0,row:0,col:0,len:0,val:void 0,src:void 0},S=0,j=0,N=0,C=c,A=null,T=e.src(),_=T.length,V=null!=e.log?(...n)=>e.log("lex",o(k.tin),l(k.src),S,j+":"+N,o(C),{...k},...n):void 0,I=(n,t,r,s)=>this.bad(e,V,n,k,S,t,j,N,r,r,s),O=n=>{let t=this.match[C];if(null!=t)for(let r of t){let t=r({sI:S,rI:j,cI:N,src:T,token:k,ctx:e,rule:n,bad:I});if(t)return S=t.sI?t.sI:S,j=t.rI?t.rI:j,N=t.cI?t.cI:N,C=null==t.state?C:t.state,A=null==t.state_param?A:t.state_param,V&&V(k,r),k}},P=function(s){k.len=0,k.val=void 0,k.src=void 0,k.row=j,k.use=void 0;let o={},l=0,P=[];e:for(;S<_;){let d=T[S];if(k.loc=S,k.col=N,e.xs=C,c!==C){if(u===C){if(O(s))return k;l=S;let e=T.substring(S).match(r.re.te);if(e){let n=e[0].length;l+=n,N+=n}return k.len=l-S,k.tin=y,k.val=T.substring(S,l),k.src=k.val,S=l,C=c,V&&V(k),k}if(p===C){if(O(s))return k;for(l=S;l<_&&!o[T[l]];)l++,N++;return k.val+=T.substring(S,l),k.src=k.val,k.len=k.val.length,S=l,C=c,V&&V(k),k}if(f===C){if(O(s))return k;l=S;let e=1,o=A[0],i=A[1],a=A[2],u=!!A[3],p="",f=0,d=o.length,g=i.length;if(u){let e=S-1;for(;-1<e&&r.m.SP[T[e]];)e--;0<(f=S-e-1)&&(p=n(r.m.SP)[0].repeat(f))}for(l+=o.length;l<_&&0<e;)i[0]===T[l]&&i===T.substring(l,l+g)?(l+=g,N+=g,e--):a&&o[0]===T[l]&&o===T.substring(l,l+d)?(l+=d,N+=g,e++):(t.line.row===T[l]?(j++,N=0):N++,l++);if(k.val=T.substring(S,l),k.src=k.val,k.len=k.val.length,u){k.val=k.val.substring(d,k.val.length-g),null==r.re.block_prefix&&(r.re.block_prefix=F("","^[",J(t.token["#SP"]),"]*(",t.line.sep,")")),k.val=k.val.replace(r.re.block_prefix,""),null==r.re.block_suffix&&(r.re.block_suffix=F("",t.line.sep,"[",J(t.token["#SP"]),"]*$")),k.val=k.val.replace(r.re.block_suffix,"");let e=r.re[h+p]=r.re[h+p]||F("g","^(",J(p),")|((",t.line.sep,")",J(p),")");k.val=k.val.replace(e,"$3")}return S=l,C=c,V&&V(k),k}return I("invalid_lex_state",S,T[S],{state:C})}if(O(s))return k;if(t.space.lex&&r.m.SP[d]){for(k.tin=g,N++,l=S+1;r.m.SP[T[l]];)N++,l++;return k.len=l-S,k.val=T.substring(S,l),k.src=k.val,S=l,V&&V(k),k}if(t.line.lex&&r.m.LN[d]){for(k.tin=w,l=S,N=0;r.m.LN[T[l]];)j+=t.line.row===T[l]?1:0,l++;return k.len=l-S,k.val=T.substring(S,l),k.src=k.val,S=l,V&&V(k),k}if(t.number.lex&&r.m.NR[d]){let e=T.substring(S).match(r.re.nm);if(null!=e){let n=e[0];if(l=S+n.length,null==T[l]||r.cs.vend[T[l]]){let e=+(r.re.ns?n.replace(r.re.ns,""):n);if(!isNaN(e))return k.tin=v,k.src=n,k.val=e,k.len=n.length,S+=k.len,N+=k.len,V&&V(k),k}}}if(null!=r.sm[d])return k.tin=r.sm[d],k.len=1,k.src=d,S++,N++,V&&V(k),k;if(t.block.lex&&r.cs.bs[d]){let e=T.substring(S,S+r.bmx);for(let n of r.bmk)if(e.startsWith(n)){k.tin=b,C=f,A=[n,t.block.marker[n],null,!0];continue e}}if(t.string.lex&&r.m.ST[d]){k.tin=b,N++;let e=r.cs.mln[d];P=[];let n="";for(l=S+1;l<_;l++)if(N++,d===(n=T[l])){if(!t.string.escapedouble||d!==T[l+1]){l++;break}P.push(T[l]),l++}else if("\\"===n){l++,N++;let e=r.esc[T[l]];if(null!=e)P.push(e);else if("x"===T[l]){l++;let e=parseInt(T.substring(l,l+2),16);if(isNaN(e))return S=l-2,N-=2,I("invalid_ascii",l+2,T.substring(l-2,l+2));let n=String.fromCharCode(e);P.push(n),l+=1,N+=2}else if("u"===T[l]){let e="{"===T[++l]?(l++,1):0,n=e?6:4,t=parseInt(T.substring(l,l+n),16);if(isNaN(t))return S=l-2-e,N-=2,I("invalid_unicode",l+n+1,T.substring(l-2-e,l+n+e));let r=String.fromCodePoint(t);P.push(r),l+=n-1+e,N+=n+e}else P.push(T[l])}else{let s=l,o=d.charCodeAt(0),i="\\".charCodeAt(0),a=T.charCodeAt(l);for(;l<_&&32<=a&&o!==a&&i!==a;)a=T.charCodeAt(++l),N++;if(N--,n=T[l],a<32){if(!e||!r.m.LN[n])return I("unprintable",l,"char-code="+T[l].charCodeAt(0));n===t.line.row&&(j++,N=0),P.push(T.substring(s,l+1))}else P.push(T.substring(s,l)),l--}return d!==n?I("unterminated",l,P.join("")):(k.val=P.join(""),k.src=T.substring(S,l),k.len=l-S,S=l,V&&V(k),k)}if(t.comment.lex&&r.cs.cs[d]){let e=T.substring(S,S+r.cmx);for(let n of r.cmk)if(e.startsWith(n)){if(!0!==r.cm[n]){k.tin=m,k.val="",C=f,A=[n,r.cm[n],t.comment.balance];continue e}break}k.tin=m,k.val="",C=p,o=r.m.LN}else{if(t.value.lex&&r.vs[d]){l=S;do{l++}while(null!=T[l]&&!r.cs.vend[T[l]]);let n=T.substring(S,l),t=r.vm[n];if(void 0!==(t=i===typeof t?t({sI:S,rI:j,cI:N,src:T,token:k,ctx:e,rule:s,bad:I}):t))return k.tin=x,k.val=t,k.src=n,k.len=l-S,N+=k.len,S=l,V&&V(k),k}if(!t.text.lex)return I(a,S,T[S]);C=u}}return k.tin=d,k.loc=_,k.col=N,V&&V(k),k};return P.src=T,P}bad(e,n,t,r,s,o,l,i,a,c,u){return r.why=t,r.tin=E("#BD",e.cnfg),r.loc=s,r.row=l,r.col=i,r.len=o-s,r.val=a,r.src=c,r.use=u,n&&n(E(r.tin,e.cnfg),e.F(r.src),s,l+":"+i,{...r},"error",t),r}lex(e,n){if(null==e)return this.match;let t=this.match[e];return null!=n?(null==t&&(t=this.match[e]=[]),t.push(n)):null===n&&(t=this.match[e],delete this.match[e]),t}clone(e){let n=new k(e);return L(n.match,this.match),n}}var S;e.exports.Lexer=k,function(e){e[e.open=0]="open",e[e.close=1]="close"}(S||(S={}));class j{constructor(e,n,t){this.id=n.uI++,this.name=e.name,this.spec=e,this.node=t,this.state=S.open,this.child=N,this.open=[],this.close=[],this.n={},this.use={},this.bo=!1!==e.bo,this.ao=!1!==e.ao,this.bc=!1!==e.bc,this.ac=!1!==e.ac}process(e){return this.spec.process(this,e,this.state)}}e.exports.Rule=j;const N={name:"none",state:0};class C{constructor(){this.m=[],this.p="",this.r="",this.b=0}}e.exports.Alt=C;const A=new C,T=new C;class _{constructor(e){function n(e){let n=null!=e.c&&e.c.n;n&&(e.c=e=>{let t=!0;for(let r in n)t=t&&(null==e.n[r]||e.n[r]<=n[r]);return t}),l===typeof e.g&&(e.g=e.g.split(/\s*,\s*/))}this.name="-",this.bo=!0,this.ao=!0,this.bc=!0,this.ac=!0,this.def=e||{},this.def.open=this.def.open||[],this.def.close=this.def.close||[];for(let t of[...this.def.open,...this.def.close])n(t)}process(e,n,t){let r,s="",o=n.F,l=t===S.open,i=l?e:N,c=this.def,u=l?c.open:c.close,p=l?e.bo&&c.bo:e.bc&&c.bc;if(p&&(r=p.call(this,e,n))){if(r.err)throw new w(r.err,{...r,state:l?b:y},n.t0,e,n);e.node=r.node||e.node}let f=r&&r.alt?{...T,...r.alt}:0<u.length?this.parse_alts(u,e,n):T;if(f.h&&(f=f.h(e,n,f,i)||f,s+="H"),l?e.open=f.m:e.close=f.m,f.e)throw new w(a,{...f.e.use,state:l?b:y},f.e,e,n);if(f.n)for(let a in f.n)e.n[a]=0===f.n[a]?0:(null==e.n[a]?0:e.n[a])+f.n[a],e.n[a]=0<e.n[a]?e.n[a]:0;f.u&&(e.use=Object.assign(e.use,f.u)),f.a&&(s+="A",f.a.call(this,e,n,f,i)),f.p?(n.rs.push(e),(i=e.child=new j(n.rsm[f.p],n,e.node)).parent=e,i.n={...e.n},s+="U"):f.r?((i=new j(n.rsm[f.r],n,e.node)).parent=e.parent,i.prev=e,i.n={...e.n},s+="R"):(l||(i=n.rs.pop()||N),s+="Z");let d=l?e.ao&&c.ao:e.ac&&c.ac;if(d){let t=d.call(this,e,n,f,i);if(t){if(t.err)throw n.t0.why=s,new w(t.err,{...t,state:l?b:y},n.t0,e,n);i=t.next||i}}i.why=s,n.log&&n.log("node",e.name+"~"+e.id,S[e.state],"w="+s,o(e.node));let h=0,g=f.m.length-(f.b||0);for(;h++<g;)n.next();return S.open===e.state&&(e.state=S.close),i}parse_alts(e,n,r){let s,o=A;o.m=[],o.b=0,o.p="",o.r="",o.n=void 0,o.h=void 0,o.a=void 0,o.u=void 0,o.e=void 0;let l,i=0,a=r.cnfg.t,c=e.length;for(i=0;i<c&&(l=!1,null==(s=e[i]).s||0===s.s.length?l=!0:(s.s[0]===r.t0.tin||s.s[0]===a.AA||Array.isArray(s.s[0])&&s.s[0].includes(r.t0.tin))&&(1===s.s.length?(o.m=[r.t0],l=!0):(s.s[1]===r.t1.tin||s.s[1]===a.AA||Array.isArray(s.s[1])&&s.s[1].includes(r.t1.tin))&&(o.m=[r.t0,r.t1],l=!0)),!(l=(l=l&&(!s.c||s.c(n,r,o)))&&(null==s.d||s.d===r.rs.length)));i++)s=null;return null==s&&a.ZZ!==r.t0.tin&&(o.e=r.t0),null!=s&&(o.e=s.e&&s.e(n,r,o)||void 0,o.b=s.b?s.b:o.b,o.p=s.p?s.p:o.p,o.r=s.r?s.r:o.r,o.n=s.n?s.n:o.n,o.h=s.h?s.h:o.h,o.a=s.a?s.a:o.a,o.u=s.u?s.u:o.u),r.log&&r.log("parse",n.name+"~"+n.id,S[n.state],i<e.length?"alt="+i:"no-alt",i<e.length&&s.s?"["+s.s.map(e=>a[e]).join(" ")+"]":"[]",r.tC,"p="+(o.p||""),"r="+(o.r||""),"b="+(o.b||""),o.m.map(e=>a[e.tin]).join(" "),r.F(o.m.map(e=>e.src)),"c:"+(s&&s.c?l:""),"n:"+t(n.n).join(";"),"u:"+t(n.use).join(";"),o),o}}e.exports.RuleSpec=_;class V{constructor(e,n){this.rsm={},this.options=e,this.config=n}init(){let e=this.config.t,t=e.OB,r=e.CB,s=e.OS,o=e.CS,l=e.CL,i=e.CA,a=e.TX,h=e.NR,b=e.ST,y=e.VL,w=e.AA,k=e.ZZ,S=(e,n)=>{if(!this.options.rule.finish)return n.t0.src="END_OF_SOURCE",n.t0},j={val:{open:[{s:[t,i],p:c,n:{im:0},g:g},{s:[t],p:c,n:{im:0}},{s:[s],p:u},{s:[i],d:0,p:u,b:1,g:m},{s:[i],b:1,g:m},{s:[[a,h,b,y],l],p:c,b:2,n:{im:1},g:g},{s:[[a,h,b,y]]},{s:[r],b:1,g:v},{s:[o],b:1,g:v}],close:[{s:[i],d:0,r:p,a:e=>e.node=[e.node],g:m},{c:(e,n,t)=>(a===n.t0.tin||h===n.t0.tin||b===n.t0.tin||y===n.t0.tin)&&0===n.rs.length,r:p,a:e=>e.node=[e.node],g:m},{s:[w],b:1}],bc:e=>{e.node=void 0===e.child.node?null==e.open[0]?void 0:e.open[0].val:e.child.node}},map:{bo:()=>({node:{}}),open:[{s:[r]},{p:f}],close:[]},list:{bo:()=>({node:[]}),open:[{s:[o]},{p:p}],close:[]},pair:{open:[{s:[[a,h,b,y],l],p:d,u:{key:!0}},{s:[r],b:1}],close:[{s:[r]},{s:[i],c:{n:{im:1}},r:f},{s:[i],b:1},{s:[[a,h,b,y],l],c:{n:{im:1}},r:f,b:2},{s:[[a,h,b,y],l],b:2},{s:[o],b:1},{s:[k],e:S,g:"end"}],bc:(e,n)=>{if(e.use.key){let t=e.open[0],r=b===t.tin?t.val:t.src,s=e.child.node,o=e.node[r];void 0===s&&l===n.v1.tin&&(s=null),e.node[r]=null==o?s:n.opts.map.merge?n.opts.map.merge(o,s):n.opts.map.extend?L(o,s):s}}},elem:{open:[{s:[t],p:c,n:{im:0}},{s:[s],p:u},{s:[i,i],b:2,g:x,a:e=>e.node.push(null)},{s:[i],g:x,a:e=>e.node.push(null)},{p:d,n:{im:1}}],close:[{s:[i,o]},{s:[i],r:p},{s:[o]},{s:[t],p:c,n:{im:0}},{s:[s],p:u},{s:[[a,h,b,y]],r:p,b:1},{s:[k],e:S,g:"end"}],bc:e=>{void 0!==e.child.node&&e.node.push(e.child.node)}}};this.rsm=n(j).reduce((e,n)=>(e[n]=new _(j[n]),e[n].name=n,e),{})}rule(e,n){if(null==e)return this.rsm;let t=this.rsm[e];return null===n?delete this.rsm[e]:void 0!==n&&((t=this.rsm[e]=n(this.rsm[e],this.rsm)||this.rsm[e]).name=e),t}start(e,t,r,s,o){let l,i={uI:1,opts:this.options,cnfg:this.config,meta:s||{},src:()=>t,root:()=>l.node,plgn:()=>r.internal().plugins,rule:N,xs:-1,v2:e.end,v1:e.end,t0:e.end,t1:e.end,tC:-2,next:h,rs:[],rsm:this.rsm,log:s&&s.log||void 0,F:P(this.config),use:{}};null!=o&&(i=L(i,o)),U(i);let c=e=>E(e,this.config),u=$(e.start(i),E("#BD",this.config),i),p=this.rsm[this.options.rule.start];if(null==p)return;let f=new j(p,i);l=f;let d=2*n(this.rsm).length*u.src.length*2*this.options.rule.maxmul;function h(){let e;i.v2=i.v1,i.v1=i.t0,i.t0=i.t1;do{e=u(f),i.tC++}while(i.cnfg.ts.IGNORE[e.tin]);return i.t1={...e},i.t0}h(),h();let g=0;for(;N!==f&&g<d;)i.log&&i.log("rule",f.name+"~"+f.id,S[f.state],i.rs.length,i.tC,"["+c(i.t0.tin)+" "+c(i.t1.tin)+"]","["+i.F(i.t0.src)+" "+i.F(i.t1.src)+"]",f,i),i.rule=f,f=f.process(i),i.log&&i.log("stack",i.rs.length,i.rs.map(e=>e.name+"~"+e.id).join("/"),f,i),g++;if(E("#ZZ",this.config)!==i.t0.tin)throw new w(a,{},i.t0,N,i);return l.node}clone(e,n){let t=new V(e,n);return t.rsm=Object.keys(this.rsm).reduce((e,n)=>(e[n]=R(this.rsm[n]),e),{}),t}}e.exports.Parser=V;let I={tokenize:E,srcfmt:P,deep:L,clone:R,charset:M,longest:D,marr:function(e,n){return e.length===n.length&&e.reduce((e,t,r)=>e&&t===n[r],!0)},trimstk:B,makelog:U,badlex:$,extract:Y,errinject:W,errdesc:H,configure:G,parserwrap:X,regexp:F,mesc:J,ender:Z};function O(e,n){let t,i,a,c,u=L({},n?{...n.options}:{tag:"-",line:{lex:!0,row:"\n",sep:"\r*\n"},comment:{lex:!0,balance:!0,marker:{"#":!0,"//":!0,"/*":"*/"}},space:{lex:!0},number:{lex:!0,hex:!0,oct:!0,bin:!0,digital:"-1023456789._xoeEaAbBcCdDfF+",sep:"_"},block:{lex:!0,marker:{"'''":"'''"}},string:{lex:!0,escape:{b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"},multiline:"`",escapedouble:!1},text:{lex:!0},map:{extend:!0,merge:void 0},value:{lex:!0,src:{null:null,true:!0,false:!1}},plugin:{},debug:{get_console:()=>console,maxlen:99,print:{config:!1}},error:{unknown:"unknown error: $code",unexpected:"unexpected character(s): $src",invalid_unicode:"invalid unicode escape: $src",invalid_ascii:"invalid ascii escape: $src",unprintable:"unprintable character: $src",unterminated:"unterminated string: $src"},hint:q,token:{"#OB":{c:"{"},"#CB":{c:"}"},"#OS":{c:"["},"#CS":{c:"]"},"#CL":{c:":"},"#CA":{c:","},"#SP":" \t","#LN":"\n\r","#NR":"-0123456789+","#ST":"\"'`","#TX":!0,"#VL":!0,"#CM":!0,"#BD":!0,"#ZZ":!0,"#UK":!0,"#AA":!0,"#IGNORE":{s:"#SP,#LN,#CM"}},rule:{start:d,finish:!0,maxmul:3},config:{modify:{}},parser:{start:void 0}},e||{}),p=function(e,n,t){if(l===typeof e){let r=p.internal();return(f.parser.start?X(f.parser):r.parser).start(r.lexer,e,p,n,t)}return e},f=e=>{if(null!=e&&o===typeof e){G(a,L(u,e));for(let e in u)p.options[e]=u[e];r(p.token,a.t)}return{...p.options}},h={token:function(e){return E(e,a,p)},options:L(f,u),parse:p,use:function(e,n){return p.options({plugin:{[e.name]:n||{}}}),p.internal().plugins.push(e),e(p)||p},rule:function(e,n){return p.internal().parser.rule(e,n)},lex:function(e,n){return p.internal().lexer.lex(e,n)},make:function(e){return O(e,p)},id:"Jsonic/"+Date.now()+"/"+(""+Math.random()).substring(2,8).padEnd(6,"0")+"/"+f.tag,toString:function(){return this.id}};if(s(h.make,"name",{value:"make"}),n){for(let t in n)p[t]=n[t];p.parent=n;let e=n.internal();G(a=L({},e.config),u),r(p.token,a.t),c=[...e.plugins],t=e.lexer.clone(a),i=e.parser.clone(u,a)}else G(a={tI:1,t:{}},u),c=[],t=new k(a),(i=new V(u,a)).init();return r(p,h),r(p.token,a.t),s(p,"internal",{value:function(){return{lexer:t,parser:i,config:a,plugins:c}}}),p}function P(e){return(n,t)=>null==n?"":(t=JSON.stringify(n)).substring(0,e.d.maxlen)+(e.d.maxlen<t.length?"...":"")}function E(e,n,t){let s=n.t,o=s[e];return null==o&&l===typeof e&&(s[o=n.tI++]=e,s[e]=o,s[e.substring(1)]=o,null!=t&&r(t.token,n.t)),o}function L(e,...n){let t=i===typeof e,r=null!=e&&(o===typeof e||t);for(let s of n){let n=i===typeof s,l=null!=s&&(o===typeof s||n);if(r&&l&&!n&&Array.isArray(e)===Array.isArray(s))for(let t in s)e[t]=L(e[t],s[t]);else e=void 0===s?e:n?s:l?L(Array.isArray(s)?[]:{},s):s,t=i===typeof e,r=null!=e&&(o===typeof e||t)}return e}function R(e){return L(Object.create(Object.getPrototypeOf(e)),e)}function M(...e){return e.filter(e=>!1!==e).map(e=>"object"==typeof e?n(e).join(""):e).join("").split("").reduce((e,n)=>(e[n]=n.charCodeAt(0),e),{})}function D(e){return e.reduce((e,n)=>e<n.length?n.length:e,0)}function B(e){e.stack&&(e.stack=e.stack.split("\n").filter(e=>!e.includes("jsonic/jsonic")).map(e=>e.replace(/ at /,"at ")).join("\n"))}function U(e){if("number"==typeof e.log){let n=!1,t=e.log;-1===t&&(t=1,n=!0),e.log=(...r)=>{if(n){let n=r.filter(e=>o!=typeof e).map(e=>i==typeof e?e.name:e).join("\t");e.opts.debug.get_console().log(n)}else e.opts.debug.get_console().dir(r,{depth:t})}}return e.log}function $(e,n,t){let r=r=>{let s=e(r);if(n===s.tin){let e={};throw null!=s.use&&(e.use=s.use),new w(s.why||a,e,s,r,t)}return s};return r.src=e.src,r}function J(e,n){return(n=new String(e)).esc=!0,n}function F(e,...n){return new RegExp(n.map(e=>e.esc?e.replace(/[-\\|\]{}()[^$+*?.!=]/g,"\\$&"):e).join(""),e)}function Z(e,r,s){let o=n(n(r).reduce((e,n)=>(e[n[0]]=1,e),{...e})).join(""),l=t(n(r).filter(e=>1<e.length&&(!s||!s[e[0]])).reduce((e,n)=>((e[n[0]]=e[n[0]]||[]).push(n.substring(1)),e),{})).reduce((e,n)=>(e.push([n[0],n[1].map(e=>F("",J(e)).source).join("|")]),e),[]).map(e=>["|(",J(e[0]),"(?!(",e[1],")))"]).flat(1);return F("","^(([^",J(o),"]+)",...l,")+")}function W(e,n,t,r,s,o){return e.replace(/\$([\w_]+)/g,(e,l)=>JSON.stringify("code"===l?n:t[l]||(o.meta?o.meta[l]:void 0)||r[l]||s[l]||o[l]||o.opts[l]||o.cnfg[l]||"$"+l))}function Y(e,n,t){let r=0<t.loc?t.loc:0,s=0<t.row?t.row:0,o=0<t.col?t.col:0,l=null==t.src?"":t.src,i=e.substring(Math.max(0,r-333),r).split("\n"),a=e.substring(r,r+333).split("\n"),c=2+(""+(s+2)).length,u=s<2?0:s-2,p=e=>"\x1b[34m"+(""+u++).padStart(c," ")+" | \x1b[0m"+(null==e?"":e),f=i.length;return[2<f?p(i[f-3]):null,1<f?p(i[f-2]):null,p(i[f-1]+a[0])," ".repeat(c)+" "+" ".repeat(o)+"\x1b[31m"+"^".repeat(l.length||1)+" "+n+"\x1b[0m",p(a[1]),p(a[2])].filter(e=>null!=e).join("\n")}function X(e){return{start:function(n,t,r,s,o){try{return e.start(n,t,r,s,o)}catch(l){if("SyntaxError"===l.name){let n=0,o=0,i=0,a="",c=l.message.match(/^Unexpected token (.) .*position\s+(\d+)/i);if(c){a=c[1],n=parseInt(c[2]),o=t.substring(0,n).replace(/[^\n]/g,"").length;let e=n-1;for(;-1<e&&"\n"!==t.charAt(e);)e--;i=Math.max(t.substring(e,n).length,0)}let u=l.token||{tin:r.token.UK,loc:n,len:a.length,row:l.lineNumber||o,col:l.columnNumber||i,val:void 0,src:a};throw new w(l.code||"json",l.details||{msg:l.message},u,{},l.ctx||{uI:-1,opts:r.options,cnfg:{t:{}},token:u,meta:s,src:()=>t,root:()=>{},plgn:()=>r.internal().plugins,rule:N,xs:-1,v2:u,v1:u,t0:u,t1:u,tC:-1,rs:[],next:()=>u,rsm:{},n:{},log:s?s.log:void 0,F:P(r.internal().config),use:{}})}throw l}}}}function H(e,n,t,r,s){t={...t};let o=s.opts,l=s.meta,a=W(o.error[e]||o.error.unknown,e,n,t,r,s);i===typeof o.hint&&(o.hint={...o.hint(),...o.hint});let c=["\x1b[31m[jsonic/"+e+"]:\x1b[0m "+a," \x1b[34m--\x3e\x1b[0m "+(l&&l.fileName||"<no-file>")+":"+t.row+":"+t.col,Y(s.src(),a,t),W((o.hint[e]||o.hint.unknown).replace(/^([^ ])/," $1").split("\n").map((e,n)=>(0===n?" ":" ")+e).join("\n"),e,n,t,r,s)," \x1b[2mhttps://jsonic.richardrodger.com\x1b[0m"," \x1b[2m--internal: rule="+r.name+"~"+S[r.state]+"; token="+s.cnfg.t[t.tin]+(null==t.why?"":"~"+t.why)+"; plugins="+s.plgn().map(e=>e.name).join(",")+"--\x1b[0m\n"].join("\n"),u={internal:{token:t,ctx:s}};return{...Object.create(u),message:c,code:e,details:n,meta:l,fileName:l?l.fileName:void 0,lineNumber:t.row,columnNumber:t.col}}function G(e,t){let r=n(t.token);r.forEach(n=>E(n,e));let s=r.filter(e=>null!=t.token[e].c);e.sm=s.reduce((n,r)=>(n[t.token[r].c]=e.t[r],n),{});let o=r.filter(e=>l===typeof t.token[e]);e.m=o.reduce((n,r)=>(n[r.substring(1)]=t.token[r].split("").reduce((n,t)=>(n[t]=e.t[r],n),{}),n),{});let i=r.filter(e=>null!=t.token[e].s);if(e.ts=i.reduce((n,r)=>(n[r.substring(1)]=t.token[r].s.split(",").reduce((n,t)=>(n[e.t[t]]=t,n),{}),n),{}),e.vm=t.value.src,e.vs=n(t.value.src).reduce((e,n)=>(e[n[0]]=!0,e),{}),e.cs={},e.esc=n(t.string.escape).reduce((e,n)=>(e[n]=t.string.escape[n],e),{}),e.cs.cs={},e.cmk=[],t.comment.lex){e.cm=t.comment.marker;let r=n(e.cm);r.forEach(n=>{1===n.length?e.cs.cs[n]=n.charCodeAt(0):(e.cs.cs[n[0]]=n.charCodeAt(0),e.cmk.push(n))}),e.cmx=D(r)}e.sc=n(e.sm).join(""),e.cs.dig=M(t.number.digital),e.cs.mln=M(t.string.multiline),e.cs.vend=M(t.space.lex&&e.m.SP,t.line.lex&&e.m.LN,e.sc,t.comment.lex&&e.cs.cs,t.block.lex&&e.cs.bs),e.cs.bs={},e.bmk=[];let a=n(t.block.marker);a.forEach(n=>{e.cs.bs[n[0]]=n.charCodeAt(0),e.bmk.push(n)}),e.bmx=D(a);let c=null!=t.number.sep?new RegExp(t.number.sep,"g"):null;e.re={ns:c,te:Z(M(t.space.lex&&e.m.SP,t.line.lex&&e.m.LN,e.sc,t.comment.lex&&e.cs.cs,t.block.lex&&e.cs.bs),{...t.comment.lex?e.cm:{},...t.block.lex?t.block.marker:{}},e.sm),nm:new RegExp(["^[-+]?(0(",[t.number.hex?"x[0-9a-fA-F_]+":null,t.number.oct?"o[0-7_]+":null,t.number.bin?"b[01_]+":null].filter(e=>null!=e).join("|"),")|[0-9]+([0-9_]*[0-9])?)","(\\.[0-9]+([0-9_]*[0-9])?)?","([eE][-+]?[0-9]+([0-9_]*[0-9])?)?"].filter(e=>e.replace(/_/g,null==c?"":t.number.sep)).join(""))},e.d=t.debug,n(t.config.modify).forEach(n=>t.config.modify[n](e,t)),t.debug.print.config&&t.debug.get_console().dir(e,{depth:null})}function q(e=((e,n="replace")=>e[n](/[A-Z]/g,e=>" "+e.toLowerCase())[n](/[~%][a-z]/g,e=>("~"==e[0]?" ":"")+e[1].toUpperCase())),n="~sinceTheErrorIsUnknown,ThisIsProbablyABugInsideJsonic\nitself,OrAPlugin.~pleaseConsiderPostingAGithubIssue -Thanks!|~theCharacter(s) $srcWereNotExpectedAtThisPointAsTheyDoNot\nmatchTheExpectedSyntax,EvenUnderTheRelaxedJsonicRules.~ifIt\nisNotObviouslyWrong,TheActualSyntaxErrorMayBeElsewhere.~try\ncommentingOutLargerAreasAroundThisPointUntilYouGetNoErrors,\nthenRemoveTheCommentsInSmallSectionsUntilYouFindThe\noffendingSyntax.~n%o%t%e:~alsoCheckIfAnyPluginsYouAreUsing\nexpectDifferentSyntaxInThisCase.|~theEscapeSequence $srcDoesNotEncodeAValidUnicodeCodePoint\nnumber.~youMayNeedToValidateYourStringDataManuallyUsingTest\ncodeToSeeHow~javaScriptWillInterpretIt.~alsoConsiderThatYour\ndataMayHaveBecomeCorrupted,OrTheEscapeSequenceHasNotBeen\ngeneratedCorrectly.|~theEscapeSequence $srcDoesNotEncodeAValid~a%s%c%i%iCharacter.~you\nmayNeedToValidateYourStringDataManuallyUsingTestCodeToSee\nhow~javaScriptWillInterpretIt.~alsoConsiderThatYourDataMay\nhaveBecomeCorrupted,OrTheEscapeSequenceHasNotBeenGenerated\ncorrectly.|~stringValuesCannotContainUnprintableCharacters (characterCodes\nbelow 32).~theCharacter $srcIsUnprintable.~youMayNeedToRemove\ntheseCharactersFromYourSourceData.~alsoCheckThatItHasNot\nbecomeCorrupted.|~stringValuesCannotBeMissingTheirFinalQuoteCharacter,Which\nshouldMatchTheirInitialQuoteCharacter.".split("|")){return"unknown|unexpected|invalid_unicode|invalid_ascii|unprintable|unterminated".split("|").reduce((t,r,s)=>(t[r]=e(n[s]),t),{})}e.exports.util=I,e.exports.make=O;let z=O();e.exports.Jsonic=z;let K=z;return delete K.options,delete K.use,delete K.rule,delete K.lex,delete K.token,z.Jsonic=z,z.JsonicError=w,z.Lexer=k,z.Parser=V,z.Rule=j,z.RuleSpec=_,z.Alt=C,z.util=I,z.make=O,e.exports.default=z,e.exports=e.exports.Jsonic,e.exports}))}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}),e=e.exports;var n={};Object.defineProperty(n,"__esModule",{value:!0}),n.MultiSource=void 0;let t={markchar:"@",basepath:"."};n.MultiSource=function(n){let r=e.util.deep({},t,n.options.plugin.multisource),s=r.markchar,o=r.resolver,l="#T<"+s+">";n.options({token:{[l]:{c:s}},error:{multifile_unsupported_file:"unsupported file: $path"},hint:{multifile_unsupported_file:"This file type is not supported and cannot be parsed: $path."}});let i=n.token.ST,a=n.token.TX,c=n.token(l);n.rule("val",e=>{e.def.open.push({s:[c,i]},{s:[c,a]});let t=e.def.bc;return e.def.bc=function(e,s){if(e.open[0]&&c===e.open[0].tin){let t=e.open[1].val,l=o(t,n,s,r);e.open[0].val=l}return t(...arguments)},e})};var r={};Object.defineProperty(r,"__esModule",{value:!0}),r.PrefVal=r.RefVal=r.DisjunctVal=r.ConjunctVal=r.MapVal=r.IntegerVal=r.BooleanVal=r.StringVal=r.NumberVal=r.ScalarTypeVal=r.Nil=r.TOP=r.Integer=r.DONE=void 0;r.DONE=-1;const s={top:!0,val:void 0,done:-1,unify(e,n){return e instanceof h||e instanceof d||e instanceof g?e.unify(this):e},get canon(){return"top"},get dc(){return"top"},same:e=>s===e,gen:e=>{}};r.TOP=s;const o=(e,n,t)=>n===s?e:e===s?n:e.constructor===n.constructor?e.val===n.val?e:new i("no-unify-val:["+e.canon+","+n.canon+"]"):n instanceof i?n:e instanceof i?e:n instanceof h||n instanceof d||n instanceof g?n.unify(e,t):new i("no-unify:"+e.canon+","+n.canon);class l{constructor(e){this.done=0,this.val=e}get dc(){return this.canon+"/*d"+this.done+"*/"}same(e){return this===e}}class i extends l{constructor(e){super(),this.why=e,this.done=-1}unify(e,n){return this}get canon(){return"nil:"+this.why}gen(e){e.push("nil")}}r.Nil=i;class a{}r.Integer=a;class c extends l{constructor(e){super(e),this.done=-1}unify(e,n){if(e instanceof u)return e.type===this.val||Number===this.val&&a===e.type?e:new i("no-scalar-unify");if(e instanceof c){if(Number===this.val&&a===e.val)return e;if(Number===e.val&&a===this.val)return this}return o(this,e)}get canon(){return this.val.name.toLowerCase()}same(e){return e instanceof c?this.val===e.val:super.same(e)}gen(e){e.push("ScalarTypeVal<"+this.canon+">")}}r.ScalarTypeVal=c;class u extends l{constructor(e,n){super(e),this.type=n,this.done=-1}unify(e,n){return e instanceof c?e.unify(this):o(this,e)}get canon(){return this.val.toString()}same(e){return e instanceof u?e.val===this.val:super.same(e)}gen(e){return this.val}}r.NumberVal=class extends u{constructor(e){super(e,Number)}unify(e,n){return e instanceof u&&e.type===a?e:super.unify(e)}},r.IntegerVal=class extends u{constructor(e){if(!Number.isInteger(e))throw new Error("not-integer");super(e,a)}unify(e,n){return e instanceof c&&e.val===Number||e instanceof u&&e.type===Number&&this.val===e.val?this:super.unify(e)}},r.StringVal=class extends u{constructor(e){super(e,String)}unify(e,n){return super.unify(e)}get canon(){return JSON.stringify(this.val)}};class p extends u{constructor(e){super(e,Boolean)}unify(e){return super.unify(e)}}r.BooleanVal=p,p.TRUE=new p(!0),p.FALSE=new p(!1);class f extends l{constructor(e){super(e),this.id="v"+(""+Math.random()).substr(3,5)}unify(e,n){let t=!0,r=this;if(-1!==this.done){(r=new f({})).done=this.done+1;for(let e in this.val)r.val[e]=this.val[e].unify(s,n),t=t&&-1===r.val[e].done}if(e instanceof f){let o=e.unify(s,n);for(let e in o.val){let s=o.val[e],l=this.val[e];r.val[e]=void 0===l?s:l.unify(s,n),t=t&&-1===r.val[e].done}return r.done=t?-1:r.done,r}return r.done=t?-1:r.done,o(r,e)}get canon(){return"{"+Object.keys(this.val).map(e=>[JSON.stringify(e)+":"+this.val[e].canon]).join(",")+"}"}gen(e){let n={};for(let t in this.val)n[t]=this.val[t].gen(e);return n}}r.MapVal=f;class d extends l{constructor(e){super(e)}append(e){return new d([...this.val,e])}prepend(e){return new d([e,...this.val])}unify(e,n){let t=!0,r=[];for(let a=0;a<this.val.length;a++)if(r[a]=this.val[a].unify(e,n),t=t&&-1===r[a].done,r[a]instanceof i)return new i("&peer["+r[a].canon+","+e.canon+"]");let s,o=0<r.length?[r[0]]:[],l=0;for(let a=1;a<r.length;a++)if(o[l]instanceof d)o.splice(l,0,...o[l].val),l+=o[l].val.length,t=!1;else if(o[l]=null==o[l]?r[a]:o[l].unify(r[a],n),t=t&&-1===o[l].done,o[l]instanceof i)return new i("&reduce["+o[l].canon+","+r[a].canon+"]");return(s=0===o.length?new i("&empty"):1===o.length?o[0]:new d(o)).done=t?-1:this.done+1,s}get canon(){return this.val.map(e=>e.canon).join("&")}gen(e){if(0<this.val.length){let n=this.val[0],t=void 0;return void 0===n||n instanceof i?e.push("nil:|:none="+this.canon):t=n.gen(e),t}e.push("nil:|:empty="+this.canon)}}r.ConjunctVal=d;class h extends l{constructor(e){super(e)}append(e){return new h([...this.val,e])}prepend(e){return new h([e,...this.val])}unify(e,n){let t,r=!0,s=[];for(let o=0;o<this.val.length;o++)s[o]=this.val[o].unify(e,n),r=r&&-1===s[o].done;if(1<s.length){for(let n=0;n<s.length;n++)s[n]instanceof h&&s.splice(n,1,...s[n].val);let e=new i("remove");for(let n=0;n<s.length;n++)for(let t=n+1;t<s.length;t++)s[t].same(s[n])&&(s[t]=e);s=s.filter(e=>!(e instanceof i))}if(1==s.length)t=s[0];else{if(0==s.length)return new i("|:empty");t=new h(s)}return t.done=r?-1:this.done+1,t}get canon(){return this.val.map(e=>e.canon).join("|")}gen(e){if(0<this.val.length){let n=this.val.filter(e=>e instanceof m),t=(n=0===n.length?this.val:n)[0];for(let e=1;e<this.val.length;e++)t=t.unify(this.val[e]);return t.gen(e)}e.push("nil:|:empty="+this.canon)}}r.DisjunctVal=h;class g extends l{constructor(e){super(e),this.parts=e.split("/").filter(e=>""!=e),this.absolute=e.startsWith("/")}append(e){this.parts.push(e),this.val=(this.absolute?"/":"")+this.parts.join("/")}unify(e,n){let t,r=null==n?this:n.find(this)||this;return(t=r instanceof g?s===e?new g(this.val):e instanceof i?new i("ref["+this.val+"]"):new d([this,e]):r.unify(e,n)).done=-1===t.done?-1:this.done+1,t}get canon(){return this.val}gen(e){e.push(this.canon)}}r.RefVal=g;class m extends l{constructor(e,n){super(e),this.pref=n||e}unify(e,n){let t;return(t=e instanceof m?new m(this.val.unify(e.val,n),this.pref.unify(e.pref,n)):new m(this.val.unify(e,n),this.pref.unify(e,n))).val instanceof i?t=t.pref:t.pref instanceof i&&(t=t.val),t}get canon(){return this.pref instanceof i?this.val.canon:"*"+this.pref.canon}gen(e){e.push(this.canon);let n=this.pref instanceof i?this.val instanceof i?void 0:this.val:this.pref;return void 0===n?void 0:n.gen(e)}}r.PrefVal=m;var v={};Object.defineProperty(v,"__esModule",{value:!0}),v.Lang=void 0;let b=function(n){n.options({value:{src:{string:()=>new r.ScalarTypeVal(String),number:()=>new r.ScalarTypeVal(Number),integer:()=>new r.ScalarTypeVal(r.Integer),boolean:()=>new r.ScalarTypeVal(Boolean),nil:()=>new r.Nil,top:()=>r.TOP}},token:{"#A&":{c:"&"},"#A|":{c:"|"},"#A/":{c:"/"},"#A*":{c:"*"}},map:{merge:(e,n)=>{let t=e,s=n;return new r.ConjunctVal([t,s])}}});let t=n.token.NR,s=n.token.TX,o=n.token.ST,l=n.token.VL,i=n.token.OB,a=n.token.OS,c=n.token["#A&"],u=n.token["#A|"],p=n.token["#A/"],f=n.token["#A*"];n.rule("expr",()=>new e.RuleSpec({open:[{s:[[c,u,f]],p:"disjunct",b:1,n:{expr:1}}],close:[{s:[]}],bo:e=>e.node={t:e.node},ac:e=>{let n=e.child.node.o;if(n instanceof r.PrefVal)return{err:"single-pref"};e.node=n}})),n.rule("disjunct",()=>new e.RuleSpec({open:[{s:[c],p:"conjunct",b:1},{s:[f],p:"pref",b:1},{s:[u,f],p:"pref",b:1,a:e=>{e.node.o=e.node.o instanceof r.DisjunctVal?e.node.o:new r.DisjunctVal([e.node.t])}},{s:[u,[t,s,o,l,i,a]],b:1,p:"val",a:e=>{e.node.o=e.node.o instanceof r.DisjunctVal?e.node.o:new r.DisjunctVal([e.node.t])}}],close:[{s:[u],r:"disjunct",b:1,a:e=>{var n;let t=(null===(n=e.child.node)||void 0===n?void 0:n.o)||e.child.node;e.node.t=t}},{s:[c],r:"disjunct",b:1,a:e=>{var n;let t=(null===(n=e.child.node)||void 0===n?void 0:n.o)||e.child.node;e.node.t=t,e.child.node=null}},{}],ac:e=>{var n;let t=(null===(n=e.child.node)||void 0===n?void 0:n.o)||e.child.node;t&&(e.node.o instanceof r.DisjunctVal?e.node.o.val.push(t):e.node.o=t)}})),n.rule("conjunct",()=>new e.RuleSpec({open:[{s:[c,[t,s,o,l,i,a,p]],b:1,p:"val",a:e=>{e.node={o:e.node.o instanceof r.ConjunctVal?e.node.o:new r.ConjunctVal([e.node.t])}}}],close:[{s:[c],r:"conjunct",b:1},{}],ac:e=>{var n;let t=(null===(n=e.child.node)||void 0===n?void 0:n.o)||e.child.node;t&&(e.node.o instanceof r.ConjunctVal?e.node.o.val.push(t):e.node.o=t)}})),n.rule("path",()=>new e.RuleSpec({open:[{s:[p,[s,o,t,l]],p:"part",b:2}],bo:e=>e.node=new r.RefVal("/")})),n.rule("part",()=>new e.RuleSpec({open:[{s:[p,[s,o,t,l]],r:"part",a:e=>{e.node.append(e.open[1].src)}},{}]})),n.rule("pref",()=>new e.RuleSpec({open:[{s:[f,[t,s,o,l,i,a,p]],b:1,p:"val"}],close:[{s:[c],e:e=>e.open[1]},{}],ac:e=>{e.node=new r.PrefVal(e.child.node)}})),n.rule("val",e=>{e.def.open.unshift({s:[f,[t,s,o,l,i,a,p]],p:"expr",b:2},{s:[p,[s,o,t,l]],p:"path",b:2}),e.def.close.unshift({s:[[c,u]],p:"expr",b:1,c:e=>null==e.n.expr||0===e.n.expr});let n=e.def.bc;return e.def.bc=function(e,t){let s=n.call(this,e,t),o=e.node,l=typeof o;return"string"===l?o=new r.StringVal(e.node):"number"===l?o=Number.isInteger(e.node)?new r.IntegerVal(e.node):new r.NumberVal(e.node):"boolean"===l&&(o=new r.BooleanVal(e.node)),e.node=o,s},e}),n.rule("map",e=>{let n=e.def.bc;return e.def.bc=function(e,t){let s=n?n.call(this,e,t):void 0;return e.node=new r.MapVal(e.node),s},e})};v.Lang=class{constructor(t){this.jsonic=e.Jsonic.make().use(b).use(n.MultiSource,{resolver:t?t.resolver:void 0})}parse(e,n){let t={};return n&&null!=n.log&&Number.isInteger(n.log)&&(t.log=n.log),Array.isArray(e)?e.map(e=>this.jsonic(e,t)):this.jsonic(e,t)}};var y={};Object.defineProperty(y,"__esModule",{value:!0}),y.Unify=void 0;class x{constructor(e){this.root=e.root}find(e){if(e.absolute){let n=this.root,t=0;for(;t<e.parts.length&&n instanceof r.MapVal;t++){let r=e.parts[t];n=n.val[r]}if(t===e.parts.length)return n}}}y.Unify=class{constructor(e,n){this.dc=0,this.lang=n||new v.Lang,"string"==typeof e&&(e=this.lang.parse(e)),this.root=e,this.res=e;let t,s=e;for(;this.dc<111&&r.DONE!==s.done;)t=new x({root:s}),s=s.unify(r.TOP,t),this.dc++;this.res=s}};var w={};Object.defineProperty(w,"__esModule",{value:!0}),w.util=w.Aontu=void 0;const k=()=>new r.Nil;function S(e,n){let t=j.options(e,n),r=new v.Lang(t).parse(t.src);return new y.Unify(r).res}w.Aontu=S;const j={options:(e,n)=>({src:"",print:0,resolver:k,..."string"==typeof e?{src:e}:e,...n||{}})};return w.util=j,w.default=S,w}));
1
+ "use strict";
2
+ /* Copyright (c) 2021 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.util = exports.Lang = exports.Nil = exports.Val = exports.Aontu = void 0;
5
+ const lang_1 = require("./lib/lang");
6
+ Object.defineProperty(exports, "Lang", { enumerable: true, get: function () { return lang_1.Lang; } });
7
+ const unify_1 = require("./lib/unify");
8
+ const val_1 = require("./lib/val");
9
+ Object.defineProperty(exports, "Val", { enumerable: true, get: function () { return val_1.Val; } });
10
+ Object.defineProperty(exports, "Nil", { enumerable: true, get: function () { return val_1.Nil; } });
11
+ /*
12
+ NEXT:
13
+ inject path from multisource into Vals when created
14
+ report via nil error
15
+ also trace deps into top val and watch via model
16
+ */
17
+ // TODO: error reporting
18
+ // TODO: debug tracing
19
+ // TODO: providers - e.g source files from paths
20
+ // const NoResolver: Resolver = () => ({
21
+ // kind: '<no-kind>',
22
+ // path: '<no-path>',
23
+ // full: '<no-full>',
24
+ // base: '<no-base>',
25
+ // abs: true,
26
+ // found: false,
27
+ // })
28
+ /* `Aontu('a:1') => opts={src:'a:1',print:0,...}`
29
+ * `Aontu('a:1',{print:1}) => opts={src:'a:1',print:1,...}`
30
+ * `Aontu({src:'a:1'},{src:'a:2'}) => opts={src:'a:2',print:0,...}`
31
+ */
32
+ function Aontu(src, popts) {
33
+ let opts = util.options(src, popts);
34
+ let lang = new lang_1.Lang(opts);
35
+ let deps = {};
36
+ let val = lang.parse(opts.src, { deps: deps });
37
+ let uni = new unify_1.Unify(val);
38
+ let res = uni.res;
39
+ let err = uni.err;
40
+ res.deps = deps;
41
+ res.err = err;
42
+ return res;
43
+ }
44
+ exports.Aontu = Aontu;
45
+ const util = {
46
+ options: (src, popts) => {
47
+ // Convert convenience first param into Options.src
48
+ let srcopts = 'string' === typeof src ? { src } : src;
49
+ let opts = {
50
+ ...{
51
+ src: '',
52
+ print: 0,
53
+ resolver: lang_1.includeFileResolver,
54
+ },
55
+ ...srcopts,
56
+ ...(popts || {}),
57
+ };
58
+ return opts;
59
+ },
60
+ };
61
+ exports.util = util;
62
+ exports.default = Aontu;
63
+ //# sourceMappingURL=aontu.js.map
@@ -1,8 +1,8 @@
1
- import { Jsonic, Context } from 'jsonic';
1
+ import { Resolver } from '@jsonic/multisource';
2
2
  declare type Options = {
3
3
  src: string;
4
4
  print: number;
5
- resolver: Resolver;
5
+ resolver?: Resolver;
6
+ base?: string;
6
7
  };
7
- declare type Resolver = (path: string, jsonic: Jsonic, ctx: Context, opts: any) => any;
8
- export { Options };
8
+ export { Options, Resolver, };
@@ -1,9 +1,18 @@
1
1
  import { Jsonic } from 'jsonic';
2
2
  import { Options } from './common';
3
3
  import { Val } from './val';
4
+ declare class Site {
5
+ row: number;
6
+ col: number;
7
+ url: string;
8
+ static NONE: Site;
9
+ constructor(val: Val);
10
+ }
11
+ declare const includeFileResolver: import("@jsonic/multisource").Resolver;
4
12
  declare class Lang {
5
13
  jsonic: Jsonic;
14
+ options: Options;
6
15
  constructor(options?: Partial<Options>);
7
- parse<T extends string | string[]>(src: T, opts?: any): (T extends string ? Val : Val[]);
16
+ parse(src: string, opts?: any): Val;
8
17
  }
9
- export { Lang };
18
+ export { Lang, Site, includeFileResolver, };