New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

aontu

Package Overview
Dependencies
Maintainers
1
Versions
43
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

aontu - npm Package Compare versions

Comparing version 0.0.9 to 0.1.1

23

aontu.ts
/* Copyright (c) 2021 Richard Rodger, MIT License */
import { Resolver } from '@jsonic/multisource'
import { Options } from './lib/common'
import { Lang } from './lib/lang'
import { Lang, includeFileResolver } from './lib/lang'
import { Unify } from './lib/unify'

@@ -22,7 +20,10 @@ import { Val, Nil } from './lib/val'

const NoResolver = () => ({
path: '<no-path>',
full: '<no-full>',
base: '<no-base>',
})
// const NoResolver: Resolver = () => ({
// kind: '<no-kind>',
// path: '<no-path>',
// full: '<no-full>',
// base: '<no-base>',
// abs: true,
// found: false,
// })

@@ -36,4 +37,2 @@ /* `Aontu('a:1') => opts={src:'a:1',print:0,...}`

// console.log('A opts', opts)
let lang = new Lang(opts)

@@ -64,3 +63,3 @@ let deps = {}

print: 0,
resolver: NoResolver,
resolver: includeFileResolver,
},

@@ -74,3 +73,3 @@ ...srcopts,

export { Aontu, Val, Nil, Resolver, util }
export { Aontu, Val, Nil, Lang, util }
export default Aontu

@@ -1,9 +0,9 @@

import { Resolver } from '@jsonic/multisource';
import { Options } from './lib/common';
import { Lang } from './lib/lang';
import { Val, Nil } from './lib/val';
declare function Aontu(src: string | Partial<Options>, popts?: Partial<Options>): Val;
declare const util: {
options: (src: string | Partial<Options>, popts?: Partial<Options> | undefined) => Options;
options: (src: string | Partial<Options>, popts?: Partial<Options>) => Options;
};
export { Aontu, Val, Nil, Resolver, util };
export { Aontu, Val, Nil, Lang, util };
export default Aontu;
"use strict";
/* Copyright (c) 2021 Richard Rodger, MIT License */
Object.defineProperty(exports, "__esModule", { value: true });
exports.util = exports.Nil = exports.Val = exports.Aontu = void 0;
exports.util = exports.Lang = exports.Nil = exports.Val = exports.Aontu = void 0;
const lang_1 = require("./lib/lang");
Object.defineProperty(exports, "Lang", { enumerable: true, get: function () { return lang_1.Lang; } });
const unify_1 = require("./lib/unify");

@@ -19,7 +20,10 @@ const val_1 = require("./lib/val");

