@xaendar/compiler 0.9.24 → 0.9.25

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 (2) hide show
  1. package/dist/compiler.js +1 -1
  2. package/package.json +3 -3
package/dist/compiler.js CHANGED
@@ -1,4 +1,4 @@
1
- import{indent as V,slice as mr}from"@xaendar/common";var g=(f=>(f[f.Element=0]="Element",f[f.Attribute=1]="Attribute",f[f.Event=2]="Event",f[f.Text=3]="Text",f[f.Interpolation=4]="Interpolation",f[f.If=5]="If",f[f.Else=6]="Else",f[f.ElseIf=7]="ElseIf",f[f.For=8]="For",f[f.Switch=9]="Switch",f[f.Case=10]="Case",f[f.Import=11]="Import",f))(g||{});var N=class e{parent;_identifiers=new Map;_unresolvableIdentifiers=new Map;constructor(n,t){if(n instanceof e?this.parent=n:t=n,t?.length)for(let r=0;r<t.length;r++){let o=t[r];typeof o=="string"?this._identifiers.set(o,"value"):this._identifiers.set(o[0],o[1])}}addIdentifier(n,t="value"){if(this.hasIdentifier(n))throw new Error(`Identifier "${n}" is already declared in this scope.`);this._identifiers.set(n,t)}addUnresolvableIdentifier(n,t="value"){if(this.hasIdentifier(n))throw new Error(`Identifier "${n}" is already declared in this scope.`);this._unresolvableIdentifiers.set(n,t)}removeIdentifier(n){this._identifiers.delete(n)}removeUnresolvabledIdentifier(n){this._unresolvableIdentifiers.delete(n)}hasIdentifier(n){return this._identifiers.has(n)||(this.parent?.hasIdentifier(n)??!1)}getIdentifierKind(n){return this._identifiers.get(n)??this.parent?.getIdentifierKind(n)}hasUnresolvableIdentifier(n){return this._unresolvableIdentifiers.has(n)||(this.parent?.hasUnresolvableIdentifier(n)??!1)}};import{indent as G}from"@xaendar/common";import{slice as Ge}from"@xaendar/common";import{forEachChild as Ve,isIdentifier as Ue,isPropertyAccessExpression as nr,isPropertyAssignment as or}from"typescript";var ir=new Set(["undefined","NaN","Infinity","globalThis","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape","Object","Function","Boolean","Symbol","Error","AggregateError","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","SuppressedError","InternalError","Number","BigInt","Math","Date","Temporal","String","RegExp","Array","TypedArray","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","BigInt64Array","BigUint64Array","Float16Array","Float32Array","Float64Array","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Atomics","JSON","WeakRef","FinalizationRegistry","Iterator","AsyncIterator","Promise","GeneratorFunction","AsyncGeneratorFunction","Generator","AsyncGenerator","AsyncFunction","DisposableStack","AsyncDisposableStack","Reflect","Proxy","Intl","WebAssembly","window","document","navigator","location","history","screen","console","performance","crypto","fetch","alert","confirm","prompt","setTimeout","setInterval","clearTimeout","clearInterval","requestAnimationFrame","cancelAnimationFrame","queueMicrotask","structuredClone","URL","URLSearchParams","FormData","Headers","Request","Response","AbortController","AbortSignal","CustomEvent","Event","EventTarget","MutationObserver","IntersectionObserver","ResizeObserver","PerformanceObserver","Worker","SharedWorker","ServiceWorker","Blob","File","FileReader","ReadableStream","WritableStream","TransformStream","TextEncoder","TextDecoder","ImageData","Canvas","Storage","localStorage","sessionStorage","indexedDB","WebSocket","XMLHttpRequest","HTMLElement","HTMLInputElement","HTMLButtonElement","HTMLFormElement","HTMLAnchorElement","HTMLImageElement","HTMLVideoElement","HTMLAudioElement","HTMLCanvasElement","HTMLSelectElement","HTMLTextAreaElement","HTMLDivElement","HTMLSpanElement","HTMLParagraphElement","HTMLHeadingElement","HTMLTableElement","HTMLTableRowElement","HTMLTableCellElement","HTMLUListElement","HTMLOListElement","HTMLLIElement","HTMLLabelElement","HTMLDialogElement","HTMLDetailsElement","HTMLSlotElement","HTMLTemplateElement","SVGElement","SVGSVGElement","Element","Node","NodeList","DocumentFragment","ShadowRoot","Document","Window"]),Z="root";function x(e,n,t){return He(e,e,n,ar(t))}function He(e,n,t,r){if(Ue(e)&&Ke(e,n)){let a=e.text;if(t.hasUnresolvableIdentifier(a))return{expression:a};let c=sr(a,t);return c||(r.resolver?{expression:`${r.resolver}.${a}`}:{expression:a})}if(!We(e,n))return{expression:e.getText()};let o=e.getSourceFile().text,i={expression:""},s=e.getStart();return Ve(e,a=>{let{expression:c,reactive:p}=He(a,e,t,r);i={expression:`${i}${Ge(o,s,a.getStart())}${c}`,reactive:p},s=a.getEnd()}),{expression:`${i}${Ge(o,s,e.getEnd())}`}}function sr(e,n){if(n.hasIdentifier(e)){let t=n.getIdentifierKind(e),r=`context.get('${e}')`;return t==="signal"?{expression:`${r}()`,reactive:!0}:{expression:r,reactive:!1}}}function We(e,n){if(Ue(e)&&Ke(e,n))return!0;let t=!1;return Ve(e,r=>{t||(t=We(r,e))}),t}function Ke(e,n){return!(nr(n)&&n.name===e||or(n)&&n.name===e||ir.has(e.text)||!e.text)}function qe(e,n,t){return xe(e.tagName,n,t)}function he(e="text",n,t){return xe(e,n,t)}function P(e,n,t){return xe(e,n,t)}function xe(e,n,t){return(n!==Z?`${n}__${e}${t}`:`${e}${t}`).replace(/-/g,"_")}function ar(e){return{resolver:e?.resolver??"this",emitReactive:e?.emitReactive??!1}}function Qe(e,n,t,r,o){let i=pr(e.attributes,r),s=cr(e.events,r),a=qe(e,n,t),c=e.tagName,p={code:[],functionsToProcess:new Map};switch(c){case"svg":p.code.push("context.createElement = createSVGElement");break;case"math":p.code.push("context.createElement = createMATHMLElement")}switch(p.code.push(`const ${a} = _renderElement(${n}, context, ${o}, '${c}',`),i.length?p.code.push(...G(["[",...G(i),"],"])):p.code[p.code.length-1]=`${p.code[p.code.length-1]} [],`,s.length?p.code.push(...G(["[",...G(s),"]"]),");"):p.code[p.code.length-1]=`${p.code[p.code.length-1]} []);`,c){case"svg":case"math":p.code.push("context.createElement = createElement")}return e.children.length&&(p.functionsToProcess.set(`${a}Children`,{fn:{node:e,parentNode:a,context:r,precode:lr(c)},args:[a,"parentContext"]}),p.code.push(`this.${a}Children(${a}, context);`)),p}function pr(e,n){return e?.map(({name:t,value:r})=>{if(typeof r=="string")return`{ name: '${t}', value: () => '${r}', reactive: false },`;{let{expression:o,reactive:i}=x(r.expression,n);return`{ name: '${t}', value: () => ${o}, reactive: ${i} },`}})}function cr(e,n){n.addUnresolvableIdentifier("$event");let t=e.map(r=>{let o=!1,i=r.parameters.map(a=>{let c=x(a,n).expression;return!o&&c==="$event"?(o=!0,`($event) => ${c},`):`() => ${c},`}),s=["{",...G([`name: '${r.name}',`,`handler: '${r.handler}',`,"parameters: ["])];return i.length?s.push(...G([...G(i),"]"]),"},"):(s[s.length-1]=`${s[s.length-1]}]`,s.push("},")),s}).flat();return n.removeIdentifier("$event"),t}function lr(e){switch(e){case"svg":return"context.createElement = createSVGElement;";case"math":return"context.createElement = createMATHMLElement;";default:return""}}function Xe(e,n,t,r){let o={code:[],functionsToProcess:new Map},i=e.iterableSource,s=r.hasIdentifier(i)?i:`this.${i}`,a=he("items",n,t),c=he("i",n,t),p=ee(e,"$index"),u=ee(e,"$first"),d=ee(e,"$last"),f=ee(e,"$even"),y=ee(e,"$odd"),b=new N(r);b.addUnresolvableIdentifier(e.itemAlias);let w=[p,u,d,f,y];for(let E=0;E<w.length;E++)b.addUnresolvableIdentifier(w[E],"signal");let S=P("for",n,t);return o.functionsToProcess.set(S,{fn:{precode:`const { vars, update } = _iterationVariables(context, ${a}, ${c}, '${e.itemAlias}', {
1
+ import{indent as V,slice as mr}from"@xaendar/common";var g=(f=>(f[f.Element=0]="Element",f[f.Attribute=1]="Attribute",f[f.Event=2]="Event",f[f.Text=3]="Text",f[f.Interpolation=4]="Interpolation",f[f.If=5]="If",f[f.Else=6]="Else",f[f.ElseIf=7]="ElseIf",f[f.For=8]="For",f[f.Switch=9]="Switch",f[f.Case=10]="Case",f[f.Import=11]="Import",f))(g||{});var N=class e{parent;_identifiers=new Map;_unresolvableIdentifiers=new Map;constructor(n,t){if(n instanceof e?this.parent=n:t=n,t?.length)for(let r=0;r<t.length;r++){let o=t[r];typeof o=="string"?this._identifiers.set(o,"value"):this._identifiers.set(o[0],o[1])}}addIdentifier(n,t="value"){if(this.hasIdentifier(n))throw new Error(`Identifier "${n}" is already declared in this scope.`);this._identifiers.set(n,t)}addUnresolvableIdentifier(n,t="value"){if(this.hasIdentifier(n))throw new Error(`Identifier "${n}" is already declared in this scope.`);this._unresolvableIdentifiers.set(n,t)}removeIdentifier(n){this._identifiers.delete(n)}removeUnresolvabledIdentifier(n){this._unresolvableIdentifiers.delete(n)}hasIdentifier(n){return this._identifiers.has(n)||(this.parent?.hasIdentifier(n)??!1)}getIdentifierKind(n){return this._identifiers.get(n)??this.parent?.getIdentifierKind(n)}hasUnresolvableIdentifier(n){return this._unresolvableIdentifiers.has(n)||(this.parent?.hasUnresolvableIdentifier(n)??!1)}};import{indent as G}from"@xaendar/common";import{slice as Ge}from"@xaendar/common";import{forEachChild as Ve,isIdentifier as Ue,isPropertyAccessExpression as nr,isPropertyAssignment as or}from"typescript";var ir=new Set(["undefined","NaN","Infinity","globalThis","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape","Object","Function","Boolean","Symbol","Error","AggregateError","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","SuppressedError","InternalError","Number","BigInt","Math","Date","Temporal","String","RegExp","Array","TypedArray","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","BigInt64Array","BigUint64Array","Float16Array","Float32Array","Float64Array","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Atomics","JSON","WeakRef","FinalizationRegistry","Iterator","AsyncIterator","Promise","GeneratorFunction","AsyncGeneratorFunction","Generator","AsyncGenerator","AsyncFunction","DisposableStack","AsyncDisposableStack","Reflect","Proxy","Intl","WebAssembly","window","document","navigator","location","history","screen","console","performance","crypto","fetch","alert","confirm","prompt","setTimeout","setInterval","clearTimeout","clearInterval","requestAnimationFrame","cancelAnimationFrame","queueMicrotask","structuredClone","URL","URLSearchParams","FormData","Headers","Request","Response","AbortController","AbortSignal","CustomEvent","Event","EventTarget","MutationObserver","IntersectionObserver","ResizeObserver","PerformanceObserver","Worker","SharedWorker","ServiceWorker","Blob","File","FileReader","ReadableStream","WritableStream","TransformStream","TextEncoder","TextDecoder","ImageData","Canvas","Storage","localStorage","sessionStorage","indexedDB","WebSocket","XMLHttpRequest","HTMLElement","HTMLInputElement","HTMLButtonElement","HTMLFormElement","HTMLAnchorElement","HTMLImageElement","HTMLVideoElement","HTMLAudioElement","HTMLCanvasElement","HTMLSelectElement","HTMLTextAreaElement","HTMLDivElement","HTMLSpanElement","HTMLParagraphElement","HTMLHeadingElement","HTMLTableElement","HTMLTableRowElement","HTMLTableCellElement","HTMLUListElement","HTMLOListElement","HTMLLIElement","HTMLLabelElement","HTMLDialogElement","HTMLDetailsElement","HTMLSlotElement","HTMLTemplateElement","SVGElement","SVGSVGElement","Element","Node","NodeList","DocumentFragment","ShadowRoot","Document","Window"]),Z="root";function x(e,n,t){return He(e,e,n,ar(t))}function He(e,n,t,r){if(Ue(e)&&Ke(e,n)){let a=e.text;if(t.hasUnresolvableIdentifier(a))return{expression:a};let c=sr(a,t);return c||(r.resolver?{expression:`${r.resolver}.${a}`}:{expression:a})}if(!We(e,n))return{expression:e.getText()};let o=e.getSourceFile().text,i={expression:""},s=e.getStart();return Ve(e,a=>{let{expression:c,reactive:p}=He(a,e,t,r);i={expression:`${i}${Ge(o,s,a.getStart())}${c}`,reactive:i.reactive||p},s=a.getEnd()}),{expression:`${i.expression}${Ge(o,s,e.getEnd())}`,reactive:i.reactive}}function sr(e,n){if(n.hasIdentifier(e)){let t=n.getIdentifierKind(e),r=`context.get('${e}')`;return t==="signal"?{expression:`${r}()`,reactive:!0}:{expression:r,reactive:!1}}}function We(e,n){if(Ue(e)&&Ke(e,n))return!0;let t=!1;return Ve(e,r=>{t||(t=We(r,e))}),t}function Ke(e,n){return!(nr(n)&&n.name===e||or(n)&&n.name===e||ir.has(e.text)||!e.text)}function qe(e,n,t){return xe(e.tagName,n,t)}function he(e="text",n,t){return xe(e,n,t)}function P(e,n,t){return xe(e,n,t)}function xe(e,n,t){return(n!==Z?`${n}__${e}${t}`:`${e}${t}`).replace(/-/g,"_")}function ar(e){return{resolver:e?.resolver??"this",emitReactive:e?.emitReactive??!1}}function Qe(e,n,t,r,o){let i=pr(e.attributes,r),s=cr(e.events,r),a=qe(e,n,t),c=e.tagName,p={code:[],functionsToProcess:new Map};switch(c){case"svg":p.code.push("context.createElement = createSVGElement");break;case"math":p.code.push("context.createElement = createMATHMLElement")}switch(p.code.push(`const ${a} = _renderElement(${n}, context, ${o}, '${c}',`),i.length?p.code.push(...G(["[",...G(i),"],"])):p.code[p.code.length-1]=`${p.code[p.code.length-1]} [],`,s.length?p.code.push(...G(["[",...G(s),"]"]),");"):p.code[p.code.length-1]=`${p.code[p.code.length-1]} []);`,c){case"svg":case"math":p.code.push("context.createElement = createElement")}return e.children.length&&(p.functionsToProcess.set(`${a}Children`,{fn:{node:e,parentNode:a,context:r,precode:lr(c)},args:[a,"parentContext"]}),p.code.push(`this.${a}Children(${a}, context);`)),p}function pr(e,n){return e?.map(({name:t,value:r})=>{if(typeof r=="string")return`{ name: '${t}', value: () => '${r}', reactive: false },`;{let{expression:o,reactive:i}=x(r.expression,n);return`{ name: '${t}', value: () => ${o}, reactive: ${i} },`}})}function cr(e,n){n.addUnresolvableIdentifier("$event");let t=e.map(r=>{let o=!1,i=r.parameters.map(a=>{let c=x(a,n).expression;return!o&&c==="$event"?(o=!0,`($event) => ${c},`):`() => ${c},`}),s=["{",...G([`name: '${r.name}',`,`handler: '${r.handler}',`,"parameters: ["])];return i.length?s.push(...G([...G(i),"]"]),"},"):(s[s.length-1]=`${s[s.length-1]}]`,s.push("},")),s}).flat();return n.removeIdentifier("$event"),t}function lr(e){switch(e){case"svg":return"context.createElement = createSVGElement;";case"math":return"context.createElement = createMATHMLElement;";default:return""}}function Xe(e,n,t,r){let o={code:[],functionsToProcess:new Map},i=e.iterableSource,s=r.hasIdentifier(i)?i:`this.${i}`,a=he("items",n,t),c=he("i",n,t),p=ee(e,"$index"),u=ee(e,"$first"),d=ee(e,"$last"),f=ee(e,"$even"),y=ee(e,"$odd"),b=new N(r);b.addUnresolvableIdentifier(e.itemAlias);let w=[p,u,d,f,y];for(let E=0;E<w.length;E++)b.addUnresolvableIdentifier(w[E],"signal");let S=P("for",n,t);return o.functionsToProcess.set(S,{fn:{precode:`const { vars, update } = _iterationVariables(context, ${a}, ${c}, '${e.itemAlias}', {
2
2
  $index: '${p}',
3
3
  $first: '${u}',
4
4
  $last: '${d}',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xaendar/compiler",
3
- "version": "0.9.24",
3
+ "version": "0.9.25",
4
4
  "description": "A library for transpiling Xaendar Templates into JavaScript code",
5
5
  "author": "Kaitenjo",
6
6
  "license": "MIT",
@@ -13,8 +13,8 @@
13
13
  },
14
14
  "main": "./dist/compiler.js",
15
15
  "dependencies": {
16
- "@xaendar/common": "0.9.24",
17
- "@xaendar/types": "0.9.24",
16
+ "@xaendar/common": "0.9.25",
17
+ "@xaendar/types": "0.9.25",
18
18
  "typescript": "^6.0.3",
19
19
  "type-fest": "^5.9.0"
20
20
  }