New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

tabscript

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tabscript - npm Package Compare versions

Comparing version
2.0.0
to
2.0.2
+30
dist-min/esbuild-plugin.d.ts
/**
* esbuild plugin for TabScript files.
*
* @module esbuild-plugin
*/
import { type Options } from './tabscript.js';
export interface EsbuildPluginOptions extends Omit<Options, 'loadPlugin' | 'js'> {
/** Output mode: 'ts' (default, preserves types) or 'js'. esbuild handles TypeScript natively. */
outputMode?: 'js' | 'ts';
}
/**
* esbuild plugin that transforms .tab files to JavaScript.
*
* @example
* ```js
* // build.js
* import { tabscriptPlugin } from 'tabscript/esbuild';
* import * as esbuild from 'esbuild';
*
* await esbuild.build({
* entryPoints: ['src/index.tab'],
* bundle: true,
* plugins: [tabscriptPlugin()]
* });
* ```
*
* @param options Configuration options for the TabScript transpiler
* @returns esbuild plugin instance
*/
export declare function tabscriptPlugin(options?: EsbuildPluginOptions): any;
import{tabscript as t}from"./tabscript.js";import*as r from"fs";import*as s from"path";export function tabscriptPlugin(e={}){const{outputMode:o="ts",...n}=e;return{name:"tabscript",setup(e){e.onLoad({filter:/\.tab$/},(async e=>{const a=await r.promises.readFile(e.path,"utf8");const i=s.dirname(e.path);const c=t(a,{js:o==="js",...n});if(c.errors.length>0){const t=c.errors.map((t=>({text:t.message,location:{file:e.path,line:t.line,column:t.column}})));if(n.recover){return{contents:c.code,loader:o==="js"?"js":"ts",warnings:t}}else{return{errors:t}}}return{contents:c.code,loader:o==="js"?"js":"ts"}}))}}}
{"version":3,"names":["tabscript","fs","path","tabscriptPlugin","options","outputMode","transpileOptions","name","setup","build","onLoad","filter","async","args","source","promises","readFile","basePath","dirname","result","js","errors","length","map","error","text","message","location","file","line","column","recover","contents","code","loader","warnings"],"sources":["dist/esbuild-plugin.js"],"mappings":"oBAKSA,MAAiB,2BACdC,MAAQ,eACRC,MAAU,cAoBf,SAASC,gBAAgBC,EAAU,CAAC,GACvC,MAAMC,WAAEA,EAAa,QAASC,GAAqBF,EACnD,MAAO,CACHG,KAAM,YACN,KAAAC,CAAMC,GACFA,EAAMC,OAAO,CAAEC,OAAQ,WAAYC,MAAOC,IACtC,MAAMC,QAAeb,EAAGc,SAASC,SAASH,EAAKX,KAAM,QACrD,MAAMe,EAAWf,EAAKgB,QAAQL,EAAKX,MACnC,MAAMiB,EAASnB,EAAUc,EAAQ,CAC7BM,GAAIf,IAAe,QAChBC,IAEP,GAAIa,EAAOE,OAAOC,OAAS,EAAG,CAC1B,MAAMD,EAASF,EAAOE,OAAOE,KAAIC,IAAS,CACtCC,KAAMD,EAAME,QACZC,SAAU,CACNC,KAAMf,EAAKX,KACX2B,KAAML,EAAMK,KACZC,OAAQN,EAAMM,YAGtB,GAAIxB,EAAiByB,QAAS,CAE1B,MAAO,CACHC,SAAUb,EAAOc,KACjBC,OAAQ7B,IAAe,KAAO,KAAO,KACrC8B,SAAUd,EAElB,KACK,CAED,MAAO,CAAEA,SACb,CACJ,CACA,MAAO,CACHW,SAAUb,EAAOc,KACjBC,OAAQ7B,IAAe,KAAO,KAAO,KACxC,GAET,EAER","ignoreList":[]}
/**
* Rollup plugin for TabScript files.
*
* @module rollup-plugin
*/
import { type Options } from './tabscript.js';
export interface RollupPluginOptions extends Omit<Options, 'loadPlugin' | 'js'> {
/** Include pattern for files to transform. Defaults to /\.tab$/ */
include?: RegExp | ((id: string) => boolean);
/** Output mode: 'js' (default) or 'ts'. Use 'ts' to preserve type information for subsequent type checking. */
outputMode?: 'js' | 'ts';
}
/**
* Rollup plugin that transforms .tab files to JavaScript.
*
* @example
* ```js
* // rollup.config.js
* import { tabscriptPlugin } from 'tabscript/rollup';
*
* export default {
* input: 'src/index.tab',
* plugins: [tabscriptPlugin()],
* output: {
* file: 'dist/bundle.js',
* format: 'esm'
* }
* };
* ```
*
* @param options Configuration options for the TabScript transpiler
* @returns Rollup plugin instance
*/
export declare function tabscriptPlugin(options?: RollupPluginOptions): any;
import{tabscript as r}from"./tabscript.js";export function tabscriptPlugin(t={}){const{include:o=/\.tab$/,outputMode:e="js",...n}=t;const s=typeof o==="function"?o:r=>o.test(r);return{name:"rollup-plugin-tabscript",transform(t,o){if(!s(o))return null;const c=r(t,{js:e==="js",...n});if(c.errors.length>0){for(const r of c.errors){const t=`TabScript error at ${r.line}:${r.column}: ${r.message}`;if(n.recover){this.warn(t)}else{this.error(t)}}}return{code:c.code,map:null}}}}
{"version":3,"names":["tabscript","tabscriptPlugin","options","include","outputMode","transpileOptions","matcher","id","test","name","transform","code","result","js","errors","length","error","message","line","column","recover","this","warn","map"],"sources":["dist/rollup-plugin.js"],"mappings":"oBAKSA,MAAiB,wBAsBnB,SAASC,gBAAgBC,EAAU,CAAC,GACvC,MAAMC,QAAEA,EAAU,SAAQC,WAAEA,EAAa,QAASC,GAAqBH,EACvE,MAAMI,SAAiBH,IAAY,WAAaA,EAAWI,GAAOJ,EAAQK,KAAKD,GAC/E,MAAO,CACHE,KAAM,0BACN,SAAAC,CAAUC,EAAMJ,GACZ,IAAKD,EAAQC,GACT,OAAO,KACX,MAAMK,EAASZ,EAAUW,EAAM,CAC3BE,GAAIT,IAAe,QAChBC,IAEP,GAAIO,EAAOE,OAAOC,OAAS,EAAG,CAC1B,IAAK,MAAMC,KAASJ,EAAOE,OAAQ,CAC/B,MAAMG,EAAU,sBAAsBD,EAAME,QAAQF,EAAMG,WAAWH,EAAMC,UAC3E,GAAIZ,EAAiBe,QAAS,CAC1BC,KAAKC,KAAKL,EACd,KACK,CACDI,KAAKL,MAAMC,EACf,CACJ,CACJ,CACA,MAAO,CACHN,KAAMC,EAAOD,KACbY,IAAK,KAEb,EAER","ignoreList":[]}
/**
* Vite plugin for TabScript files.
*
* @module vite-plugin
*/
import { type Options } from './tabscript.js';
export interface VitePluginOptions extends Omit<Options, 'loadPlugin' | 'js'> {
/** Include pattern for files to transform. Defaults to /\.tab$/ */
include?: RegExp | ((id: string) => boolean);
/** Output mode: 'ts' (default, preserves types) or 'js'. Vite handles TypeScript natively. */
outputMode?: 'js' | 'ts';
}
/**
* Vite plugin that transforms .tab files to JavaScript.
*
* @example
* ```js
* // vite.config.js
* import { tabscriptPlugin } from 'tabscript/vite';
*
* export default {
* plugins: [tabscriptPlugin()]
* };
* ```
*
* @param options Configuration options for the TabScript transpiler
* @returns Vite plugin instance
*/
export declare function tabscriptPlugin(options?: VitePluginOptions): any;
import{tabscript as t}from"./tabscript.js";export function tabscriptPlugin(r={}){const{include:o=/\.tab$/,outputMode:n="ts",...e}=r;const s=typeof o==="function"?o:t=>o.test(t);return{name:"vite-plugin-tabscript",transform(r,o){if(!s(o))return null;const c=t(r,{js:n==="js",...e});if(c.errors.length>0){for(const t of c.errors){console.error(`TabScript error in ${o} at ${t.line}:${t.column}: ${t.message}`)}}return{code:c.code,map:null}}}}
{"version":3,"names":["tabscript","tabscriptPlugin","options","include","outputMode","transpileOptions","matcher","id","test","name","transform","code","result","js","errors","length","error","console","line","column","message","map"],"sources":["dist/vite-plugin.js"],"mappings":"oBAKSA,MAAiB,wBAiBnB,SAASC,gBAAgBC,EAAU,CAAC,GACvC,MAAMC,QAAEA,EAAU,SAAQC,WAAEA,EAAa,QAASC,GAAqBH,EACvE,MAAMI,SAAiBH,IAAY,WAAaA,EAAWI,GAAOJ,EAAQK,KAAKD,GAC/E,MAAO,CACHE,KAAM,wBACN,SAAAC,CAAUC,EAAMJ,GACZ,IAAKD,EAAQC,GACT,OAAO,KACX,MAAMK,EAASZ,EAAUW,EAAM,CAC3BE,GAAIT,IAAe,QAChBC,IAEP,GAAIO,EAAOE,OAAOC,OAAS,EAAG,CAE1B,IAAK,MAAMC,KAASJ,EAAOE,OAAQ,CAC/BG,QAAQD,MAAM,sBAAsBT,QAASS,EAAME,QAAQF,EAAMG,WAAWH,EAAMI,UACtF,CACJ,CACA,MAAO,CACHT,KAAMC,EAAOD,KACbU,IAAK,KAEb,EAER","ignoreList":[]}
/**
* Webpack loader for TabScript files.
*
* @module webpack-loader
*/
import { type Options } from './tabscript.js';
export interface WebpackLoaderOptions extends Omit<Options, 'loadPlugin' | 'js'> {
/** Output mode: 'js' (default) or 'ts'. Use 'ts' to preserve type information for subsequent type checking. */
outputMode?: 'js' | 'ts';
}
/**
* Webpack loader that transforms .tab files to JavaScript.
*
* @example
* ```js
* // webpack.config.js
* module.exports = {
* module: {
* rules: [
* {
* test: /\.tab$/,
* use: {
* loader: 'tabscript/webpack',
* options: {
* whitespace: 'pretty'
* }
* }
* }
* ]
* }
* };
* ```
*
* @param source The TabScript source code
* @returns The transpiled JavaScript code
*/
export default function tabscriptLoader(this: any, source: string): string;
import{tabscript as r}from"./tabscript.js";export default function tabscriptLoader(t){const o=this.getOptions?this.getOptions():{};const{outputMode:e="js",...s}=o;const i=r(t,{js:e==="js",...s});if(i.errors.length>0){for(const r of i.errors){const t=`TabScript error at ${r.line}:${r.column}: ${r.message}`;if(o.recover){this.emitWarning?.(new Error(t))}else{this.emitError?.(new Error(t))}}}return i.code}
{"version":3,"names":["tabscript","tabscriptLoader","source","options","this","getOptions","outputMode","transpileOptions","result","js","errors","length","error","message","line","column","recover","emitWarning","Error","emitError","code"],"sources":["dist/webpack-loader.js"],"mappings":"oBAKSA,MAAiB,gCA2BX,SAASC,gBAAgBC,GACpC,MAAMC,EAAUC,KAAKC,WAAaD,KAAKC,aAAe,CAAC,EACvD,MAAMC,WAAEA,EAAa,QAASC,GAAqBJ,EACnD,MAAMK,EAASR,EAAUE,EAAQ,CAC7BO,GAAIH,IAAe,QAChBC,IAEP,GAAIC,EAAOE,OAAOC,OAAS,EAAG,CAC1B,IAAK,MAAMC,KAASJ,EAAOE,OAAQ,CAC/B,MAAMG,EAAU,sBAAsBD,EAAME,QAAQF,EAAMG,WAAWH,EAAMC,UAC3E,GAAIV,EAAQa,QAAS,CAEjBZ,KAAKa,cAAc,IAAIC,MAAML,GACjC,KACK,CAEDT,KAAKe,YAAY,IAAID,MAAML,GAC/B,CACJ,CACJ,CACA,OAAOL,EAAOY,IAClB","ignoreList":[]}
/**
* esbuild plugin for TabScript files.
*
* @module esbuild-plugin
*/
import { type Options } from './tabscript.js';
export interface EsbuildPluginOptions extends Omit<Options, 'loadPlugin' | 'js'> {
/** Output mode: 'ts' (default, preserves types) or 'js'. esbuild handles TypeScript natively. */
outputMode?: 'js' | 'ts';
}
/**
* esbuild plugin that transforms .tab files to JavaScript.
*
* @example
* ```js
* // build.js
* import { tabscriptPlugin } from 'tabscript/esbuild';
* import * as esbuild from 'esbuild';
*
* await esbuild.build({
* entryPoints: ['src/index.tab'],
* bundle: true,
* plugins: [tabscriptPlugin()]
* });
* ```
*
* @param options Configuration options for the TabScript transpiler
* @returns esbuild plugin instance
*/
export declare function tabscriptPlugin(options?: EsbuildPluginOptions): any;
/**
* esbuild plugin for TabScript files.
*
* @module esbuild-plugin
*/
import { tabscript } from './tabscript.js';
import * as fs from 'fs';
import * as path from 'path';
/**
* esbuild plugin that transforms .tab files to JavaScript.
*
* @example
* ```js
* // build.js
* import { tabscriptPlugin } from 'tabscript/esbuild';
* import * as esbuild from 'esbuild';
*
* await esbuild.build({
* entryPoints: ['src/index.tab'],
* bundle: true,
* plugins: [tabscriptPlugin()]
* });
* ```
*
* @param options Configuration options for the TabScript transpiler
* @returns esbuild plugin instance
*/
export function tabscriptPlugin(options = {}) {
const { outputMode = 'ts', ...transpileOptions } = options;
return {
name: 'tabscript',
setup(build) {
build.onLoad({ filter: /\.tab$/ }, async (args) => {
const source = await fs.promises.readFile(args.path, 'utf8');
const basePath = path.dirname(args.path);
const result = tabscript(source, {
js: outputMode === 'js',
...transpileOptions
});
if (result.errors.length > 0) {
const errors = result.errors.map(error => ({
text: error.message,
location: {
file: args.path,
line: error.line,
column: error.column
}
}));
if (transpileOptions.recover) {
// Return warnings but continue
return {
contents: result.code,
loader: outputMode === 'js' ? 'js' : 'ts',
warnings: errors
};
}
else {
// Return errors and fail
return { errors };
}
}
return {
contents: result.code,
loader: outputMode === 'js' ? 'js' : 'ts'
};
});
}
};
}
//# sourceMappingURL=esbuild-plugin.js.map
{"version":3,"file":"esbuild-plugin.js","sourceRoot":"","sources":["../src/esbuild-plugin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAgB,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,eAAe,CAAC,UAAgC,EAAE;IAC9D,MAAM,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAE3D,OAAO;QACH,IAAI,EAAE,WAAW;QAEjB,KAAK,CAAC,KAAU;YACZ,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;gBACnD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEzC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE;oBAC7B,EAAE,EAAE,UAAU,KAAK,IAAI;oBACvB,GAAG,gBAAgB;iBACtB,CAAC,CAAC;gBAEH,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACvC,IAAI,EAAE,KAAK,CAAC,OAAO;wBACnB,QAAQ,EAAE;4BACN,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,MAAM,EAAE,KAAK,CAAC,MAAM;yBACvB;qBACJ,CAAC,CAAC,CAAC;oBAEJ,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;wBAC3B,+BAA+B;wBAC/B,OAAO;4BACH,QAAQ,EAAE,MAAM,CAAC,IAAI;4BACrB,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;4BACzC,QAAQ,EAAE,MAAM;yBACnB,CAAC;oBACN,CAAC;yBAAM,CAAC;wBACJ,yBAAyB;wBACzB,OAAO,EAAE,MAAM,EAAE,CAAC;oBACtB,CAAC;gBACL,CAAC;gBAED,OAAO;oBACH,QAAQ,EAAE,MAAM,CAAC,IAAI;oBACrB,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;iBAC5C,CAAC;YACN,CAAC,CAAC,CAAC;QACP,CAAC;KACJ,CAAC;AACN,CAAC"}
/**
* Rollup plugin for TabScript files.
*
* @module rollup-plugin
*/
import { type Options } from './tabscript.js';
export interface RollupPluginOptions extends Omit<Options, 'loadPlugin' | 'js'> {
/** Include pattern for files to transform. Defaults to /\.tab$/ */
include?: RegExp | ((id: string) => boolean);
/** Output mode: 'js' (default) or 'ts'. Use 'ts' to preserve type information for subsequent type checking. */
outputMode?: 'js' | 'ts';
}
/**
* Rollup plugin that transforms .tab files to JavaScript.
*
* @example
* ```js
* // rollup.config.js
* import { tabscriptPlugin } from 'tabscript/rollup';
*
* export default {
* input: 'src/index.tab',
* plugins: [tabscriptPlugin()],
* output: {
* file: 'dist/bundle.js',
* format: 'esm'
* }
* };
* ```
*
* @param options Configuration options for the TabScript transpiler
* @returns Rollup plugin instance
*/
export declare function tabscriptPlugin(options?: RollupPluginOptions): any;
/**
* Rollup plugin for TabScript files.
*
* @module rollup-plugin
*/
import { tabscript } from './tabscript.js';
/**
* Rollup plugin that transforms .tab files to JavaScript.
*
* @example
* ```js
* // rollup.config.js
* import { tabscriptPlugin } from 'tabscript/rollup';
*
* export default {
* input: 'src/index.tab',
* plugins: [tabscriptPlugin()],
* output: {
* file: 'dist/bundle.js',
* format: 'esm'
* }
* };
* ```
*
* @param options Configuration options for the TabScript transpiler
* @returns Rollup plugin instance
*/
export function tabscriptPlugin(options = {}) {
const { include = /\.tab$/, outputMode = 'js', ...transpileOptions } = options;
const matcher = typeof include === 'function' ? include : (id) => include.test(id);
return {
name: 'rollup-plugin-tabscript',
transform(code, id) {
if (!matcher(id))
return null;
const result = tabscript(code, {
js: outputMode === 'js',
...transpileOptions
});
if (result.errors.length > 0) {
for (const error of result.errors) {
const message = `TabScript error at ${error.line}:${error.column}: ${error.message}`;
if (transpileOptions.recover) {
this.warn(message);
}
else {
this.error(message);
}
}
}
return {
code: result.code,
map: null // TODO: Convert result.map to source map format
};
}
};
}
//# sourceMappingURL=rollup-plugin.js.map
{"version":3,"file":"rollup-plugin.js","sourceRoot":"","sources":["../src/rollup-plugin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAgB,MAAM,gBAAgB,CAAC;AASzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,eAAe,CAAC,UAA+B,EAAE;IAC7D,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAC/E,MAAM,OAAO,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE3F,OAAO;QACH,IAAI,EAAE,yBAAyB;QAE/B,SAAS,CAAC,IAAY,EAAE,EAAU;YAC9B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAAE,OAAO,IAAI,CAAC;YAE9B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE;gBAC3B,EAAE,EAAE,UAAU,KAAK,IAAI;gBACvB,GAAG,gBAAgB;aACtB,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAChC,MAAM,OAAO,GAAG,sBAAsB,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;oBACrF,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;wBAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvB,CAAC;yBAAM,CAAC;wBACJ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACxB,CAAC;gBACL,CAAC;YACL,CAAC;YAED,OAAO;gBACH,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,IAAI,CAAC,gDAAgD;aAC7D,CAAC;QACN,CAAC;KACJ,CAAC;AACN,CAAC"}
/**
* Vite plugin for TabScript files.
*
* @module vite-plugin
*/
import { type Options } from './tabscript.js';
export interface VitePluginOptions extends Omit<Options, 'loadPlugin' | 'js'> {
/** Include pattern for files to transform. Defaults to /\.tab$/ */
include?: RegExp | ((id: string) => boolean);
/** Output mode: 'ts' (default, preserves types) or 'js'. Vite handles TypeScript natively. */
outputMode?: 'js' | 'ts';
}
/**
* Vite plugin that transforms .tab files to JavaScript.
*
* @example
* ```js
* // vite.config.js
* import { tabscriptPlugin } from 'tabscript/vite';
*
* export default {
* plugins: [tabscriptPlugin()]
* };
* ```
*
* @param options Configuration options for the TabScript transpiler
* @returns Vite plugin instance
*/
export declare function tabscriptPlugin(options?: VitePluginOptions): any;
/**
* Vite plugin for TabScript files.
*
* @module vite-plugin
*/
import { tabscript } from './tabscript.js';
/**
* Vite plugin that transforms .tab files to JavaScript.
*
* @example
* ```js
* // vite.config.js
* import { tabscriptPlugin } from 'tabscript/vite';
*
* export default {
* plugins: [tabscriptPlugin()]
* };
* ```
*
* @param options Configuration options for the TabScript transpiler
* @returns Vite plugin instance
*/
export function tabscriptPlugin(options = {}) {
const { include = /\.tab$/, outputMode = 'ts', ...transpileOptions } = options;
const matcher = typeof include === 'function' ? include : (id) => include.test(id);
return {
name: 'vite-plugin-tabscript',
transform(code, id) {
if (!matcher(id))
return null;
const result = tabscript(code, {
js: outputMode === 'js',
...transpileOptions
});
if (result.errors.length > 0) {
// Log errors but still return the code if recover mode was used
for (const error of result.errors) {
console.error(`TabScript error in ${id} at ${error.line}:${error.column}: ${error.message}`);
}
}
return {
code: result.code,
map: null // TODO: Convert result.map to source map format
};
}
};
}
//# sourceMappingURL=vite-plugin.js.map
{"version":3,"file":"vite-plugin.js","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAgB,MAAM,gBAAgB,CAAC;AASzD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAAC,UAA6B,EAAE;IAC3D,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAC/E,MAAM,OAAO,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE3F,OAAO;QACH,IAAI,EAAE,uBAAuB;QAE7B,SAAS,CAAC,IAAY,EAAE,EAAU;YAC9B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAAE,OAAO,IAAI,CAAC;YAE9B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE;gBAC3B,EAAE,EAAE,UAAU,KAAK,IAAI;gBACvB,GAAG,gBAAgB;aACtB,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,gEAAgE;gBAChE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAChC,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,OAAO,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACjG,CAAC;YACL,CAAC;YAED,OAAO;gBACH,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,IAAI,CAAC,gDAAgD;aAC7D,CAAC;QACN,CAAC;KACJ,CAAC;AACN,CAAC"}
/**
* Webpack loader for TabScript files.
*
* @module webpack-loader
*/
import { type Options } from './tabscript.js';
export interface WebpackLoaderOptions extends Omit<Options, 'loadPlugin' | 'js'> {
/** Output mode: 'js' (default) or 'ts'. Use 'ts' to preserve type information for subsequent type checking. */
outputMode?: 'js' | 'ts';
}
/**
* Webpack loader that transforms .tab files to JavaScript.
*
* @example
* ```js
* // webpack.config.js
* module.exports = {
* module: {
* rules: [
* {
* test: /\.tab$/,
* use: {
* loader: 'tabscript/webpack',
* options: {
* whitespace: 'pretty'
* }
* }
* }
* ]
* }
* };
* ```
*
* @param source The TabScript source code
* @returns The transpiled JavaScript code
*/
export default function tabscriptLoader(this: any, source: string): string;
/**
* Webpack loader for TabScript files.
*
* @module webpack-loader
*/
import { tabscript } from './tabscript.js';
/**
* Webpack loader that transforms .tab files to JavaScript.
*
* @example
* ```js
* // webpack.config.js
* module.exports = {
* module: {
* rules: [
* {
* test: /\.tab$/,
* use: {
* loader: 'tabscript/webpack',
* options: {
* whitespace: 'pretty'
* }
* }
* }
* ]
* }
* };
* ```
*
* @param source The TabScript source code
* @returns The transpiled JavaScript code
*/
export default function tabscriptLoader(source) {
const options = this.getOptions ? this.getOptions() : {};
const { outputMode = 'js', ...transpileOptions } = options;
const result = tabscript(source, {
js: outputMode === 'js',
...transpileOptions
});
if (result.errors.length > 0) {
for (const error of result.errors) {
const message = `TabScript error at ${error.line}:${error.column}: ${error.message}`;
if (options.recover) {
// Emit warning but continue
this.emitWarning?.(new Error(message));
}
else {
// Emit error and fail
this.emitError?.(new Error(message));
}
}
}
return result.code;
}
//# sourceMappingURL=webpack-loader.js.map
{"version":3,"file":"webpack-loader.js","sourceRoot":"","sources":["../src/webpack-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAgB,MAAM,gBAAgB,CAAC;AAOzD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAY,MAAc;IAC7D,MAAM,OAAO,GAAyB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,MAAM,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAE3D,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE;QAC7B,EAAE,EAAE,UAAU,KAAK,IAAI;QACvB,GAAG,gBAAgB;KACtB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,sBAAsB,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YACrF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,4BAA4B;gBAC5B,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACJ,sBAAsB;gBACtB,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACvB,CAAC"}
/**
* esbuild plugin for TabScript files.
*
* @module esbuild-plugin
*/
import { tabscript, type Options } from './tabscript.js';
import * as fs from 'fs';
import * as path from 'path';
export interface EsbuildPluginOptions extends Omit<Options, 'loadPlugin' | 'js'> {
/** Output mode: 'ts' (default, preserves types) or 'js'. esbuild handles TypeScript natively. */
outputMode?: 'js' | 'ts';
}
/**
* esbuild plugin that transforms .tab files to JavaScript.
*
* @example
* ```js
* // build.js
* import { tabscriptPlugin } from 'tabscript/esbuild';
* import * as esbuild from 'esbuild';
*
* await esbuild.build({
* entryPoints: ['src/index.tab'],
* bundle: true,
* plugins: [tabscriptPlugin()]
* });
* ```
*
* @param options Configuration options for the TabScript transpiler
* @returns esbuild plugin instance
*/
export function tabscriptPlugin(options: EsbuildPluginOptions = {}): any {
const { outputMode = 'ts', ...transpileOptions } = options;
return {
name: 'tabscript',
setup(build: any) {
build.onLoad({ filter: /\.tab$/ }, async (args: any) => {
const source = await fs.promises.readFile(args.path, 'utf8');
const basePath = path.dirname(args.path);
const result = tabscript(source, {
js: outputMode === 'js',
...transpileOptions
});
if (result.errors.length > 0) {
const errors = result.errors.map(error => ({
text: error.message,
location: {
file: args.path,
line: error.line,
column: error.column
}
}));
if (transpileOptions.recover) {
// Return warnings but continue
return {
contents: result.code,
loader: outputMode === 'js' ? 'js' : 'ts',
warnings: errors
};
} else {
// Return errors and fail
return { errors };
}
}
return {
contents: result.code,
loader: outputMode === 'js' ? 'js' : 'ts'
};
});
}
};
}
/**
* Rollup plugin for TabScript files.
*
* @module rollup-plugin
*/
import { tabscript, type Options } from './tabscript.js';
export interface RollupPluginOptions extends Omit<Options, 'loadPlugin' | 'js'> {
/** Include pattern for files to transform. Defaults to /\.tab$/ */
include?: RegExp | ((id: string) => boolean);
/** Output mode: 'js' (default) or 'ts'. Use 'ts' to preserve type information for subsequent type checking. */
outputMode?: 'js' | 'ts';
}
/**
* Rollup plugin that transforms .tab files to JavaScript.
*
* @example
* ```js
* // rollup.config.js
* import { tabscriptPlugin } from 'tabscript/rollup';
*
* export default {
* input: 'src/index.tab',
* plugins: [tabscriptPlugin()],
* output: {
* file: 'dist/bundle.js',
* format: 'esm'
* }
* };
* ```
*
* @param options Configuration options for the TabScript transpiler
* @returns Rollup plugin instance
*/
export function tabscriptPlugin(options: RollupPluginOptions = {}): any {
const { include = /\.tab$/, outputMode = 'js', ...transpileOptions } = options;
const matcher = typeof include === 'function' ? include : (id: string) => include.test(id);
return {
name: 'rollup-plugin-tabscript',
transform(code: string, id: string) {
if (!matcher(id)) return null;
const result = tabscript(code, {
js: outputMode === 'js',
...transpileOptions
});
if (result.errors.length > 0) {
for (const error of result.errors) {
const message = `TabScript error at ${error.line}:${error.column}: ${error.message}`;
if (transpileOptions.recover) {
this.warn(message);
} else {
this.error(message);
}
}
}
return {
code: result.code,
map: null // TODO: Convert result.map to source map format
};
}
};
}
/**
* Vite plugin for TabScript files.
*
* @module vite-plugin
*/
import { tabscript, type Options } from './tabscript.js';
export interface VitePluginOptions extends Omit<Options, 'loadPlugin' | 'js'> {
/** Include pattern for files to transform. Defaults to /\.tab$/ */
include?: RegExp | ((id: string) => boolean);
/** Output mode: 'ts' (default, preserves types) or 'js'. Vite handles TypeScript natively. */
outputMode?: 'js' | 'ts';
}
/**
* Vite plugin that transforms .tab files to JavaScript.
*
* @example
* ```js
* // vite.config.js
* import { tabscriptPlugin } from 'tabscript/vite';
*
* export default {
* plugins: [tabscriptPlugin()]
* };
* ```
*
* @param options Configuration options for the TabScript transpiler
* @returns Vite plugin instance
*/
export function tabscriptPlugin(options: VitePluginOptions = {}): any {
const { include = /\.tab$/, outputMode = 'ts', ...transpileOptions } = options;
const matcher = typeof include === 'function' ? include : (id: string) => include.test(id);
return {
name: 'vite-plugin-tabscript',
transform(code: string, id: string) {
if (!matcher(id)) return null;
const result = tabscript(code, {
js: outputMode === 'js',
...transpileOptions
});
if (result.errors.length > 0) {
// Log errors but still return the code if recover mode was used
for (const error of result.errors) {
console.error(`TabScript error in ${id} at ${error.line}:${error.column}: ${error.message}`);
}
}
return {
code: result.code,
map: null // TODO: Convert result.map to source map format
};
}
};
}
/**
* Webpack loader for TabScript files.
*
* @module webpack-loader
*/
import { tabscript, type Options } from './tabscript.js';
export interface WebpackLoaderOptions extends Omit<Options, 'loadPlugin' | 'js'> {
/** Output mode: 'js' (default) or 'ts'. Use 'ts' to preserve type information for subsequent type checking. */
outputMode?: 'js' | 'ts';
}
/**
* Webpack loader that transforms .tab files to JavaScript.
*
* @example
* ```js
* // webpack.config.js
* module.exports = {
* module: {
* rules: [
* {
* test: /\.tab$/,
* use: {
* loader: 'tabscript/webpack',
* options: {
* whitespace: 'pretty'
* }
* }
* }
* ]
* }
* };
* ```
*
* @param source The TabScript source code
* @returns The transpiled JavaScript code
*/
export default function tabscriptLoader(this: any, source: string): string {
const options: WebpackLoaderOptions = this.getOptions ? this.getOptions() : {};
const { outputMode = 'js', ...transpileOptions } = options;
const result = tabscript(source, {
js: outputMode === 'js',
...transpileOptions
});
if (result.errors.length > 0) {
for (const error of result.errors) {
const message = `TabScript error at ${error.line}:${error.column}: ${error.message}`;
if (options.recover) {
// Emit warning but continue
this.emitWarning?.(new Error(message));
} else {
// Emit error and fail
this.emitError?.(new Error(message));
}
}
}
return result.code;
}
+1
-1

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

import{tabscript as t}from"./tabscript.js";let e={};let r=location.href;function transformImport(o){if(o.slice(-3)===".js")return o;const n=new URL(o,r).toString();let s=e[n];if(!s){const o=new XMLHttpRequest;o.open("GET",n,false);o.send(null);if(o.status!==200){throw new Error(`HTTP error! status: ${o.status} for ${n}`)}const c=o.responseText;let a=r;r=n;const i=t(c,{recover:true,transformImport:transformImport})+"\n//# sourceURL="+n;r=a;const l=new Blob([i],{type:"application/javascript"});s=URL.createObjectURL(l);e[n]=s}console.log(`tabscript browser transformed import`,n,s);return s}export async function transpile(e){let o;let n=e.getAttribute("src");if(n){n=new URL(n,r).toString();const t=await fetch(n);if(!t.ok){throw new Error(`Failed to fetch ${n}: ${t.status} ${t.statusText}`)}o=await t.text()}else{o=e.textContent||""}const s=document.createElement("script");let{code:c}=t(o,{transformImport:transformImport});if(n)c+="\n//# sourceURL="+n;s.textContent=c;s.setAttribute("type","module");e.parentNode.replaceChild(s,e)}export async function transpileAll(){const t=document.querySelectorAll('script[type="text/tabscript"]');for(const e of t){try{await transpile(e)}catch(t){console.error(t)}}}document.addEventListener("DOMContentLoaded",transpileAll);
import{tabscript as t}from"./tabscript.js";let e={};let r=location.href;function loadPlugin(e){const o=new URL(e,r).toString();const n=new XMLHttpRequest;n.open("GET",o,false);n.send(null);if(n.status!==200){throw new Error(`Failed to load plugin ${e}: HTTP ${n.status}`)}const s=n.responseText;const l=t(s,{js:true,whitespace:"pretty",loadPlugin:loadPlugin});if(l.errors.length>0){throw new Error(`Failed to transpile plugin ${e}: ${l.errors[0].message}`)}const a=l.code.replace(/\bexport\s+default/,"return");const c=Function(a)();return{default:c}}function transformImport(o){if(o.slice(-3)===".js")return o;const n=new URL(o,r).toString();let s=e[n];if(!s){const o=new XMLHttpRequest;o.open("GET",n,false);o.send(null);if(o.status!==200){throw new Error(`HTTP error! status: ${o.status} for ${n}`)}const l=o.responseText;let a=r;r=n;const c=t(l,{js:true,recover:true,transformImport:transformImport,loadPlugin:loadPlugin})+"\n//# sourceURL="+n;r=a;const i=new Blob([c],{type:"application/javascript"});s=URL.createObjectURL(i);e[n]=s}console.log(`tabscript browser transformed import`,n,s);return s}export async function transpile(e){let o;let n=e.getAttribute("src");if(n){n=new URL(n,r).toString();const t=await fetch(n);if(!t.ok){throw new Error(`Failed to fetch ${n}: ${t.status} ${t.statusText}`)}o=await t.text()}else{o=e.textContent||""}const s=document.createElement("script");let{code:l}=t(o,{js:true,transformImport:transformImport,loadPlugin:loadPlugin});if(n)l+="\n//# sourceURL="+n;s.textContent=l;s.setAttribute("type","module");e.parentNode.replaceChild(s,e)}export async function transpileAll(){const t=document.querySelectorAll('script[type="text/tabscript"]');for(const e of t){try{await transpile(e)}catch(t){console.error(t)}}}document.addEventListener("DOMContentLoaded",transpileAll);

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

{"version":3,"names":["tabscript","transformCache","baseUrl","location","href","transformImport","url","slice","absoluteUrl","URL","toString","objectUrl","xhr","XMLHttpRequest","open","send","status","Error","ts","responseText","oldBaseUrl","js","recover","blob","Blob","type","createObjectURL","console","log","async","transpile","tsE","src","getAttribute","response","fetch","ok","statusText","text","textContent","jsE","document","createElement","code","setAttribute","parentNode","replaceChild","transpileAll","tsEs","querySelectorAll","e","error","addEventListener"],"sources":["dist/browser.js"],"mappings":"oBAASA,MAAiB,iBAC1B,IAAIC,EAAiB,CAAC,EACtB,IAAIC,EAAUC,SAASC,KACvB,SAASC,gBAAgBC,GAErB,GAAIA,EAAIC,OAAO,KAAO,MAClB,OAAOD,EACX,MAAME,EAAc,IAAIC,IAAIH,EAAKJ,GAASQ,WAC1C,IAAIC,EAAYV,EAAeO,GAC/B,IAAKG,EAAW,CACZ,MAAMC,EAAM,IAAIC,eAChBD,EAAIE,KAAK,MAAON,EAAa,OAC7BI,EAAIG,KAAK,MACT,GAAIH,EAAII,SAAW,IAAK,CACpB,MAAM,IAAIC,MAAM,uBAAuBL,EAAII,cAAcR,IAC7D,CACA,MAAMU,EAAKN,EAAIO,aACf,IAAIC,EAAalB,EACjBA,EAAUM,EACV,MAAMa,EAAKrB,EAAUkB,EAAI,CAAEI,QAAS,KAAMjB,kCAAqB,mBAAqBG,EACpFN,EAAUkB,EACV,MAAMG,EAAO,IAAIC,KAAK,CAACH,GAAK,CAAEI,KAAM,2BACpCd,EAAYF,IAAIiB,gBAAgBH,GAChCtB,EAAeO,GAAeG,CAClC,CACAgB,QAAQC,IAAI,uCAAwCpB,EAAaG,GACjE,OAAOA,CACX,QACOkB,eAAeC,UAAUC,GAC5B,IAAIb,EAEJ,IAAIc,EAAMD,EAAIE,aAAa,OAC3B,GAAID,EAAK,CACLA,EAAM,IAAIvB,IAAIuB,EAAK9B,GAASQ,WAE5B,MAAMwB,QAAiBC,MAAMH,GAC7B,IAAKE,EAASE,GAAI,CACd,MAAM,IAAInB,MAAM,mBAAmBe,MAAQE,EAASlB,UAAUkB,EAASG,aAC3E,CACAnB,QAAWgB,EAASI,MACxB,KACK,CAEDpB,EAAKa,EAAIQ,aAAe,EAC5B,CAEA,MAAMC,EAAMC,SAASC,cAAc,UACnC,IAAMC,KAAMtB,GAAOrB,EAAUkB,EAAI,CAAEb,kCACnC,GAAI2B,EACAX,GAAM,mBAAqBW,EAC/BQ,EAAID,YAAclB,EAClBmB,EAAII,aAAa,OAAQ,UAEzBb,EAAIc,WAAWC,aAAaN,EAAKT,EACrC,QACOF,eAAekB,eAClB,MAAMC,EAAOP,SAASQ,iBAAiB,iCACvC,IAAK,MAAMlB,KAAOiB,EAAM,CACpB,UACUlB,UAAUC,EACpB,CACA,MAAOmB,GACHvB,QAAQwB,MAAMD,EAClB,CACJ,CACJ,CACAT,SAASW,iBAAiB,mBAAoBL","ignoreList":[]}
{"version":3,"names":["tabscript","transformCache","baseUrl","location","href","loadPlugin","pluginPath","absoluteUrl","URL","toString","xhr","XMLHttpRequest","open","send","status","Error","pluginSource","responseText","pluginResult","js","whitespace","errors","length","message","code","replace","pluginFn","Function","default","transformImport","url","slice","objectUrl","ts","oldBaseUrl","recover","blob","Blob","type","createObjectURL","console","log","async","transpile","tsE","src","getAttribute","response","fetch","ok","statusText","text","textContent","jsE","document","createElement","setAttribute","parentNode","replaceChild","transpileAll","tsEs","querySelectorAll","e","error","addEventListener"],"sources":["dist/browser.js"],"mappings":"oBAASA,MAAiB,iBAC1B,IAAIC,EAAiB,CAAC,EACtB,IAAIC,EAAUC,SAASC,KAEvB,SAASC,WAAWC,GAEhB,MAAMC,EAAc,IAAIC,IAAIF,EAAYJ,GAASO,WAEjD,MAAMC,EAAM,IAAIC,eAChBD,EAAIE,KAAK,MAAOL,EAAa,OAC7BG,EAAIG,KAAK,MACT,GAAIH,EAAII,SAAW,IAAK,CACpB,MAAM,IAAIC,MAAM,yBAAyBT,WAAoBI,EAAII,SACrE,CACA,MAAME,EAAeN,EAAIO,aAEzB,MAAMC,EAAelB,EAAUgB,EAAc,CAAEG,GAAI,KAAMC,WAAY,SAAUf,wBAC/E,GAAIa,EAAaG,OAAOC,OAAS,EAAG,CAChC,MAAM,IAAIP,MAAM,8BAA8BT,MAAeY,EAAaG,OAAO,GAAGE,UACxF,CAIA,MAAMC,EAAON,EAAaM,KAAKC,QAAQ,qBAAsB,UAC7D,MAAMC,EAAWC,SAASH,EAATG,GACjB,MAAO,CAAEC,QAASF,EACtB,CACA,SAASG,gBAAgBC,GAErB,GAAIA,EAAIC,OAAO,KAAO,MAClB,OAAOD,EACX,MAAMvB,EAAc,IAAIC,IAAIsB,EAAK5B,GAASO,WAC1C,IAAIuB,EAAY/B,EAAeM,GAC/B,IAAKyB,EAAW,CACZ,MAAMtB,EAAM,IAAIC,eAChBD,EAAIE,KAAK,MAAOL,EAAa,OAC7BG,EAAIG,KAAK,MACT,GAAIH,EAAII,SAAW,IAAK,CACpB,MAAM,IAAIC,MAAM,uBAAuBL,EAAII,cAAcP,IAC7D,CACA,MAAM0B,EAAKvB,EAAIO,aACf,IAAIiB,EAAahC,EACjBA,EAAUK,EACV,MAAMY,EAAKnB,EAAUiC,EAAI,CAAEd,GAAI,KAAMgB,QAAS,KAAMN,gCAAiBxB,wBAAgB,mBAAqBE,EAC1GL,EAAUgC,EACV,MAAME,EAAO,IAAIC,KAAK,CAAClB,GAAK,CAAEmB,KAAM,2BACpCN,EAAYxB,IAAI+B,gBAAgBH,GAChCnC,EAAeM,GAAeyB,CAClC,CACAQ,QAAQC,IAAI,uCAAwClC,EAAayB,GACjE,OAAOA,CACX,QACOU,eAAeC,UAAUC,GAC5B,IAAIX,EAEJ,IAAIY,EAAMD,EAAIE,aAAa,OAC3B,GAAID,EAAK,CACLA,EAAM,IAAIrC,IAAIqC,EAAK3C,GAASO,WAE5B,MAAMsC,QAAiBC,MAAMH,GAC7B,IAAKE,EAASE,GAAI,CACd,MAAM,IAAIlC,MAAM,mBAAmB8B,MAAQE,EAASjC,UAAUiC,EAASG,aAC3E,CACAjB,QAAWc,EAASI,MACxB,KACK,CAEDlB,EAAKW,EAAIQ,aAAe,EAC5B,CAEA,MAAMC,EAAMC,SAASC,cAAc,UACnC,IAAM/B,KAAML,GAAOnB,EAAUiC,EAAI,CAAEd,GAAI,KAAMU,gCAAiBxB,wBAC9D,GAAIwC,EACA1B,GAAM,mBAAqB0B,EAC/BQ,EAAID,YAAcjC,EAClBkC,EAAIG,aAAa,OAAQ,UAEzBZ,EAAIa,WAAWC,aAAaL,EAAKT,EACrC,QACOF,eAAeiB,eAClB,MAAMC,EAAON,SAASO,iBAAiB,iCACvC,IAAK,MAAMjB,KAAOgB,EAAM,CACpB,UACUjB,UAAUC,EACpB,CACA,MAAOkB,GACHtB,QAAQuB,MAAMD,EAClB,CACJ,CACJ,CACAR,SAASU,iBAAiB,mBAAoBL","ignoreList":[]}
#!/usr/bin/env -S node --enable-source-maps
import*as e from"fs";import*as r from"path";import{tabscript as o}from"./tabscript.js";import{createRequire as s}from"module";const t=s(import.meta.url);const i=process.argv.slice(2);let l,n,c=false,a=false,p=false,u="preserve";for(let e=0;e<i.length;e++){if(i[e]==="--output"){if(e+1>=i.length){console.error("Error: --output requires a filename");process.exit(1)}n=i[++e]}else if(i[e]==="--debug"){c=true}else if(i[e]==="--recover"){a=true}else if(i[e]==="--js"){p=true}else if(i[e]==="--whitespace"){if(e+1>=i.length){console.error("Error: --whitespace requires a value (preserve or pretty)");process.exit(1)}const r=i[++e];if(r!=="preserve"&&r!=="pretty"){console.error(`Error: --whitespace must be 'preserve' or 'pretty', got '${r}'`);process.exit(1)}u=r}else if(!l){l=i[e]}else{console.error(`Error: Unexpected argument '${i[e]}'`);process.exit(1)}}if(!l){console.error("Error: Input file is required");process.exit(1)}n||=r.join(r.dirname(l),r.basename(l,r.extname(l))+(p?".js":".ts"));const f=r.dirname(r.resolve(l));function loadPlugin(s){let i=r.resolve(f,s);if(s.endsWith(".tab")){const r=e.readFileSync(i,"utf8");const t=o(r,{js:true,whitespace:"pretty",loadPlugin:loadPlugin});if(t.errors.length>0){throw new Error(`Failed to transpile plugin ${s}: ${t.errors[0].message}`)}const l=t.code.replace(/export\s+default\s+/,"return ");return Function(l)()}return t(i)}try{const r=o(e.readFileSync(l,"utf8"),{debug:c,recover:a,js:p,whitespace:u,loadPlugin:loadPlugin});if(r.errors.length>0){for(const e of r.errors){console.error(`Error at ${e.line}:${e.column}: ${e.message}`)}}e.writeFileSync(n,r.code);if(r.errors.length>0){process.exit(1)}}catch(e){console.error(e);process.exit(1)}
import*as e from"fs";import*as r from"path";import{tabscript as t}from"./tabscript.js";import{createRequire as o}from"module";import*as s from"typescript";const i=o(import.meta.url);const n=`TabScript Transpiler\n\nUsage: tabscript [options] <input.tab> [more files...]\n\nOptions:\n --output <file> Output file (single input only, otherwise use --output-dir)\n --output-dir <dir> Output directory for multiple files\n --js Transpile to JavaScript instead of TypeScript\n --check Type check without generating output (CI/git hooks)\n --debug Log each consumed token\n --recover Continue on errors instead of throwing\n --whitespace <mode> 'preserve' (default) or 'pretty'\n --help Show this help\n\nExamples:\n tabscript input.tab # Transpile to input.ts\n tabscript input.tab --js # Transpile to input.js\n tabscript src/**/*.tab --check # Type check multiple files\n tabscript src/**/*.tab --output-dir dist # Transpile all to dist/`;const l=process.argv.slice(2);let c=[],u,a;let p=false,f=false,g=false,d="preserve",h=false;for(let e=0;e<l.length;e++){const r=l[e];if(r==="--help"||r==="-h"){console.log(n);process.exit(0)}else if(r==="--output"){if(++e>=l.length){console.error("Error: --output requires a filename");process.exit(1)}u=l[e]}else if(r==="--output-dir"){if(++e>=l.length){console.error("Error: --output-dir requires a directory");process.exit(1)}a=l[e]}else if(r==="--debug"){p=true}else if(r==="--recover"){f=true}else if(r==="--js"){g=true}else if(r==="--check"){h=true}else if(r==="--whitespace"){if(++e>=l.length){console.error("Error: --whitespace requires preserve or pretty");process.exit(1)}const r=l[e];if(r!=="preserve"&&r!=="pretty"){console.error(`Error: --whitespace must be preserve or pretty, got '${r}'`);process.exit(1)}d=r}else if(!r.startsWith("--")){c.push(r)}else{console.error(`Error: Unknown option '${r}'`);process.exit(1)}}if(c.length===0){console.error("Error: Input file required\n");console.log(n);process.exit(1)}if(u&&c.length>1){console.error("Error: --output only works with single input file. Use --output-dir for multiple files.");process.exit(1)}if(u&&a){console.error("Error: Cannot use both --output and --output-dir");process.exit(1)}function createPluginLoader(o){return function loadPlugin(s){let n;if(s.startsWith("./")||s.startsWith("../")){n=r.resolve(o,s)}else{n=i.resolve(s,{paths:[o]})}if(n.endsWith(".tab")){const r=e.readFileSync(n,"utf8");const o=t(r,{js:true,whitespace:"pretty",loadPlugin:loadPlugin});if(o.errors.length>0){throw new Error(`Failed to transpile plugin ${s}: ${o.errors[0].message}`)}return Function(o.code.replace(/export\s+default\s+/,"return "))()}return i(n)}}function processFile(o){const i=r.dirname(r.resolve(o));const n=createPluginLoader(i);try{const i=t(e.readFileSync(o,"utf8"),{debug:p,recover:f,js:h?false:g,whitespace:d,loadPlugin:n});if(i.errors.length>0){for(const e of i.errors){console.error(`${o}:${e.line}:${e.column}: ${e.message}`)}}if(h){const e=o.replace(/\.tab$/,".ts");const t={noEmit:true,strict:true,target:s.ScriptTarget.ES2023,module:s.ModuleKind.ES2022,moduleResolution:s.ModuleResolutionKind.Bundler,skipLibCheck:true};const n=s.createCompilerHost(t);const l=n.getSourceFile;n.getSourceFile=(t,o,n,c)=>{if(t===r.resolve(e)){return s.createSourceFile(t,i.code,o,true)}return l(t,o,n,c)};const c=s.createProgram([r.resolve(e)],t,n);const u=s.getPreEmitDiagnostics(c);if(u.length>0){for(const e of u){if(e.file){const{line:r,character:t}=e.file.getLineAndCharacterOfPosition(e.start);console.error(`${o}:${r+1}:${t+1}: ${s.flattenDiagnosticMessageText(e.messageText,"\n")}`)}else{console.error(s.flattenDiagnosticMessageText(e.messageText,"\n"))}}return false}console.log(`✓ ${o}`);return true}else{const t=u||r.join(a||r.dirname(o),r.basename(o,r.extname(o))+(g?".js":".ts"));if(a)e.mkdirSync(a,{recursive:true});e.writeFileSync(t,i.code);return i.errors.length===0}}catch(e){console.error(e);return false}}let m=false;for(const e of c){if(!processFile(e))m=true}process.exit(m?1:0);

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

{"version":3,"names":["fs","path","tabscript","createRequire","require","url","args","process","argv","slice","inputFile","outputFile","debug","recover","js","whitespace","i","length","console","error","exit","value","join","dirname","basename","extname","basePath","resolve","loadPlugin","pluginPath","resolvedPath","endsWith","pluginSource","readFileSync","pluginResult","errors","Error","message","code","replace","Function","result","line","column","writeFileSync","e"],"sources":["dist/cli.js"],"mappings":";UACYA,MAAQ,eACRC,MAAU,2BACbC,MAAiB,yCACjBC,MAAqB,SAC9B,MAAMC,EAAUD,cAA0BE,KAE1C,MAAMC,EAAOC,QAAQC,KAAKC,MAAM,GAChC,IAAIC,EAAWC,EAAYC,EAAQ,MAAOC,EAAU,MAAOC,EAAK,MAAOC,EAAa,WACpF,IAAK,IAAIC,EAAI,EAAGA,EAAIV,EAAKW,OAAQD,IAAK,CAClC,GAAIV,EAAKU,KAAO,WAAY,CACxB,GAAIA,EAAI,GAAKV,EAAKW,OAAQ,CACtBC,QAAQC,MAAM,uCACdZ,QAAQa,KAAK,EACjB,CACAT,EAAaL,IAAOU,EACxB,MACK,GAAIV,EAAKU,KAAO,UAAW,CAC5BJ,EAAQ,IACZ,MACK,GAAIN,EAAKU,KAAO,YAAa,CAC9BH,EAAU,IACd,MACK,GAAIP,EAAKU,KAAO,OAAQ,CACzBF,EAAK,IACT,MACK,GAAIR,EAAKU,KAAO,eAAgB,CACjC,GAAIA,EAAI,GAAKV,EAAKW,OAAQ,CACtBC,QAAQC,MAAM,6DACdZ,QAAQa,KAAK,EACjB,CACA,MAAMC,EAAQf,IAAOU,GACrB,GAAIK,IAAU,YAAcA,IAAU,SAAU,CAC5CH,QAAQC,MAAM,4DAA4DE,MAC1Ed,QAAQa,KAAK,EACjB,CACAL,EAAaM,CACjB,MACK,IAAKX,EAAW,CACjBA,EAAYJ,EAAKU,EACrB,KACK,CACDE,QAAQC,MAAM,+BAA+Bb,EAAKU,OAClDT,QAAQa,KAAK,EACjB,CACJ,CACA,IAAKV,EAAW,CACZQ,QAAQC,MAAM,iCACdZ,QAAQa,KAAK,EACjB,CAEAT,IAAeV,EAAKqB,KAAKrB,EAAKsB,QAAQb,GAAYT,EAAKuB,SAASd,EAAWT,EAAKwB,QAAQf,KAAeI,EAAK,MAAQ,QAEpH,MAAMY,EAAWzB,EAAKsB,QAAQtB,EAAK0B,QAAQjB,IAC3C,SAASkB,WAAWC,GAEhB,IAAIC,EAAe7B,EAAK0B,QAAQD,EAAUG,GAE1C,GAAIA,EAAWE,SAAS,QAAS,CAC7B,MAAMC,EAAehC,EAAGiC,aAAaH,EAAc,QACnD,MAAMI,EAAehC,EAAU8B,EAAc,CAAElB,GAAI,KAAMC,WAAY,SAAUa,wBAC/E,GAAIM,EAAaC,OAAOlB,OAAS,EAAG,CAChC,MAAM,IAAImB,MAAM,8BAA8BP,MAAeK,EAAaC,OAAO,GAAGE,UACxF,CAGA,MAAMC,EAAOJ,EAAaI,KAAKC,QAAQ,sBAAuB,WAC9D,OAAOC,SAASF,EAATE,EACX,CAEA,OAAOpC,EAAQ0B,EACnB,CACA,IACI,MAAMW,EAASvC,EAAUF,EAAGiC,aAAavB,EAAW,QAAS,CAAEE,QAAOC,UAASC,KAAIC,aAAYa,wBAE/F,GAAIa,EAAON,OAAOlB,OAAS,EAAG,CAC1B,IAAK,MAAME,KAASsB,EAAON,OAAQ,CAC/BjB,QAAQC,MAAM,YAAYA,EAAMuB,QAAQvB,EAAMwB,WAAWxB,EAAMkB,UACnE,CACJ,CACArC,EAAG4C,cAAcjC,EAAY8B,EAAOH,MAEpC,GAAIG,EAAON,OAAOlB,OAAS,EAAG,CAC1BV,QAAQa,KAAK,EACjB,CACJ,CACA,MAAOyB,GACH3B,QAAQC,MAAM0B,GACdtC,QAAQa,KAAK,EACjB","ignoreList":[]}
{"version":3,"names":["fs","path","tabscript","createRequire","ts","require","url","HELP","args","process","argv","slice","inputFiles","outputFile","outputDir","debug","recover","js","whitespace","check","i","length","arg","console","log","exit","error","val","startsWith","push","createPluginLoader","basePath","loadPlugin","pluginPath","resolvedPath","resolve","paths","endsWith","pluginSource","readFileSync","pluginResult","errors","Error","message","Function","code","replace","processFile","file","dirname","result","line","column","virtualFileName","compilerOptions","noEmit","strict","target","ScriptTarget","ES2023","module","ModuleKind","ES2022","moduleResolution","ModuleResolutionKind","Bundler","skipLibCheck","host","createCompilerHost","originalGetSourceFile","getSourceFile","fileName","languageVersion","onError","shouldCreateNewSourceFile","createSourceFile","program","createProgram","diagnostics","getPreEmitDiagnostics","diagnostic","character","getLineAndCharacterOfPosition","start","flattenDiagnosticMessageText","messageText","output","join","basename","extname","mkdirSync","recursive","writeFileSync","e","hasErrors"],"sources":["dist/cli.js"],"mappings":"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","ignoreList":[]}

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

import{ParseError as e,pattern as t}from"./state.js";const s={major:1,minor:0};function descr(e,t){e.toString=()=>"<"+t+">";return e}const r=descr(/[a-zA-Z_$][0-9a-zA-Z_$]*/y,"identifier");const p=descr(/(['"])(?:(?=(\\?))\2.)*?\1/y,"string");const a=descr(/[+-]?(?:0[xX][0-9a-fA-F]+|0[oO][0-7]+|0[bB][01]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/y,"number");const i=descr(/instanceof\b|in\b|or\b|and\b|[!=]~|[+\-*\/!=<>]=|[+\-*\/=<>]|%[a-z_]+/y,"bin-op");const c=descr(/[\s\S]*?(\${|`)/y,"`string`");const n=descr(/\+\+|--|!|\+|-|typeof\b|delete\b|await\b|new\b/y,"unary-op");const u=descr(/\/(\\.|[^\/])+\/[gimsuyd]*/y,"regexp");const o=descr(/\d+/y,"integer");const l=descr(/[^\s()]+/y,"path");const f={or:"||",and:"&&","==":"===","!=":"!==","=~":"==","!~":"!=","%mod":"%","%bit_or":"|","%bit_and":"&","%bit_xor":"^","%shift_left":"<<","%shift_right":">>","%unsigned_shift_right":">>>"};export class Parser{options;constructor(e){this.options=e}pattern(e,s){return t(e,s)}parseFuncParams(e,t=false,s=false){let p="";const a={open:s?"(":"|",close:s?")":"|",next:",",jsOpen:"(",jsClose:")"};const i=e.parseGroup(a,(()=>{if(e.accept("..."))e.must(e.accept(r));else if(t&&(e.acceptType("public")||e.acceptType("private")||e.acceptType("protected"))&&this.options.js){const t=e.must(e.accept(r));p+=`this.${t}=${t};`}else if(!e.accept(r))return false;e.acceptType("?");if(e.acceptType(":"))e.must(this.parseType(e));if(e.accept("="))e.must(this.parseExpression(e));return true}));if(!i)return false;return t&&p?p:true}parseFunction(e,t=false){let s=this.options.js?e.snapshot():undefined;const p=e.accept("async");const a=e.accept("function");if(a){e.accept("*");e.accept(r)}else if(t){if(p)return false;return false}const i=!!this.parseTemplateDef(e);if(a){this.parseFuncParams(e,false,false)||this.parseFuncParams(e,false,true)||e.emit("()")}else if(p||i){e.must(this.parseFuncParams(e,false,false))}else if(!this.parseFuncParams(e,false,false)){return false}this.parseFuncType(e);if(!a){s=this.options.js?e.snapshot():undefined;e.emit("=>")}if(this.parseBlock(e))return true;if(a?this.parseClassicFuncExprBody(e):this.parseArrowFuncExprBody(e))return true;e.must(t);e.emit(";");if(s)s.revertOutput();return true}parseVarDecl(e,t=true){const s=e.read(r,":");if(!s)return false;e.emit(true,e.read(":")?"let":"const",s[0]);const p=e.snapshot();if(!this.options.js)e.emit(":");if(!this.parseType(e))p.revertOutput();if(t&&e.accept("=")){e.must(this.parseExpression(e))}return true}parseExpression(e,t=false){let s=false;while(true){if(!e.accept(n)){if(!e.read("%bit_not"))break;e.emit("~")}s=true}if(this.parseClass(e)||this.parseFunction(e,false)||e.accept(r)||this.parseLiteralArray(e)||this.parseLiteralObject(e)||e.accept(p)||this.parseBacktickString(e)||e.accept(a)||this.parseParenthesised(e)||e.accept(u)){}else if(s)e.must(false);else return false;let c;while(!e.justAfterNewLine()){const s=e.lastNotSpace();if(s&&e.parseGroup({open:"(",close:")",next:","},(()=>{if(e.accept("..."))return!!e.must(this.parseExpression(e));else return!!this.parseExpression(e)}))){}else if(e.read("..")){if(!e.parseGroup({jsOpen:"(",jsClose:")",jsNext:",",allowImplicit:true,endNext:false},(()=>!!this.parseExpression(e)))){e.emit("(");let t;while(this.parseExpression(e)){while(e.accept(","))e.must(this.parseExpression(e));t=e.snapshot();e.emit(",")}if(t)t.revertOutput();e.emit(")")}}else if(e.peek("`"))e.must(this.parseBacktickString(e));else if(e.peek("["))e.must(this.parseIndex(e));else if(e.accept("++")||e.accept("--")){}else if(e.acceptType("as"))e.must(this.parseType(e));else if(e.accept("?."))e.must(e.accept(r)||this.parseIndex(e));else if(e.accept("."))e.must(e.accept(r));else if(s&&this.parseTemplateArg(e)){}else if(t&&e.peek(">"))return true;else if(c=e.read(i)){e.must(c[0]!=="%"||c in f);e.emit(f[c]||c);e.accept("=");e.must(this.parseExpression(e,t));return true}else if(e.acceptType("!")){}else break}if(e.read("?")){const t=e.snapshot();e.emit("?");if(this.parseExpression(e)){e.must(e.accept(":"));e.must(this.parseExpression(e))}else{t.revertOutput();e.emit("!=null")}}return true}parseType(e,t=true){if(e.peek("in")||e.peek("of"))return false;if(e.acceptType("typeof")){e.must(e.acceptType((()=>this.parseExpression(e))));return true}let s=false;if(e.acceptType("keyof"))s=true;if(e.acceptType(r)){e.acceptType((()=>e.parseGroup({open:"<",close:">",next:","},(()=>!!this.parseType(e)))))}else if(e.acceptType((()=>e.parseGroup({open:"{",close:"}",next:",",allowImplicit:true},(()=>!!this.parseTypeObjectEntry(e)))))){}else if(e.acceptType((()=>e.parseGroup({open:"[",close:"]",next:","},(()=>!!this.parseType(e)))))){}else if(t&&e.acceptType((()=>this.parseFuncParams(e,false,false)))){if(e.read(":")){if(!this.options.js)e.emit("=>");e.must(this.parseType(e))}return true}else if(e.acceptType("(")){e.must(this.parseType(e));e.must(e.acceptType(")"))}else if(!e.acceptType(a)&&!e.acceptType(p)){if(s)e.must(false);return false}while(e.acceptType("[")){this.parseType(e);e.must(e.acceptType("]"))}while(true){if(e.acceptType((()=>!!e.read("or")))){if(!this.options.js)e.emit("|")}else if(e.acceptType((()=>!!e.read("and")))){if(!this.options.js)e.emit("&")}else if(e.acceptType("is")){}else break;e.must(this.parseType(e,false))}if(e.accept("extends")){e.must(this.parseType(e));e.must(e.acceptType("?"));e.must(this.parseType(e));e.must(e.acceptType(":"));e.must(this.parseType(e))}return true}parseMethod(e,t=false,s=false){const p=e.snapshot();t=t||!!e.acceptType("abstract");e.acceptType("public")||e.acceptType("private")||e.acceptType("protected");t=t||!!e.acceptType("abstract");const a=this.options.js&&t?e.snapshot():undefined;e.peek("get",r)&&e.accept("get")||e.peek("set",r)&&e.accept("set");if(e.accept("static")){if(this.parseBlock(e))return true}e.accept("async");e.accept("*");const i=e.accept(r);if(!i){if(e.accept("[")){e.must(this.parseExpression(e));e.must(e.accept("]"))}else{if(p.hasOutput())e.must(false);return false}}if(!e.peek("<")&&!e.peek("|")){if(e.acceptType(":"))e.must(this.parseType(e));if(e.accept("="))e.must(this.parseExpression(e));return true}this.parseTemplateDef(e);const c=i==="constructor";const n=e.must(this.parseFuncParams(e,c,false));this.parseFuncType(e);if(t){if(a)a.revertOutput();return true}if(typeof n!=="string"){if(this.parseBlock(e))return true}else{const t={jsOpen:"{",jsClose:"}",next:";",jsNext:null,allowImplicit:true};let r=false;if(e.parseGroup(t,(()=>{if(!r&&(!s||e.peek("super","(")&&e.must(this.parseStatement(e)))){e.emit(n);r=true}return!!e.recoverErrors((()=>this.parseStatement(e)))})))return true}const u=e.snapshot();e.emit("{");if(e.peek("super","(")){if(typeof n==="string")e.emit(n)}else{e.emit("return")}if(this.parseExpression(e)){e.emit("}");return true}u.revert();if(!this.options.js)e.emit(";");return true}parseClass(e){let t=false;const s=this.options.js&&e.peek("interface")?e.snapshot():undefined;if(e.acceptType("abstract")){e.must(e.accept("class"))}else{if(e.acceptType("interface")){t=true}else if(!e.accept("class")){return false}}e.accept(r);this.parseTemplateDef(e);const p=!!e.accept("extends");if(p)e.must(this.parseExpression(e));while(e.acceptType("implements"))e.must(this.parseType(e));e.must(e.parseGroup({jsOpen:"{",jsClose:"}",next:";",jsNext:null,allowImplicit:true},(()=>!!e.recoverErrors((()=>this.parseMethod(e,t,p))))));if(s)s.revertOutput();return true}parseMain(e){if(this.options.js)e.emit('"use strict";');this.parseHeader(e);while(e.hasMore()){e.recoverErrors((()=>{e.must(this.parseStatement(e))&&e.must(e.readNewline())}))}return true}parseHeader(t){t.must(t.read("tabscript"));const r=parseInt(t.must(t.read(o)));t.must(t.read("."));const p=parseInt(t.must(t.read(o)));if(r!==s.major||p>s.minor){throw new e(0,1,1,`Script version ${r}.${p} outside supported range (${s.major}.0 - ${s.major}.${s.minor})`)}t.must(t.readNewline());t.clearTargetPos();return true}parseStatement(e){const t=e.snapshot();if(this.parseReturn(e)||this.parseThrow(e)||this.parseTypeDecl(e)||this.parseExport(e)||this.parseImport(e)||this.parseDoWhile(e)){}else if(this.parseIfWhile(e)||this.parseFor(e)||this.parseTry(e)||this.parseFunction(e,true)||this.parseClass(e)||this.parseSwitch(e)||this.parseEnum(e)||this.parseDeclare(e)){return true}else if(this.parseVarDecl(e)||this.parseExpressionSeq(e)){}else{return false}if(t.hasOutput())e.emit(";");e.clearTargetPos();return true}parseExport(e){if(!e.peek("export"))return false;if(e.peek("export","type")){e.must(e.acceptType("export"));e.must(this.parseTypeDecl(e));return true}if(e.peek("export","interface")){e.must(e.acceptType("export"));e.must(this.parseClass(e));return true}if(!e.accept("export"))return false;if(e.accept("default")){e.must(this.parseExpression(e)||this.parseClass(e))}else{e.must(this.parseVarDecl(e)||this.parseClass(e)||this.parseLiteralObject(e)||this.parseFunction(e,true))}return true}parseTypeDecl(e){if(!e.acceptType("type"))return false;e.must(e.acceptType(r));this.parseTemplateDef(e);if(e.acceptType("="))e.must(this.parseType(e));return true}parseEnum(e){if(!e.read("enum"))return false;let t=e.must(e.read(r));const s={open:"{",close:"}",next:",",jsOpen:this.options.js?`var ${t} = (function (${t}) {`:`enum ${t} {`,jsClose:this.options.js?`return ${t};})(${t} || {});`:"}",jsNext:this.options.js?null:",",allowImplicit:true};let p=0;return e.must(e.parseGroup(s,(()=>{const s=e.read(r);if(!s)return false;if(e.read("=")){p=parseInt(e.must(e.read(a)))}if(this.options.js)e.emit(`${t}[(${t}["${s}"] = ${p++})] = "${s}";`);else e.emit(`${s} = ${p++}`);return true})))}parseReturn(e){if(!e.accept("return")&&!e.accept("yield"))return false;this.parseExpression(e);return true}parseIfWhile(e){const t=e.accept("if")||e.accept("while");if(!t)return false;e.emit("(");e.must(this.parseExpression(e));e.emit(")");e.must(this.parseBlock(e)||this.parseStatement(e));if(t==="if"&&e.accept("else"))e.must(this.parseBlock(e)||this.parseStatement(e));return true}parseThrow(e){if(!e.accept("throw"))return false;e.must(this.parseExpression(e));return true}parseDoWhile(e){if(!e.accept("do"))return false;e.must(this.parseStatement(e));e.must(e.accept("while"));e.must(this.parseExpression(e));return true}parseFor(e){if(!e.accept("for"))return false;e.emit("(");const t=e.snapshot();const s=(this.parseVarDecl(e,false)||e.accept(r))&&(e.accept("of")||e.accept("in"));if(s){e.must(this.parseExpression(e))}else{t.revert();this.parseVarDecl(e)||this.parseExpression(e)?e.read(";"):e.must(e.read(";"));for(let t=0;t<2;t++){e.emit(";");this.parseExpression(e)?e.read(";"):e.must(e.read(";"))}}e.emit(")");e.must(this.parseStatement(e)||this.parseBlock(e));return true}parseSwitch(e){if(!e.accept("switch"))return false;e.emit("(");e.must(this.parseExpression(e));e.emit(")");e.must(e.parseGroup({jsOpen:"{",jsClose:"}",allowImplicit:true},(()=>{if(e.read("*")){e.emit("default: {")}else{const t=e.snapshot();e.emit("case");if(!this.parseExpression(e)){t.revertOutput();return false}e.emit(": {")}e.read(":");if(!e.parseGroup({next:";",jsNext:null,allowImplicit:true},(()=>!!e.recoverErrors((()=>this.parseStatement(e)))))){e.must(this.parseStatement(e))}e.emit("break;}");return true})));return true}parseImport(e){const t=e.snapshot();if(!e.accept("import"))return false;if(e.read("plugin")){t.revertOutput();const s=e.must(e.read(p));const r=s.slice(1,-1);let a={};if(this.parseLiteralObject(e)){const e=t.revertOutput();a=Function("return "+e.filter((e=>typeof e==="string")).join(" "))()}if(!this.options.loadPlugin){throw new Error("Plugin import found, but loadPlugin not in options")}const i=this.options.loadPlugin(r);const c=i.default||i;c(this,this.options,a);e.clearTargetPos();return true}const s=!!e.acceptType("type");if(e.accept("*")){e.must(e.accept("as"));e.must(e.accept(r))}else if(e.parseGroup({open:"{",close:"}",next:",",allowImplicit:true},(()=>{if(!e.accept(r))return false;if(e.accept("as"))e.must(e.accept(r));return true}))){}else{e.must(e.accept(r))}e.must(e.accept("from"));if(s&&this.options.js){t.revertOutput();e.must(e.read(p));return true}if(this.options.transformImport){const t=e.must(e.read(p)).slice(1,-1);e.emit('"'+this.options.transformImport(t)+'"')}else{e.must(e.accept(p))}return true}parseTry(e){if(!e.accept("try"))return false;if(!this.parseBlock(e)){e.emit("{");e.must(this.parseStatement(e));e.emit("}");e.readNewline()}let t=false;if(e.accept("catch")){if(e.accept(r)){if(e.acceptType(":"))e.must(this.parseType(e))}if(!this.parseBlock(e)){e.emit("{");e.must(this.parseStatement(e));e.emit("}");e.readNewline()}t=true}if(e.accept("finally")){if(!this.parseBlock(e)){e.emit("{");e.must(this.parseStatement(e));e.emit("}");e.readNewline()}t=true}if(!t){e.emit("catch{}")}return true}parseDeclare(e){if(!e.acceptType("declare"))return false;e.acceptType("enum");e.must(e.acceptType(r));const t=e.snapshot();e.must(!!this.parseBlock(e));t.revertOutput();return true}parseBlock(e){return e.parseGroup({jsOpen:"{",jsClose:"}",next:";",jsNext:null,allowImplicit:true},(()=>!!e.recoverErrors((()=>this.parseStatement(e)))))}parseTemplateDef(e){if(e.acceptType("<")){while(true){e.must(e.acceptType(r));if(e.acceptType("extends"))e.must(this.parseType(e));if(!e.acceptType(","))break}e.must(e.acceptType(">"));return true}return false}parseClassicFuncExprBody(e){const t=e.snapshot();e.emit("{return");if(!this.parseExpression(e)){t.revert();return false}e.emit("}");return true}parseArrowFuncExprBody(e){const t=e.snapshot();e.emit("(");if(this.parseLiteralObject(e)){e.emit(")");return true}t.revert();return!!this.parseExpression(e)}parseFuncType(e){if(!e.acceptType(":"))return false;e.acceptType("asserts");e.must(this.parseType(e));return true}parseParenthesised(e){if(!e.accept("("))return false;e.must(this.parseExpressionSeq(e));e.must(e.accept(")"));return true}parseExpressionSeq(e){if(!this.parseExpression(e))return false;while(e.accept(","))e.must(this.parseExpression(e));return true}parseBacktickString(e){if(!e.accept("`"))return false;while(true){let t=e.must(e.accept(c));if(t.slice(-1)==="`")break;e.must(this.parseExpression(e));e.must(e.accept("}"))}return true}parseLiteralArray(e){return e.parseGroup({open:"[",close:"]",next:","},(()=>{if(e.accept("..."))return!!e.must(this.parseExpression(e));else return!!this.parseExpression(e)}))}parseLiteralObject(e){return e.parseGroup({open:"{",close:"}",next:","},(()=>{if(e.accept("...")){e.must(this.parseExpression(e));return true}e.accept("*");if(e.accept("[")){e.must(this.parseExpression(e));e.must(e.accept("]"))}else{if(!e.accept(r)&&!e.accept(a)&&!e.accept(p)&&!this.parseBacktickString(e))return false}if(this.parseTemplateDef(e)&&e.must(this.parseFuncParams(e))||this.parseFuncParams(e)){if(e.acceptType(":"))this.parseType(e);e.must(this.parseBlock(e))}else{if(e.accept(":"))e.must(this.parseExpression(e))}return true}))}parseTemplateArg(e){const t=e.snapshot();if(!e.acceptType("<"))return false;if(!this.parseType(e)){t.revert();return false}while(e.acceptType(","))if(!this.parseType(e)){t.revert();return false}if(!e.acceptType(">")){t.revert();return false}if(e.peek(".")||e.peek("(")||e.readNewline())return true;t.revert();return false}parseIndex(e){if(!e.accept("["))return false;e.must(this.parseExpressionSeq(e));e.must(e.accept("]"));return true}parseTypeObjectEntry(e){if(e.acceptType("[")){e.must(e.acceptType(r));e.must(e.acceptType(":"));e.must(this.parseType(e));e.must(e.acceptType("]"))}else if(!e.acceptType(r)&&!e.acceptType(a)&&!e.acceptType(p))return false;e.must(e.acceptType(":"));e.must(this.parseType(e));return true}}
import{ParseError as e,pattern as t}from"./state.js";const s={major:2,minor:0};const r=t(/[a-zA-Z_$][0-9a-zA-Z_$]*/y,"identifier");const p=t(/(['"])(?:(?=(\\?))\2.)*?\1/y,"string");const a=t(/[+-]?(?:0[xX][0-9a-fA-F]+|0[oO][0-7]+|0[bB][01]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/y,"number");const i=t(/instanceof\b|in\b|or\b|and\b|[!=]~|[+\-*\/!=<>]=|[+\-*\/=<>]|%[a-z_]+/y,"bin-op");const c=t(/[\s\S]*?(\${|`)/y,"`string`");const n=t(/\+\+|--|!|\+|-|typeof\b|delete\b|await\b|new\b/y,"unary-op");const u=t(/\/(\\.|[^\/])+\/[gimsuyd]*/y,"regexp");const o=t(/\d+/y,"integer");const l={or:"||",and:"&&","==":"===","!=":"!==","=~":"==","!~":"!=","%mod":"%","%bit_or":"|","%bit_and":"&","%bit_xor":"^","%shift_left":"<<","%shift_right":">>","%unsigned_shift_right":">>>"};export class Parser{options;constructor(e){this.options=e}pattern(e,s){return t(e,s)}parseFuncParams(e,t=false,s=false){let p="";const a={open:s?"(":"|",close:s?")":"|",next:",",jsOpen:"(",jsClose:")"};const i=e.parseGroup(a,(()=>{if(e.accept("..."))e.must(e.accept(r));else if(t&&(e.acceptType("public")||e.acceptType("private")||e.acceptType("protected"))&&this.options.js){const t=e.must(e.accept(r));p+=`this.${t}=${t};`}else if(!e.accept(r))return false;e.acceptType("?");if(e.acceptType(":"))e.must(this.parseType(e));if(e.accept("="))e.must(this.parseExpression(e));return true}));if(!i)return false;return t&&p?p:true}parseFunction(e,t=false){let s=this.options.js?e.snapshot():undefined;const p=e.accept("async");const a=e.accept("function");if(a){e.accept("*");e.accept(r)}else if(t){if(p)return false;return false}const i=!!this.parseTemplateDef(e);if(a){this.parseFuncParams(e,false,false)||this.parseFuncParams(e,false,true)||e.emit("()")}else if(p||i){e.must(this.parseFuncParams(e,false,false))}else if(!this.parseFuncParams(e,false,false)){return false}this.parseFuncType(e);if(!a){s=this.options.js?e.snapshot():undefined;e.emit("=>")}if(this.parseBlock(e))return true;if(a?this.parseClassicFuncExprBody(e):this.parseArrowFuncExprBody(e))return true;e.must(t);e.emit(";");if(s)s.revertOutput();return true}parseVarDecl(e,t=true){const s=e.read(r,":");if(!s)return false;e.emit(true,e.read(":")?"let":"const",s[0]);const p=e.snapshot();if(!this.options.js)e.emit(":");if(!this.parseType(e))p.revertOutput();if(t&&e.accept("=")){e.must(this.parseExpression(e))}return true}parseExpression(e,t=false){let s=false;while(true){if(!e.accept(n)){if(!e.read("%bit_not"))break;e.emit("~")}s=true}if(this.parseClass(e)||this.parseFunction(e,false)||e.accept(r)||this.parseLiteralArray(e)||this.parseLiteralObject(e)||e.accept(p)||this.parseBacktickString(e)||e.accept(a)||this.parseParenthesised(e)||e.accept(u)){}else if(s)e.must(false);else return false;let c;while(!e.justAfterNewLine()){const s=e.lastNotSpace();if(s&&e.parseGroup({open:"(",close:")",next:","},(()=>{if(e.accept("..."))return!!e.must(this.parseExpression(e));else return!!this.parseExpression(e)}))){}else if(e.read("..")){if(!e.parseGroup({jsOpen:"(",jsClose:")",jsNext:",",allowImplicit:true,endNext:false},(()=>!!this.parseExpression(e)))){e.emit("(");let t;while(this.parseExpression(e)){while(e.accept(","))e.must(this.parseExpression(e));t=e.snapshot();e.emit(",")}if(t)t.revertOutput();e.emit(")")}}else if(e.peek("`"))e.must(this.parseBacktickString(e));else if(e.peek("["))e.must(this.parseIndex(e));else if(e.accept("++")||e.accept("--")){}else if(e.acceptType("as"))e.must(this.parseType(e));else if(e.accept("?."))e.must(e.accept(r)||this.parseIndex(e));else if(e.accept("."))e.must(e.accept(r));else if(s&&this.parseTemplateArg(e)){}else if(t&&e.peek(">"))return true;else if(c=e.read(i)){e.must(c[0]!=="%"||c in l);e.emit(l[c]||c);e.accept("=");e.must(this.parseExpression(e,t));return true}else if(e.acceptType("!")){}else break}if(e.read("?")){const t=e.snapshot();e.emit("?");if(this.parseExpression(e)){e.must(e.accept(":"));e.must(this.parseExpression(e))}else{t.revertOutput();e.emit("!=null")}}return true}parseType(e,t=true){if(e.peek("in")||e.peek("of"))return false;if(e.acceptType("typeof")){e.must(e.acceptType((()=>this.parseExpression(e))));return true}let s=false;if(e.acceptType("keyof"))s=true;if(e.acceptType(r)){e.acceptType((()=>e.parseGroup({open:"<",close:">",next:","},(()=>!!this.parseType(e)))))}else if(e.acceptType((()=>e.parseGroup({open:"{",close:"}",next:",",allowImplicit:true},(()=>!!this.parseTypeObjectEntry(e)))))){}else if(e.acceptType((()=>e.parseGroup({open:"[",close:"]",next:","},(()=>!!this.parseType(e)))))){}else if(t&&e.acceptType((()=>this.parseFuncParams(e,false,false)))){if(e.read(":")){if(!this.options.js)e.emit("=>");e.must(this.parseType(e))}return true}else if(e.acceptType("(")){e.must(this.parseType(e));e.must(e.acceptType(")"))}else if(!e.acceptType(a)&&!e.acceptType(p)){if(s)e.must(false);return false}while(e.acceptType("[")){this.parseType(e);e.must(e.acceptType("]"))}while(true){if(e.acceptType((()=>!!e.read("or")))){if(!this.options.js)e.emit("|")}else if(e.acceptType((()=>!!e.read("and")))){if(!this.options.js)e.emit("&")}else if(e.acceptType("is")){}else break;e.must(this.parseType(e,false))}if(e.accept("extends")){e.must(this.parseType(e));e.must(e.acceptType("?"));e.must(this.parseType(e));e.must(e.acceptType(":"));e.must(this.parseType(e))}return true}parseMethod(e,t=false,s=false){const p=e.snapshot();t=t||!!e.acceptType("abstract");e.acceptType("public")||e.acceptType("private")||e.acceptType("protected");t=t||!!e.acceptType("abstract");const a=this.options.js&&t?e.snapshot():undefined;e.peek("get",r)&&e.accept("get")||e.peek("set",r)&&e.accept("set");if(e.accept("static")){if(this.parseBlock(e))return true}e.accept("async");e.accept("*");const i=e.accept(r);if(!i){if(e.accept("[")){e.must(this.parseExpression(e));e.must(e.accept("]"))}else{if(p.hasOutput())e.must(false);return false}}if(!e.peek("<")&&!e.peek("|")){if(e.acceptType(":"))e.must(this.parseType(e));if(e.accept("="))e.must(this.parseExpression(e));return true}this.parseTemplateDef(e);const c=i==="constructor";const n=e.must(this.parseFuncParams(e,c,false));this.parseFuncType(e);if(t){if(a)a.revertOutput();return true}if(typeof n!=="string"){if(this.parseBlock(e))return true}else{const t={jsOpen:"{",jsClose:"}",next:";",jsNext:null,allowImplicit:true};let r=false;if(e.parseGroup(t,(()=>{if(!r&&(!s||e.peek("super","(")&&e.must(this.parseStatement(e)))){e.emit(n);r=true}return!!e.recoverErrors((()=>this.parseStatement(e)))})))return true}const u=e.snapshot();e.emit("{");if(e.peek("super","(")){if(typeof n==="string")e.emit(n)}else{e.emit("return")}if(this.parseExpression(e)){e.emit("}");return true}u.revert();if(!this.options.js)e.emit(";");return true}parseClass(e){let t=false;const s=this.options.js&&e.peek("interface")?e.snapshot():undefined;if(e.acceptType("abstract")){e.must(e.accept("class"))}else{if(e.acceptType("interface")){t=true}else if(!e.accept("class")){return false}}e.accept(r);this.parseTemplateDef(e);const p=!!e.accept("extends");if(p)e.must(this.parseExpression(e));while(e.acceptType("implements"))e.must(this.parseType(e));e.must(e.parseGroup({jsOpen:"{",jsClose:"}",next:";",jsNext:null,allowImplicit:true},(()=>!!e.recoverErrors((()=>this.parseMethod(e,t,p))))));if(s)s.revertOutput();return true}parseMain(e){if(this.options.js)e.emit('"use strict";');this.parseHeader(e);while(e.hasMore()){e.recoverErrors((()=>{e.must(this.parseStatement(e))&&e.must(e.readNewline())}))}return true}parseHeader(t){t.must(t.read("tabscript"));const r=parseInt(t.must(t.read(o)));t.must(t.read("."));const p=parseInt(t.must(t.read(o)));if(r!==s.major||p>s.minor){throw new e(0,1,1,`Script version ${r}.${p} outside supported range (${s.major}.0 - ${s.major}.${s.minor})`)}t.must(t.readNewline());t.clearTargetPos();return true}parseStatement(e){const t=e.snapshot();if(this.parseReturn(e)||this.parseThrow(e)||this.parseTypeDecl(e)||this.parseExport(e)||this.parseImport(e)||this.parseDoWhile(e)){}else if(this.parseIfWhile(e)||this.parseFor(e)||this.parseTry(e)||this.parseFunction(e,true)||this.parseClass(e)||this.parseSwitch(e)||this.parseEnum(e)||this.parseDeclare(e)){return true}else if(this.parseVarDecl(e)||this.parseExpressionSeq(e)){}else{return false}if(t.hasOutput())e.emit(";");e.clearTargetPos();return true}parseExport(e){if(!e.peek("export"))return false;if(e.peek("export","type")){e.must(e.acceptType("export"));e.must(this.parseTypeDecl(e));return true}if(e.peek("export","interface")){e.must(e.acceptType("export"));e.must(this.parseClass(e));return true}if(!e.accept("export"))return false;if(e.accept("default")){e.must(this.parseExpression(e)||this.parseClass(e))}else{e.must(this.parseVarDecl(e)||this.parseClass(e)||this.parseLiteralObject(e)||this.parseFunction(e,true))}return true}parseTypeDecl(e){if(!e.acceptType("type"))return false;e.must(e.acceptType(r));this.parseTemplateDef(e);if(e.acceptType("="))e.must(this.parseType(e));return true}parseEnum(e){if(!e.read("enum"))return false;let t=e.must(e.read(r));const s={open:"{",close:"}",next:",",jsOpen:this.options.js?`var ${t} = (function (${t}) {`:`enum ${t} {`,jsClose:this.options.js?`return ${t};})(${t} || {});`:"}",jsNext:this.options.js?null:",",allowImplicit:true};let p=0;return e.must(e.parseGroup(s,(()=>{const s=e.read(r);if(!s)return false;if(e.read("=")){p=parseInt(e.must(e.read(a)))}if(this.options.js)e.emit(`${t}[(${t}["${s}"] = ${p++})] = "${s}";`);else e.emit(`${s} = ${p++}`);return true})))}parseReturn(e){if(!e.accept("return")&&!e.accept("yield"))return false;this.parseExpression(e);return true}parseIfWhile(e){const t=e.accept("if")||e.accept("while");if(!t)return false;e.emit("(");e.must(this.parseExpression(e));e.emit(")");e.must(this.parseBlock(e)||this.parseStatement(e));if(t==="if"&&e.accept("else"))e.must(this.parseBlock(e)||this.parseStatement(e));return true}parseThrow(e){if(!e.accept("throw"))return false;e.must(this.parseExpression(e));return true}parseDoWhile(e){if(!e.accept("do"))return false;e.must(this.parseStatement(e));e.must(e.accept("while"));e.must(this.parseExpression(e));return true}parseFor(e){if(!e.accept("for"))return false;e.emit("(");const t=e.snapshot();const s=(this.parseVarDecl(e,false)||e.accept(r))&&(e.accept("of")||e.accept("in"));if(s){e.must(this.parseExpression(e))}else{t.revert();this.parseVarDecl(e)||this.parseExpression(e)?e.read(";"):e.must(e.read(";"));for(let t=0;t<2;t++){e.emit(";");this.parseExpression(e)?e.read(";"):e.must(e.read(";"))}}e.emit(")");e.must(this.parseStatement(e)||this.parseBlock(e));return true}parseSwitch(e){if(!e.accept("switch"))return false;e.emit("(");e.must(this.parseExpression(e));e.emit(")");e.must(e.parseGroup({jsOpen:"{",jsClose:"}",allowImplicit:true},(()=>{if(e.read("*")){e.emit("default: {")}else{const t=e.snapshot();e.emit("case");if(!this.parseExpression(e)){t.revertOutput();return false}e.emit(": {")}e.read(":");if(!e.parseGroup({next:";",jsNext:null,allowImplicit:true},(()=>!!e.recoverErrors((()=>this.parseStatement(e)))))){e.must(this.parseStatement(e))}e.emit("break;}");return true})));return true}parseImport(e){const t=e.snapshot();if(!e.accept("import"))return false;if(e.read("plugin")){t.revertOutput();const s=e.must(e.read(p));const r=s.slice(1,-1);let a={};if(this.parseLiteralObject(e)){const e=t.revertOutput();a=Function("return "+e.filter((e=>typeof e==="string")).join(" "))()}if(!this.options.loadPlugin){throw new Error("Plugin import found, but loadPlugin not in options")}const i=this.options.loadPlugin(r);const c=i.default||i;c(this,this.options,a);e.clearTargetPos();return true}const s=!!e.acceptType("type");if(e.accept("*")){e.must(e.accept("as"));e.must(e.accept(r))}else if(e.parseGroup({open:"{",close:"}",next:",",allowImplicit:true},(()=>{if(!e.accept(r))return false;if(e.accept("as"))e.must(e.accept(r));return true}))){}else{e.must(e.accept(r))}e.must(e.accept("from"));if(s&&this.options.js){t.revertOutput();e.must(e.read(p));return true}if(this.options.transformImport){const t=e.must(e.read(p)).slice(1,-1);e.emit('"'+this.options.transformImport(t)+'"')}else{e.must(e.accept(p))}return true}parseTry(e){if(!e.accept("try"))return false;if(!this.parseBlock(e)){e.emit("{");e.must(this.parseStatement(e));e.emit("}");e.readNewline()}let t=false;if(e.accept("catch")){const s=e.read(r);if(s){e.emit(false,"(",s);if(e.acceptType(":"))e.must(this.parseType(e));e.emit(")")}if(!this.parseBlock(e)){e.emit("{");e.must(this.parseStatement(e));e.emit("}");e.readNewline()}t=true}if(e.accept("finally")){if(!this.parseBlock(e)){e.emit("{");e.must(this.parseStatement(e));e.emit("}");e.readNewline()}t=true}if(!t){e.emit("catch{}")}return true}parseDeclare(e){if(!e.acceptType("declare"))return false;e.acceptType("enum");e.must(e.acceptType(r));const t=e.snapshot();e.must(!!this.parseBlock(e));t.revertOutput();return true}parseBlock(e){return e.parseGroup({jsOpen:"{",jsClose:"}",next:";",jsNext:null,allowImplicit:true},(()=>!!e.recoverErrors((()=>this.parseStatement(e)))))}parseTemplateDef(e){if(e.acceptType("<")){while(true){e.must(e.acceptType(r));if(e.acceptType("extends"))e.must(this.parseType(e));if(!e.acceptType(","))break}e.must(e.acceptType(">"));return true}return false}parseClassicFuncExprBody(e){const t=e.snapshot();e.emit("{return");if(!this.parseExpression(e)){t.revert();return false}e.emit("}");return true}parseArrowFuncExprBody(e){const t=e.snapshot();e.emit("(");if(this.parseLiteralObject(e)){e.emit(")");return true}t.revert();return!!this.parseExpression(e)}parseFuncType(e){if(!e.acceptType(":"))return false;e.acceptType("asserts");e.must(this.parseType(e));return true}parseParenthesised(e){if(!e.accept("("))return false;e.must(this.parseExpressionSeq(e));e.must(e.accept(")"));return true}parseExpressionSeq(e){if(!this.parseExpression(e))return false;while(e.accept(","))e.must(this.parseExpression(e));return true}parseBacktickString(e){if(!e.accept("`"))return false;while(true){let t=e.must(e.accept(c));if(t.slice(-1)==="`")break;e.must(this.parseExpression(e));e.must(e.accept("}"))}return true}parseLiteralArray(e){return e.parseGroup({open:"[",close:"]",next:","},(()=>{if(e.accept("..."))return!!e.must(this.parseExpression(e));else return!!this.parseExpression(e)}))}parseLiteralObject(e){return e.parseGroup({open:"{",close:"}",next:","},(()=>{if(e.accept("...")){e.must(this.parseExpression(e));return true}e.accept("*");if(e.accept("[")){e.must(this.parseExpression(e));e.must(e.accept("]"))}else{if(!e.accept(r)&&!e.accept(a)&&!e.accept(p)&&!this.parseBacktickString(e))return false}if(this.parseTemplateDef(e)&&e.must(this.parseFuncParams(e))||this.parseFuncParams(e)){if(e.acceptType(":"))this.parseType(e);e.must(this.parseBlock(e))}else{if(e.accept(":"))e.must(this.parseExpression(e))}return true}))}parseTemplateArg(e){const t=e.snapshot();if(!e.acceptType("<"))return false;if(!this.parseType(e)){t.revert();return false}while(e.acceptType(","))if(!this.parseType(e)){t.revert();return false}if(!e.acceptType(">")){t.revert();return false}if(e.peek(".")||e.peek("(")||e.readNewline())return true;t.revert();return false}parseIndex(e){if(!e.accept("["))return false;e.must(this.parseExpressionSeq(e));e.must(e.accept("]"));return true}parseTypeObjectEntry(e){if(e.acceptType("[")){e.must(e.acceptType(r));e.must(e.acceptType(":"));e.must(this.parseType(e));e.must(e.acceptType("]"))}else if(!e.acceptType(r)&&!e.acceptType(a)&&!e.acceptType(p))return false;e.must(e.acceptType(":"));e.must(this.parseType(e));return true}}

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

{"version":3,"names":["ParseError","pattern","VERSION","major","minor","descr","regexp","name","toString","IDENTIFIER","STRING","NUMBER","OPERATOR","WITHIN_BACKTICK_STRING","EXPRESSION_PREFIX","REGEXP","INTEGER","PATH","REPLACE_OPERATORS","or","and","Parser","options","constructor","this","parseFuncParams","s","isConstructor","parenthesis","propArgs","opts","open","close","next","jsOpen","jsClose","isGroup","parseGroup","accept","must","acceptType","js","parseType","parseExpression","parseFunction","declaration","snap","snapshot","undefined","isAsync","isClassic","hasTemplate","parseTemplateDef","emit","parseFuncType","parseBlock","parseClassicFuncExprBody","parseArrowFuncExprBody","revertOutput","parseVarDecl","allowInit","match","read","withinTag","required","parseClass","parseLiteralArray","parseLiteralObject","parseBacktickString","parseParenthesised","tmp","justAfterNewLine","lastNotSpace","jsNext","allowImplicit","endNext","peek","parseIndex","parseTemplateArg","allowFunction","parseTypeObjectEntry","parseMethod","typeOnly","isDerived","initSnap","hasOutput","done","parseStatement","recoverErrors","bodySnap","revert","isInterface","parseMain","parseHeader","hasMore","readNewline","parseInt","clearTargetPos","parseReturn","parseThrow","parseTypeDecl","parseExport","parseImport","parseDoWhile","parseIfWhile","parseFor","parseTry","parseSwitch","parseEnum","parseDeclare","parseExpressionSeq","identifier","nextNum","isForOf","i","pathStr","pluginPath","slice","pluginOptions","tokens","Function","filter","t","join","loadPlugin","Error","pluginModule","pluginFn","default","isTypeImport","transformImport","url","handled","m"],"sources":["dist/parser.js"],"mappings":"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","ignoreList":[]}
{"version":3,"names":["ParseError","pattern","VERSION","major","minor","IDENTIFIER","STRING","NUMBER","OPERATOR","WITHIN_BACKTICK_STRING","EXPRESSION_PREFIX","REGEXP","INTEGER","REPLACE_OPERATORS","or","and","Parser","options","constructor","this","regexp","name","parseFuncParams","s","isConstructor","parenthesis","propArgs","opts","open","close","next","jsOpen","jsClose","isGroup","parseGroup","accept","must","acceptType","js","parseType","parseExpression","parseFunction","declaration","snap","snapshot","undefined","isAsync","isClassic","hasTemplate","parseTemplateDef","emit","parseFuncType","parseBlock","parseClassicFuncExprBody","parseArrowFuncExprBody","revertOutput","parseVarDecl","allowInit","match","read","withinTag","required","parseClass","parseLiteralArray","parseLiteralObject","parseBacktickString","parseParenthesised","tmp","justAfterNewLine","lastNotSpace","jsNext","allowImplicit","endNext","peek","parseIndex","parseTemplateArg","allowFunction","parseTypeObjectEntry","parseMethod","typeOnly","isDerived","initSnap","hasOutput","done","parseStatement","recoverErrors","bodySnap","revert","isInterface","parseMain","parseHeader","hasMore","readNewline","parseInt","clearTargetPos","parseReturn","parseThrow","parseTypeDecl","parseExport","parseImport","parseDoWhile","parseIfWhile","parseFor","parseTry","parseSwitch","parseEnum","parseDeclare","parseExpressionSeq","identifier","nextNum","isForOf","i","pathStr","pluginPath","slice","pluginOptions","tokens","Function","filter","t","join","loadPlugin","Error","pluginModule","pluginFn","default","isTypeImport","transformImport","url","handled","m"],"sources":["dist/parser.js"],"mappings":"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","ignoreList":[]}
import { tabscript } from "./tabscript.js";
let transformCache = {};
let baseUrl = location.href;
// Plugin loader function for browser environment
function loadPlugin(pluginPath) {
// Resolve plugin path relative to current baseUrl
const absoluteUrl = new URL(pluginPath, baseUrl).toString();
// Fetch the plugin file synchronously
const xhr = new XMLHttpRequest();
xhr.open('GET', absoluteUrl, false);
xhr.send(null);
if (xhr.status !== 200) {
throw new Error(`Failed to load plugin ${pluginPath}: HTTP ${xhr.status}`);
}
const pluginSource = xhr.responseText;
// Transpile the plugin TabScript to JavaScript
const pluginResult = tabscript(pluginSource, { js: true, whitespace: 'pretty', loadPlugin });
if (pluginResult.errors.length > 0) {
throw new Error(`Failed to transpile plugin ${pluginPath}: ${pluginResult.errors[0].message}`);
}
// Evaluate the transpiled code to get the plugin module
// Convert ES module export to return value
// Match 'export default' with any whitespace between (including newlines)
const code = pluginResult.code.replace(/\bexport\s+default/, 'return');
const pluginFn = Function(code)();
return { default: pluginFn };
}
function transformImport(url) {

@@ -20,3 +44,3 @@ // Do we need to translate?

baseUrl = absoluteUrl;
const js = tabscript(ts, { recover: true, transformImport }) + "\n//# sourceURL=" + absoluteUrl;
const js = tabscript(ts, { js: true, recover: true, transformImport, loadPlugin }) + "\n//# sourceURL=" + absoluteUrl;
baseUrl = oldBaseUrl;

@@ -49,3 +73,3 @@ const blob = new Blob([js], { type: 'application/javascript' });

const jsE = document.createElement('script');
let { code: js } = tabscript(ts, { transformImport });
let { code: js } = tabscript(ts, { js: true, transformImport, loadPlugin });
if (src)

@@ -52,0 +76,0 @@ js += "\n//# sourceURL=" + src;

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

{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAEzC,IAAI,cAAc,GAA0B,EAAE,CAAC;AAC/C,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;AAE5B,SAAS,eAAe,CAAC,GAAW;IAChC,2BAA2B;IAC3B,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAG,KAAK;QAAE,OAAO,GAAG,CAAC;IAEtC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrD,IAAI,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,gCAAgC;QACrE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,MAAM,QAAQ,WAAW,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC;QAC5B,IAAI,UAAU,GAAG,OAAO,CAAC;QACzB,OAAO,GAAG,WAAW,CAAC;QACtB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,EAAC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAC,CAAC,GAAG,kBAAkB,GAAG,WAAW,CAAC;QAC9F,OAAO,GAAG,UAAU,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAChE,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACtC,cAAc,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;IAC5C,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5E,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAY;IACxC,IAAI,EAAU,CAAC;IAEf,mCAAmC;IACnC,IAAI,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,GAAG,EAAE,CAAC;QACN,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QACvC,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;SAAM,CAAC;QACJ,kBAAkB;QAClB,EAAE,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,kCAAkC;IAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,EAAC,IAAI,EAAE,EAAE,EAAC,GAAG,SAAS,CAAC,EAAE,EAAE,EAAC,eAAe,EAAC,CAAC,CAAC;IAClD,IAAI,GAAG;QAAE,EAAE,IAAI,kBAAkB,GAAG,GAAG,CAAC;IACxC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;IACrB,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEnC,uDAAuD;IACvD,GAAG,CAAC,UAAW,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,CAAC;IACxE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC;YACD,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAAC,OAAM,CAAC,EAAE,CAAC;YACR,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;AACL,CAAC;AAED,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC"}
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}

@@ -6,87 +6,177 @@ #!/usr/bin/env -S node --enable-source-maps

import { createRequire } from 'module';
import * as ts from 'typescript';
const require = createRequire(import.meta.url);
// Parse command line arguments
const HELP = `TabScript Transpiler
Usage: tabscript [options] <input.tab> [more files...]
Options:
--output <file> Output file (single input only, otherwise use --output-dir)
--output-dir <dir> Output directory for multiple files
--js Transpile to JavaScript instead of TypeScript
--check Type check without generating output (CI/git hooks)
--debug Log each consumed token
--recover Continue on errors instead of throwing
--whitespace <mode> 'preserve' (default) or 'pretty'
--help Show this help
Examples:
tabscript input.tab # Transpile to input.ts
tabscript input.tab --js # Transpile to input.js
tabscript src/**/*.tab --check # Type check multiple files
tabscript src/**/*.tab --output-dir dist # Transpile all to dist/`;
// Parse arguments
const args = process.argv.slice(2);
let inputFile, outputFile, debug = false, recover = false, js = false, whitespace = 'preserve';
let inputFiles = [], outputFile, outputDir;
let debug = false, recover = false, js = false, whitespace = 'preserve', check = false;
for (let i = 0; i < args.length; i++) {
if (args[i] === '--output') {
if (i + 1 >= args.length) {
const arg = args[i];
if (arg === '--help' || arg === '-h') {
console.log(HELP);
process.exit(0);
}
else if (arg === '--output') {
if (++i >= args.length) {
console.error('Error: --output requires a filename');
process.exit(1);
}
outputFile = args[++i];
outputFile = args[i];
}
else if (args[i] === '--debug') {
else if (arg === '--output-dir') {
if (++i >= args.length) {
console.error('Error: --output-dir requires a directory');
process.exit(1);
}
outputDir = args[i];
}
else if (arg === '--debug') {
debug = true;
}
else if (args[i] === '--recover') {
else if (arg === '--recover') {
recover = true;
}
else if (args[i] === '--js') {
else if (arg === '--js') {
js = true;
}
else if (args[i] === '--whitespace') {
if (i + 1 >= args.length) {
console.error('Error: --whitespace requires a value (preserve or pretty)');
else if (arg === '--check') {
check = true;
}
else if (arg === '--whitespace') {
if (++i >= args.length) {
console.error('Error: --whitespace requires preserve or pretty');
process.exit(1);
}
const value = args[++i];
if (value !== 'preserve' && value !== 'pretty') {
console.error(`Error: --whitespace must be 'preserve' or 'pretty', got '${value}'`);
const val = args[i];
if (val !== 'preserve' && val !== 'pretty') {
console.error(`Error: --whitespace must be preserve or pretty, got '${val}'`);
process.exit(1);
}
whitespace = value;
whitespace = val;
}
else if (!inputFile) {
inputFile = args[i];
else if (!arg.startsWith('--')) {
inputFiles.push(arg);
}
else {
console.error(`Error: Unexpected argument '${args[i]}'`);
console.error(`Error: Unknown option '${arg}'`);
process.exit(1);
}
}
if (!inputFile) {
console.error('Error: Input file is required');
if (inputFiles.length === 0) {
console.error('Error: Input file required\n');
console.log(HELP);
process.exit(1);
}
// Set default output file if not specified
outputFile ||= path.join(path.dirname(inputFile), path.basename(inputFile, path.extname(inputFile)) + (js ? '.js' : '.ts'));
// Plugin loader function
const basePath = path.dirname(path.resolve(inputFile));
function loadPlugin(pluginPath) {
// Resolve relative to the input file's directory
let resolvedPath = path.resolve(basePath, pluginPath);
// If it's a .tab file, we need to transpile it
if (pluginPath.endsWith('.tab')) {
const pluginSource = fs.readFileSync(resolvedPath, 'utf8');
const pluginResult = tabscript(pluginSource, { js: true, whitespace: 'pretty', loadPlugin });
if (pluginResult.errors.length > 0) {
throw new Error(`Failed to transpile plugin ${pluginPath}: ${pluginResult.errors[0].message}`);
if (outputFile && inputFiles.length > 1) {
console.error('Error: --output only works with single input file. Use --output-dir for multiple files.');
process.exit(1);
}
if (outputFile && outputDir) {
console.error('Error: Cannot use both --output and --output-dir');
process.exit(1);
}
// Plugin loader factory
function createPluginLoader(basePath) {
return function loadPlugin(pluginPath) {
let resolvedPath;
if (pluginPath.startsWith('./') || pluginPath.startsWith('../')) {
resolvedPath = path.resolve(basePath, pluginPath);
}
// Evaluate the transpiled code in memory
// Convert ES module export to a return value for Function constructor
const code = pluginResult.code.replace(/export\s+default\s+/, 'return ');
return Function(code)();
}
// For .js files, require them directly
return require(resolvedPath);
else {
resolvedPath = require.resolve(pluginPath, { paths: [basePath] });
}
if (resolvedPath.endsWith('.tab')) {
const pluginSource = fs.readFileSync(resolvedPath, 'utf8');
const pluginResult = tabscript(pluginSource, { js: true, whitespace: 'pretty', loadPlugin });
if (pluginResult.errors.length > 0) {
throw new Error(`Failed to transpile plugin ${pluginPath}: ${pluginResult.errors[0].message}`);
}
return Function(pluginResult.code.replace(/export\s+default\s+/, 'return '))();
}
return require(resolvedPath);
};
}
try {
const result = tabscript(fs.readFileSync(inputFile, 'utf8'), { debug, recover, js, whitespace, loadPlugin });
// Display any errors that were recovered from
if (result.errors.length > 0) {
for (const error of result.errors) {
console.error(`Error at ${error.line}:${error.column}: ${error.message}`);
// Process a single file
function processFile(file) {
const basePath = path.dirname(path.resolve(file));
const loadPlugin = createPluginLoader(basePath);
try {
const result = tabscript(fs.readFileSync(file, 'utf8'), { debug, recover, js: check ? false : js, whitespace, loadPlugin });
if (result.errors.length > 0) {
for (const error of result.errors) {
console.error(`${file}:${error.line}:${error.column}: ${error.message}`);
}
}
if (check) {
// Type check
const virtualFileName = file.replace(/\.tab$/, '.ts');
const compilerOptions = {
noEmit: true, strict: true, target: ts.ScriptTarget.ES2023,
module: ts.ModuleKind.ES2022, moduleResolution: ts.ModuleResolutionKind.Bundler, skipLibCheck: true
};
const host = ts.createCompilerHost(compilerOptions);
const originalGetSourceFile = host.getSourceFile;
host.getSourceFile = (fileName, languageVersion, onError, shouldCreateNewSourceFile) => {
if (fileName === path.resolve(virtualFileName)) {
return ts.createSourceFile(fileName, result.code, languageVersion, true);
}
return originalGetSourceFile(fileName, languageVersion, onError, shouldCreateNewSourceFile);
};
const program = ts.createProgram([path.resolve(virtualFileName)], compilerOptions, host);
const diagnostics = ts.getPreEmitDiagnostics(program);
if (diagnostics.length > 0) {
for (const diagnostic of diagnostics) {
if (diagnostic.file) {
const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
console.error(`${file}:${line + 1}:${character + 1}: ${ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n')}`);
}
else {
console.error(ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n'));
}
}
return false;
}
console.log(`✓ ${file}`);
return true;
}
else {
// Transpile
const output = outputFile || path.join(outputDir || path.dirname(file), path.basename(file, path.extname(file)) + (js ? '.js' : '.ts'));
if (outputDir)
fs.mkdirSync(outputDir, { recursive: true });
fs.writeFileSync(output, result.code);
return result.errors.length === 0;
}
}
fs.writeFileSync(outputFile, result.code);
// Exit with error code if there were any errors
if (result.errors.length > 0) {
process.exit(1);
catch (e) {
console.error(e);
return false;
}
}
catch (e) {
console.error(e);
process.exit(1);
// Process all files
let hasErrors = false;
for (const file of inputFiles) {
if (!processFile(file))
hasErrors = true;
}
process.exit(hasErrors ? 1 : 0);
//# sourceMappingURL=cli.js.map

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

{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}

@@ -12,17 +12,12 @@ /**

*/
const VERSION = { major: 1, minor: 0 };
function descr(regexp, name) {
regexp.toString = () => '<' + name + '>';
return regexp;
}
const VERSION = { major: 2, minor: 0 };
// Token patterns
const IDENTIFIER = descr(/[a-zA-Z_$][0-9a-zA-Z_$]*/y, "identifier");
const STRING = descr(/(['"])(?:(?=(\\?))\2.)*?\1/y, "string");
const NUMBER = descr(/[+-]?(?:0[xX][0-9a-fA-F]+|0[oO][0-7]+|0[bB][01]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/y, "number");
const OPERATOR = descr(/instanceof\b|in\b|or\b|and\b|[!=]~|[+\-*\/!=<>]=|[+\-*\/=<>]|%[a-z_]+/y, "bin-op");
const WITHIN_BACKTICK_STRING = descr(/[\s\S]*?(\${|`)/y, "`string`");
const EXPRESSION_PREFIX = descr(/\+\+|--|!|\+|-|typeof\b|delete\b|await\b|new\b/y, "unary-op");
const REGEXP = descr(/\/(\\.|[^\/])+\/[gimsuyd]*/y, "regexp");
const INTEGER = descr(/\d+/y, "integer");
const PATH = descr(/[^\s()]+/y, "path");
const IDENTIFIER = pattern(/[a-zA-Z_$][0-9a-zA-Z_$]*/y, "identifier");
const STRING = pattern(/(['"])(?:(?=(\\?))\2.)*?\1/y, "string");
const NUMBER = pattern(/[+-]?(?:0[xX][0-9a-fA-F]+|0[oO][0-7]+|0[bB][01]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/y, "number");
const OPERATOR = pattern(/instanceof\b|in\b|or\b|and\b|[!=]~|[+\-*\/!=<>]=|[+\-*\/=<>]|%[a-z_]+/y, "bin-op");
const WITHIN_BACKTICK_STRING = pattern(/[\s\S]*?(\${|`)/y, "`string`");
const EXPRESSION_PREFIX = pattern(/\+\+|--|!|\+|-|typeof\b|delete\b|await\b|new\b/y, "unary-op");
const REGEXP = pattern(/\/(\\.|[^\/])+\/[gimsuyd]*/y, "regexp");
const INTEGER = pattern(/\d+/y, "integer");
const REPLACE_OPERATORS = {

@@ -696,5 +691,8 @@ "or": "||",

if (s.accept('catch')) {
if (s.accept(IDENTIFIER)) {
const identifier = s.read(IDENTIFIER);
if (identifier) {
s.emit(false, '(', identifier);
if (s.acceptType(':'))
s.must(this.parseType(s));
s.emit(')');
}

@@ -701,0 +699,0 @@ if (!this.parseBlock(s)) {

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

{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
{
"name": "tabscript",
"version": "2.0.0",
"version": "2.0.2",
"description": "Indentation-based compile-to-TypeScript language with syntax plugin support.",

@@ -24,2 +24,18 @@ "main": "dist-min/tabscript.js",

},
"./vite": {
"types": "./dist/vite-plugin.d.ts",
"default": "./dist/vite-plugin.js"
},
"./webpack": {
"types": "./dist/webpack-loader.d.ts",
"default": "./dist/webpack-loader.js"
},
"./esbuild": {
"types": "./dist/esbuild-plugin.d.ts",
"default": "./dist/esbuild-plugin.js"
},
"./rollup": {
"types": "./dist/rollup-plugin.d.ts",
"default": "./dist/rollup-plugin.js"
},
"./package.json": "./package.json"

@@ -35,4 +51,4 @@ },

"watch-extension": "cd vscode-extension && tsc -p . --watch",
"package-extension": "npm run build-all && cd vscode-extension && vsce package",
"test": "npm run test-ts && npm run test-js && npm run test-er && npm run test-markup && npm run test-log && npm run test-inspect && echo OK",
"package-extension": "npm run build-all && (rm -rf vscode-extension/tabscript ; cp -r dist vscode-extension/tabscript ) && cd vscode-extension && vsce package",
"test": "npm run test-ts && npm run test-js && npm run test-er && npm run test-markup && npm run test-log && npm run test-inspect && npm run test-npm-plugin && echo OK",
"test-ts": "./dist/cli.js tests/test.tab --output /dev/stdout | diff -u tests/test.ts -",

@@ -44,2 +60,3 @@ "test-js": "./dist/cli.js tests/test.tab --js --output /dev/stdout | diff -u tests/test.js -",

"test-inspect": "./dist/cli.js tests/inspect.tab --output /dev/stdout | diff -u tests/inspect.ts -",
"test-npm-plugin": "rm -rf node_modules/fake-npm-package && ln -sf ../tests/fake-npm-package node_modules/fake-npm-package && ./dist/cli.js tests/npm-plugin.tab --whitespace pretty --output /dev/stdout | diff -u tests/npm-plugin.ts -",
"prepack": "npm run build && npm run test"

@@ -69,2 +86,3 @@ },

"@shikijs/themes": "^3.19.0",
"@shikijs/monaco": "^3.20.0",
"@types/node": "^24.10.0",

@@ -86,4 +104,3 @@ "@types/vscode": "^1.85.0",

"dependencies": {
"@shikijs/monaco": "^3.20.0"
}
}

@@ -14,3 +14,3 @@ ![TabScript logo](tabscript.png)

```tabscript
tabscript 1.0
tabscript 2.0

@@ -70,13 +70,103 @@ # Define a constant initialized to a function

### CLI
```bash
# Transpile to TypeScript
tabscript input.tab --output output.ts
# Transpile to TypeScript (to file.ts by default)
tabscript file.tab
# Transpile to JavaScript
# Transpile to JavaScript with custom output file
tabscript input.tab --js --output output.js
# With pretty formatting
tabscript input.tab --whitespace pretty --output output.ts
# With pretty formatting (instead attempting to preserve line and column numbers)
tabscript file.tab --whitespace pretty
# Type check without generating files (for CI/git hooks)
tabscript input.tab --check
# Type check multiple files
tabscript src/**/*.tab --check
```
### Bundler Integration
TabScript includes plugins for all major bundlers:
#### Vite
```js
// vite.config.js
import { tabscriptPlugin } from 'tabscript/vite';
export default {
plugins: [
tabscriptPlugin({
// outputMode: 'ts' // Optional: output TypeScript for type checking
})
]
};
```
#### Webpack
```js
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.tab$/,
use: 'tabscript/webpack'
}
]
}
};
```
#### esbuild
```js
// build.js
import { tabscriptPlugin } from 'tabscript/esbuild';
import * as esbuild from 'esbuild';
await esbuild.build({
entryPoints: ['src/index.tab'],
bundle: true,
plugins: [tabscriptPlugin()]
});
```
#### Rollup
```js
// rollup.config.js
import { tabscriptPlugin } from 'tabscript/rollup';
export default {
input: 'src/index.tab',
plugins: [tabscriptPlugin()]
};
```
**Options:**
- `outputMode`: Output format for transpiled code
- Vite/esbuild: Defaults to `'ts'` (preserves types, handled natively)
- Webpack/Rollup: Defaults to `'js'` (requires loader config for TS)
- Plus all core transpiler options: `debug`, `recover`, `whitespace`, etc.
**Note on Type Checking:** Type checking for `.tab` files happens in your IDE via the VSCode extension, which transpiles TabScript to TypeScript in memory and uses TypeScript's language service. For CI/CD pipelines and git hooks, use `tabscript --check` to type-check files without generating output. Bundlers only handle build-time transpilation and typically strip types without checking them (for speed). This is the same workflow as TypeScript itself - `tsc` checks types, bundlers just transform code.
**Example CI/CD setup:**
```yaml
# .github/workflows/test.yml
- name: Type check TabScript files
run: npx tabscript src/**/*.tab --check
```
**Example git hook:**
```bash
# .husky/pre-commit
npx tabscript $(git diff --cached --name-only --diff-filter=ACM | grep '\.tab$') --check
```
## Key Features

@@ -97,3 +187,3 @@

# @file: inspect-plugin.tab
tabscript 1.0
tabscript 2.0
export default function|p, options|

@@ -114,3 +204,3 @@ orig := p.parseClass.bind(p)

```tabscript
tabscript 1.0
tabscript 2.0
import plugin "./inspect-plugin.tab"

@@ -136,3 +226,3 @@ x := 3

<script type="text/tabscript">
tabscript 1.0
tabscript 2.0
console.log.. "Hello from TabScript!"

@@ -139,0 +229,0 @@ </script>

@@ -1,2 +0,2 @@

import {tabscript} from "./tabscript.js";
import {tabscript, type PluginModule} from "./tabscript.js";

@@ -6,2 +6,33 @@ let transformCache: Record<string,string> = {};

// Plugin loader function for browser environment
function loadPlugin(pluginPath: string): PluginModule {
// Resolve plugin path relative to current baseUrl
const absoluteUrl = new URL(pluginPath, baseUrl).toString();
// Fetch the plugin file synchronously
const xhr = new XMLHttpRequest();
xhr.open('GET', absoluteUrl, false);
xhr.send(null);
if (xhr.status !== 200) {
throw new Error(`Failed to load plugin ${pluginPath}: HTTP ${xhr.status}`);
}
const pluginSource = xhr.responseText;
// Transpile the plugin TabScript to JavaScript
const pluginResult = tabscript(pluginSource, { js: true, whitespace: 'pretty', loadPlugin });
if (pluginResult.errors.length > 0) {
throw new Error(`Failed to transpile plugin ${pluginPath}: ${pluginResult.errors[0].message}`);
}
// Evaluate the transpiled code to get the plugin module
// Convert ES module export to return value
// Match 'export default' with any whitespace between (including newlines)
const code = pluginResult.code.replace(/\bexport\s+default/, 'return');
const pluginFn = Function(code)();
return { default: pluginFn };
}
function transformImport(url: string): string {

@@ -25,3 +56,3 @@ // Do we need to translate?

baseUrl = absoluteUrl;
const js = tabscript(ts, {recover: true, transformImport}) + "\n//# sourceURL=" + absoluteUrl;
const js = tabscript(ts, {js: true, recover: true, transformImport, loadPlugin}) + "\n//# sourceURL=" + absoluteUrl;
baseUrl = oldBaseUrl;

@@ -56,3 +87,3 @@ const blob = new Blob([js], { type: 'application/javascript' });

const jsE = document.createElement('script');
let {code: js} = tabscript(ts, {transformImport});
let {code: js} = tabscript(ts, {js: true, transformImport, loadPlugin});
if (src) js += "\n//# sourceURL=" + src;

@@ -59,0 +90,0 @@ jsE.textContent = js;

+149
-67

@@ -6,37 +6,62 @@ #!/usr/bin/env -S node --enable-source-maps

import { createRequire } from 'module';
import * as ts from 'typescript';
const require = createRequire(import.meta.url);
// Parse command line arguments
const HELP = `TabScript Transpiler
Usage: tabscript [options] <input.tab> [more files...]
Options:
--output <file> Output file (single input only, otherwise use --output-dir)
--output-dir <dir> Output directory for multiple files
--js Transpile to JavaScript instead of TypeScript
--check Type check without generating output (CI/git hooks)
--debug Log each consumed token
--recover Continue on errors instead of throwing
--whitespace <mode> 'preserve' (default) or 'pretty'
--help Show this help
Examples:
tabscript input.tab # Transpile to input.ts
tabscript input.tab --js # Transpile to input.js
tabscript src/**/*.tab --check # Type check multiple files
tabscript src/**/*.tab --output-dir dist # Transpile all to dist/`;
// Parse arguments
const args = process.argv.slice(2);
let inputFile, outputFile, debug = false, recover = false, js = false, whitespace: 'preserve' | 'pretty' = 'preserve';
let inputFiles: string[] = [], outputFile: string | undefined, outputDir: string | undefined;
let debug = false, recover = false, js = false, whitespace: 'preserve' | 'pretty' = 'preserve', check = false;
for (let i = 0; i < args.length; i++) {
if (args[i] === '--output') {
if (i + 1 >= args.length) {
console.error('Error: --output requires a filename');
process.exit(1);
}
outputFile = args[++i];
} else if (args[i] === '--debug') {
const arg = args[i];
if (arg === '--help' || arg === '-h') {
console.log(HELP);
process.exit(0);
} else if (arg === '--output') {
if (++i >= args.length) { console.error('Error: --output requires a filename'); process.exit(1); }
outputFile = args[i];
} else if (arg === '--output-dir') {
if (++i >= args.length) { console.error('Error: --output-dir requires a directory'); process.exit(1); }
outputDir = args[i];
} else if (arg === '--debug') {
debug = true;
} else if (args[i] === '--recover') {
} else if (arg === '--recover') {
recover = true;
} else if (args[i] === '--js') {
} else if (arg === '--js') {
js = true;
} else if (args[i] === '--whitespace') {
if (i + 1 >= args.length) {
console.error('Error: --whitespace requires a value (preserve or pretty)');
} else if (arg === '--check') {
check = true;
} else if (arg === '--whitespace') {
if (++i >= args.length) { console.error('Error: --whitespace requires preserve or pretty'); process.exit(1); }
const val = args[i];
if (val !== 'preserve' && val !== 'pretty') {
console.error(`Error: --whitespace must be preserve or pretty, got '${val}'`);
process.exit(1);
}
const value = args[++i];
if (value !== 'preserve' && value !== 'pretty') {
console.error(`Error: --whitespace must be 'preserve' or 'pretty', got '${value}'`);
process.exit(1);
}
whitespace = value;
} else if (!inputFile) {
inputFile = args[i];
whitespace = val;
} else if (!arg.startsWith('--')) {
inputFiles.push(arg);
} else {
console.error(`Error: Unexpected argument '${args[i]}'`);
console.error(`Error: Unknown option '${arg}'`);
process.exit(1);

@@ -46,55 +71,112 @@ }

if (!inputFile) {
console.error('Error: Input file is required');
if (inputFiles.length === 0) {
console.error('Error: Input file required\n');
console.log(HELP);
process.exit(1);
}
// Set default output file if not specified
outputFile ||= path.join(
path.dirname(inputFile),
path.basename(inputFile, path.extname(inputFile)) + (js ? '.js' : '.ts')
);
if (outputFile && inputFiles.length > 1) {
console.error('Error: --output only works with single input file. Use --output-dir for multiple files.');
process.exit(1);
}
// Plugin loader function
const basePath = path.dirname(path.resolve(inputFile));
function loadPlugin(pluginPath: string): PluginModule {
// Resolve relative to the input file's directory
let resolvedPath = path.resolve(basePath, pluginPath);
// If it's a .tab file, we need to transpile it
if (pluginPath.endsWith('.tab')) {
const pluginSource = fs.readFileSync(resolvedPath, 'utf8');
const pluginResult = tabscript(pluginSource, { js: true, whitespace: 'pretty', loadPlugin });
if (pluginResult.errors.length > 0) {
throw new Error(`Failed to transpile plugin ${pluginPath}: ${pluginResult.errors[0].message}`);
if (outputFile && outputDir) {
console.error('Error: Cannot use both --output and --output-dir');
process.exit(1);
}
// Plugin loader factory
function createPluginLoader(basePath: string): (pluginPath: string) => PluginModule {
return function loadPlugin(pluginPath: string): PluginModule {
let resolvedPath: string;
if (pluginPath.startsWith('./') || pluginPath.startsWith('../')) {
resolvedPath = path.resolve(basePath, pluginPath);
} else {
resolvedPath = require.resolve(pluginPath, { paths: [basePath] });
}
// Evaluate the transpiled code in memory
// Convert ES module export to a return value for Function constructor
const code = pluginResult.code.replace(/export\s+default\s+/, 'return ');
return Function(code)();
}
// For .js files, require them directly
return require(resolvedPath);
if (resolvedPath.endsWith('.tab')) {
const pluginSource = fs.readFileSync(resolvedPath, 'utf8');
const pluginResult = tabscript(pluginSource, { js: true, whitespace: 'pretty', loadPlugin });
if (pluginResult.errors.length > 0) {
throw new Error(`Failed to transpile plugin ${pluginPath}: ${pluginResult.errors[0].message}`);
}
return Function(pluginResult.code.replace(/export\s+default\s+/, 'return '))();
}
return require(resolvedPath);
};
}
try {
const result = tabscript(fs.readFileSync(inputFile, 'utf8'), {debug, recover, js, whitespace, loadPlugin});
// Process a single file
function processFile(file: string): boolean {
const basePath = path.dirname(path.resolve(file));
const loadPlugin = createPluginLoader(basePath);
// Display any errors that were recovered from
if (result.errors.length > 0) {
for (const error of result.errors) {
console.error(`Error at ${error.line}:${error.column}: ${error.message}`);
try {
const result = tabscript(fs.readFileSync(file, 'utf8'), {debug, recover, js: check ? false : js, whitespace, loadPlugin});
if (result.errors.length > 0) {
for (const error of result.errors) {
console.error(`${file}:${error.line}:${error.column}: ${error.message}`);
}
}
if (check) {
// Type check
const virtualFileName = file.replace(/\.tab$/, '.ts');
const compilerOptions: ts.CompilerOptions = {
noEmit: true, strict: true, target: ts.ScriptTarget.ES2023,
module: ts.ModuleKind.ES2022, moduleResolution: ts.ModuleResolutionKind.Bundler, skipLibCheck: true
};
const host = ts.createCompilerHost(compilerOptions);
const originalGetSourceFile = host.getSourceFile;
host.getSourceFile = (fileName, languageVersion, onError, shouldCreateNewSourceFile) => {
if (fileName === path.resolve(virtualFileName)) {
return ts.createSourceFile(fileName, result.code, languageVersion, true);
}
return originalGetSourceFile(fileName, languageVersion, onError, shouldCreateNewSourceFile);
};
const program = ts.createProgram([path.resolve(virtualFileName)], compilerOptions, host);
const diagnostics = ts.getPreEmitDiagnostics(program);
if (diagnostics.length > 0) {
for (const diagnostic of diagnostics) {
if (diagnostic.file) {
const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start!);
console.error(`${file}:${line + 1}:${character + 1}: ${ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n')}`);
} else {
console.error(ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n'));
}
}
return false;
}
console.log(`✓ ${file}`);
return true;
} else {
// Transpile
const output = outputFile || path.join(
outputDir || path.dirname(file),
path.basename(file, path.extname(file)) + (js ? '.js' : '.ts')
);
if (outputDir) fs.mkdirSync(outputDir, { recursive: true });
fs.writeFileSync(output, result.code);
return result.errors.length === 0;
}
} catch (e) {
console.error(e);
return false;
}
fs.writeFileSync(outputFile, result.code);
// Exit with error code if there were any errors
if (result.errors.length > 0) {
process.exit(1);
}
} catch (e) {
console.error(e);
process.exit(1);
}
}
// Process all files
let hasErrors = false;
for (const file of inputFiles) {
if (!processFile(file)) hasErrors = true;
}
process.exit(hasErrors ? 1 : 0);

@@ -15,3 +15,3 @@ /**

*/
const VERSION = { major: 1, minor: 0 };
const VERSION = { major: 2, minor: 0 };

@@ -26,23 +26,13 @@ /**

function descr(regexp: RegExp, name: string): RegExp {
regexp.toString = () => '<' + name + '>';
return regexp;
}
// Token patterns
const IDENTIFIER = descr(/[a-zA-Z_$][0-9a-zA-Z_$]*/y, "identifier");
const STRING = descr(/(['"])(?:(?=(\\?))\2.)*?\1/y, "string");
const NUMBER = descr(/[+-]?(?:0[xX][0-9a-fA-F]+|0[oO][0-7]+|0[bB][01]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/y, "number");
const OPERATOR = descr(/instanceof\b|in\b|or\b|and\b|[!=]~|[+\-*\/!=<>]=|[+\-*\/=<>]|%[a-z_]+/y, "bin-op");
const WITHIN_BACKTICK_STRING = descr(/[\s\S]*?(\${|`)/y, "`string`");
const EXPRESSION_PREFIX = descr(/\+\+|--|!|\+|-|typeof\b|delete\b|await\b|new\b/y, "unary-op");
const REGEXP = descr(/\/(\\.|[^\/])+\/[gimsuyd]*/y, "regexp");
const INTEGER = descr(/\d+/y, "integer");
const PATH = descr(/[^\s()]+/y, "path");
const IDENTIFIER = pattern(/[a-zA-Z_$][0-9a-zA-Z_$]*/y, "identifier");
const STRING = pattern(/(['"])(?:(?=(\\?))\2.)*?\1/y, "string");
const NUMBER = pattern(/[+-]?(?:0[xX][0-9a-fA-F]+|0[oO][0-7]+|0[bB][01]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/y, "number");
const OPERATOR = pattern(/instanceof\b|in\b|or\b|and\b|[!=]~|[+\-*\/!=<>]=|[+\-*\/=<>]|%[a-z_]+/y, "bin-op");
const WITHIN_BACKTICK_STRING = pattern(/[\s\S]*?(\${|`)/y, "`string`");
const EXPRESSION_PREFIX = pattern(/\+\+|--|!|\+|-|typeof\b|delete\b|await\b|new\b/y, "unary-op");
const REGEXP = pattern(/\/(\\.|[^\/])+\/[gimsuyd]*/y, "regexp");
const INTEGER = pattern(/\d+/y, "integer");
const REPLACE_OPERATORS: Record<string, string> = {

@@ -708,4 +698,7 @@ "or": "||",

if (s.accept('catch')) {
if (s.accept(IDENTIFIER)) {
const identifier = s.read(IDENTIFIER);
if (identifier) {
s.emit(false, '(', identifier);
if (s.acceptType(':')) s.must(this.parseType(s));
s.emit(')');
}

@@ -712,0 +705,0 @@ if (!this.parseBlock(s)) {