// TODO: providers - e.g source files from paths
const NoResolver = () => ({
path: '<no-path>',
full: '<no-full>',
base: '<no-base>',
});
// const NoResolver: Resolver = () => ({
// kind: '<no-kind>',
// path: '<no-path>',
// full: '<no-full>',
// base: '<no-base>',
// abs: true,
// found: false,
// })
/* `Aontu('a:1') => opts={src:'a:1',print:0,...}`

@@ -31,3 +35,2 @@ * `Aontu('a:1',{print:1}) => opts={src:'a:1',print:1,...}`

let opts = util.options(src, popts);
// console.log('A opts', opts)
let lang = new lang_1.Lang(opts);

@@ -52,3 +55,3 @@ let deps = {};

print: 0,
resolver: NoResolver,
resolver: lang_1.includeFileResolver,
},

@@ -55,0 +58,0 @@ ...srcopts,

@@ -1,1 +0,63 @@

!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=function(e){var t;return function(n){return t||e(t={exports:{},parent:n},t.exports),t.exports}},t=e((function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Site=t.Lang=void 0;const r=n({});class s{constructor(e){this.row=-1,this.col=-1,this.url="",this.row=e.row,this.col=e.col,this.url=e.url}}t.Site=s,s.NONE=new s(r.TOP);let o=function(e){e.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("literal"),top:()=>r.TOP}},token:{"#A&":{c:"&"},"#A|":{c:"|"},"#A/":{c:"/"},"#A*":{c:"*"},"#A=":{c:"="}},map:{merge:(e,t)=>{let n=e,s=t;return new r.ConjunctVal([n,s])}}});let t=e.token.NR,n=e.token.TX,s=e.token.ST,o=e.token.VL,i=e.token.OB,c=e.token.OS,a=e.token["#A&"],u=e.token["#A|"],p=e.token["#A/"],f=e.token["#A*"],h=e.token["#A="];e.rule("expr",()=>new l.RuleSpec({open:[{s:[[a,u,f]],p:"disjunct",b:1,n:{expr:1}}],close:[{s:[]}],bo:e=>e.node={t:e.node},ac:e=>{let t=e.child.node.o;if(t instanceof r.PrefVal)return{err:"single-pref"};e.node=t}})),e.rule("disjunct",()=>new l.RuleSpec({open:[{s:[a],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,n,s,o,i,c]],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 t;let n=(null===(t=e.child.node)||void 0===t?void 0:t.o)||e.child.node;e.node.t=n}},{s:[a],r:"disjunct",b:1,a:e=>{var t;let n=(null===(t=e.child.node)||void 0===t?void 0:t.o)||e.child.node;e.node.t=n,e.child.node=null}},{}],ac:e=>{var t;let n=(null===(t=e.child.node)||void 0===t?void 0:t.o)||e.child.node;n&&(e.node.o instanceof r.DisjunctVal?e.node.o.append(n):e.node.o=n)}})),e.rule("conjunct",()=>new l.RuleSpec({open:[{s:[a,[t,n,s,o,i,c,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:[a],r:"conjunct",b:1},{}],ac:e=>{var t;let n=(null===(t=e.child.node)||void 0===t?void 0:t.o)||e.child.node;n&&(e.node.o instanceof r.ConjunctVal?e.node.o.append(n):e.node.o=n)}})),e.rule("path",()=>new l.RuleSpec({open:[{s:[p,[n,s,t,o]],p:"part",b:2}],bo:e=>e.node=new r.RefVal("/")})),e.rule("part",()=>new l.RuleSpec({open:[{s:[p,[n,s,t,o]],r:"part",a:e=>{e.node.append(e.open[1].src)}},{}]})),e.rule("pair",e=>{e.def.open.unshift({s:[[a,u],h],p:"val",u:{spread:!0}});let t=e.def.bc;return e.def.bc=function(e,n){let s=t.call(this,e,n);return e.use.spread&&(e.node[r.MapVal.SPREAD]=e.node[r.MapVal.SPREAD]||{o:e.open[0].src,v:[]},e.node[r.MapVal.SPREAD].v.push(e.child.node)),s},e}),e.rule("pref",()=>new l.RuleSpec({open:[{s:[f,[t,n,s,o,i,c,p]],b:1,p:"val"}],close:[{s:[a],e:e=>e.open[1]},{}],ac:e=>{e.node=new r.PrefVal(e.child.node)}})),e.rule("val",e=>{e.def.open.unshift({s:[f,[t,n,s,o,i,c,p]],p:"expr",b:2},{s:[p,[n,s,t,o]],p:"path",b:2}),e.def.close.unshift({s:[[a,u]],p:"expr",b:1,c:e=>null==e.n.expr||0===e.n.expr});let l=e.def.bc;return e.def.bc=function(e,t){let n=l.call(this,e,t),s=e.node,o=typeof s;"string"===o?s=new r.StringVal(e.node):"number"===o?s=Number.isInteger(e.node)?new r.IntegerVal(e.node):new r.NumberVal(e.node):"boolean"===o&&(s=new r.BooleanVal(e.node));let i=e.open[0];return s.row=i.row,s.col=i.col,s.url=t.meta.multisource&&t.meta.multisource.path,e.node=s,n},e}),e.rule("map",e=>{let t=e.def.bc;return e.def.bc=function(e,n){let s=t?t.call(this,e,n):void 0;return e.node=new r.MapVal(e.node),s},e})};t.Lang=class{constructor(e){this.options={src:"",print:-1},this.options=Object.assign({},this.options,e),this.jsonic=l.Jsonic.make().use(o).use(O.MultiSource,{resolver:e?e.resolver:void 0})}parse(e,t){let n={multisource:{path:this.options.base,deps:t&&t.deps||void 0}};return t&&null!=t.log&&Number.isInteger(t.log)&&(n.log=t.log),this.jsonic(e,n)}}})),n=e((function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PrefVal=n.RefVal=n.DisjunctVal=n.ConjunctVal=n.MapVal=n.IntegerVal=n.BooleanVal=n.StringVal=n.NumberVal=n.ScalarTypeVal=n.Nil=n.TOP=n.Val=n.Integer=n.DONE=void 0;const o=r({}),i=t({}),l=s({});n.DONE=-1;const c={id:0,top:!0,peg:void 0,done:-1,path:[],row:-1,col:-1,url:"",unify:(e,t)=>e,get canon(){return"top"},get site(){return new i.Site(this)},same:e=>c===e,gen:e=>{}};n.TOP=c;class a{constructor(e,t){this.done=0,this.row=-1,this.col=-1,this.url="",this.peg=e,this.path=t&&t.path||[],this.id=t&&t.vc++||9e9+Math.floor(1e9*Math.random())}same(e){return this===e}get site(){return new i.Site(this)}}n.Val=a;class u extends a{constructor(e,t){super(null,t),this.nil=!0,this.why=e,this.done=-1}unify(e,t){return this}get canon(){return"nil"}gen(e){}}n.Nil=u,u.make=(e,t,n,r)=>{let s=new u(t,e);return null!=n&&(s.row=n.row,s.col=n.col,s.url=n.url,s.primary=n,null!=r)&&(s.secondary=r,s.url===r.url&&(s.row<r.row||s.row===r.row&&s.col<r.col)&&(s.row=r.row,s.col=r.col,s.url=r.url,s.primary=r,s.secondary=n)),e&&e.err.push(s),s};class p{}n.Integer=p;class f extends a{constructor(e,t){super(e,t),this.done=-1}unify(e,t){if(e instanceof h)return e.type===this.peg||Number===this.peg&&p===e.type?e:u.make(t,"no-scalar-unify",this,e);if(e instanceof f){if(Number===this.peg&&p===e.peg)return e;if(Number===e.peg&&p===this.peg)return this}return u.make(t,"scalar-type",this,e)}get canon(){return this.peg.name.toLowerCase()}same(e){return e instanceof f?this.peg===e.peg:super.same(e)}gen(e){}}n.ScalarTypeVal=f;class h extends a{constructor(e,t,n){super(e,n),this.type=t,this.done=-1}unify(e,t){return e instanceof f?e.unify(this,t):u.make(t,"scalar",this,e)}get canon(){return this.peg.toString()}same(e){return e instanceof h?e.peg===this.peg:super.same(e)}gen(e){return this.peg}}n.NumberVal=class extends h{constructor(e,t){super(e,Number,t)}unify(e,t){return e instanceof h&&e.type===p?e:super.unify(e,t)}},n.IntegerVal=class extends h{constructor(e,t){if(!Number.isInteger(e))throw new Error("not-integer");super(e,p,t)}unify(e,t){return e instanceof f&&e.peg===Number||e instanceof h&&e.type===Number&&this.peg===e.peg?this:super.unify(e,t)}},n.StringVal=class extends h{constructor(e,t){super(e,String,t)}unify(e,t){return super.unify(e,t)}get canon(){return JSON.stringify(this.peg)}};class d extends h{constructor(e,t){super(e,Boolean,t)}unify(e,t){return super.unify(e,t)}}n.BooleanVal=d,d.TRUE=new d(!0,new o.Context({vc:1,root:c})),d.FALSE=new d(!1,new o.Context({vc:2,root:c}));class g extends a{constructor(e,t){super(e,t),this.spread={cj:void 0};let n=this.peg[g.SPREAD];delete this.peg[g.SPREAD],n&&"&"===n.o&&(this.spread.cj=new m(Array.isArray(n.v)?n.v:[n.v],t))}unify(e,t){let n=!0,r=c===e?this:new g({},t);r.spread.cj=this.spread.cj,e instanceof g&&(r.spread.cj=null==r.spread.cj?e.spread.cj:null==e.spread.cj?r.spread.cj:r.spread.cj=new m([r.spread.cj,e.spread.cj],t)),r.done=this.done+1,this.spread.cj&&(r.spread.cj=-1!==this.spread.cj.done?l.unite(t,this.spread.cj):this.spread.cj);let s=r.spread.cj||c;for(let o in this.peg)r.peg[o]=l.unite(t.descend(o),this.peg[o],s),n=n&&-1===r.peg[o].done;if(e instanceof g){let o=l.unite(t,e);for(let e in o.peg){let i=o.peg[e],c=r.peg[e],a=r.peg[e]=void 0===c?i:c instanceof u?c:i instanceof u?i:l.unite(t.descend(e),c,i);this.spread.cj&&(r.peg[e]=l.unite(t,r.peg[e],s)),n=n&&-1===a.done}}else if(c!==e)return u.make(t,"map",this,e);return r.done=n?-1:r.done,r}get canon(){let e=Object.keys(this.peg);return"{"+(this.spread.cj?"&="+this.spread.cj.canon+(0<e.length?",":""):"")+e.map(e=>[JSON.stringify(e)+":"+this.peg[e].canon]).join(",")+"}"}gen(e){let t={};for(let n in this.peg)t[n]=this.peg[n].gen(e);return t}}n.MapVal=g,g.SPREAD=Symbol("spread");class m extends a{constructor(e,t){super(e,t)}append(e){return this.peg.push(e),this}unify(e,t){let n=!0,r=[];for(let c=0;c<this.peg.length;c++)if(r[c]=l.unite(t,this.peg[c],e),n=n&&-1===r[c].done,r[c]instanceof u)return u.make(t,"&peer["+r[c].canon+","+e.canon+"]",this.peg[c],e);let s,o=0<r.length?[r[0]]:[],i=0;for(let c=1;c<r.length;c++)if(o[i]instanceof m)o.splice(i,0,...o[i].peg),i+=o[i].peg.length,n=!1;else if(o[i]=null==o[i]?r[c]:l.unite(t,o[i],r[c]),n=n&&-1===o[i].done,o[i]instanceof u)return o[i];return(s=0===o.length?c:1===o.length?o[0]:new m(o,t)).done=n?-1:this.done+1,s}get canon(){return this.peg.map(e=>e.canon).join("&")}gen(e){if(0<this.peg.length){let t=this.peg[0],n=void 0;return void 0===t||t instanceof u||(n=t.gen(e)),n}}}n.ConjunctVal=m;class b extends a{constructor(e,t,n){super(e,t)}append(e){return this.peg.push(e),this}unify(e,t){let n,r=!0,s=[];for(let o=0;o<this.peg.length;o++)s[o]=l.unite(t,this.peg[o],e),r=r&&-1===s[o].done;if(1<s.length){for(let t=0;t<s.length;t++)s[t]instanceof b&&s.splice(t,1,...s[t].peg);let e=new u;for(let t=0;t<s.length;t++)for(let n=t+1;n<s.length;n++)s[n].same(s[t])&&(s[n]=e);s=s.filter(e=>!(e instanceof u))}if(1==s.length)n=s[0];else{if(0==s.length)return u.make(t,"|:empty",this);n=new b(s,t)}return n.done=r?-1:this.done+1,n}get canon(){return this.peg.map(e=>e.canon).join("|")}gen(e){if(0<this.peg.length){let t=this.peg.filter(e=>e instanceof y),n=(t=0===t.length?this.peg:t)[0];for(let e=1;e<this.peg.length;e++)n=n.unify(this.peg[e]);return n.gen(e)}}}n.DisjunctVal=b;class v extends a{constructor(e,t){super(e,t),this.parts=e.split("/").filter(e=>""!=e),this.absolute=e.startsWith("/")}append(e){this.parts.push(e),this.peg=(this.absolute?"/":"")+this.parts.join("/")}unify(e,t){let n,r=null==t?this:t.find(this);return(r=null==r&&999<this.done?u.make(t,"no-path",this,e):r||this)instanceof v?c===e?n=this:e instanceof u?n=u.make(t,"ref["+this.peg+"]",this,e):(this.done=-1===this.done?-1:this.done+1,n=new m([this,e],t)):n=l.unite(t,r,e),n.done=-1===n.done?-1:this.done+1,n}get canon(){return this.peg}gen(e){}}n.RefVal=v;class y extends a{constructor(e,t,n){super(e,n),this.pref=t||e}unify(e,t){let n,r=!0;return n=e instanceof y?new y(l.unite(t,this.peg,e.peg),l.unite(t,this.pref,e.pref),t):new y(l.unite(t,this.peg,e),l.unite(t,this.pref,e),t),r=r&&-1===n.peg.done&&(null==n.pref||-1===n.pref.done),n.peg instanceof u?n=n.pref:n.pref instanceof u&&(n=n.peg),n.done=r?-1:this.done+1,n}get canon(){return this.pref instanceof u?this.peg.canon:"*"+this.pref.canon}gen(e){let t=this.pref instanceof u?this.peg instanceof u?void 0:this.peg:this.pref;return void 0===t?void 0:t.gen(e)}}n.PrefVal=y})),r=e((function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.Unify=r.Context=void 0;const o=n({}),i=t({}),l=s({});class c{constructor(e){this.root=e.root,this.path=[],this.err=e.err||[],this.vc=null==e.vc?1e9:e.vc}clone(e){return new c({root:e.root,err:this.err,vc:this.vc})}descend(e){return this.clone({root:this.root,path:this.path.concat(e)})}find(e){if(this.root instanceof o.MapVal&&e.absolute){let t=this.root,n=0;for(;n<e.parts.length&&t instanceof o.MapVal;n++){let r=e.parts[n];t=t.peg[r]}if(n===e.parts.length)return t}}}r.Context=c,r.Unify=class{constructor(e,t){this.lang=t||new i.Lang,"string"==typeof e&&(e=this.lang.parse(e)),this.root=e,this.res=e,this.err=[];let n=e,r=new c({root:n,err:this.err});for(this.dc=0;this.dc<999&&o.DONE!==n.done;this.dc++)n=l.unite(r,n,o.TOP),r=r.clone({root:n});this.res=n}}})),s=e((function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.unite=void 0;const n=i({});Object.defineProperty(t,"disjunct",{enumerable:!0,get:function(){return n.disjunct}});const r=o({});Object.defineProperty(t,"unite",{enumerable:!0,get:function(){return r.unite}})})),o=e((function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.unite=void 0;const r=n({});function s(e,t){return e}t.unite=(e,t,n)=>{let o=t;if(!n||r.TOP!==t&&t)if(!t||r.TOP!==n&&n){if(t&&n&&r.TOP!==n)if(t instanceof r.Nil)o=s(t);else if(n instanceof r.Nil)o=s(n);else{if(n instanceof r.ConjunctVal||n instanceof r.DisjunctVal||n instanceof r.RefVal||n instanceof r.PrefVal)return n.unify(t,e);o=t.constructor===n.constructor&&t.peg===n.peg?s(t):t.unify(n,e)}}else o=t;else o=n;return o||(o=r.Nil.make(e,"unite",t,n)),r.DONE!==o.done&&(o=o.unify(r.TOP,e)),o}})),i=e((function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.disjunct=void 0;const s=t({}),o=n({});function i(e,t){let n=s.Site.NONE;return t instanceof o.DisjunctVal?(e.push(...t.peg),n=t.site):t instanceof o.Val&&e.push(t),n}r.disjunct=(e,t,n)=>{let r=[],s=[];return s.push(i(r,t)),s.push(i(r,n)),new o.DisjunctVal(r,e,s)}})),l={exports:{}};(function(e){(function(){!function(t){"object"==typeof l.exports?l.exports=t():("undefined"!=typeof window?window:void 0!==e?e:"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 t=Object.keys,n=Object.entries,r=Object.assign,s=Object.defineProperty,o="object",i="string",l="function",c="unexpected",a="map",u="list",p="elem",f="pair",h="val",d="block_indent_",g="imp,map",m="imp,list",b="imp,null",v="open",y="close",x="null";class w extends SyntaxError{constructor(e,t,n,s,o){let i=X(e,t=I({},t),n,s,o);super(i.message),r(this,i),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={},R("@LTP",e),R("@LTX",e),R("@LCS",e),R("@LML",e),this.end={tin:R("#ZZ",e),loc:0,len:0,row:0,col:0,val:void 0,src:void 0}}start(e){const n=e.opts,r=e.cnfg;let s=e=>R(e,r),o=e=>R(e,r),i=e.F,a=s("@LTP"),u=s("@LTX"),p=s("@LCS"),f=s("@LML"),h=s("#ZZ"),g=s("#SP"),m=s("#CM"),b=s("#NR"),v=s("#ST"),y=s("#TX"),x=s("#VL"),w=s("#LN"),k={tin:h,loc:0,row:0,col:0,len:0,val:void 0,src:void 0},j=0,A=0,S=0,C=a,T=null,N=e.src(),O=N.length,_=null!=e.log?(...t)=>e.log("lex",o(k.tin),i(k.src),j,A+":"+S,o(C),{...k},...t):void 0,V=(t,n,r,s)=>this.bad(e,_,t,k,j,n,A,S,r,r,s),P=t=>{let n=this.match[C];if(null!=n)for(let r of n){let n=r({sI:j,rI:A,cI:S,src:N,token:k,ctx:e,rule:t,bad:V});if(n)return j=n.sI?n.sI:j,A=n.rI?n.rI:A,S=n.cI?n.cI:S,C=null==n.state?C:n.state,T=null==n.state_param?T:n.state_param,_&&_(k,r),k}},E=function(s){k.len=0,k.val=void 0,k.src=void 0,k.row=A,k.use=void 0;let o={},i=0,E=[];e:for(;j<O;){let h=N[j];if(k.loc=j,k.col=S,e.xs=C,a!==C){if(u===C){if(P(s))return k;i=j;let e=N.substring(j).match(r.re.te);if(e){let t=e[0].length;i+=t,S+=t}return k.len=i-j,k.tin=y,k.val=N.substring(j,i),k.src=k.val,j=i,C=a,_&&_(k),k}if(p===C){if(P(s))return k;for(i=j;i<O&&!o[N[i]];)i++,S++;return k.val+=N.substring(j,i),k.src=k.val,k.len=k.val.length,j=i,C=a,_&&_(k),k}if(f===C){if(P(s))return k;i=j;let e=1,o=T[0],l=T[1],c=T[2],u=!!T[3],p="",f=0,h=o.length,g=l.length;if(u){let e=j-1;for(;-1<e&&r.m.SP[N[e]];)e--;0<(f=j-e-1)&&(p=t(r.m.SP)[0].repeat(f))}for(i+=o.length;i<O&&0<e;)l[0]===N[i]&&l===N.substring(i,i+g)?(i+=g,S+=g,e--):c&&o[0]===N[i]&&o===N.substring(i,i+h)?(i+=h,S+=g,e++):(n.line.row===N[i]?(A++,S=0):S++,i++);if(k.val=N.substring(j,i),k.src=k.val,k.len=k.val.length,u){k.val=k.val.substring(h,k.val.length-g),null==r.re.block_prefix&&(r.re.block_prefix=J("","^[",$(n.token["#SP"]),"]*(",n.line.sep,")")),k.val=k.val.replace(r.re.block_prefix,""),null==r.re.block_suffix&&(r.re.block_suffix=J("",n.line.sep,"[",$(n.token["#SP"]),"]*$")),k.val=k.val.replace(r.re.block_suffix,"");let e=r.re[d+p]=r.re[d+p]||J("g","^(",$(p),")|((",n.line.sep,")",$(p),")");k.val=k.val.replace(e,"$3")}return j=i,C=a,_&&_(k),k}return V("invalid_lex_state",j,N[j],{state:C})}if(P(s))return k;if(n.space.lex&&r.m.SP[h]){for(k.tin=g,S++,i=j+1;r.m.SP[N[i]];)S++,i++;return k.len=i-j,k.val=N.substring(j,i),k.src=k.val,j=i,_&&_(k),k}if(n.line.lex&&r.m.LN[h]){for(k.tin=w,i=j,S=0;r.m.LN[N[i]];)A+=n.line.row===N[i]?1:0,i++;return k.len=i-j,k.val=N.substring(j,i),k.src=k.val,j=i,_&&_(k),k}if(n.number.lex&&r.m.NR[h]){let e=N.substring(j).match(r.re.nm);if(null!=e){let t=e[0];if(i=j+t.length,null==N[i]||r.cs.vend[N[i]]){let e=+(r.re.ns?t.replace(r.re.ns,""):t);if(!isNaN(e))return k.tin=b,k.src=t,k.val=e,k.len=t.length,j+=k.len,S+=k.len,_&&_(k),k}}}if(null!=r.sm[h])return k.tin=r.sm[h],k.len=1,k.src=h,j++,S++,_&&_(k),k;if(n.block.lex&&r.cs.bs[h]){let e=N.substring(j,j+r.bmx);for(let t of r.bmk)if(e.startsWith(t)){k.tin=v,C=f,T=[t,n.block.marker[t],null,!0];continue e}}if(n.string.lex&&r.m.ST[h]){k.tin=v,S++;let e=r.cs.mln[h];E=[];let t="";for(i=j+1;i<O;i++)if(S++,h===(t=N[i])){if(!n.string.escapedouble||h!==N[i+1]){i++;break}E.push(N[i]),i++}else if("\\"===t){i++,S++;let e=r.esc[N[i]];if(null!=e)E.push(e);else if("x"===N[i]){i++;let e=parseInt(N.substring(i,i+2),16);if(isNaN(e))return j=i-2,S-=2,V("invalid_ascii",i+2,N.substring(i-2,i+2));let t=String.fromCharCode(e);E.push(t),i+=1,S+=2}else if("u"===N[i]){let e="{"===N[++i]?(i++,1):0,t=e?6:4,n=parseInt(N.substring(i,i+t),16);if(isNaN(n))return j=i-2-e,S-=2,V("invalid_unicode",i+t+1,N.substring(i-2-e,i+t+e));let r=String.fromCodePoint(n);E.push(r),i+=t-1+e,S+=t+e}else E.push(N[i])}else{let s=i,o=h.charCodeAt(0),l="\\".charCodeAt(0),c=N.charCodeAt(i);for(;i<O&&32<=c&&o!==c&&l!==c;)c=N.charCodeAt(++i),S++;if(S--,t=N[i],c<32){if(!e||!r.m.LN[t])return V("unprintable",i,"char-code="+N[i].charCodeAt(0));t===n.line.row&&(A++,S=0),E.push(N.substring(s,i+1))}else E.push(N.substring(s,i)),i--}return h!==t?V("unterminated",i,E.join("")):(k.val=E.join(""),k.src=N.substring(j,i),k.len=i-j,j=i,_&&_(k),k)}if(n.comment.lex&&r.cs.cs[h]){let e=N.substring(j,j+r.cmx);for(let t of r.cmk)if(e.startsWith(t)){if(!0!==r.cm[t]){k.tin=m,k.val="",C=f,T=[t,r.cm[t],n.comment.balance];continue e}break}k.tin=m,k.val="",C=p,o=r.m.LN}else{if(n.value.lex&&r.vs[h]){i=j;do{i++}while(null!=N[i]&&!r.cs.vend[N[i]]);let t=N.substring(j,i),n=r.vm[t];if(void 0!==(n=l===typeof n?n({sI:j,rI:A,cI:S,src:N,token:k,ctx:e,rule:s,bad:V}):n))return k.tin=x,k.val=n,k.src=t,k.len=i-j,S+=k.len,j=i,_&&_(k),k}if(!n.text.lex)return V(c,j,N[j]);C=u}}return k.tin=h,k.loc=O,k.col=S,_&&_(k),k};return E.src=N,E}bad(e,t,n,r,s,o,i,l,c,a,u){return r.why=n,r.tin=R("#BD",e.cnfg),r.loc=s,r.row=i,r.col=l,r.len=o-s,r.val=c,r.src=a,r.use=u,t&&t(R(r.tin,e.cnfg),e.F(r.src),s,i+":"+l,{...r},"error",n),r}lex(e,t){if(null==e)return this.match;let n=this.match[e];return null!=t?(null==n&&(n=this.match[e]=[]),n.push(t)):null===t&&(n=this.match[e],delete this.match[e]),n}clone(e){let t=new k(e);return I(t.match,this.match),t}}var j;e.exports.Lexer=k,function(e){e[e.open=0]="open",e[e.close=1]="close"}(j||(j={}));class A{constructor(e,t,n){this.id=t.uI++,this.name=e.name,this.spec=e,this.node=n,this.state=j.open,this.child=S,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=A;const S={name:"none",state:0};class C{constructor(){this.m=[],this.p="",this.r="",this.b=0}}e.exports.Alt=C;const T=new C,N=new C;class O{constructor(e){function t(e){let t=null!=e.c&&e.c.n;t&&(e.c=e=>{let n=!0;for(let r in t)n=n&&(null==e.n[r]||e.n[r]<=t[r]);return n}),i===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 n of[...this.def.open,...this.def.close])t(n)}process(e,t,n){let r,s="",o=t.F,i=n===j.open,l=i?e:S,a=this.def,u=i?a.open:a.close,p=i?e.bo&&a.bo:e.bc&&a.bc;if(p&&(r=p.call(this,e,t))){if(r.err)throw new w(r.err,{...r,state:i?v:y},t.t0,e,t);e.node=r.node||e.node}let f=r&&r.alt?{...N,...r.alt}:0<u.length?this.parse_alts(u,e,t):N;if(f.h&&(f=f.h(e,t,f,l)||f,s+="H"),i?e.open=f.m:e.close=f.m,f.e)throw new w(c,{...f.e.use,state:i?v:y},f.e,e,t);if(f.n)for(let c in f.n)e.n[c]=0===f.n[c]?0:(null==e.n[c]?0:e.n[c])+f.n[c],e.n[c]=0<e.n[c]?e.n[c]:0;f.u&&(e.use=Object.assign(e.use,f.u)),f.a&&(s+="A",f.a.call(this,e,t,f,l)),f.p?(t.rs.push(e),(l=e.child=new A(t.rsm[f.p],t,e.node)).parent=e,l.n={...e.n},s+="U"):f.r?((l=new A(t.rsm[f.r],t,e.node)).parent=e.parent,l.prev=e,l.n={...e.n},s+="R"):(i||(l=t.rs.pop()||S),s+="Z");let h=i?e.ao&&a.ao:e.ac&&a.ac;if(h){let n=h.call(this,e,t,f,l);if(n){if(n.err)throw t.t0.why=s,new w(n.err,{...n,state:i?v:y},t.t0,e,t);l=n.next||l}}l.why=s,t.log&&t.log("node",e.name+"~"+e.id,j[e.state],"w="+s,o(e.node));let d=0,g=f.m.length-(f.b||0);for(;d++<g;)t.next();return j.open===e.state&&(e.state=j.close),l}parse_alts(e,t,r){let s,o=T;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 i,l=0,c=r.cnfg.t,a=e.length;for(l=0;l<a&&(i=!1,null==(s=e[l]).s||0===s.s.length?i=!0:(s.s[0]===r.t0.tin||s.s[0]===c.AA||Array.isArray(s.s[0])&&s.s[0].includes(r.t0.tin))&&(1===s.s.length?(o.m=[r.t0],i=!0):(s.s[1]===r.t1.tin||s.s[1]===c.AA||Array.isArray(s.s[1])&&s.s[1].includes(r.t1.tin))&&(o.m=[r.t0,r.t1],i=!0)),!(i=(i=i&&(!s.c||s.c(t,r,o)))&&(null==s.d||s.d===r.rs.length)));l++)s=null;return null==s&&c.ZZ!==r.t0.tin&&(o.e=r.t0),null!=s&&(o.e=s.e&&s.e(t,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",t.name+"~"+t.id,j[t.state],l<e.length?"alt="+l:"no-alt",l<e.length&&s.s?"["+s.s.map(e=>c[e]).join(" ")+"]":"[]",r.tC,"p="+(o.p||""),"r="+(o.r||""),"b="+(o.b||""),o.m.map(e=>c[e.tin]).join(" "),r.F(o.m.map(e=>e.src)),"c:"+(s&&s.c?i:""),"n:"+n(t.n).join(";"),"u:"+n(t.use).join(";"),o),o}}e.exports.RuleSpec=O;class _{constructor(e,t){this.rsm={},this.options=e,this.config=t}init(){let e=this.config.t,n=e.OB,r=e.CB,s=e.OS,o=e.CS,i=e.CL,l=e.CA,c=e.TX,d=e.NR,v=e.ST,y=e.VL,w=e.AA,k=e.ZZ,j=(e,t)=>{if(!this.options.rule.finish)return t.t0.src="END_OF_SOURCE",t.t0},A={val:{open:[{s:[n,l],p:a,n:{im:0},g:g},{s:[n],p:a,n:{im:0}},{s:[s],p:u},{s:[l],d:0,p:u,b:1,g:m},{s:[l],b:1,g:m},{s:[[c,d,v,y],i],p:a,b:2,n:{im:1},g:g},{s:[[c,d,v,y]]},{s:[r],b:1,g:b},{s:[o],b:1,g:b}],close:[{s:[l],d:0,r:p,a:e=>e.node=[e.node],g:m},{c:(e,t,n)=>(c===t.t0.tin||d===t.t0.tin||v===t.t0.tin||y===t.t0.tin)&&0===t.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:[[c,d,v,y],i],p:h,u:{key:!0}},{s:[r],b:1}],close:[{s:[r]},{s:[l],c:{n:{im:1}},r:f},{s:[l],b:1},{s:[[c,d,v,y],i],c:{n:{im:1}},r:f,b:2},{s:[[c,d,v,y],i],b:2},{s:[o],b:1},{s:[k],e:j,g:"end"}],bc:(e,t)=>{if(e.use.key){let n=e.open[0],r=v===n.tin?n.val:n.src,s=e.child.node,o=e.node[r];void 0===s&&i===t.v1.tin&&(s=null),e.node[r]=null==o?s:t.opts.map.merge?t.opts.map.merge(o,s):t.opts.map.extend?I(o,s):s}}},elem:{open:[{s:[n],p:a,n:{im:0}},{s:[s],p:u},{s:[l,l],b:2,g:x,a:e=>e.node.push(null)},{s:[l],g:x,a:e=>e.node.push(null)},{p:h,n:{im:1}}],close:[{s:[l,o]},{s:[l],r:p},{s:[o]},{s:[n],p:a,n:{im:0}},{s:[s],p:u},{s:[[c,d,v,y]],r:p,b:1},{s:[k],e:j,g:"end"}],bc:e=>{void 0!==e.child.node&&e.node.push(e.child.node)}}};this.rsm=t(A).reduce((e,t)=>(e[t]=new O(A[t]),e[t].name=t,e),{})}rule(e,t){if(null==e)return this.rsm;let n=this.rsm[e];return null===t?delete this.rsm[e]:void 0!==t&&((n=this.rsm[e]=t(this.rsm[e],this.rsm)||this.rsm[e]).name=e),n}start(e,n,r,s,o){let i,l={uI:1,opts:this.options,cnfg:this.config,meta:s||{},src:()=>n,root:()=>i.node,plgn:()=>r.internal().plugins,rule:S,xs:-1,v2:e.end,v1:e.end,t0:e.end,t1:e.end,tC:-2,next:d,rs:[],rsm:this.rsm,log:s&&s.log||void 0,F:E(this.config),use:{}};null!=o&&(l=I(l,o)),F(l);let a=e=>R(e,this.config),u=U(e.start(l),R("#BD",this.config),l),p=this.rsm[this.options.rule.start];if(null==p)return;let f=new A(p,l);i=f;let h=2*t(this.rsm).length*u.src.length*2*this.options.rule.maxmul;function d(){let e;l.v2=l.v1,l.v1=l.t0,l.t0=l.t1;do{e=u(f),l.tC++}while(l.cnfg.ts.IGNORE[e.tin]);return l.t1={...e},l.t0}d(),d();let g=0;for(;S!==f&&g<h;)l.log&&l.log("rule",f.name+"~"+f.id,j[f.state],l.rs.length,l.tC,"["+a(l.t0.tin)+" "+a(l.t1.tin)+"]","["+l.F(l.t0.src)+" "+l.F(l.t1.src)+"]",f,l),l.rule=f,f=f.process(l),l.log&&l.log("stack",l.rs.length,l.rs.map(e=>e.name+"~"+e.id).join("/"),f,l),g++;if(R("#ZZ",this.config)!==l.t0.tin)throw new w(c,{},l.t0,S,l);return i.node}clone(e,t){let n=new _(e,t);return n.rsm=Object.keys(this.rsm).reduce((e,t)=>(e[t]=M(this.rsm[t]),e),{}),n}}e.exports.Parser=_;let V={tokenize:R,srcfmt:E,deep:I,clone:M,charset:L,longest:D,marr:function(e,t){return e.length===t.length&&e.reduce((e,n,r)=>e&&n===t[r],!0)},trimstk:B,makelog:F,badlex:U,extract:Y,errinject:W,errdesc:X,configure:G,parserwrap:H,regexp:J,mesc:$,ender:Z};function P(e,t){let n,l,c,a,u=I({},t?{...t.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:h,finish:!0,maxmul:3},config:{modify:{}},parser:{start:void 0}},e||{}),p=function(e,t,n){if(i===typeof e){let r=p.internal();return(f.parser.start?H(f.parser):r.parser).start(r.lexer,e,p,t,n)}return e},f=e=>{if(null!=e&&o===typeof e){G(c,I(u,e));for(let e in u)p.options[e]=u[e];r(p.token,c.t)}return{...p.options}},d={token:function(e){return R(e,c,p)},options:I(f,u),parse:p,use:function(e,t){return p.options({plugin:{[e.name]:t||{}}}),p.internal().plugins.push(e),e(p)||p},rule:function(e,t){return p.internal().parser.rule(e,t)},lex:function(e,t){return p.internal().lexer.lex(e,t)},make:function(e){return P(e,p)},id:"Jsonic/"+Date.now()+"/"+(""+Math.random()).substring(2,8).padEnd(6,"0")+"/"+f.tag,toString:function(){return this.id}};if(s(d.make,"name",{value:"make"}),t){for(let n in t)p[n]=t[n];p.parent=t;let e=t.internal();G(c=I({},e.config),u),r(p.token,c.t),a=[...e.plugins],n=e.lexer.clone(c),l=e.parser.clone(u,c)}else G(c={tI:1,t:{}},u),a=[],n=new k(c),(l=new _(u,c)).init();return r(p,d),r(p.token,c.t),s(p,"internal",{value:function(){return{lexer:n,parser:l,config:c,plugins:a}}}),p}function E(e){return(t,n)=>null==t?"":(n=JSON.stringify(t)).substring(0,e.d.maxlen)+(e.d.maxlen<n.length?"...":"")}function R(e,t,n){let s=t.t,o=s[e];return null==o&&i===typeof e&&(s[o=t.tI++]=e,s[e]=o,s[e.substring(1)]=o,null!=n&&r(n.token,t.t)),o}function I(e,...t){let n=l===typeof e,r=null!=e&&(o===typeof e||n);for(let s of t){let t=l===typeof s,i=null!=s&&(o===typeof s||t);if(r&&i&&!t&&Array.isArray(e)===Array.isArray(s))for(let n in s)e[n]=I(e[n],s[n]);else e=void 0===s?e:t?s:i?I(Array.isArray(s)?[]:{},s):s,n=l===typeof e,r=null!=e&&(o===typeof e||n)}return e}function M(e){return I(Object.create(Object.getPrototypeOf(e)),e)}function L(...e){return e.filter(e=>!1!==e).map(e=>"object"==typeof e?t(e).join(""):e).join("").split("").reduce((e,t)=>(e[t]=t.charCodeAt(0),e),{})}function D(e){return e.reduce((e,t)=>e<t.length?t.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 F(e){if("number"==typeof e.log){let t=!1,n=e.log;-1===n&&(n=1,t=!0),e.log=(...r)=>{if(t){let t=r.filter(e=>o!=typeof e).map(e=>l==typeof e?e.name:e).join("\t");e.opts.debug.get_console().log(t)}else e.opts.debug.get_console().dir(r,{depth:n})}}return e.log}function U(e,t,n){let r=r=>{let s=e(r);if(t===s.tin){let e={};throw null!=s.use&&(e.use=s.use),new w(s.why||c,e,s,r,n)}return s};return r.src=e.src,r}function $(e,t){return(t=new String(e)).esc=!0,t}function J(e,...t){return new RegExp(t.map(e=>e.esc?e.replace(/[-\\|\]{}()[^$+*?.!=]/g,"\\$&"):e).join(""),e)}function Z(e,r,s){let o=t(t(r).reduce((e,t)=>(e[t[0]]=1,e),{...e})).join(""),i=n(t(r).filter(e=>1<e.length&&(!s||!s[e[0]])).reduce((e,t)=>((e[t[0]]=e[t[0]]||[]).push(t.substring(1)),e),{})).reduce((e,t)=>(e.push([t[0],t[1].map(e=>J("",$(e)).source).join("|")]),e),[]).map(e=>["|(",$(e[0]),"(?!(",e[1],")))"]).flat(1);return J("","^(([^",$(o),"]+)",...i,")+")}function W(e,t,n,r,s,o){return e.replace(/\$([\w_]+)/g,(e,i)=>JSON.stringify("code"===i?t:n[i]||(o.meta?o.meta[i]:void 0)||r[i]||s[i]||o[i]||o.opts[i]||o.cnfg[i]||"$"+i))}function Y(e,t,n){let r=0<n.loc?n.loc:0,s=0<n.row?n.row:0,o=0<n.col?n.col:0,i=null==n.src?"":n.src,l=e.substring(Math.max(0,r-333),r).split("\n"),c=e.substring(r,r+333).split("\n"),a=2+(""+(s+2)).length,u=s<2?0:s-2,p=e=>"\x1b[34m"+(""+u++).padStart(a," ")+" | \x1b[0m"+(null==e?"":e),f=l.length;return[2<f?p(l[f-3]):null,1<f?p(l[f-2]):null,p(l[f-1]+c[0])," ".repeat(a)+" "+" ".repeat(o)+"\x1b[31m"+"^".repeat(i.length||1)+" "+t+"\x1b[0m",p(c[1]),p(c[2])].filter(e=>null!=e).join("\n")}function H(e){return{start:function(t,n,r,s,o){try{return e.start(t,n,r,s,o)}catch(i){if("SyntaxError"===i.name){let t=0,o=0,l=0,c="",a=i.message.match(/^Unexpected token (.) .*position\s+(\d+)/i);if(a){c=a[1],t=parseInt(a[2]),o=n.substring(0,t).replace(/[^\n]/g,"").length;let e=t-1;for(;-1<e&&"\n"!==n.charAt(e);)e--;l=Math.max(n.substring(e,t).length,0)}let u=i.token||{tin:r.token.UK,loc:t,len:c.length,row:i.lineNumber||o,col:i.columnNumber||l,val:void 0,src:c};throw new w(i.code||"json",i.details||{msg:i.message},u,{},i.ctx||{uI:-1,opts:r.options,cnfg:{t:{}},token:u,meta:s,src:()=>n,root:()=>{},plgn:()=>r.internal().plugins,rule:S,xs:-1,v2:u,v1:u,t0:u,t1:u,tC:-1,rs:[],next:()=>u,rsm:{},n:{},log:s?s.log:void 0,F:E(r.internal().config),use:{}})}throw i}}}}function X(e,t,n,r,s){n={...n};let o=s.opts,i=s.meta,c=W(o.error[e]||o.error.unknown,e,t,n,r,s);l===typeof o.hint&&(o.hint={...o.hint(),...o.hint});let a=["\x1b[31m[jsonic/"+e+"]:\x1b[0m "+c," \x1b[34m--\x3e\x1b[0m "+(i&&i.fileName||"<no-file>")+":"+n.row+":"+n.col,Y(s.src(),c,n),W((o.hint[e]||o.hint.unknown).replace(/^([^ ])/," $1").split("\n").map((e,t)=>(0===t?" ":" ")+e).join("\n"),e,t,n,r,s)," \x1b[2mhttps://jsonic.richardrodger.com\x1b[0m"," \x1b[2m--internal: rule="+r.name+"~"+j[r.state]+"; token="+s.cnfg.t[n.tin]+(null==n.why?"":"~"+n.why)+"; plugins="+s.plgn().map(e=>e.name).join(",")+"--\x1b[0m\n"].join("\n"),u={internal:{token:n,ctx:s}};return{...Object.create(u),message:a,code:e,details:t,meta:i,fileName:i?i.fileName:void 0,lineNumber:n.row,columnNumber:n.col}}function G(e,n){let r=t(n.token);r.forEach(t=>R(t,e));let s=r.filter(e=>null!=n.token[e].c);e.sm=s.reduce((t,r)=>(t[n.token[r].c]=e.t[r],t),{});let o=r.filter(e=>i===typeof n.token[e]);e.m=o.reduce((t,r)=>(t[r.substring(1)]=n.token[r].split("").reduce((t,n)=>(t[n]=e.t[r],t),{}),t),{});let l=r.filter(e=>null!=n.token[e].s);if(e.ts=l.reduce((t,r)=>(t[r.substring(1)]=n.token[r].s.split(",").reduce((t,n)=>(t[e.t[n]]=n,t),{}),t),{}),e.vm=n.value.src,e.vs=t(n.value.src).reduce((e,t)=>(e[t[0]]=!0,e),{}),e.cs={},e.esc=t(n.string.escape).reduce((e,t)=>(e[t]=n.string.escape[t],e),{}),e.cs.cs={},e.cmk=[],n.comment.lex){e.cm=n.comment.marker;let r=t(e.cm);r.forEach(t=>{1===t.length?e.cs.cs[t]=t.charCodeAt(0):(e.cs.cs[t[0]]=t.charCodeAt(0),e.cmk.push(t))}),e.cmx=D(r)}e.sc=t(e.sm).join(""),e.cs.dig=L(n.number.digital),e.cs.mln=L(n.string.multiline),e.cs.vend=L(n.space.lex&&e.m.SP,n.line.lex&&e.m.LN,e.sc,n.comment.lex&&e.cs.cs,n.block.lex&&e.cs.bs),e.cs.bs={},e.bmk=[];let c=t(n.block.marker);c.forEach(t=>{e.cs.bs[t[0]]=t.charCodeAt(0),e.bmk.push(t)}),e.bmx=D(c);let a=null!=n.number.sep?new RegExp(n.number.sep,"g"):null;e.re={ns:a,te:Z(L(n.space.lex&&e.m.SP,n.line.lex&&e.m.LN,e.sc,n.comment.lex&&e.cs.cs,n.block.lex&&e.cs.bs),{...n.comment.lex?e.cm:{},...n.block.lex?n.block.marker:{}},e.sm),nm:new RegExp(["^[-+]?(0(",[n.number.hex?"x[0-9a-fA-F_]+":null,n.number.oct?"o[0-7_]+":null,n.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==a?"":n.number.sep)).join(""))},e.d=n.debug,t(n.config.modify).forEach(t=>n.config.modify[t](e,n)),n.debug.print.config&&n.debug.get_console().dir(e,{depth:null})}function q(e=((e,t="replace")=>e[t](/[A-Z]/g,e=>" "+e.toLowerCase())[t](/[~%][a-z]/g,e=>("~"==e[0]?" ":"")+e[1].toUpperCase())),t="~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((n,r,s)=>(n[r]=e(t[s]),n),{})}e.exports.util=V,e.exports.make=P;let z=P();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=_,z.Rule=A,z.RuleSpec=O,z.Alt=C,z.util=V,z.make=P,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:{}),l=l.exports;var c={};Object.defineProperty(c,"__esModule",{value:!0}),c.makeMemResolver=void 0,c.makeMemResolver=function(e){return function(t,n){let r=n&&n.meta&&n.meta.multisource||{},s=n&&n.opts&&n.opts&&n.opts.plugin&&n.opts.plugin.multisource||{},o=null==r.path?s.path:r.path,i=t.startsWith("/")?t:(null==o?"":o)+"/"+t;return{path:t,full:i,base:o,src:e[i]}}};var a,u,p,f=a={};function h(){throw new Error("setTimeout has not been defined")}function d(){throw new Error("clearTimeout has not been defined")}function g(e){if(u===setTimeout)return setTimeout(e,0);if((u===h||!u)&&setTimeout)return u=setTimeout,setTimeout(e,0);try{return u(e,0)}catch(t){try{return u.call(null,e,0)}catch(t){return u.call(this,e,0)}}}!function(){try{u="function"==typeof setTimeout?setTimeout:h}catch(e){u=h}try{p="function"==typeof clearTimeout?clearTimeout:d}catch(e){p=d}}();var m,b=[],v=!1,y=-1;function x(){v&&m&&(v=!1,m.length?b=m.concat(b):y=-1,b.length&&w())}function w(){if(!v){var e=g(x);v=!0;for(var t=b.length;t;){for(m=b,b=[];++y<t;)m&&m[y].run();y=-1,t=b.length}m=null,v=!1,function(e){if(p===clearTimeout)return clearTimeout(e);if((p===d||!p)&&clearTimeout)return p=clearTimeout,clearTimeout(e);try{p(e)}catch(t){try{return p.call(null,e)}catch(t){return p.call(this,e)}}}(e)}}function k(e,t){this.fun=e,this.array=t}function j(){}f.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];b.push(new k(e,t)),1!==b.length||v||g(w)},k.prototype.run=function(){this.fun.apply(null,this.array)},f.title="browser",f.browser=!0,f.env={},f.argv=[],f.version="",f.versions={},f.on=j,f.addListener=j,f.once=j,f.off=j,f.removeListener=j,f.removeAllListeners=j,f.emit=j,f.prependListener=j,f.prependOnceListener=j,f.listeners=function(e){return[]},f.binding=function(e){throw new Error("process.binding is not supported")},f.cwd=function(){return"/"},f.chdir=function(e){throw new Error("process.chdir is not supported")},f.umask=function(){return 0};var A={};(function(e){(function(){"use strict";function t(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var n,r="",s=0,o=-1,i=0,l=0;l<=e.length;++l){if(l<e.length)n=e.charCodeAt(l);else{if(47===n)break;n=47}if(47===n){if(o===l-1||1===i);else if(o!==l-1&&2===i){if(r.length<2||2!==s||46!==r.charCodeAt(r.length-1)||46!==r.charCodeAt(r.length-2))if(r.length>2){var c=r.lastIndexOf("/");if(c!==r.length-1){-1===c?(r="",s=0):s=(r=r.slice(0,c)).length-1-r.lastIndexOf("/"),o=l,i=0;continue}}else if(2===r.length||1===r.length){r="",s=0,o=l,i=0;continue}t&&(r.length>0?r+="/..":r="..",s=2)}else r.length>0?r+="/"+e.slice(o+1,l):r=e.slice(o+1,l),s=l-o-1;o=l,i=0}else 46===n&&-1!==i?++i:i=-1}return r}var r={resolve:function(){for(var r,s="",o=!1,i=arguments.length-1;i>=-1&&!o;i--){var l;i>=0?l=arguments[i]:(void 0===r&&(r=e.cwd()),l=r),t(l),0!==l.length&&(s=l+"/"+s,o=47===l.charCodeAt(0))}return s=n(s,!o),o?s.length>0?"/"+s:"/":s.length>0?s:"."},normalize:function(e){if(t(e),0===e.length)return".";var r=47===e.charCodeAt(0),s=47===e.charCodeAt(e.length-1);return 0!==(e=n(e,!r)).length||r||(e="."),e.length>0&&s&&(e+="/"),r?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,n=0;n<arguments.length;++n){var s=arguments[n];t(s),s.length>0&&(void 0===e?e=s:e+="/"+s)}return void 0===e?".":r.normalize(e)},relative:function(e,n){if(t(e),t(n),e===n)return"";if((e=r.resolve(e))===(n=r.resolve(n)))return"";for(var s=1;s<e.length&&47===e.charCodeAt(s);++s);for(var o=e.length,i=o-s,l=1;l<n.length&&47===n.charCodeAt(l);++l);for(var c=n.length-l,a=i<c?i:c,u=-1,p=0;p<=a;++p){if(p===a){if(c>a){if(47===n.charCodeAt(l+p))return n.slice(l+p+1);if(0===p)return n.slice(l+p)}else i>a&&(47===e.charCodeAt(s+p)?u=p:0===p&&(u=0));break}var f=e.charCodeAt(s+p);if(f!==n.charCodeAt(l+p))break;47===f&&(u=p)}var h="";for(p=s+u+1;p<=o;++p)p!==o&&47!==e.charCodeAt(p)||(0===h.length?h+="..":h+="/..");return h.length>0?h+n.slice(l+u):(l+=u,47===n.charCodeAt(l)&&++l,n.slice(l))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var n=e.charCodeAt(0),r=47===n,s=-1,o=!0,i=e.length-1;i>=1;--i)if(47===(n=e.charCodeAt(i))){if(!o){s=i;break}}else o=!1;return-1===s?r?"/":".":r&&1===s?"//":e.slice(0,s)},basename:function(e,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');t(e);var r,s=0,o=-1,i=!0;if(void 0!==n&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var l=n.length-1,c=-1;for(r=e.length-1;r>=0;--r){var a=e.charCodeAt(r);if(47===a){if(!i){s=r+1;break}}else-1===c&&(i=!1,c=r+1),l>=0&&(a===n.charCodeAt(l)?-1==--l&&(o=r):(l=-1,o=c))}return s===o?o=c:-1===o&&(o=e.length),e.slice(s,o)}for(r=e.length-1;r>=0;--r)if(47===e.charCodeAt(r)){if(!i){s=r+1;break}}else-1===o&&(i=!1,o=r+1);return-1===o?"":e.slice(s,o)},extname:function(e){t(e);for(var n=-1,r=0,s=-1,o=!0,i=0,l=e.length-1;l>=0;--l){var c=e.charCodeAt(l);if(47!==c)-1===s&&(o=!1,s=l+1),46===c?-1===n?n=l:1!==i&&(i=1):-1!==n&&(i=-1);else if(!o){r=l+1;break}}return-1===n||-1===s||0===i||1===i&&n===s-1&&n===r+1?"":e.slice(n,s)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,r=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+r:n+"/"+r:r}(0,e)},parse:function(e){t(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var r,s=e.charCodeAt(0),o=47===s;o?(n.root="/",r=1):r=0;for(var i=-1,l=0,c=-1,a=!0,u=e.length-1,p=0;u>=r;--u)if(47!==(s=e.charCodeAt(u)))-1===c&&(a=!1,c=u+1),46===s?-1===i?i=u:1!==p&&(p=1):-1!==i&&(p=-1);else if(!a){l=u+1;break}return-1===i||-1===c||0===p||1===p&&i===c-1&&i===l+1?-1!==c&&(n.base=n.name=0===l&&o?e.slice(1,c):e.slice(l,c)):(0===l&&o?(n.name=e.slice(1,i),n.base=e.slice(1,c)):(n.name=e.slice(l,i),n.base=e.slice(l,c)),n.ext=e.slice(i,c)),l>0?n.dir=e.slice(0,l-1):o&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};r.posix=r,A=r}).call(this)}).call(this,a);var S={},C=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(S,"__esModule",{value:!0}),S.makeFileResolver=void 0;const T=C({}),N=C(A);S.makeFileResolver=function(){return function(e,t){let n=t&&t.meta&&t.meta.multisource||{},r=t&&t.opts&&t.opts&&t.opts.plugin&&t.opts.plugin.multisource||{},s=null==n.path?null==r.path?e:r.path:n.path,o=s;T.default.statSync(s).isFile()&&(o=N.default.parse(s).dir);let i=N.default.isAbsolute(e)||null==o?e:N.default.resolve(o,e);return{path:e,full:i,base:o,src:T.default.readFileSync(i).toString()}}};var O={};Object.defineProperty(O,"__esModule",{value:!0}),O.MultiSource=void 0,Object.defineProperty(O,"makeMemResolver",{enumerable:!0,get:function(){return c.makeMemResolver}}),Object.defineProperty(O,"makeFileResolver",{enumerable:!0,get:function(){return S.makeFileResolver}});let _={markchar:"@"};const V=Symbol("TOP");O.MultiSource=function(e){let t=l.util.deep({},_,e.options.plugin.multisource),n=t.markchar,r=t.resolver,s="#T<"+n+">";e.options({token:{[s]:{c:n}},error:{multifile_unsupported_file:"unsupported file: $path"},hint:{multifile_unsupported_file:"This file type is not supported and cannot be parsed: $path."}});let o=e.token.ST,i=e.token(s);e.rule("val",t=>{t.def.open.push({s:[i,o]});let n=t.def.bc;return t.def.bc=function(t,s){if(t.open[0]&&i===t.open[0].tin){let n=void 0,o=t.open[1].val,i=r(o,s);if(null!=i.src){let t=s.meta.multisource||{},r={...s.meta,multisource:{...t,path:i.full}};if(n=e(i.src,r),t.deps){let e=t.deps,n=t.path||V;null!=n&&((e[n]=e[n]||{})[i.full]={tar:n,src:i.full,wen:Date.now()})}}t.open[0].val=n}return n(...arguments)},t})};var P={};Object.defineProperty(P,"__esModule",{value:!0}),P.util=P.Nil=P.Val=P.Aontu=void 0;const E=t({}),R=r({}),I=n({});Object.defineProperty(P,"Val",{enumerable:!0,get:function(){return I.Val}}),Object.defineProperty(P,"Nil",{enumerable:!0,get:function(){return I.Nil}});const M=()=>({path:"<no-path>",full:"<no-full>",base:"<no-base>"});function L(e,t){let n=D.options(e,t),r={},s=new E.Lang(n).parse(n.src,{deps:r}),o=new R.Unify(s),i=o.res,l=o.err;return i.deps=r,i.err=l,i}P.Aontu=L;const D={options:(e,t)=>({src:"",print:0,resolver:M,..."string"==typeof e?{src:e}:e,...t||{}})};return P.util=D,P.default=L,P}));
"use strict";
/* Copyright (c) 2021 Richard Rodger, MIT License */
Object.defineProperty(exports, "__esModule", { value: true });
exports.util = exports.Lang = exports.Nil = exports.Val = exports.Aontu = void 0;
const lang_1 = require("./lib/lang");
Object.defineProperty(exports, "Lang", { enumerable: true, get: function () { return lang_1.Lang; } });
const unify_1 = require("./lib/unify");
const val_1 = require("./lib/val");
Object.defineProperty(exports, "Val", { enumerable: true, get: function () { return val_1.Val; } });
Object.defineProperty(exports, "Nil", { enumerable: true, get: function () { return val_1.Nil; } });
/*
NEXT:
inject path from multisource into Vals when created
report via nil error
also trace deps into top val and watch via model
*/
// TODO: error reporting
// TODO: debug tracing
// TODO: providers - e.g source files from paths
// const NoResolver: Resolver = () => ({
// kind: '<no-kind>',
// path: '<no-path>',
// full: '<no-full>',
// base: '<no-base>',
// abs: true,
// found: false,
// })
/* `Aontu('a:1') => opts={src:'a:1',print:0,...}`
* `Aontu('a:1',{print:1}) => opts={src:'a:1',print:1,...}`
* `Aontu({src:'a:1'},{src:'a:2'}) => opts={src:'a:2',print:0,...}`
*/
function Aontu(src, popts) {
let opts = util.options(src, popts);
let lang = new lang_1.Lang(opts);
let deps = {};
let val = lang.parse(opts.src, { deps: deps });
let uni = new unify_1.Unify(val);
let res = uni.res;
let err = uni.err;
res.deps = deps;
res.err = err;
return res;
}
exports.Aontu = Aontu;
const util = {
options: (src, popts) => {
// Convert convenience first param into Options.src
let srcopts = 'string' === typeof src ? { src } : src;
let opts = {
...{
src: '',
print: 0,
resolver: lang_1.includeFileResolver,
},
...srcopts,
...(popts || {}),
};
return opts;
},
};
exports.util = util;
exports.default = Aontu;
//# sourceMappingURL=aontu.js.map

