septima-lang 0.0.6 → 0.0.7

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.
Files changed (72) hide show
  1. package/main.js +1 -0
  2. package/package.json +3 -3
  3. package/dist/src/ast-node.d.ts +0 -98
  4. package/dist/src/ast-node.js +0 -139
  5. package/dist/src/extract-message.d.ts +0 -1
  6. package/dist/src/extract-message.js +0 -10
  7. package/dist/src/fail-me.d.ts +0 -1
  8. package/dist/src/fail-me.js +0 -11
  9. package/dist/src/find-array-method.d.ts +0 -15
  10. package/dist/src/find-array-method.js +0 -104
  11. package/dist/src/find-string-method.d.ts +0 -2
  12. package/dist/src/find-string-method.js +0 -88
  13. package/dist/src/index.d.ts +0 -1
  14. package/dist/src/index.js +0 -18
  15. package/dist/src/location.d.ts +0 -11
  16. package/dist/src/location.js +0 -3
  17. package/dist/src/parser.d.ts +0 -44
  18. package/dist/src/parser.js +0 -462
  19. package/dist/src/result.d.ts +0 -24
  20. package/dist/src/result.js +0 -29
  21. package/dist/src/runtime.d.ts +0 -28
  22. package/dist/src/runtime.js +0 -347
  23. package/dist/src/scanner.d.ts +0 -23
  24. package/dist/src/scanner.js +0 -88
  25. package/dist/src/septima.d.ts +0 -32
  26. package/dist/src/septima.js +0 -91
  27. package/dist/src/should-never-happen.d.ts +0 -1
  28. package/dist/src/should-never-happen.js +0 -9
  29. package/dist/src/source-code.d.ts +0 -19
  30. package/dist/src/source-code.js +0 -90
  31. package/dist/src/stack.d.ts +0 -11
  32. package/dist/src/stack.js +0 -19
  33. package/dist/src/switch-on.d.ts +0 -1
  34. package/dist/src/switch-on.js +0 -9
  35. package/dist/src/symbol-table.d.ts +0 -6
  36. package/dist/src/symbol-table.js +0 -3
  37. package/dist/src/value.d.ts +0 -128
  38. package/dist/src/value.js +0 -634
  39. package/dist/tests/parser.spec.d.ts +0 -1
  40. package/dist/tests/parser.spec.js +0 -31
  41. package/dist/tests/septima-compute-module.spec.d.ts +0 -1
  42. package/dist/tests/septima-compute-module.spec.js +0 -36
  43. package/dist/tests/septima.spec.d.ts +0 -1
  44. package/dist/tests/septima.spec.js +0 -807
  45. package/dist/tests/value.spec.d.ts +0 -1
  46. package/dist/tests/value.spec.js +0 -355
  47. package/dist/tsconfig.tsbuildinfo +0 -1
  48. package/jest-output.json +0 -1
  49. package/src/a.js +0 -66
  50. package/src/ast-node.ts +0 -249
  51. package/src/extract-message.ts +0 -5
  52. package/src/fail-me.ts +0 -7
  53. package/src/find-array-method.ts +0 -115
  54. package/src/find-string-method.ts +0 -84
  55. package/src/index.ts +0 -1
  56. package/src/location.ts +0 -13
  57. package/src/parser.ts +0 -530
  58. package/src/result.ts +0 -45
  59. package/src/runtime.ts +0 -365
  60. package/src/scanner.ts +0 -106
  61. package/src/septima.ts +0 -121
  62. package/src/should-never-happen.ts +0 -4
  63. package/src/source-code.ts +0 -101
  64. package/src/stack.ts +0 -18
  65. package/src/switch-on.ts +0 -4
  66. package/src/symbol-table.ts +0 -7
  67. package/src/value.ts +0 -742
  68. package/tests/parser.spec.ts +0 -30
  69. package/tests/septima-compute-module.spec.ts +0 -41
  70. package/tests/septima.spec.ts +0 -880
  71. package/tests/value.spec.ts +0 -387
  72. package/tsconfig.json +0 -11
package/main.js ADDED
@@ -0,0 +1 @@
1
+ (()=>{"use strict";var e={166:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.span=t.show=void 0;const n=r(29),s=r(434);t.show=function e(t){if(Array.isArray(t))return t.map((t=>e(t))).join(", ");if("arrayLiteral"===t.tag)return`[${t.parts.map((t=>"element"===t.tag?e(t.v):"spread"===t.tag?`...${e(t.v)}`:void(0,n.shouldNeverHappen)(t))).join(", ")}]`;if("binaryOperator"===t.tag)return`(${e(t.lhs)} ${t.operator} ${e(t.rhs)})`;if("dot"===t.tag)return`${e(t.receiver)}.${e(t.ident)}`;if("export*"===t.tag)return"(export*)";if("ternary"===t.tag)return`${e(t.condition)} ? ${e(t.positive)} : ${e(t.negative)}`;if("functionCall"===t.tag)return`${e(t.callee)}(${e(t.actualArgs)})`;if("ident"===t.tag)return t.t.text;if("if"===t.tag)return`if (${e(t.condition)}) ${e(t.positive)} else ${e(t.negative)}`;if("indexAccess"===t.tag)return`${e(t.receiver)}[${e(t.index)}]`;if("lambda"===t.tag)return`fun (${e(t.formalArgs)}) ${e(t.body)}`;if("literal"===t.tag)return(0,s.switchOn)(t.type,{bool:()=>t.t.text,num:()=>t.t.text,sink:()=>"sink","sink!":()=>"sink!","sink!!":()=>"sink!!",str:()=>`'${t.t.text}'`});if("objectLiteral"===t.tag)return`{${t.parts.map((t=>"computedName"===t.tag?`[${e(t.k)}]: ${e(t.v)}`:"hardName"===t.tag?`${e(t.k)}: ${e(t.v)}`:"spread"===t.tag?`...${e(t.o)}`:void(0,n.shouldNeverHappen)(t))).join(", ")}}`;if("topLevelExpression"===t.tag){const r=t.definitions.map((t=>`let ${e(t.ident)} = ${e(t.value)}`)).join("; ");return`${r?r+";":""}${r&&t.computation?" ":""}${t.computation?e(t.computation):""}`}if("unaryOperator"===t.tag)return`${t.operator}${e(t.operand)}`;if("unit"===t.tag){const r=t.imports.map((t=>`import * as ${e(t.ident)} from '${t.pathToImportFrom.text}';`)).join("\n");return`${r?r+"\n":""}${e(t.expression)}`}(0,n.shouldNeverHappen)(t)},t.span=function e(t){const r=(e,t)=>({from:e.from,to:t.to}),s=e=>({from:e.location,to:{offset:e.location.offset+e.text.length-1}});if("arrayLiteral"===t.tag)return r(s(t.start),s(t.end));if("binaryOperator"===t.tag)return r(e(t.lhs),e(t.rhs));if("dot"===t.tag)return r(e(t.receiver),e(t.ident));if("functionCall"===t.tag)return r(e(t.callee),s(t.end));if("ident"===t.tag)return s(t.t);if("export*"===t.tag)return{from:{offset:0},to:{offset:0}};if("if"===t.tag)return r(e(t.condition),e(t.negative));if("indexAccess"===t.tag)return r(e(t.receiver),e(t.index));if("lambda"===t.tag)return r(s(t.start),e(t.body));if("ternary"===t.tag)return r(e(t.condition),e(t.negative));if("literal"===t.tag)return s(t.t);if("objectLiteral"===t.tag)return r(s(t.start),s(t.end));if("topLevelExpression"===t.tag){if(t.computation){const n=t.definitions.find(Boolean),o=e(t.computation);return r(n?s(n.start):o,o)}if(t.definitions.length){const n=t.definitions[0],o=t.definitions[t.definitions.length-1];return r(s(n.start),e(o.value))}return{from:{offset:0},to:{offset:0}}}if("unaryOperator"===t.tag)return r(s(t.operatorToken),e(t.operand));if("unit"===t.tag){const n=t.imports.find(Boolean),o=e(t.expression);return r(n?s(n.start):o,o)}(0,n.shouldNeverHappen)(t)}},883:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.extractMessage=void 0,t.extractMessage=function(e){return e.message}},465:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.failMe=void 0,t.failMe=function(e){if(!e)throw new Error("This expression must never be evaluated");throw new Error(`Bad value: ${e}`)}},855:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.findArrayMethod=void 0;const n=r(669);function s(e){const t=[];for(const r of e){const e=n.Value.from(r),s=e.unwrap();Array.isArray(s)?t.push(...s):t.push(e)}return t}t.findArrayMethod=function(e,t,r){const o=e=>(...t)=>r(e,t.map((e=>n.Value.from(e)))),i=e=>(...t)=>r(e,t.map((e=>n.Value.from(e)))).assertBool();if("at"===t)return n.Value.foreign((t=>e.at(t.assertNum())));if("concat"===t)return n.Value.foreign((t=>e.concat(t.assertArr())));if("entries"===t)return n.Value.foreign((()=>[...e.entries()]));if("every"===t)return n.Value.foreign((t=>e.every(i(t))));if("filter"===t)return n.Value.foreign((t=>e.filter(i(t))));if("find"===t)return n.Value.foreign((t=>e.find(i(t))));if("findIndex"===t)return n.Value.foreign((t=>e.findIndex(i(t))));if("flatMap"===t)return n.Value.foreign((t=>s(e.map(o(t)))));if("flat"===t)return n.Value.foreign((()=>s(e)));if("includes"===t)return n.Value.foreign((t=>e.some((e=>n.Value.from(e).equalsTo(t).isTrue()))));if("indexOf"===t)return n.Value.foreign((t=>e.findIndex((e=>n.Value.from(e).equalsTo(t).isTrue()))));if("join"===t)return n.Value.foreign((t=>e.join(t.assertStr())));if("lastIndexOf"===t)return n.Value.foreign((t=>{for(let r=e.length-1;r>=0;--r)if(n.Value.from(e[r]).equalsTo(t).isTrue())return r;return-1}));if("length"===t)return n.Value.num(e.length);if("map"===t)return n.Value.foreign((t=>e.map(o(t))));if("reverse"===t)return n.Value.foreign((()=>[...e].reverse()));if("reduce"===t)return n.Value.foreign(((t,r)=>e.reduce(o(t),r)));if("reduceRight"===t)return n.Value.foreign(((t,r)=>e.reduceRight(o(t),r)));if("slice"===t)return n.Value.foreign(((t,r)=>e.slice(t?.assertNum(),r?.assertNum())));if("some"===t)return n.Value.foreign((t=>e.some(i(t))));throw new Error(`Unrecognized array method: ${t}`)}},794:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.findStringMethod=void 0;const n=r(669);t.findStringMethod=function(e,t){const r=n.Value.toStringOrNumber(t);if("number"==typeof r)throw new Error("Index is of type number - not supported");if("at"===r)return n.Value.foreign((t=>e.at(t.assertNum())));if("charAt"===r)return n.Value.foreign((t=>e.charAt(t.assertNum())));if("concat"===r)return n.Value.foreign((t=>e.concat(t.assertStr())));if("endsWith"===r)return n.Value.foreign((t=>e.endsWith(t.assertStr())));if("includes"===r)return n.Value.foreign((t=>e.includes(t.assertStr())));if("indexOf"===r)return n.Value.foreign((t=>e.indexOf(t.assertStr())));if("lastIndexOf"===r)return n.Value.foreign((t=>e.lastIndexOf(t.assertStr())));if("length"===r)return n.Value.num(e.length);if("match"===r)return n.Value.foreign((t=>e.match(t.assertStr())));if("matchAll"===r)return n.Value.foreign((t=>[...e.matchAll(new RegExp(t.assertStr(),"g"))]));if("padEnd"===r)return n.Value.foreign(((t,r)=>e.padEnd(t.assertNum(),r?.assertStr())));if("padStart"===r)return n.Value.foreign(((t,r)=>e.padStart(t.assertNum(),r?.assertStr())));if("repeat"===r)return n.Value.foreign((t=>e.repeat(t.assertNum())));if("replace"===r)return n.Value.foreign(((t,r)=>e.replace(t.assertStr(),r.assertStr())));if("replaceAll"===r)return n.Value.foreign(((t,r)=>e.replaceAll(t.assertStr(),r.assertStr())));if("search"===r)return n.Value.foreign((t=>e.search(t.assertStr())));if("slice"===r)return n.Value.foreign(((t,r)=>e.slice(t?.assertNum(),r?.assertNum())));if("split"===r)return n.Value.foreign((t=>e.split(t.assertStr())));if("startsWith"===r)return n.Value.foreign((t=>e.startsWith(t.assertStr())));if("substring"===r)return n.Value.foreign(((t,r)=>e.substring(t.assertNum(),r?.assertNum())));if("toLowerCase"===r)return n.Value.foreign((()=>e.toLowerCase()));if("toUpperCase"===r)return n.Value.foreign((()=>e.toUpperCase()));if("trim"===r)return n.Value.foreign((()=>e.trim()));if("trimEnd"===r)return n.Value.foreign((()=>e.trimEnd()));if("trimStart"===r)return n.Value.foreign((()=>e.trimStart()));throw new Error(`Unrecognized string method: ${r}`)}},326:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),s=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),s(r(212),t)},270:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=void 0;const n=r(166),s=r(434);t.Parser=class{constructor(e){this.scanner=e}parse(){const e=this.unit();if(!this.scanner.eof())throw new Error(`Loitering input ${this.scanner.sourceRef}`);return e}unit(){return{tag:"unit",imports:this.imports(),expression:this.expression("TOP_LEVEL")}}imports(){const e=[];for(;;){const t=this.scanner.consumeIf("import");if(!t)return e;this.scanner.consume("*"),this.scanner.consume("as");const r=this.identifier();this.scanner.consume("from");const o=this.maybePrimitiveLiteral();if(void 0===o)throw new Error(`Expected a literal ${this.scanner.sourceRef}`);const i=()=>{throw new Error(`Expected a string literal ${this.scanner.sourceCode.sourceRef((0,n.span)(o))}`)};(0,s.switchOn)(o.type,{bool:i,num:i,str:()=>{},sink:i,"sink!":i,"sink!!":i}),e.push({start:t,ident:r,pathToImportFrom:o.t}),this.scanner.consumeIf(";")}}definitions(e){const t=[];for(;;){if("NESTED"===e&&this.scanner.headMatches("export "))throw new Error(`non-top-level definition cannot be export ${this.scanner.sourceRef}`);let r=this.scanner.consumeIf("let ");if(r||"TOP_LEVEL"!==e||(r=this.scanner.consumeIf("export let ")),!r)return t;const n=this.identifier();this.scanner.consume("=");const s=this.lambda();if(t.push({start:r,ident:n,value:s}),this.scanner.consumeIf(";"),!this.scanner.headMatches("let "))return t}}expression(e="NESTED"){const t=this.definitions(e);if("TOP_LEVEL"===e&&this.scanner.eof())return{tag:"topLevelExpression",definitions:t};this.scanner.consumeIf("return");const r=this.lambda();return 0===t.length?r:{tag:"topLevelExpression",definitions:t,computation:r}}lambda(){const e=this.scanner.consumeIf("fun");if(!e)return this.arrowFunction();this.scanner.consume("(");const t=[];if(this.scanner.consumeIf(")"));else for(;;){const e=this.identifier();if(t.push(e),this.scanner.consumeIf(")"))break;this.scanner.consume(",")}return{tag:"lambda",start:e,formalArgs:t,body:this.expression()}}arrowFunction(){if(this.scanner.headMatches("(",")","=>")){const e=this.scanner.consume("(");return this.scanner.consume(")"),this.scanner.consume("=>"),{tag:"lambda",start:e,formalArgs:[],body:this.lambdaBody()}}if(this.scanner.headMatches(o,"=>")){const e=this.identifier();this.scanner.consume("=>");const t=this.lambdaBody();return{tag:"lambda",start:e.t,formalArgs:[e],body:t}}if(this.scanner.headMatches("(",o,")","=>")){const e=this.scanner.consume("("),t=this.identifier();return this.scanner.consume(")"),this.scanner.consume("=>"),{tag:"lambda",start:e,formalArgs:[t],body:this.lambdaBody()}}if(this.scanner.headMatches("(",o,",")){const e=this.scanner.consume("("),t=[];for(;;){const e=this.identifier();if(t.push(e),this.scanner.consumeIf(")"))break;this.scanner.consume(",")}return this.scanner.consume("=>"),{tag:"lambda",start:e,formalArgs:t,body:this.lambdaBody()}}return this.ifExpression()}lambdaBody(){if(this.scanner.consumeIf("{")){const e=this.expression();return this.scanner.consume("}"),e}return this.expression()}ifExpression(){if(!this.scanner.consumeIf("if"))return this.ternary();this.scanner.consume("(");const e=this.expression();this.scanner.consume(")");const t=this.expression();return this.scanner.consume("else"),{tag:"if",condition:e,positive:t,negative:this.expression()}}ternary(){const e=this.unsink();if(!this.scanner.consumeIf("? "))return e;const t=this.expression();return this.scanner.consume(":"),{tag:"ternary",condition:e,positive:t,negative:this.expression()}}unsink(){const e=this.or();return this.scanner.consumeIf("??")?{tag:"binaryOperator",operator:"??",lhs:e,rhs:this.unsink()}:e}or(){const e=this.and();return this.scanner.consumeIf("||")?{tag:"binaryOperator",operator:"||",lhs:e,rhs:this.or()}:e}and(){const e=this.equality();return this.scanner.consumeIf("&&")?{tag:"binaryOperator",operator:"&&",lhs:e,rhs:this.and()}:e}equality(){const e=this.comparison();return this.scanner.consumeIf("==")?{tag:"binaryOperator",operator:"==",lhs:e,rhs:this.equality()}:this.scanner.consumeIf("!=")?{tag:"binaryOperator",operator:"!=",lhs:e,rhs:this.equality()}:e}comparison(){const e=this.addition();return this.scanner.consumeIf(">=")?{tag:"binaryOperator",operator:">=",lhs:e,rhs:this.comparison()}:this.scanner.consumeIf("<=")?{tag:"binaryOperator",operator:"<=",lhs:e,rhs:this.comparison()}:this.scanner.consumeIf(">")?{tag:"binaryOperator",operator:">",lhs:e,rhs:this.comparison()}:this.scanner.consumeIf("<")?{tag:"binaryOperator",operator:"<",lhs:e,rhs:this.comparison()}:e}addition(){const e=this.multiplication();return this.scanner.consumeIf("+")?{tag:"binaryOperator",operator:"+",lhs:e,rhs:this.addition()}:this.scanner.consumeIf("-")?{tag:"binaryOperator",operator:"-",lhs:e,rhs:this.addition()}:e}multiplication(){const e=this.power();return this.scanner.consumeIf("*")?{tag:"binaryOperator",operator:"*",lhs:e,rhs:this.multiplication()}:this.scanner.consumeIf("/")?{tag:"binaryOperator",operator:"/",lhs:e,rhs:this.multiplication()}:this.scanner.consumeIf("%")?{tag:"binaryOperator",operator:"%",lhs:e,rhs:this.multiplication()}:e}power(){const e=this.unary();return this.scanner.consumeIf("**")?{tag:"binaryOperator",operator:"**",lhs:e,rhs:this.power()}:e}unary(){let e=this.scanner.consumeIf("!");return e?{tag:"unaryOperator",operand:this.unary(),operator:"!",operatorToken:e}:(e=this.scanner.consumeIf("+"),e?{tag:"unaryOperator",operand:this.unary(),operator:"+",operatorToken:e}:(e=this.scanner.consumeIf("-"),e?{tag:"unaryOperator",operand:this.unary(),operator:"-",operatorToken:e}:this.call()))}call(){const e=this.memberAccess();if(!this.scanner.consumeIf("("))return e;const{actualArgs:t,end:r}=this.actualArgList();return{tag:"functionCall",actualArgs:t,callee:e,end:r}}actualArgList(){const e=[],t=this.scanner.consumeIf(")");if(t)return{actualArgs:e,end:t};for(;;){const t=this.expression();e.push(t);let r=this.scanner.consumeIf(")");if(r)return{actualArgs:e,end:r};if(this.scanner.consume(","),r=this.scanner.consumeIf(")"),r)return{actualArgs:e,end:r}}}memberAccess(){let e=this.parenthesized();for(;;)if(this.scanner.consumeIf("."))e={tag:"dot",receiver:e,ident:this.identifier()};else if(this.scanner.consumeIf("["))e={tag:"indexAccess",receiver:e,index:this.expression()},this.scanner.consume("]");else{if(!this.scanner.consumeIf("("))return e;{const{actualArgs:t,end:r}=this.actualArgList();e={tag:"functionCall",actualArgs:t,callee:e,end:r}}}}parenthesized(){if(this.scanner.consumeIf("(")){const e=this.expression();return this.scanner.consume(")"),e}return this.literalOrIdent()}literalOrIdent(){const e=this.maybeLiteral()??this.maybeIdentifier();if(!e)throw new Error(`Unparsable input ${this.scanner.sourceRef}`);return e}maybeLiteral(){return this.maybePrimitiveLiteral()??this.maybeCompositeLiteral()}maybePrimitiveLiteral(){let e=this.scanner.consumeIf("sink!!")||this.scanner.consumeIf("undefined!!");return e?{tag:"literal",type:"sink!!",t:e}:(e=this.scanner.consumeIf("sink!")||this.scanner.consumeIf("undefined!"),e?{tag:"literal",type:"sink!",t:e}:(e=this.scanner.consumeIf("sink")||this.scanner.consumeIf("undefined"),e?{tag:"literal",type:"sink",t:e}:(e=this.scanner.consumeIf("true"),e?{tag:"literal",type:"bool",t:e}:(e=this.scanner.consumeIf("false"),e?{tag:"literal",type:"bool",t:e}:(e=this.scanner.consumeIf(/([0-9]*[.])?[0-9]+/),e?{tag:"literal",type:"num",t:e}:this.scanner.consumeIf('"',!1)?(e=this.scanner.consume(/[^"]*/),this.scanner.consume('"'),{tag:"literal",type:"str",t:e}):this.scanner.consumeIf("'",!1)?(e=this.scanner.consume(/[^']*/),this.scanner.consume("'"),{tag:"literal",type:"str",t:e}):void 0)))))}maybeCompositeLiteral(){let e=this.scanner.consumeIf("[");return e?this.arrayBody(e):(e=this.scanner.consumeIf("{"),e?this.objectBody(e):void 0)}arrayBody(e){const t=this.scanner.consumeIf("]");if(t)return{tag:"arrayLiteral",start:e,parts:[],end:t};const r=[];for(;;){if(this.scanner.consumeIf(",")){const t=this.scanner.consumeIf("]");if(t)return{tag:"arrayLiteral",start:e,parts:r,end:t};continue}if(this.scanner.consumeIf("..."))r.push({tag:"spread",v:this.expression()});else{const e=this.expression();r.push({tag:"element",v:e})}let t=this.scanner.consumeIf("]");if(t)return{tag:"arrayLiteral",start:e,parts:r,end:t};if(this.scanner.consume(","),t=this.scanner.consumeIf("]"),t)return{tag:"arrayLiteral",start:e,parts:r,end:t}}}objectBody(e){const t=this.scanner.consumeIf("}");if(t)return{tag:"objectLiteral",start:e,parts:[],end:t};const r=[];for(;;){if(this.scanner.consumeIf("..."))r.push({tag:"spread",o:this.expression()});else if(this.scanner.consumeIf("[")){const e=this.expression();this.scanner.consume("]"),this.scanner.consume(":");const t=this.expression();r.push({tag:"computedName",k:e,v:t})}else{const e=this.identifier();this.scanner.consume(":");const t=this.expression();r.push({tag:"hardName",k:e,v:t})}let t=this.scanner.consumeIf("}");if(t)return{tag:"objectLiteral",start:e,parts:r,end:t};if(this.scanner.consume(","),t=this.scanner.consumeIf("}"),t)return{tag:"objectLiteral",start:e,parts:r,end:t}}}identifier(){const e=this.maybeIdentifier();if(!e)throw new Error(`Expected an identifier ${this.scanner.sourceRef}`);return e}maybeIdentifier(){const e=this.scanner.consumeIf(o);if(e)return{tag:"ident",t:e}}};const o=/[a-zA-Z][0-9A-Za-z_]*/},351:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ResultSinkImpl=void 0,t.ResultSinkImpl=class{constructor(e,t){this.sink=e,this.sourceCode=t,this.tag="sink"}get where(){return this.sink.span()}get trace(){const e=this.sink.trace();if(e)return this.sourceCode.formatTrace(e)}get symbols(){return this.sink.symbols()?.export()}get message(){return`Evaluated to sink: ${this.trace??this.sourceCode.sourceRef(this.where)}`}}},257:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return s(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.Runtime=void 0;const i=r(166),a=r(883),u=r(465),c=r(29),l=o(r(884)),f=r(434),h=r(669);class p{constructor(e,t,r){this.symbol=e,this.placeholder=t,this.earlier=r}lookup(e){if(this.symbol===e){const e=this.placeholder.destination;if(void 0===e)throw new Error(`Unresolved definition: ${this.symbol}`);return e}return this.earlier.lookup(e)}export(){const e=this.earlier.export();return e[this.symbol]=this.placeholder.destination?.export()??(0,u.failMe)(`Unbounded symbol: ${this.symbol}`),e}exportValue(){const e=this.earlier.exportValue();return e[this.symbol]=this.placeholder.destination??(0,u.failMe)(`Unbounded symbol: ${this.symbol}`),e}}class d{lookup(e){throw new Error(`Symbol ${e} was not found`)}export(){return{}}exportValue(){return{}}}t.Runtime=class{constructor(e,t="quiet",r,n,s){this.root=e,this.verbosity=t,this.preimports=r,this.getAstOf=n,this.args=s,this.stack=void 0}buildInitialSymbolTable(e){const t=new d,r=h.Value.foreign((e=>e.keys())),n=h.Value.foreign((e=>e.entries())),s=h.Value.foreign((e=>e.fromEntries()));let o=new p("Object",{destination:h.Value.obj({keys:r,entries:n,fromEntries:s})},t);e&&(o=new p("args",{destination:h.Value.from(this.args)},o));for(const[e,t]of Object.entries(this.preimports))o=new p(e,{destination:t},o);return o}compute(){try{return{value:this.evalNode(this.root,this.buildInitialSymbolTable(!0))}}catch(e){const t=[];for(let e=this.stack;e;e=e?.next)t.push(e.ast);return{expressionTrace:t,errorMessage:(0,a.extractMessage)(e),stack:e.stack}}}evalNode(e,t){this.stack=l.push(e,this.stack);let r=this.evalNodeImpl(e,t);return r.isSink()&&!r.span()&&(r=r.bindToSpan((0,i.span)(e))),(0,f.switchOn)(this.verbosity,{quiet:()=>{},trace:()=>{console.log(`output of <|${(0,i.show)(e)}|> is ${JSON.stringify(r)} // ${e.tag}`)}}),this.stack=l.pop(this.stack),r}importDefinitions(e){const t=this.getAstOf(e),r=t.expression,n=t.imports;if("arrayLiteral"===r.tag||"binaryOperator"===r.tag||"dot"===r.tag||"export*"===r.tag||"functionCall"===r.tag||"ident"===r.tag||"if"===r.tag||"ternary"===r.tag||"indexAccess"===r.tag||"lambda"===r.tag||"literal"===r.tag||"objectLiteral"===r.tag||"unaryOperator"===r.tag||"unit"===r.tag)return h.Value.obj({});if("topLevelExpression"===r.tag){const e={tag:"unit",imports:n,expression:{tag:"topLevelExpression",definitions:r.definitions,computation:{tag:"export*"}}};return this.evalNode(e,this.buildInitialSymbolTable(!1))}(0,c.shouldNeverHappen)(r)}evalNodeImpl(e,t){if("unit"===e.tag){let r=t;for(const t of e.imports){const e=this.importDefinitions(t.pathToImportFrom.text);r=new p(t.ident.t.text,{destination:e},r)}return this.evalNode(e.expression,r)}if("topLevelExpression"===e.tag){let r=t;for(const t of e.definitions){const e=t.ident.t.text,n={destination:void 0};r=new p(e,n,r);const s=this.evalNode(t.value,r);n.destination=s}return e.computation?this.evalNode(e.computation,r):h.Value.str("")}if("export*"===e.tag)return h.Value.obj(t.exportValue());if("binaryOperator"===e.tag){const r=this.evalNode(e.lhs,t);if("||"===e.operator)return r.or((()=>this.evalNode(e.rhs,t)));if("&&"===e.operator)return r.and((()=>this.evalNode(e.rhs,t)));if("??"===e.operator)return r.unsink((()=>this.evalNode(e.rhs,t)));const n=this.evalNode(e.rhs,t);if("!="===e.operator)return r.equalsTo(n).not();if("=="===e.operator)return r.equalsTo(n);if("<="===e.operator)return r.order(n).isToZero("<=");if("<"===e.operator)return r.order(n).isToZero("<");if(">="===e.operator)return r.order(n).isToZero(">=");if(">"===e.operator)return r.order(n).isToZero(">");if("%"===e.operator)return r.modulo(n);if("*"===e.operator)return r.times(n);if("**"===e.operator)return r.power(n);if("+"===e.operator)return r.plus(n);if("-"===e.operator)return r.minus(n);if("/"===e.operator)return r.over(n);(0,c.shouldNeverHappen)(e.operator)}if("unaryOperator"===e.tag){const r=this.evalNode(e.operand,t);if("!"===e.operator)return r.not();if("+"===e.operator)return h.Value.num(0).plus(r);if("-"===e.operator)return r.negate();(0,c.shouldNeverHappen)(e.operator)}if("ident"===e.tag)return t.lookup(e.t.text);if("literal"===e.tag){if("bool"===e.type)return h.Value.bool("true"===e.t.text);if("num"===e.type)return h.Value.num(Number(e.t.text));if("sink!!"===e.type)return h.Value.sink(void 0,this.stack,t);if("sink!"===e.type)return h.Value.sink(void 0,this.stack);if("sink"===e.type)return h.Value.sink();if("str"===e.type)return h.Value.str(e.t.text);(0,c.shouldNeverHappen)(e.type)}if("arrayLiteral"===e.tag){const r=[];for(const n of e.parts)if("element"===n.tag)r.push(this.evalNode(n.v,t));else if("spread"===n.tag){const e=this.evalNode(n.v,t);r.push(...e.assertArr())}else(0,c.shouldNeverHappen)(n);return h.Value.arr(r)}if("objectLiteral"===e.tag){const r=e.parts.flatMap((e=>{if("hardName"===e.tag)return[[e.k.t.text,this.evalNode(e.v,t)]];if("computedName"===e.tag)return[[this.evalNode(e.k,t).assertStr(),this.evalNode(e.v,t)]];if("spread"===e.tag){const r=this.evalNode(e.o,t);return Object.entries(r.assertObj())}(0,c.shouldNeverHappen)(e)}));return h.Value.obj(Object.fromEntries(r))}if("lambda"===e.tag)return h.Value.lambda(e,t);if("functionCall"===e.tag){const r=e.actualArgs.map((e=>this.evalNode(e,t))),n=this.evalNode(e.callee,t);return this.call(n,r)}if("if"===e.tag||"ternary"===e.tag)return this.evalNode(e.condition,t).ifElse((()=>this.evalNode(e.positive,t)),(()=>this.evalNode(e.negative,t)));if("dot"===e.tag){const r=this.evalNode(e.receiver,t);if(null==r)throw new Error(`Cannot access attribute .${e.ident.t.text} of ${r}`);return r.access(e.ident.t.text,((e,t)=>this.call(e,t)))}if("indexAccess"===e.tag){const r=this.evalNode(e.receiver,t),n=this.evalNode(e.index,t);return r.access(n,((e,t)=>this.call(e,t)))}(0,c.shouldNeverHappen)(e)}call(e,t){return e.call(t,((e,r,n)=>{if(e.length>t.length)throw new Error(`Arg list length mismatch: expected ${e.length} but got ${t.length}`);const s=e.reduce(((e,r,n)=>new p(r,{destination:t[n]},e)),n);return this.evalNode(r,s)}))}}},756:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Scanner=void 0;class r{constructor(e,t=0){this.sourceCode=e,this.offset=t,0===this.offset&&this.eatWhitespace()}get sourceRef(){return this.sourceCode.sourceRef(this.sourceCode.expandToEndOfLine({offset:this.offset}))}curr(){return this.sourceCode.input.substring(this.offset)}eatWhitespace(){for(;;)if(!this.consumeIf(/\s*/,!1)){if(!this.consumeIf("//",!1))return;this.consume(/[^\n]*/,!1)}}eof(){return this.offset>=this.sourceCode.input.length}synopsis(){const e=this.curr();let t=e.substring(0,20);return t.length!==e.length&&(t=`${t}...`),{position:this.offset,lookingAt:t}}headMatches(...e){const t=new r(this.sourceCode,this.offset);for(const r of e)if(void 0===t.consumeIf(r,!0))return!1;return!0}consume(e,t=!0){const r=this.match(e);if(void 0===r)throw new Error(`Expected ${e} ${this.sourceRef}`);const n=this.offset;return this.offset+=r.length,t&&this.eatWhitespace(),{location:{offset:n},text:r}}consumeIf(e,t=!0){if(this.match(e))return this.consume(e,t)}match(e){if("string"==typeof e)return this.curr().startsWith(e)?e:void 0;const t=this.curr().match(e);return t&&0===t.index?t[0]:void 0}}t.Scanner=r},212:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parse=t.Septima=void 0;const n=r(270),s=r(351),o=r(257),i=r(756),a=r(29),u=r(893);class c{static run(e,t,r={}){const n=t?.onSink??(e=>{throw new Error(e.message)}),s=(new c).compute(e,{},"quiet",r);return"ok"===s.tag?s.value:"sink"===s.tag?n(s):void(0,a.shouldNeverHappen)(s)}constructor(){}computeModule(e,t,r){const n=t(e),o=new u.SourceCode(n),i=this.computeImpl(o,"quiet",{},t,r);return i.isSink()?new s.ResultSinkImpl(i,o):{value:i.export(),tag:"ok"}}compute(e,t={},r="quiet",n){const o={};for(const[e,n]of Object.entries(t)){const t=new u.SourceCode(n),i=this.computeImpl(t,r,{},void 0,{});if(i.isSink()){const r=new s.ResultSinkImpl(i,t);throw new Error(`preimport (${e}) evaluated to sink: ${r.message}`)}o[e]=i}const i=new u.SourceCode(e),a=this.computeImpl(i,r,o,void 0,n);return a.isSink()?new s.ResultSinkImpl(a,i):{value:a.export(),tag:"ok"}}computeImpl(e,t,r,s,a){const u=new i.Scanner(e),c=l(new n.Parser(u)),f=new o.Runtime(c,t,r,(e=>{if(!s)throw new Error("cannot read modules");return l(s(e))}),a).compute();if(f.value)return f.value;const h=`${f.errorMessage} when evaluating:\n${e.formatTrace(f.expressionTrace)}`;throw new Error(h)}}function l(e){return("string"==typeof e?new n.Parser(new i.Scanner(new u.SourceCode(e))):e).parse()}t.Septima=c,t.parse=l},29:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.shouldNeverHappen=void 0,t.shouldNeverHappen=function(e){throw new Error(`This should never happen ${e}`)}},893:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SourceCode=void 0;const n=r(166);t.SourceCode=class{constructor(e){this.input=e}formatTrace(e){return` ${e.map((e=>this.sourceRef((0,n.span)(e)))).reverse().join("\n ")}`}sourceRefOfLocation(e){return this.sourceRef(this.expandToEndOfLine(e))}sourceRef(e){return e?`at ${this.formatSpan(e)} ${this.interestingPart(e)}`:"at <unknown location>"}formatSpan(e){const t=this.resolveLocation(e.from),r=this.resolveLocation(e.to);return t.line===r.line?`(${t.line+1}:${t.col+1}..${r.col+1})`:`(${t.line+1}:${t.col+1}..${r.line+1}:${r.col+1})`}interestingPart(e){const t=this.resolveLocation(e.from),r=this.resolveLocation(e.to),n=e=>e.replace(/^[\n]*/,"").replace(/[\n]*$/,""),s=this.lineAt(e.from);if(t.line!==r.line)return`${n(s).substring(0,80)}...`;const o=n(s.substring(t.col,r.col+1));return o.length<=80?o:`${o.substring(0,80)}...`}resolveLocation(e){const t=this.input.slice(0,e.offset);let r=0;for(let e=0;e<t.length;++e)"\n"===t[e]&&(r+=1);let n=0;for(let e=t.length-1;e>=0&&"\n"!==t[e];--e,++n);return{line:r,col:n}}expandToEndOfLine(e){let t=this.input.indexOf("\n",e.offset);return t<0&&(t=this.input.length-1),{from:e,to:{offset:t}}}lineAt(e){const t=this.input.lastIndexOf("\n",e.offset)+1,r=this.expandToEndOfLine(e).to;return this.input.substring(t,r.offset+1)}}},884:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.empty=t.pop=t.push=void 0,t.push=function(e,t){return{ast:e,next:t}},t.pop=function(e){if(void 0===e)throw new Error("Cannot pop from an empty stack");return e.next},t.empty=function(){}},434:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.switchOn=void 0,t.switchOn=function(e,t){return(0,t[e])()}},669:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Value=void 0;const n=r(166),s=r(465),o=r(855),i=r(794),a=r(29),u=r(434);function c(e){return JSON.stringify(e)}const l=(e,...t)=>(r,n,s)=>{if(0===t.length)throw new Error(`value type error: expected ${e} but found ${c(s)}`);throw new Error(`value type error: expected either ${t.join(", ")} or ${e} but found ${c(s)}`)};function f(e,t){const r=e.inner;if("arr"===r.tag)return t.arr(r.val,r.tag,e);if("bool"===r.tag)return t.bool(r.val,r.tag,e);if("foreign"===r.tag)return t.foreign(r.val,r.tag,e);if("lambda"===r.tag)return t.lambda(r.val,r.tag,e);if("num"===r.tag)return t.num(r.val,r.tag,e);if("obj"===r.tag)return t.obj(r.val,r.tag,e);if("sink"===r.tag){if(!t.sink)throw new Error("Cannot evaluate a sink value");return t.sink(r.val,r.tag,e)}if("str"===r.tag)return t.str(r.val,r.tag,e);(0,a.shouldNeverHappen)(r)}function h(e,t){return e.isSink()?e:p.from(f(e,t))}class p{constructor(e){this.inner=e}static bool(e){return new p({val:e,tag:"bool"})}static num(e){return new p({val:e,tag:"num"})}static sink(e,t,r){return new p({val:void 0,tag:"sink",...e?{span:e}:{},...t?{trace:t}:{},...r?{symbols:r}:{}})}static str(e){return new p({val:e,tag:"str"})}static arr(e){return new p({val:e,tag:"arr"})}static obj(e){return new p({val:e,tag:"obj"})}static lambda(e,t){return new p({val:{ast:e,table:t},tag:"lambda"})}static foreign(e){return new p({tag:"foreign",val:e})}isSink(){return"sink"===this.inner.tag}unwrap(){return this.inner.val}assertBool(){const e=l("bool");return f(this,{arr:e,bool:e=>e,foreign:e,lambda:e,num:e,obj:e,sink:e,str:e})}assertNum(){const e=l("num");return f(this,{arr:e,bool:e,foreign:e,lambda:e,num:e=>e,obj:e,sink:e,str:e})}assertStr(){const e=l("str");return f(this,{arr:e,bool:e,foreign:e,lambda:e,num:e,obj:e,sink:e,str:e=>e})}assertArr(){const e=l("arr");return f(this,{arr:e=>e,bool:e,foreign:e,lambda:e,num:e,obj:e,sink:e,str:e})}assertObj(){const e=l("obj");return f(this,{arr:e,bool:e,foreign:e,lambda:e,num:e,obj:e=>e,sink:e,str:e})}assertLambda(){const e=l("lambda");return f(this,{arr:e,bool:e,foreign:e,lambda:e=>e,num:e,obj:e,sink:e,str:e})}isLambda(){return"lambda"===this.inner.tag}ifElse(e,t){const r=l("bool");return h(this,{arr:r,bool:r=>r?e():t(),foreign:r,lambda:r,num:r,obj:r,str:r})}bindToSpan(e){const t=this.inner;if("sink"!==t.tag)throw new Error(`Not supported on type ${this.inner.tag}`);return p.sink(e,t.trace,t.symbols)}trace(){const e=this.inner;if("sink"!==e.tag)return;const t=[];for(let r=e.trace;void 0!==r;r=r?.next)t.push(r.ast);return 0===t.length?void 0:t}symbols(){const e=this.inner;if("sink"===e.tag)return e.symbols}span(){const e=this.inner;if("sink"===e.tag)return e.span}or(e){const t=l("bool");return h(this,{arr:t,bool:r=>r||h(e(),{arr:t,bool:e=>e,foreign:t,lambda:t,num:t,obj:t,str:t}),foreign:t,lambda:t,num:t,obj:t,str:t})}and(e){const t=l("bool");return h(this,{arr:t,bool:r=>r&&h(e(),{arr:t,bool:e=>e,foreign:t,lambda:t,num:t,obj:t,str:t}),foreign:t,lambda:t,num:t,obj:t,str:t})}unsink(e){return this.isSink()?e():this}equalsTo(e){if(this.inner.tag!==e.inner.tag)return p.bool(!1);const t=JSON.stringify(this.inner.val)===JSON.stringify(e.inner.val);return p.bool(t)}not(){const e=l("bool");return h(this,{arr:e,bool:e=>!e,foreign:e,lambda:e,num:e,obj:e,str:e})}binaryNumericOperator(e,t,r){const n=l("num");return h(e,{arr:n,bool:n,foreign:n,lambda:n,num:e=>h(t,{arr:n,bool:n,foreign:n,lambda:n,num:t=>r(e,t),obj:n,str:n}),obj:n,str:n})}plus(e){const t=l("num");return h(this,{arr:t,bool:t,foreign:t,lambda:t,num:r=>h(e,{arr:t,bool:t,foreign:t,lambda:t,num:e=>r+e,obj:t,str:t}),obj:t,str:t=>h(e,{arr:e=>t+e,bool:e=>t+e,foreign:e=>t+e,lambda:e=>t+e,num:e=>t+e,obj:e=>t+e,str:e=>t+e})})}minus(e){return this.binaryNumericOperator(this,e,((e,t)=>e-t))}times(e){return this.binaryNumericOperator(this,e,((e,t)=>e*t))}power(e){return this.binaryNumericOperator(this,e,((e,t)=>e**t))}over(e){return this.binaryNumericOperator(this,e,((e,t)=>e/t))}modulo(e){return this.binaryNumericOperator(this,e,((e,t)=>e%t))}negate(){return p.num(0).minus(this)}isToZero(e){const t=l("num");return h(this,{arr:t,bool:t,foreign:t,lambda:t,num:t=>(0,u.switchOn)(e,{"<":()=>p.bool(t<0),"<=":()=>p.bool(t<=0),"==":()=>p.bool(0==t),"!=":()=>p.bool(0!==t),">=":()=>p.bool(t>=0),">":()=>p.bool(t>0)}),obj:t,str:t})}isTrue(){const e=l("bool");return f(this,{arr:e,bool:e=>e,foreign:e,lambda:e,num:e,obj:e,sink:e,str:e})}isZero(){const e=l("num");return f(this,{arr:e,bool:e,foreign:e,lambda:e,num:e=>0===e,obj:e,sink:e,str:e})}order(e){const t=(e,t)=>{throw new Error(`Cannot compare a value of type ${t}`)};if(this.inner.tag!==e.inner.tag)throw new Error(`Cannot compare a ${this.inner.tag} value with a value of another type (${e.inner.tag})`);return h(this,{arr:t,bool:t=>{const r=e.assertBool();return t&&!r?1:!t&&r?-1:0},foreign:t,lambda:t,num:()=>{const t=this.minus(e).assertNum();return t<0?-1:t>0?1:0},obj:t,str:t=>{const r=e.assertStr(),n=t.localeCompare(r);return n<0?-1:n>0?1:0}})}static toStringOrNumber(e){if("string"==typeof e)return e;const t=l("str","num");return f(e,{arr:t,bool:t,foreign:t,lambda:t,num:e=>e,obj:t,sink:t,str:e=>e})}access(e,t){const r=l("obj","str","arr");return h(this,{arr:r=>{if("string"==typeof e)return(0,o.findArrayMethod)(r,e,t);const n=e.assertNum();if(n<0||n>r.length)throw new Error(`array index (${n}) is out of bounds (length = ${r.length})`);return r[n]},bool:r,foreign:r,lambda:r,num:r,obj:t=>t[p.toStringOrNumber(e)],str:t=>(0,i.findStringMethod)(t,e)})}call(e,t){const r=l("lambda","foreign");return h(this,{arr:r,bool:r,foreign:t=>d(t(...e)),lambda:e=>t(e.ast.formalArgs.map((e=>e.t.text)),e.ast.body,e.table),num:r,obj:r,str:r})}keys(){const e=l("obj");return h(this,{arr:e,bool:e,foreign:e,lambda:e,num:e,obj:e=>Object.keys(e),str:e})}entries(){const e=l("obj");return h(this,{arr:e,bool:e,foreign:e,lambda:e,num:e,obj:e=>Object.entries(e),str:e})}fromEntries(){const e=l("arr");return h(this,{arr:t=>Object.fromEntries(t.map((t=>f(t,{arr:e=>(2===e.length||(0,s.failMe)("each entry must be a [key, value] pair"),[e[0].assertStr(),e[1]]),bool:e,foreign:e,lambda:e,num:e,obj:e,sink:e,str:e})))),bool:e,foreign:e,lambda:e,num:e,obj:e,str:e})}toString(){return this.inner.val?.toString()??"sink"}toJSON(){const e=t=>f(t,{arr:t=>t.map((t=>e(t))),bool:e=>e,foreign:e=>e.toString(),lambda:e=>(0,n.show)(e.ast),num:e=>e,obj:t=>Object.fromEntries(Object.entries(t).map((([t,r])=>[t,e(r)]))),sink:()=>{},str:e=>e});return e(this)}export(){return this.toJSON()}static from(e){return d(e)}}function d(e){if(e instanceof p)return e;if("boolean"==typeof e)return p.bool(e);if("number"==typeof e)return p.num(e);if("string"==typeof e)return p.str(e);if(Array.isArray(e))return p.arr(e.map((e=>d(e))));if(void 0===e)return p.sink();if(e&&"object"==typeof e)return p.obj(Object.fromEntries(Object.entries(e).map((([e,t])=>[e,d(t)]))));throw new Error(`cannot convert ${JSON.stringify(e)} to Value`)}t.Value=p}},t={};!function r(n){var s=t[n];if(void 0!==s)return s.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}(326)})();
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "septima-lang",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",
7
7
  "author": "imaman",
8
- "main": "dist/src/index.js",
8
+ "main": "main.js",
9
9
  "scripts": {
10
10
  "build": "tsc -b",
11
11
  "test": "jest"
@@ -14,4 +14,4 @@
14
14
  "preset": "../../jest.preset.js"
15
15
  },
16
16
  "dependencies": {}
17
- }
17
+ }
@@ -1,98 +0,0 @@
1
- import { Span } from './location';
2
- import { Token } from './scanner';
3
- export declare type Let = {
4
- start: Token;
5
- ident: Ident;
6
- value: AstNode;
7
- };
8
- export declare type Import = {
9
- start: Token;
10
- ident: Ident;
11
- pathToImportFrom: Token;
12
- };
13
- export declare type Literal = {
14
- tag: 'literal';
15
- type: 'str' | 'bool' | 'num' | 'sink' | 'sink!' | 'sink!!';
16
- t: Token;
17
- };
18
- export declare type ObjectLiteralPart = {
19
- tag: 'hardName';
20
- k: Ident;
21
- v: AstNode;
22
- } | {
23
- tag: 'computedName';
24
- k: AstNode;
25
- v: AstNode;
26
- } | {
27
- tag: 'spread';
28
- o: AstNode;
29
- };
30
- export declare type ArrayLiteralPart = {
31
- tag: 'element';
32
- v: AstNode;
33
- } | {
34
- tag: 'spread';
35
- v: AstNode;
36
- };
37
- export declare type Ident = {
38
- tag: 'ident';
39
- t: Token;
40
- };
41
- export declare type Lambda = {
42
- tag: 'lambda';
43
- start: Token;
44
- formalArgs: Ident[];
45
- body: AstNode;
46
- };
47
- export declare type Unit = {
48
- tag: 'unit';
49
- imports: Import[];
50
- expression: AstNode;
51
- };
52
- export declare type AstNode = Ident | Literal | Unit | {
53
- start: Token;
54
- tag: 'arrayLiteral';
55
- parts: ArrayLiteralPart[];
56
- end: Token;
57
- } | {
58
- start: Token;
59
- tag: 'objectLiteral';
60
- parts: ObjectLiteralPart[];
61
- end: Token;
62
- } | {
63
- tag: 'binaryOperator';
64
- operator: '+' | '-' | '*' | '/' | '**' | '%' | '&&' | '||' | '>' | '<' | '>=' | '<=' | '==' | '!=' | '??';
65
- lhs: AstNode;
66
- rhs: AstNode;
67
- } | {
68
- tag: 'unaryOperator';
69
- operatorToken: Token;
70
- operator: '+' | '-' | '!';
71
- operand: AstNode;
72
- } | {
73
- tag: 'topLevelExpression';
74
- definitions: Let[];
75
- computation: AstNode;
76
- } | Lambda | {
77
- tag: 'functionCall';
78
- actualArgs: AstNode[];
79
- callee: AstNode;
80
- end: Token;
81
- } | {
82
- tag: 'if';
83
- condition: AstNode;
84
- positive: AstNode;
85
- negative: AstNode;
86
- } | {
87
- tag: 'dot';
88
- receiver: AstNode;
89
- ident: Ident;
90
- } | {
91
- tag: 'indexAccess';
92
- receiver: AstNode;
93
- index: AstNode;
94
- } | {
95
- tag: 'export*';
96
- };
97
- export declare function show(ast: AstNode | AstNode[]): string;
98
- export declare function span(ast: AstNode): Span;
@@ -1,139 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.span = exports.show = void 0;
4
- const should_never_happen_1 = require("./should-never-happen");
5
- const switch_on_1 = require("./switch-on");
6
- function show(ast) {
7
- if (Array.isArray(ast)) {
8
- return ast.map(curr => show(curr)).join(', ');
9
- }
10
- if (ast.tag === 'arrayLiteral') {
11
- const parts = ast.parts.map(p => {
12
- if (p.tag === 'element') {
13
- return show(p.v);
14
- }
15
- if (p.tag === 'spread') {
16
- return `...${show(p.v)}`;
17
- }
18
- (0, should_never_happen_1.shouldNeverHappen)(p);
19
- });
20
- return `[${parts.join(', ')}]`;
21
- }
22
- if (ast.tag === 'binaryOperator') {
23
- return `(${show(ast.lhs)} ${ast.operator} ${show(ast.rhs)})`;
24
- }
25
- if (ast.tag === 'dot') {
26
- return `${show(ast.receiver)}.${show(ast.ident)}`;
27
- }
28
- if (ast.tag === 'export*') {
29
- return `(export*)`;
30
- }
31
- if (ast.tag === 'functionCall') {
32
- return `${show(ast.callee)}(${show(ast.actualArgs)})`;
33
- }
34
- if (ast.tag === 'ident') {
35
- return ast.t.text;
36
- }
37
- if (ast.tag === 'if') {
38
- return `if (${show(ast.condition)}) ${show(ast.positive)} else ${show(ast.negative)}`;
39
- }
40
- if (ast.tag === 'indexAccess') {
41
- return `${show(ast.receiver)}[${show(ast.index)}]`;
42
- }
43
- if (ast.tag === 'lambda') {
44
- return `fun (${show(ast.formalArgs)}) ${show(ast.body)}`;
45
- }
46
- if (ast.tag === 'literal') {
47
- return (0, switch_on_1.switchOn)(ast.type, {
48
- bool: () => ast.t.text,
49
- num: () => ast.t.text,
50
- sink: () => 'sink',
51
- 'sink!': () => 'sink!',
52
- 'sink!!': () => 'sink!!',
53
- str: () => `'${ast.t.text}'`,
54
- });
55
- }
56
- if (ast.tag === 'objectLiteral') {
57
- const pairs = ast.parts.map(p => {
58
- if (p.tag === 'computedName') {
59
- return `[${show(p.k)}]: ${show(p.v)}`;
60
- }
61
- if (p.tag === 'hardName') {
62
- return `${show(p.k)}: ${show(p.v)}`;
63
- }
64
- if (p.tag === 'spread') {
65
- return `...${show(p.o)}`;
66
- }
67
- (0, should_never_happen_1.shouldNeverHappen)(p);
68
- });
69
- return `{${pairs.join(', ')}}`;
70
- }
71
- if (ast.tag === 'topLevelExpression') {
72
- const defs = ast.definitions.map(d => `let ${show(d.ident)} = ${show(d.value)}`).join('; ');
73
- return `${defs ? defs + '; ' : ''}${show(ast.computation)}`;
74
- }
75
- if (ast.tag === 'unaryOperator') {
76
- return `${ast.operator}${show(ast.operand)}`;
77
- }
78
- if (ast.tag === 'unit') {
79
- const imports = ast.imports
80
- .map(imp => `import * as ${show(imp.ident)} from '${imp.pathToImportFrom.text}';`)
81
- .join('\n');
82
- return `${imports ? imports + '\n' : ''}${show(ast.expression)}`;
83
- }
84
- (0, should_never_happen_1.shouldNeverHappen)(ast);
85
- }
86
- exports.show = show;
87
- function span(ast) {
88
- const ofRange = (a, b) => ({ from: a.from, to: b.to });
89
- const ofToken = (t) => ({ from: t.location, to: { offset: t.location.offset + t.text.length - 1 } });
90
- if (ast.tag === 'arrayLiteral') {
91
- return ofRange(ofToken(ast.start), ofToken(ast.end));
92
- }
93
- if (ast.tag === 'binaryOperator') {
94
- return ofRange(span(ast.lhs), span(ast.rhs));
95
- }
96
- if (ast.tag === 'dot') {
97
- return ofRange(span(ast.receiver), span(ast.ident));
98
- }
99
- if (ast.tag === 'functionCall') {
100
- return ofRange(span(ast.callee), ofToken(ast.end));
101
- }
102
- if (ast.tag === 'ident') {
103
- return ofToken(ast.t);
104
- }
105
- if (ast.tag === 'export*') {
106
- return { from: { offset: 0 }, to: { offset: 0 } };
107
- }
108
- if (ast.tag === 'if') {
109
- return ofRange(span(ast.condition), span(ast.negative));
110
- }
111
- if (ast.tag === 'indexAccess') {
112
- return ofRange(span(ast.receiver), span(ast.index));
113
- }
114
- if (ast.tag === 'lambda') {
115
- return ofRange(ofToken(ast.start), span(ast.body));
116
- }
117
- if (ast.tag === 'literal') {
118
- return ofToken(ast.t);
119
- }
120
- if (ast.tag === 'objectLiteral') {
121
- return ofRange(ofToken(ast.start), ofToken(ast.end));
122
- }
123
- if (ast.tag === 'topLevelExpression') {
124
- const d0 = ast.definitions.find(Boolean);
125
- const comp = span(ast.computation);
126
- return ofRange(d0 ? ofToken(d0.start) : comp, comp);
127
- }
128
- if (ast.tag === 'unaryOperator') {
129
- return ofRange(ofToken(ast.operatorToken), span(ast.operand));
130
- }
131
- if (ast.tag === 'unit') {
132
- const i0 = ast.imports.find(Boolean);
133
- const exp = span(ast.expression);
134
- return ofRange(i0 ? ofToken(i0.start) : exp, exp);
135
- }
136
- (0, should_never_happen_1.shouldNeverHappen)(ast);
137
- }
138
- exports.span = span;
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0LW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsK0RBQXlEO0FBQ3pELDJDQUFzQztBQXdHdEMsU0FBZ0IsSUFBSSxDQUFDLEdBQXdCO0lBQzNDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN0QixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7S0FDOUM7SUFDRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssY0FBYyxFQUFFO1FBQzlCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxTQUFTLEVBQUU7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUNqQjtZQUVELElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUU7Z0JBQ3RCLE9BQU8sTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7YUFDekI7WUFFRCxJQUFBLHVDQUFpQixFQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3RCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQTtLQUMvQjtJQUVELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxnQkFBZ0IsRUFBRTtRQUNoQyxPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQTtL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
@@ -1 +0,0 @@
1
- export declare function extractMessage(e: unknown): string | unknown;
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractMessage = void 0;
4
- function extractMessage(e) {
5
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
6
- const typed = e;
7
- return typed.message;
8
- }
9
- exports.extractMessage = extractMessage;
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC1tZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4dHJhY3QtbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFnQixjQUFjLENBQUMsQ0FBVTtJQUN2Qyx5RUFBeUU7SUFDekUsTUFBTSxLQUFLLEdBQUcsQ0FBeUIsQ0FBQTtJQUN2QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUE7QUFDdEIsQ0FBQztBQUpELHdDQUlDIn0=
@@ -1 +0,0 @@
1
- export declare function failMe<R>(hint?: string): NonNullable<R>;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.failMe = void 0;
4
- function failMe(hint) {
5
- if (!hint) {
6
- throw new Error(`This expression must never be evaluated`);
7
- }
8
- throw new Error(`Bad value: ${hint}`);
9
- }
10
- exports.failMe = failMe;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbC1tZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYWlsLW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQWdCLE1BQU0sQ0FBSSxJQUFhO0lBQ3JDLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUE7S0FDM0Q7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUN2QyxDQUFDO0FBTkQsd0JBTUMifQ==
@@ -1,15 +0,0 @@
1
- import { Value } from './value';
2
- export declare type CallEvaluator = (callable: Value, args: Value[]) => Value;
3
- /**
4
- * return an implementation for array methods. The following Array methods were not implemented
5
- * as it is hard to find an intuitive immutable API due to their mutable nature:
6
- * - copyWithin
7
- * - fill
8
- * - forEach
9
- * - keys
10
- * - pop
11
- * - push
12
- * - shift
13
- * - unshift
14
- */
15
- export declare function findArrayMethod(arr: unknown[], index: string, callEvaluator: CallEvaluator): Value;
@@ -1,104 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findArrayMethod = void 0;
4
- const value_1 = require("./value");
5
- /**
6
- * return an implementation for array methods. The following Array methods were not implemented
7
- * as it is hard to find an intuitive immutable API due to their mutable nature:
8
- * - copyWithin
9
- * - fill
10
- * - forEach
11
- * - keys
12
- * - pop
13
- * - push
14
- * - shift
15
- * - unshift
16
- */
17
- function findArrayMethod(arr, index, callEvaluator) {
18
- const adjustedCallback = (callback) => (...args) => callEvaluator(callback, args.map(x => value_1.Value.from(x)));
19
- const adjustedPredicate = (predicate) => (...args) => callEvaluator(predicate, args.map(x => value_1.Value.from(x))).assertBool();
20
- if (index === 'at') {
21
- return value_1.Value.foreign(n => arr.at(n.assertNum()));
22
- }
23
- if (index === 'concat') {
24
- return value_1.Value.foreign(arg => arr.concat(arg.assertArr()));
25
- }
26
- if (index === 'entries') {
27
- return value_1.Value.foreign(() => [...arr.entries()]);
28
- }
29
- if (index === 'every') {
30
- return value_1.Value.foreign(predicate => arr.every(adjustedPredicate(predicate)));
31
- }
32
- if (index === 'filter') {
33
- return value_1.Value.foreign(predicate => arr.filter(adjustedPredicate(predicate)));
34
- }
35
- if (index === 'find') {
36
- return value_1.Value.foreign(predicate => arr.find(adjustedPredicate(predicate)));
37
- }
38
- if (index === 'findIndex') {
39
- return value_1.Value.foreign(predicate => arr.findIndex(adjustedPredicate(predicate)));
40
- }
41
- if (index === 'flatMap') {
42
- return value_1.Value.foreign(callback => flatten(arr.map(adjustedCallback(callback))));
43
- }
44
- if (index === 'flat') {
45
- return value_1.Value.foreign(() => flatten(arr));
46
- }
47
- if (index === 'includes') {
48
- return value_1.Value.foreign((arg) => arr.some(curr => value_1.Value.from(curr).equalsTo(arg).isTrue()));
49
- }
50
- if (index === 'indexOf') {
51
- return value_1.Value.foreign(arg => arr.findIndex(curr => value_1.Value.from(curr).equalsTo(arg).isTrue()));
52
- }
53
- if (index === 'join') {
54
- return value_1.Value.foreign(arg => arr.join(arg.assertStr()));
55
- }
56
- if (index === 'lastIndexOf') {
57
- return value_1.Value.foreign(arg => {
58
- for (let i = arr.length - 1; i >= 0; --i) {
59
- if (value_1.Value.from(arr[i]).equalsTo(arg).isTrue()) {
60
- return i;
61
- }
62
- }
63
- return -1;
64
- });
65
- }
66
- if (index === 'length') {
67
- return value_1.Value.num(arr.length);
68
- }
69
- if (index === 'map') {
70
- return value_1.Value.foreign(callback => arr.map(adjustedCallback(callback)));
71
- }
72
- if (index === 'reverse') {
73
- return value_1.Value.foreign(() => [...arr].reverse());
74
- }
75
- if (index === 'reduce') {
76
- return value_1.Value.foreign((callback, initialValue) => arr.reduce(adjustedCallback(callback), initialValue));
77
- }
78
- if (index === 'reduceRight') {
79
- return value_1.Value.foreign((callback, initialValue) => arr.reduceRight(adjustedCallback(callback), initialValue));
80
- }
81
- if (index === 'slice') {
82
- return value_1.Value.foreign((start, end) => arr.slice(start?.assertNum(), end?.assertNum()));
83
- }
84
- if (index === 'some') {
85
- return value_1.Value.foreign(predicate => arr.some(adjustedPredicate(predicate)));
86
- }
87
- throw new Error(`Unrecognized array method: ${index}`);
88
- }
89
- exports.findArrayMethod = findArrayMethod;
90
- function flatten(input) {
91
- const ret = [];
92
- for (const curr of input) {
93
- const v = value_1.Value.from(curr);
94
- const unwrapped = v.unwrap();
95
- if (Array.isArray(unwrapped)) {
96
- ret.push(...unwrapped);
97
- }
98
- else {
99
- ret.push(v);
100
- }
101
- }
102
- return ret;
103
- }
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1hcnJheS1tZXRob2QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmluZC1hcnJheS1tZXRob2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQStCO0FBRy9COzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLEdBQWMsRUFBRSxLQUFhLEVBQUUsYUFBNEI7SUFDekYsTUFBTSxnQkFBZ0IsR0FDcEIsQ0FBQyxRQUFlLEVBQUUsRUFBRSxDQUNwQixDQUFDLEdBQUcsSUFBZSxFQUFFLEVBQUUsQ0FDckIsYUFBYSxDQUNYLFFBQVEsRUFDUixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM3QixDQUFBO0lBRUwsTUFBTSxpQkFBaUIsR0FDckIsQ0FBQyxTQUFnQixFQUFFLEVBQUUsQ0FDckIsQ0FBQyxHQUFHLElBQWUsRUFBRSxFQUFFLENBQ3JCLGFBQWEsQ0FDWCxTQUFTLEVBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDN0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUVsQixJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDbEIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQ2pEO0lBQ0QsSUFBSSxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQ3RCLE9BQU8sYUFBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQTtLQUN6RDtJQUNELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtRQUN2QixPQUFPLGFBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUE7S0FDL0M7SUFDRCxJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUU7UUFDckIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDM0U7SUFDRCxJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDdEIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDNUU7SUFDRCxJQUFJLEtBQUssS0FBSyxNQUFNLEVBQUU7UUFDcEIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDMUU7SUFDRCxJQUFJLEtBQUssS0FBSyxXQUFXLEVBQUU7UUFDekIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDL0U7SUFDRCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7UUFDdkIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDL0U7SUFDRCxJQUFJLEtBQUssS0FBSyxNQUFNLEVBQUU7UUFDcEIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0tBQ3pDO0lBQ0QsSUFBSSxLQUFLLEtBQUssVUFBVSxFQUFFO1FBQ3hCLE9BQU8sYUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQTtLQUNoRztJQUNELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtRQUN2QixPQUFPLGFBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQzVGO0lBQ0QsSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO1FBQ3BCLE9BQU8sYUFBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQTtLQUN2RDtJQUNELElBQUksS0FBSyxLQUFLLGFBQWEsRUFBRTtRQUMzQixPQUFPLGFBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO2dCQUN4QyxJQUFJLGFBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUM3QyxPQUFPLENBQUMsQ0FBQTtpQkFDVDthQUNGO1lBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUNYLENBQUMsQ0FBQyxDQUFBO0tBQ0g7SUFDRCxJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDdEIsT0FBTyxhQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtLQUM3QjtJQUNELElBQUksS0FBSyxLQUFLLEtBQUssRUFBRTtRQUNuQixPQUFPLGFBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUN0RTtJQUNELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtRQUN2QixPQUFPLGFBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7S0FDL0M7SUFDRCxJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDdEIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFBO0tBQ3ZHO0lBQ0QsSUFBSSxLQUFLLEtBQUssYUFBYSxFQUFFO1FBQzNCLE9BQU8sYUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQTtLQUM1RztJQUNELElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRTtRQUNyQixPQUFPLGFBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQ3RGO0lBQ0QsSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO1FBQ3BCLE9BQU8sYUFBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQzFFO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsS0FBSyxFQUFFLENBQUMsQ0FBQTtBQUN4RCxDQUFDO0FBckZELDBDQXFGQztBQUVELFNBQVMsT0FBTyxDQUFDLEtBQWdCO0lBQy9CLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQTtJQUNkLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3hCLE1BQU0sQ0FBQyxHQUFHLGFBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDMUIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQzVCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM1QixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUE7U0FDdkI7YUFBTTtZQUNMLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDWjtLQUNGO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDIn0=
@@ -1,2 +0,0 @@
1
- import { Value } from './value';
2
- export declare function findStringMethod(s: string, indexValue: string | Value): Value;
@@ -1,88 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findStringMethod = void 0;
4
- const value_1 = require("./value");
5
- function findStringMethod(s, indexValue) {
6
- const index = value_1.Value.toStringOrNumber(indexValue);
7
- if (typeof index === 'number') {
8
- throw new Error(`Index is of type number - not supported`);
9
- }
10
- if (index === 'at') {
11
- return value_1.Value.foreign(n => s.at(n.assertNum()));
12
- }
13
- if (index === 'charAt') {
14
- return value_1.Value.foreign(n => s.charAt(n.assertNum()));
15
- }
16
- if (index === 'concat') {
17
- return value_1.Value.foreign(arg => s.concat(arg.assertStr()));
18
- }
19
- if (index === 'endsWith') {
20
- return value_1.Value.foreign(arg => s.endsWith(arg.assertStr()));
21
- }
22
- if (index === 'includes') {
23
- return value_1.Value.foreign(arg => s.includes(arg.assertStr()));
24
- }
25
- if (index === 'indexOf') {
26
- return value_1.Value.foreign(searchString => s.indexOf(searchString.assertStr()));
27
- }
28
- if (index === 'lastIndexOf') {
29
- return value_1.Value.foreign(searchString => s.lastIndexOf(searchString.assertStr()));
30
- }
31
- if (index === 'length') {
32
- return value_1.Value.num(s.length);
33
- }
34
- if (index === 'match') {
35
- return value_1.Value.foreign(r => s.match(r.assertStr()));
36
- }
37
- if (index === 'matchAll') {
38
- return value_1.Value.foreign(r => [...s.matchAll(new RegExp(r.assertStr(), 'g'))]);
39
- }
40
- if (index === 'padEnd') {
41
- return value_1.Value.foreign((maxLength, fillString) => s.padEnd(maxLength.assertNum(), fillString?.assertStr()));
42
- }
43
- if (index === 'padStart') {
44
- return value_1.Value.foreign((maxLength, fillString) => s.padStart(maxLength.assertNum(), fillString?.assertStr()));
45
- }
46
- if (index === 'repeat') {
47
- return value_1.Value.foreign(count => s.repeat(count.assertNum()));
48
- }
49
- if (index === 'replace') {
50
- return value_1.Value.foreign((searchValue, replacer) => s.replace(searchValue.assertStr(), replacer.assertStr()));
51
- }
52
- if (index === 'replaceAll') {
53
- return value_1.Value.foreign((searchValue, replacer) => s.replaceAll(searchValue.assertStr(), replacer.assertStr()));
54
- }
55
- if (index === 'search') {
56
- return value_1.Value.foreign(searcher => s.search(searcher.assertStr()));
57
- }
58
- if (index === 'slice') {
59
- return value_1.Value.foreign((start, end) => s.slice(start?.assertNum(), end?.assertNum()));
60
- }
61
- if (index === 'split') {
62
- return value_1.Value.foreign(splitter => s.split(splitter.assertStr()));
63
- }
64
- if (index === 'startsWith') {
65
- return value_1.Value.foreign(arg => s.startsWith(arg.assertStr()));
66
- }
67
- if (index === 'substring') {
68
- return value_1.Value.foreign((start, end) => s.substring(start.assertNum(), end?.assertNum()));
69
- }
70
- if (index === 'toLowerCase') {
71
- return value_1.Value.foreign(() => s.toLowerCase());
72
- }
73
- if (index === 'toUpperCase') {
74
- return value_1.Value.foreign(() => s.toUpperCase());
75
- }
76
- if (index === 'trim') {
77
- return value_1.Value.foreign(() => s.trim());
78
- }
79
- if (index === 'trimEnd') {
80
- return value_1.Value.foreign(() => s.trimEnd());
81
- }
82
- if (index === 'trimStart') {
83
- return value_1.Value.foreign(() => s.trimStart());
84
- }
85
- throw new Error(`Unrecognized string method: ${index}`);
86
- }
87
- exports.findStringMethod = findStringMethod;
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1zdHJpbmctbWV0aG9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpbmQtc3RyaW5nLW1ldGhvZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBK0I7QUFFL0IsU0FBZ0IsZ0JBQWdCLENBQUMsQ0FBUyxFQUFFLFVBQTBCO0lBQ3BFLE1BQU0sS0FBSyxHQUFHLGFBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNoRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUE7S0FDM0Q7SUFDRCxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDbEIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQy9DO0lBQ0QsSUFBSSxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQ3RCLE9BQU8sYUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQTtLQUNuRDtJQUNELElBQUksS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUN0QixPQUFPLGFBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUE7S0FDdkQ7SUFDRCxJQUFJLEtBQUssS0FBSyxVQUFVLEVBQUU7UUFDeEIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQ3pEO0lBQ0Qs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
@@ -1 +0,0 @@
1
- export * from './septima';