@@ -11,2 +11,3 @@ import { Jsonic } from 'jsonic';

}
declare const includeFileResolver: import("@jsonic/multisource").Resolver;
declare class Lang {

@@ -18,2 +19,2 @@ jsonic: Jsonic;

}
export { Lang, Site, };
export { Lang, Site, includeFileResolver, };
"use strict";
/* Copyright (c) 2021 Richard Rodger, MIT License */
Object.defineProperty(exports, "__esModule", { value: true });
exports.Site = exports.Lang = void 0;
exports.includeFileResolver = exports.Site = exports.Lang = void 0;
const jsonic_1 = require("jsonic");
const multisource_1 = require("@jsonic/multisource");
const file_1 = require("@jsonic/multisource/dist/resolver/file");
const expr_1 = require("@jsonic/expr");
const val_1 = require("./val");

@@ -25,3 +27,4 @@ class Site {

value: {
src: {
// JSONIC-UPDATE: map: { val: ... }
map: {
// NOTE: specify with functions as jsonic/deep will

@@ -31,17 +34,21 @@ // remove class prototype as options are assumed plain

// TODO: jsonic should be able to pass context into these
'string': () => new val_1.ScalarTypeVal(String),
'number': () => new val_1.ScalarTypeVal(Number),
'integer': () => new val_1.ScalarTypeVal(val_1.Integer),
'boolean': () => new val_1.ScalarTypeVal(Boolean),
'nil': () => new val_1.Nil('literal'),
'top': () => val_1.TOP,
'string': { val: () => new val_1.ScalarTypeVal(String) },
'number': { val: () => new val_1.ScalarTypeVal(Number) },
'integer': { val: () => new val_1.ScalarTypeVal(val_1.Integer) },
'boolean': { val: () => new val_1.ScalarTypeVal(Boolean) },
'nil': { val: () => new val_1.Nil('literal') },
'top': { val: () => val_1.TOP },
}
},
token: {
'#A&': { c: '&' },
'#A|': { c: '|' },
'#A/': { c: '/' },
'#A*': { c: '*' },
'#A=': { c: '=' },
},
// // JSONIC-UPDATE: fixed: { token }
// fixed: {
// token: {
// '#A&': '&',
// '#A|': '|',
// '#A/': '/',
// '#A*': '*', // TODO: REVIEW char as * is a bit overloaded
// '#A=': '=',
// }
// },
// JSONIC-UPDATE: check impl
map: {

@@ -55,195 +62,232 @@ merge: (prev, curr) => {

});
let NR = jsonic.token.NR;
let TX = jsonic.token.TX;
let ST = jsonic.token.ST;
let VL = jsonic.token.VL;
let OB = jsonic.token.OB;
let OS = jsonic.token.OS;
let CJ = jsonic.token['#A&'];
let DJ = jsonic.token['#A|'];
let FS = jsonic.token['#A/'];
let AK = jsonic.token['#A*'];
let EQ = jsonic.token['#A='];
jsonic.rule('expr', () => {
return new jsonic_1.RuleSpec({
open: [
{ s: [[CJ, DJ, AK]], p: 'disjunct', b: 1, n: { expr: 1 } },
],
close: [
{ s: [] }
],
// NOTE: expr node are meta structures, not Vals
// t=most recent term on the left, o=Val
bo: (r) => r.node = { t: r.node },
ac: (r) => {
let cn = r.child.node.o;
if (cn instanceof val_1.PrefVal) {
return { err: 'single-pref' };
}
// replace first val with expr val
r.node = cn;
let opmap = {
'conjunct-infix': (_op, terms) => new val_1.ConjunctVal(terms),
'disjunct-infix': (_op, terms) => new val_1.DisjunctVal(terms),
'dot-prefix': (_op, terms) => new val_1.RefVal(terms, true),
'dot-infix': (_op, terms) => new val_1.RefVal(terms),
'star-prefix': (_op, terms) => new val_1.PrefVal(terms[0]),
};
jsonic
.use(expr_1.Expr, {
op: {
'conjunct': {
infix: true, src: '&', left: 14000, right: 15000
},
});
'disjunct': {
infix: true, src: '|', left: 14000, right: 15000
},
'dot-infix': {
src: '.',
infix: true,
left: 15000000,
right: 14000000,
},
'dot-prefix': {
src: '.',
prefix: true,
right: 14000000,
},
'star': {
src: '*',
prefix: true,
right: 14000000,
},
},
evaluate: (op, terms) => {
// console.log('LANG EVAL', op, terms)
return opmap[op.name](op, terms);
}
});
jsonic.rule('disjunct', () => {
return new jsonic_1.RuleSpec({
open: [
{
s: [CJ], p: 'conjunct', b: 1
},
{
s: [AK], p: 'pref', b: 1
},
{
s: [DJ, AK], p: 'pref', b: 1,
a: (r) => {
// Append to existing or start new
r.node.o = r.node.o instanceof val_1.DisjunctVal ?
r.node.o : new val_1.DisjunctVal([r.node.t]);
}
},
{
s: [DJ, [NR, TX, ST, VL, OB, OS]], b: 1,
p: 'val',
a: (r) => {
// Append to existing or start new
r.node.o = r.node.o instanceof val_1.DisjunctVal ?
r.node.o : new val_1.DisjunctVal([r.node.t]);
}
},
],
close: [
{
s: [DJ], r: 'disjunct', b: 1, a: (r) => {
var _a;
// higher precedence term (e.g &) was on the left
let cn = ((_a = r.child.node) === null || _a === void 0 ? void 0 : _a.o) || r.child.node;
r.node.t = cn;
}
},
{
s: [CJ], r: 'disjunct', b: 1, a: (r) => {
var _a;
// & with higher precedence to the right
let cn = ((_a = r.child.node) === null || _a === void 0 ? void 0 : _a.o) || r.child.node;
r.node.t = cn;
r.child.node = null;
}
},
{}
],
ac: (r) => {
var _a;
// child values may be normal or expr metas
let cn = ((_a = r.child.node) === null || _a === void 0 ? void 0 : _a.o) || r.child.node;
if (cn) {
if (r.node.o instanceof val_1.DisjunctVal) {
r.node.o.append(cn);
}
else {
// this rule was just a pass-through
r.node.o = cn;
}
}
}
});
});
jsonic.rule('conjunct', () => {
return new jsonic_1.RuleSpec({
open: [
{
s: [CJ, [NR, TX, ST, VL, OB, OS, FS]], b: 1,
p: 'val',
a: (r) => {
r.node = {
o: r.node.o instanceof val_1.ConjunctVal ?
r.node.o : new val_1.ConjunctVal([r.node.t])
};
}
},
],
close: [
{
s: [CJ], r: 'conjunct', b: 1
},
{}
],
ac: (r) => {
var _a;
let cn = ((_a = r.child.node) === null || _a === void 0 ? void 0 : _a.o) || r.child.node;
if (cn) {
if (r.node.o instanceof val_1.ConjunctVal) {
r.node.o.append(cn);
}
else {
r.node.o = cn;
}
}
}
});
});
jsonic.rule('path', () => {
return new jsonic_1.RuleSpec({
open: [
{ s: [FS, [TX, ST, NR, VL]], p: 'part', b: 2 }
],
bo: (r) => r.node = new val_1.RefVal('/')
});
});
jsonic.rule('part', () => {
return new jsonic_1.RuleSpec({
open: [
{
s: [FS, [TX, ST, NR, VL]], r: 'part', a: (r) => {
r.node.append(r.open[1].src);
}
},
{}, // no more parts
],
});
});
jsonic.rule('pair', (rs) => {
rs.def.open.unshift({
s: [[CJ, DJ], EQ], p: 'val', u: { spread: true }
});
// TODO: make before/after function[]
let orig_bc = rs.def.bc;
rs.def.bc = function (rule, ctx) {
let out = orig_bc.call(this, rule, ctx);
if (rule.use.spread) {
rule.node[val_1.MapVal.SPREAD] =
(rule.node[val_1.MapVal.SPREAD] || { o: rule.open[0].src, v: [] });
rule.node[val_1.MapVal.SPREAD].v.push(rule.child.node);
}
return out;
};
return rs;
});
jsonic.rule('pref', () => {
return new jsonic_1.RuleSpec({
open: [
{
s: [AK, [NR, TX, ST, VL, OB, OS, FS]], b: 1,
p: 'val',
},
],
close: [
// Can't be in a conjunct
{ s: [CJ], e: (r) => r.open[1] },
{}
],
ac: (r) => {
r.node = new val_1.PrefVal(r.child.node);
}
});
});
// console.log(jsonic.token)
let CJ = jsonic.token['#E&'];
let CL = jsonic.token.CL;
// let NR = jsonic.token.NR
// let TX = jsonic.token.TX
// let ST = jsonic.token.ST
// let VL = jsonic.token.VL
// let OB = jsonic.token.OB
// let OS = jsonic.token.OS
// let DJ = jsonic.token['#A|']
// let FS = jsonic.token['#A/']
// let AK = jsonic.token['#A*']
// let EQ = jsonic.token['#A=']
// JSONIC-UPDATE: rule.open[], rule.close[] - replace with rule.oN|cN
// jsonic.rule('expr', (rs: RuleSpec) => {
// rs
// .open([
// { s: [[CJ, DJ, AK]], p: 'disjunct', b: 1, n: { expr: 1 } },
// ])
// .close([
// { s: [] }
// ])
// // NOTE: expr node are meta structures, not Vals
// // t=most recent term on the left, o=Val
// .bo((r: Rule) => r.node = { t: r.node })
// .ac((r: Rule) => {
// let cn = r.child.node.o
// if (cn instanceof PrefVal) {
// return r.o0.bad('single-pref')
// }
// // replace first val with expr val
// r.node = cn
// if ('val' === r.parent?.name) {
// r.parent.node = r.node
// }
// })
// })
// jsonic.rule('disjunct', (rs: RuleSpec) => {
// rs
// .open([
// {
// s: [CJ], p: 'conjunct', b: 1
// },
// {
// s: [AK], p: 'pref', b: 1
// },
// {
// s: [DJ, AK], p: 'pref', b: 1,
// a: (r: Rule) => {
// // Append to existing or start new
// r.node.o = r.node.o instanceof DisjunctVal ?
// r.node.o : new DisjunctVal([r.node.t])
// }
// },
// {
// s: [DJ, [NR, TX, ST, VL, OB, OS]], b: 1,
// p: 'val',
// a: (r: Rule) => {
// // Append to existing or start new
// r.node.o = r.node.o instanceof DisjunctVal ?
// r.node.o : new DisjunctVal([r.node.t])
// }
// },
// ])
// .close([
// {
// s: [DJ], r: 'disjunct', b: 1, a: (r: Rule) => {
// // higher precedence term (e.g &) was on the left
// let cn = r.child.node?.o || r.child.node
// r.node.t = cn
// }
// },
// {
// s: [CJ], r: 'disjunct', b: 1, a: (r: Rule) => {
// // & with higher precedence to the right
// let cn = r.child.node?.o || r.child.node
// r.node.t = cn
// r.child.node = null
// }
// },
// {}
// ])
// .ac((r: Rule) => {
// // child values may be normal or expr metas
// let cn = r.child.node?.o || r.child.node
// if (cn) {
// if (r.node.o instanceof DisjunctVal) {
// r.node.o.append(cn)
// }
// else {
// // this rule was just a pass-through
// r.node.o = cn
// }
// }
// })
// })
// jsonic.rule('conjunct', (rs: RuleSpec) => {
// rs
// .open([
// {
// s: [CJ, [NR, TX, ST, VL, OB, OS, FS]], b: 1,
// p: 'val',
// a: (r: Rule) => {
// r.node = {
// o: r.node.o instanceof ConjunctVal ?
// r.node.o : new ConjunctVal([r.node.t])
// }
// }
// },
// ])
// .close([
// {
// s: [CJ], r: 'conjunct', b: 1
// },
// {}
// ])
// .ac((r: Rule) => {
// let cn = r.child.node?.o || r.child.node
// if (cn) {
// if (r.node.o instanceof ConjunctVal) {
// r.node.o.append(cn)
// }
// else {
// r.node.o = cn
// }
// }
// })
// })
// jsonic.rule('path', (rs: RuleSpec) => {
// rs
// .open([
// { s: [FS, [TX, ST, NR, VL]], p: 'part', b: 2 }
// ])
// .bo((r: Rule) => r.node = new RefVal('/'))
// })
// jsonic.rule('part', (rs: RuleSpec) => {
// rs.
// open([
// {
// s: [FS, [TX, ST, NR, VL]], r: 'part', a: (r: Rule) => {
// r.node.append(r.o1.src)
// }
// },
// {}, // no more parts
// ])
// })
// // rs.def.open.unshift({
// // s: [[CJ, DJ], EQ], p: 'val', u: { spread: true }
// // })
// // // TODO: make before/after function[]
// // let orig_bc: any = rs.def.bc
// // rs.def.bc = function(rule: Rule, ctx: Context) {
// // let out = orig_bc.call(this, rule, ctx)
// // if (rule.use.spread) {
// // rule.node[MapVal.SPREAD] =
// // (rule.node[MapVal.SPREAD] || { o: rule.o0.src, v: [] })
// // rule.node[MapVal.SPREAD].v.push(rule.child.node)
// // }
// // return out
// // }
// return rs
// })
// jsonic.rule('pref', (rs: RuleSpec) => {
// rs
// .open([
// {
// s: [AK, [NR, TX, ST, VL, OB, OS, FS]], b: 1,
// p: 'val',
// },
// ])
// .close([
// // Can't be in a conjunct
// { s: [CJ], e: (r: Rule) => r.o1 },
// {}
// ])
// .ac((r: Rule) => {
// r.node = new PrefVal(r.child.node)
// })
// })
jsonic.rule('val', (rs) => {
rs.def.open.unshift(
// Prefs are always within an expression
{ s: [AK, [NR, TX, ST, VL, OB, OS, FS]], p: 'expr', b: 2 }, { s: [FS, [TX, ST, NR, VL]], p: 'path', b: 2 });
rs.def.close.unshift({
s: [[CJ, DJ]], p: 'expr', b: 1, c: (r) => {
return null == r.n.expr || 0 === r.n.expr;
}
});
// rs.def.open.unshift(
// // Prefs are always within an expression
// { s: [AK, [NR, TX, ST, VL, OB, OS, FS]], p: 'expr', b: 2 },
// { s: [FS, [TX, ST, NR, VL]], p: 'path', b: 2 },
// )
// rs.def.close.unshift(
// {
// s: [[CJ, DJ]], p: 'expr', b: 1, c: (r: Rule) => {
// return null == r.n.expr || 0 === r.n.expr
// }
// },
// )
// TODO: wrap utility needed for jsonic to do this?

@@ -269,7 +313,7 @@ let orig_bc = rs.def.bc;

}
let st = rule.open[0];
valnode.row = st.row;
valnode.col = st.col;
let st = rule.o0;
valnode.row = st.rI;
valnode.col = st.cI;
// JSONIC-UPDATE: still valid? check multisource
valnode.url = ctx.meta.multisource && ctx.meta.multisource.path;
// console.log('VAL META', valnode.canon, valnode.url)
rule.node = valnode;

@@ -289,3 +333,22 @@ return out;

});
jsonic.rule('pair', (rs) => {
let orig_bc = rs.def.bc;
rs
.open([{ s: [CJ, CL], p: 'val', u: { spread: true }, g: 'spread' }])
.bc((...rest) => {
orig_bc(...rest);
let rule = rest[0];
if (rule.use.spread) {
rule.node[val_1.MapVal.SPREAD] =
(rule.node[val_1.MapVal.SPREAD] || { o: rule.o0.src, v: [] });
rule.node[val_1.MapVal.SPREAD].v.push(rule.child.node);
}
});
return rs;
});
};
const includeFileResolver = (0, file_1.makeFileResolver)((spec) => {
return 'string' === typeof spec ? spec : spec === null || spec === void 0 ? void 0 : spec.peg;
});
exports.includeFileResolver = includeFileResolver;
class Lang {

@@ -301,7 +364,7 @@ constructor(options) {

.use(multisource_1.MultiSource, {
resolver: options ? options.resolver : undefined
resolver: (options === null || options === void 0 ? void 0 : options.resolver) || includeFileResolver
});
// console.log('AL options', this.options)
}
parse(src, opts) {
// JSONIC-UPDATE - check meta
let jm = {

@@ -318,3 +381,2 @@ multisource: {

}
// console.log('ALp jm', jm)
let val = this.jsonic(src, jm);

@@ -321,0 +383,0 @@ return val;

@@ -64,3 +64,3 @@ "use strict";

//res = res.unify(TOP, ctx)
res = op_1.unite(ctx, res, val_1.TOP);
res = (0, op_1.unite)(ctx, res, val_1.TOP);
ctx = ctx.clone({ root: res });

@@ -67,0 +67,0 @@ }

@@ -31,3 +31,3 @@ import { Context } from './unify';

secondary?: Val;
static make: (ctx?: Context | undefined, why?: any, av?: Val | undefined, bv?: Val | undefined) => Nil;
static make: (ctx?: Context, why?: any, av?: Val, bv?: Val) => Nil;
constructor(why?: any, ctx?: Context);

@@ -102,4 +102,5 @@ unify(_peer: Val, _ctx: Context): this;

absolute: boolean;
constructor(peg: string, ctx?: Context);
append(part: string): void;
sep: string;
constructor(peg: any[], abs?: boolean);
append(part: any): void;
unify(peer: Val, ctx: Context): Val;

@@ -106,0 +107,0 @@ get canon(): any;

@@ -261,2 +261,3 @@ "use strict";

if ('&' === spread.o) {
// TODO: handle existing spread!
this.spread.cj =

@@ -282,3 +283,3 @@ new ConjunctVal(Array.isArray(spread.v) ? spread.v : [spread.v], ctx);

out.spread.cj =
DONE !== this.spread.cj.done ? op_1.unite(ctx, this.spread.cj) :
DONE !== this.spread.cj.done ? (0, op_1.unite)(ctx, this.spread.cj) :
this.spread.cj;

@@ -298,3 +299,3 @@ }

out.peg[key] =
op_1.unite(ctx.descend(key), this.peg[key], spread_cj);
(0, op_1.unite)(ctx.descend(key), this.peg[key], spread_cj);
done = (done && DONE === out.peg[key].done);

@@ -315,3 +316,3 @@ //if (oval instanceof Nil) {

//let upeer: MapVal = (peer.unify(TOP, ctx) as MapVal)
let upeer = op_1.unite(ctx, peer);
let upeer = (0, op_1.unite)(ctx, peer);
// console.log(

@@ -329,6 +330,6 @@ // (' '.repeat(ctx.path.length)),

//child.unify(peerchild, ctx.descend(peerkey))
op_1.unite(ctx.descend(peerkey), child, peerchild);
(0, op_1.unite)(ctx.descend(peerkey), child, peerchild);
if (this.spread.cj) {
//out.peg[peerkey] = out.peg[peerkey].unify(spread_cj, ctx)
out.peg[peerkey] = op_1.unite(ctx, out.peg[peerkey], spread_cj);
out.peg[peerkey] = (0, op_1.unite)(ctx, out.peg[peerkey], spread_cj);
}

@@ -366,3 +367,3 @@ done = (done && DONE === oval.done);

return '{' +
(this.spread.cj ? '&=' + this.spread.cj.canon +
(this.spread.cj ? '&:' + this.spread.cj.canon +
(0 < keys.length ? ',' : '') : '') +

@@ -399,3 +400,3 @@ keys

// upeer[vI] = this.peg[vI].unify(peer, ctx)
upeer[vI] = op_1.unite(ctx, this.peg[vI], peer);
upeer[vI] = (0, op_1.unite)(ctx, this.peg[vI], peer);
done = done && DONE === upeer[vI].done;

@@ -424,3 +425,3 @@ // // console.log('Ca', vI, this.peg[vI].canon, peer.canon, upeer[vI].canon)

//outvals[oI].unify(upeer[uI], ctx)
op_1.unite(ctx, outvals[oI], upeer[uI]);
(0, op_1.unite)(ctx, outvals[oI], upeer[uI]);
done = done && DONE === outvals[oI].done;

@@ -500,3 +501,3 @@ // Conjuct fails

//oval[vI] = this.peg[vI].unify(peer, ctx)
oval[vI] = op_1.unite(ctx, this.peg[vI], peer);
oval[vI] = (0, op_1.unite)(ctx, this.peg[vI], peer);
//console.log('ovalA', vI, this.peg[vI].canon, peer.canon, oval[vI].canon)

@@ -557,10 +558,34 @@ done = done && DONE === oval[vI].done;

class RefVal extends Val {
constructor(peg, ctx) {
super(peg, ctx);
this.parts = peg.split('/').filter(p => '' != p);
this.absolute = peg.startsWith('/');
// constructor(peg: string | string[], ctx?: Context) {
// super(peg, ctx)
// this.parts = 'string' === typeof peg ? peg.split(this.sep) : peg
// this.parts = this.parts.filter(p => '' != p)
// // this.absolute = peg.startsWith(this.sep)
// }
constructor(peg, abs) {
super('');
this.sep = '.'; // was '/'
this.absolute = true === abs;
this.parts = [];
// console.log('RV', peg)
for (let part of peg) {
this.append(part);
}
}
append(part) {
this.parts.push(part);
this.peg = (this.absolute ? '/' : '') + this.parts.join('/');
//console.log('APPEND 0', part)
if ('string' === typeof part) {
this.parts.push(part);
}
else if (part instanceof StringVal) {
this.parts.push(part.peg);
}
else if (part instanceof RefVal) {
this.parts.push(...part.parts);
if (part.absolute) {
this.absolute = true;
}
}
this.peg = (this.absolute ? this.sep : '') + this.parts.join(this.sep);
// console.log('APPEND 1', this.parts)
}

@@ -591,3 +616,3 @@ unify(peer, ctx) {

//out = resolved.unify(peer, ctx)
out = op_1.unite(ctx, resolved, peer);
out = (0, op_1.unite)(ctx, resolved, peer);
}

@@ -628,3 +653,3 @@ out.done = DONE === out.done ? DONE : this.done + 1;

//this.pref.unify(peer.pref, ctx),
op_1.unite(ctx, this.peg, peer.peg), op_1.unite(ctx, this.pref, peer.pref), ctx);
(0, op_1.unite)(ctx, this.peg, peer.peg), (0, op_1.unite)(ctx, this.pref, peer.pref), ctx);
}

@@ -635,3 +660,3 @@ else {

//this.pref.unify(peer, ctx),
op_1.unite(ctx, this.peg, peer), op_1.unite(ctx, this.pref, peer), ctx);
(0, op_1.unite)(ctx, this.peg, peer), (0, op_1.unite)(ctx, this.pref, peer), ctx);
}

@@ -638,0 +663,0 @@ done = done && DONE === out.peg.done &&

@@ -15,4 +15,14 @@ /* Copyright (c) 2021 Richard Rodger, MIT License */

import {
makeFileResolver
} from '@jsonic/multisource/dist/resolver/file'
import {
Expr,
Op,
} from '@jsonic/expr'
import {
Options

@@ -63,3 +73,4 @@ } from './common'

value: {
src: {
// JSONIC-UPDATE: map: { val: ... }
map: {
// NOTE: specify with functions as jsonic/deep will

@@ -69,19 +80,23 @@ // remove class prototype as options are assumed plain

// TODO: jsonic should be able to pass context into these
'string': () => new ScalarTypeVal(String),
'number': () => new ScalarTypeVal(Number),
'integer': () => new ScalarTypeVal(Integer),
'boolean': () => new ScalarTypeVal(Boolean),
'nil': () => new Nil('literal'),
'top': () => TOP,
'string': { val: () => new ScalarTypeVal(String) },
'number': { val: () => new ScalarTypeVal(Number) },
'integer': { val: () => new ScalarTypeVal(Integer) },
'boolean': { val: () => new ScalarTypeVal(Boolean) },
'nil': { val: () => new Nil('literal') },
'top': { val: () => TOP },
}
},
token: {
'#A&': { c: '&' },
'#A|': { c: '|' },
'#A/': { c: '/' },
'#A*': { c: '*' }, // TODO: REVIEW char as * is a bit overloaded
'#A=': { c: '=' },
},
// // JSONIC-UPDATE: fixed: { token }
// fixed: {
// token: {
// '#A&': '&',
// '#A|': '|',
// '#A/': '/',
// '#A*': '*', // TODO: REVIEW char as * is a bit overloaded
// '#A=': '=',
// }
// },
// JSONIC-UPDATE: check impl
map: {

@@ -97,226 +112,278 @@ merge: (prev: any, curr: any) => {

let NR = jsonic.token.NR
let TX = jsonic.token.TX
let ST = jsonic.token.ST
let VL = jsonic.token.VL
let OB = jsonic.token.OB
let OS = jsonic.token.OS
let opmap: any = {
'conjunct-infix': (_op: Op, terms: any) => new ConjunctVal(terms),
'disjunct-infix': (_op: Op, terms: any) => new DisjunctVal(terms),
let CJ = jsonic.token['#A&']
let DJ = jsonic.token['#A|']
let FS = jsonic.token['#A/']
let AK = jsonic.token['#A*']
let EQ = jsonic.token['#A=']
'dot-prefix': (_op: Op, terms: any) => new RefVal(terms, true),
'dot-infix': (_op: Op, terms: any) => new RefVal(terms),
'star-prefix': (_op: Op, terms: any) => new PrefVal(terms[0]),
}
jsonic.rule('expr', () => {
return new RuleSpec({
open: [
{ s: [[CJ, DJ, AK]], p: 'disjunct', b: 1, n: { expr: 1 } },
],
close: [
{ s: [] }
],
// NOTE: expr node are meta structures, not Vals
// t=most recent term on the left, o=Val
bo: (r: Rule) => r.node = { t: r.node },
ac: (r: Rule) => {
let cn = r.child.node.o
if (cn instanceof PrefVal) {
return { err: 'single-pref' }
}
// replace first val with expr val
r.node = cn
},
})
})
jsonic.rule('disjunct', () => {
return new RuleSpec({
open: [
{
s: [CJ], p: 'conjunct', b: 1
jsonic
.use(Expr, {
op: {
'conjunct': {
infix: true, src: '&', left: 14000, right: 15000
},
{
s: [AK], p: 'pref', b: 1
'disjunct': {
infix: true, src: '|', left: 14000, right: 15000
},
{
s: [DJ, AK], p: 'pref', b: 1,
a: (r: Rule) => {
// Append to existing or start new
r.node.o = r.node.o instanceof DisjunctVal ?
r.node.o : new DisjunctVal([r.node.t])
}
'dot-infix': {
src: '.',
infix: true,
left: 15_000_000,
right: 14_000_000,
},
{
s: [DJ, [NR, TX, ST, VL, OB, OS]], b: 1,
p: 'val',
a: (r: Rule) => {
// Append to existing or start new
r.node.o = r.node.o instanceof DisjunctVal ?
r.node.o : new DisjunctVal([r.node.t])
}
'dot-prefix': {
src: '.',
prefix: true,
right: 14_000_000,
},
],
close: [
{
s: [DJ], r: 'disjunct', b: 1, a: (r: Rule) => {
// higher precedence term (e.g &) was on the left
let cn = r.child.node?.o || r.child.node
r.node.t = cn
}
'star': {
src: '*',
prefix: true,
right: 14_000_000,
},
{
s: [CJ], r: 'disjunct', b: 1, a: (r: Rule) => {
// & with higher precedence to the right
let cn = r.child.node?.o || r.child.node
r.node.t = cn
r.child.node = null
}
},
{}
],
ac: (r: Rule) => {
// child values may be normal or expr metas
let cn = r.child.node?.o || r.child.node
if (cn) {
if (r.node.o instanceof DisjunctVal) {
r.node.o.append(cn)
}
else {
// this rule was just a pass-through
r.node.o = cn
}
}
},
evaluate: (op: Op, terms: any) => {
// console.log('LANG EVAL', op, terms)
return opmap[op.name](op, terms)
}
})
})
// console.log(jsonic.token)
let CJ = jsonic.token['#E&']
let CL = jsonic.token.CL
// let NR = jsonic.token.NR
// let TX = jsonic.token.TX
// let ST = jsonic.token.ST
// let VL = jsonic.token.VL
// let OB = jsonic.token.OB
// let OS = jsonic.token.OS
jsonic.rule('conjunct', () => {
return new RuleSpec({
open: [
{
s: [CJ, [NR, TX, ST, VL, OB, OS, FS]], b: 1,
p: 'val',
a: (r: Rule) => {
r.node = {
o: r.node.o instanceof ConjunctVal ?
r.node.o : new ConjunctVal([r.node.t])
}
}
},
],
close: [
{
s: [CJ], r: 'conjunct', b: 1
},
{}
],
ac: (r: Rule) => {
let cn = r.child.node?.o || r.child.node
if (cn) {
if (r.node.o instanceof ConjunctVal) {
r.node.o.append(cn)
}
else {
r.node.o = cn
}
}
}
})
})
// let DJ = jsonic.token['#A|']
// let FS = jsonic.token['#A/']
// let AK = jsonic.token['#A*']
// let EQ = jsonic.token['#A=']
jsonic.rule('path', () => {
return new RuleSpec({
open: [
{ s: [FS, [TX, ST, NR, VL]], p: 'part', b: 2 }
],
bo: (r: Rule) => r.node = new RefVal('/')
})
})
// JSONIC-UPDATE: rule.open[], rule.close[] - replace with rule.oN|cN
jsonic.rule('part', () => {
return new RuleSpec({
open: [
{
s: [FS, [TX, ST, NR, VL]], r: 'part', a: (r: Rule) => {
r.node.append(r.open[1].src)
}
},
{}, // no more parts
],
})
})
// jsonic.rule('expr', (rs: RuleSpec) => {
// rs
// .open([
// { s: [[CJ, DJ, AK]], p: 'disjunct', b: 1, n: { expr: 1 } },
// ])
// .close([
// { s: [] }
// ])
jsonic.rule('pair', (rs: RuleSpec) => {
rs.def.open.unshift({
s: [[CJ, DJ], EQ], p: 'val', u: { spread: true }
})
// // NOTE: expr node are meta structures, not Vals
// // t=most recent term on the left, o=Val
// .bo((r: Rule) => r.node = { t: r.node })
// TODO: make before/after function[]
let orig_bc = rs.def.bc
rs.def.bc = function(rule: Rule, ctx: Context) {
let out = orig_bc.call(this, rule, ctx)
// .ac((r: Rule) => {
// let cn = r.child.node.o
if (rule.use.spread) {
rule.node[MapVal.SPREAD] =
(rule.node[MapVal.SPREAD] || { o: rule.open[0].src, v: [] })
rule.node[MapVal.SPREAD].v.push(rule.child.node)
}
// if (cn instanceof PrefVal) {
// return r.o0.bad('single-pref')
// }
return out
}
// // replace first val with expr val
// r.node = cn
return rs
})
// if ('val' === r.parent?.name) {
// r.parent.node = r.node
// }
// })
// })
jsonic.rule('pref', () => {
return new RuleSpec({
open: [
{
s: [AK, [NR, TX, ST, VL, OB, OS, FS]], b: 1,
p: 'val',
},
],
close: [
// Can't be in a conjunct
{ s: [CJ], e: (r: Rule) => r.open[1] },
{}
],
ac: (r: Rule) => {
r.node = new PrefVal(r.child.node)
}
})
})
// jsonic.rule('disjunct', (rs: RuleSpec) => {
// rs
// .open([
// {
// s: [CJ], p: 'conjunct', b: 1
// },
// {
// s: [AK], p: 'pref', b: 1
// },
// {
// s: [DJ, AK], p: 'pref', b: 1,
// a: (r: Rule) => {
// // Append to existing or start new
// r.node.o = r.node.o instanceof DisjunctVal ?
// r.node.o : new DisjunctVal([r.node.t])
// }
// },
// {
// s: [DJ, [NR, TX, ST, VL, OB, OS]], b: 1,
// p: 'val',
// a: (r: Rule) => {
// // Append to existing or start new
// r.node.o = r.node.o instanceof DisjunctVal ?
// r.node.o : new DisjunctVal([r.node.t])
// }
// },
// ])
// .close([
// {
// s: [DJ], r: 'disjunct', b: 1, a: (r: Rule) => {
// // higher precedence term (e.g &) was on the left
// let cn = r.child.node?.o || r.child.node
// r.node.t = cn
// }
// },
// {
// s: [CJ], r: 'disjunct', b: 1, a: (r: Rule) => {
// // & with higher precedence to the right
// let cn = r.child.node?.o || r.child.node
// r.node.t = cn
// r.child.node = null
// }
// },
// {}
// ])
// .ac((r: Rule) => {
// // child values may be normal or expr metas
// let cn = r.child.node?.o || r.child.node
// if (cn) {
// if (r.node.o instanceof DisjunctVal) {
// r.node.o.append(cn)
// }
// else {
// // this rule was just a pass-through
// r.node.o = cn
// }
// }
// })
// })
// jsonic.rule('conjunct', (rs: RuleSpec) => {
// rs
// .open([
// {
// s: [CJ, [NR, TX, ST, VL, OB, OS, FS]], b: 1,
// p: 'val',
// a: (r: Rule) => {
// r.node = {
// o: r.node.o instanceof ConjunctVal ?
// r.node.o : new ConjunctVal([r.node.t])
// }
// }
// },
// ])
// .close([
// {
// s: [CJ], r: 'conjunct', b: 1
// },
// {}
// ])
// .ac((r: Rule) => {
// let cn = r.child.node?.o || r.child.node
// if (cn) {
// if (r.node.o instanceof ConjunctVal) {
// r.node.o.append(cn)
// }
// else {
// r.node.o = cn
// }
// }
// })
// })
// jsonic.rule('path', (rs: RuleSpec) => {
// rs
// .open([
// { s: [FS, [TX, ST, NR, VL]], p: 'part', b: 2 }
// ])
// .bo((r: Rule) => r.node = new RefVal('/'))
// })
// jsonic.rule('part', (rs: RuleSpec) => {
// rs.
// open([
// {
// s: [FS, [TX, ST, NR, VL]], r: 'part', a: (r: Rule) => {
// r.node.append(r.o1.src)
// }
// },
// {}, // no more parts
// ])
// })
// // rs.def.open.unshift({
// // s: [[CJ, DJ], EQ], p: 'val', u: { spread: true }
// // })
// // // TODO: make before/after function[]
// // let orig_bc: any = rs.def.bc
// // rs.def.bc = function(rule: Rule, ctx: Context) {
// // let out = orig_bc.call(this, rule, ctx)
// // if (rule.use.spread) {
// // rule.node[MapVal.SPREAD] =
// // (rule.node[MapVal.SPREAD] || { o: rule.o0.src, v: [] })
// // rule.node[MapVal.SPREAD].v.push(rule.child.node)
// // }
// // return out
// // }
// return rs
// })
// jsonic.rule('pref', (rs: RuleSpec) => {
// rs
// .open([
// {
// s: [AK, [NR, TX, ST, VL, OB, OS, FS]], b: 1,
// p: 'val',
// },
// ])
// .close([
// // Can't be in a conjunct
// { s: [CJ], e: (r: Rule) => r.o1 },
// {}
// ])
// .ac((r: Rule) => {
// r.node = new PrefVal(r.child.node)
// })
// })
jsonic.rule('val', (rs: RuleSpec) => {
rs.def.open.unshift(
// Prefs are always within an expression
{ s: [AK, [NR, TX, ST, VL, OB, OS, FS]], p: 'expr', b: 2 },
{ s: [FS, [TX, ST, NR, VL]], p: 'path', b: 2 },
)
rs.def.close.unshift(
{
s: [[CJ, DJ]], p: 'expr', b: 1, c: (r: Rule) => {
return null == r.n.expr || 0 === r.n.expr
}
},
)
// rs.def.open.unshift(
// // Prefs are always within an expression
// { s: [AK, [NR, TX, ST, VL, OB, OS, FS]], p: 'expr', b: 2 },
// { s: [FS, [TX, ST, NR, VL]], p: 'path', b: 2 },
// )
// rs.def.close.unshift(
// {
// s: [[CJ, DJ]], p: 'expr', b: 1, c: (r: Rule) => {
// return null == r.n.expr || 0 === r.n.expr
// }
// },
// )
// TODO: wrap utility needed for jsonic to do this?
let orig_bc = rs.def.bc
let orig_bc: any = rs.def.bc
rs.def.bc = function(rule: Rule, ctx: Context) {

@@ -343,9 +410,9 @@ let out = orig_bc.call(this, rule, ctx)

let st = rule.open[0]
valnode.row = st.row
valnode.col = st.col
let st = rule.o0
valnode.row = st.rI
valnode.col = st.cI
// JSONIC-UPDATE: still valid? check multisource
valnode.url = ctx.meta.multisource && ctx.meta.multisource.path
// console.log('VAL META', valnode.canon, valnode.url)
rule.node = valnode

@@ -359,2 +426,3 @@

jsonic.rule('map', (rs: RuleSpec) => {

@@ -372,5 +440,26 @@ let orig_bc = rs.def.bc

jsonic.rule('pair', (rs: RuleSpec) => {
let orig_bc: any = rs.def.bc
rs
.open([{ s: [CJ, CL], p: 'val', u: { spread: true }, g: 'spread' }])
.bc((...rest: any) => {
orig_bc(...rest)
let rule = rest[0]
if (rule.use.spread) {
rule.node[MapVal.SPREAD] =
(rule.node[MapVal.SPREAD] || { o: rule.o0.src, v: [] })
rule.node[MapVal.SPREAD].v.push(rule.child.node)
}
})
return rs
})
}
const includeFileResolver = makeFileResolver((spec: any) => {
return 'string' === typeof spec ? spec : spec?.peg
})

@@ -390,6 +479,4 @@

.use(MultiSource, {
resolver: options ? options.resolver : undefined
resolver: options?.resolver || includeFileResolver
})
// console.log('AL options', this.options)
}

@@ -399,2 +486,3 @@

// JSONIC-UPDATE - check meta
let jm: any = {

@@ -413,4 +501,2 @@ multisource: {

// console.log('ALp jm', jm)
let val = this.jsonic(src, jm)

@@ -425,2 +511,3 @@

Site,
includeFileResolver,
}

@@ -366,2 +366,3 @@ /* Copyright (c) 2021 Richard Rodger, MIT License */

if ('&' === spread.o) {
// TODO: handle existing spread!
this.spread.cj =

@@ -504,3 +505,3 @@ new ConjunctVal(Array.isArray(spread.v) ? spread.v : [spread.v], ctx)

return '{' +
(this.spread.cj ? '&=' + this.spread.cj.canon +
(this.spread.cj ? '&:' + this.spread.cj.canon +
(0 < keys.length ? ',' : '') : '') +

@@ -754,12 +755,47 @@ keys

absolute: boolean
sep = '.' // was '/'
constructor(peg: string, ctx?: Context) {
super(peg, ctx)
this.parts = peg.split('/').filter(p => '' != p)
this.absolute = peg.startsWith('/')
// constructor(peg: string | string[], ctx?: Context) {
// super(peg, ctx)
// this.parts = 'string' === typeof peg ? peg.split(this.sep) : peg
// this.parts = this.parts.filter(p => '' != p)
// // this.absolute = peg.startsWith(this.sep)
// }
constructor(peg: any[], abs?: boolean) {
super('')
this.absolute = true === abs
this.parts = []
// console.log('RV', peg)
for (let part of peg) {
this.append(part)
}
}
append(part: string) {
this.parts.push(part)
this.peg = (this.absolute ? '/' : '') + this.parts.join('/')
append(part: any) {
//console.log('APPEND 0', part)
if ('string' === typeof part) {
this.parts.push(part)
}
else if (part instanceof StringVal) {
this.parts.push(part.peg)
}
else if (part instanceof RefVal) {
this.parts.push(...part.parts)
if (part.absolute) {
this.absolute = true
}
}
this.peg = (this.absolute ? this.sep : '') + this.parts.join(this.sep)
// console.log('APPEND 1', this.parts)
}

@@ -766,0 +802,0 @@

{
"name": "aontu",
"version": "0.0.9",
"version": "0.1.1",
"main": "dist/aontu.js",

@@ -26,3 +26,4 @@ "type": "commonjs",

"prettier": "prettier --write --no-semi --single-quote *.ts test/*.js",
"build": "tsc -d && cp dist/aontu.js dist/aontu.min.js && browserify -o dist/aontu.min.js -e dist/aontu.js -s Aontu -im -i assert -p tinyify",
"build": "tsc -d",
"build-web": "tsc -d && cp dist/aontu.js dist/aontu.min.js && browserify -o dist/aontu.min.js -e dist/aontu.js -s Aontu -im -i assert -p tinyify",
"clean": "rm -rf node_modules yarn.lock package-lock.json",

@@ -32,3 +33,3 @@ "reset": "npm run clean && npm i && npm run build && npm test",

"repo-publish": "npm run clean && npm i && npm run repo-publish-quick",
"repo-publish-quick": "npm run prettier && npm run build && npm run test && npm run test-web && npm run repo-tag && npm publish --registry http://registry.npmjs.org "
"repo-publish-quick": "npm run prettier && npm run build && npm run test && npm run test-web && npm run repo-tag && npm publish --registry https://registry.npmjs.org "
},

@@ -43,9 +44,11 @@ "license": "MIT",

"dependencies": {
"@jsonic/multisource": "0.0.8",
"@types/node": "^16.3.1",
"jsonic": "jsonicjs/jsonic#4edd639987b75ef62a74e3904fb890f59d21379c"
"@jsonic/directive": "^0.5.0",
"@jsonic/expr": "^0.1.1",
"@jsonic/multisource": "0.4.0",
"@types/node": "^17.0.35",
"jsonic": "jsonicjs/jsonic#nextgen"
},
"devDependencies": {
"@hapi/code": "^8.0.3",
"@hapi/lab": "^24.3.0",
"@hapi/code": "^8.0.7",
"@hapi/lab": "^24.5.1",
"benchmark": "^2.1.4",

@@ -55,7 +58,7 @@ "coveralls": "^3.1.1",

"lab-transform-typescript": "^3.0.1",
"prettier": "^2.3.2",
"serve": "^12.0.0",
"prettier": "^2.6.2",
"serve": "^13.0.2",
"tinyify": "^3.0.0",
"typescript": "^4.3.5"
"typescript": "^4.7.2"
}
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc