@jspicl/core 4.0.0-alpha.3 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -241,7 +241,6 @@ _2017-11-14_
241
241
  - Api now returns an object containing the transpiled code and polyfills instead of a string
242
242
  - Polyfills are now only included if used
243
243
  - Added several polyfills/remaps:
244
-
245
244
  - object/array.toString()
246
245
  - console.log
247
246
  - array.reduce
package/README.md CHANGED
@@ -61,6 +61,7 @@ Transpiles JavaScript source code to PICO-8 Lua.
61
61
  #### Returns
62
62
 
63
63
  An object containing:
64
+
64
65
  - `code` (string) - The transpiled Lua code
65
66
  - `polyfills` (object) - Map of required polyfill function names to their Lua implementations
66
67
 
@@ -69,7 +70,11 @@ An object containing:
69
70
  Types can be imported from `@jspicl/core/types`:
70
71
 
71
72
  ```typescript
72
- import type {JspiclOptions, JspiclOutput, AstNodeParser} from "@jspicl/core/types";
73
+ import type {
74
+ JspiclOptions,
75
+ JspiclOutput,
76
+ AstNodeParser
77
+ } from "@jspicl/core/types";
73
78
  ```
74
79
 
75
80
  ## Custom Mappers
@@ -90,6 +95,7 @@ const result = jspicl(source, {customMappers});
90
95
  ```
91
96
 
92
97
  Each mapper receives the AST node and an options object with:
98
+
93
99
  - `transpile` - Function to recursively transpile child nodes
94
100
  - `scope` - Object containing variable metadata and scope information
95
101
 
@@ -1 +1 @@
1
- {"version":3,"file":"newExpression.d.ts","sourceRoot":"","sources":["../../../src/ast/expressions/newExpression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,eAAe,GAC1B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,aAA+C,CAAC;AAE3D,eAAO,MAAM,aAAa,EAAE,cAAc,CAAC,aAAa,CAQvD,CAAC"}
1
+ {"version":3,"file":"newExpression.d.ts","sourceRoot":"","sources":["../../../src/ast/expressions/newExpression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,GAAG,IAAI,KAAG,IAAI,IAAI,aAChC,CAAC;AAEjC,eAAO,MAAM,aAAa,EAAE,cAAc,CAAC,aAAa,CAQvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"newExpression.js","sourceRoot":"","sources":["../../../src/ast/expressions/newExpression.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAAqB,EACE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,eAAe,CAAC;AAE3D,MAAM,CAAC,MAAM,aAAa,GAAkC,CAC1D,EAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAC,EACzB,EAAC,SAAS,EAAC,EACX,EAAE;IACF,MAAM,SAAS,GAAG,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;IAC/C,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,EAAE,EAAC,cAAc,EAAE,GAAG,EAAC,CAAC,CAAC;IAE9D,OAAO,GAAG,SAAS,IAAI,cAAc,GAAG,CAAC;AAC3C,CAAC,CAAC"}
1
+ {"version":3,"file":"newExpression.js","sourceRoot":"","sources":["../../../src/ast/expressions/newExpression.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAqB,EAAyB,EAAE,CAC9E,IAAI,EAAE,IAAI,KAAK,eAAe,CAAC;AAEjC,MAAM,CAAC,MAAM,aAAa,GAAkC,CAC1D,EAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAC,EACzB,EAAC,SAAS,EAAC,EACX,EAAE;IACF,MAAM,SAAS,GAAG,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;IAC/C,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,EAAE,EAAC,cAAc,EAAE,GAAG,EAAC,CAAC,CAAC;IAE9D,OAAO,GAAG,SAAS,IAAI,cAAc,GAAG,CAAC;AAC3C,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"forStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/forStatement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,cAAc,GACzB,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,YAA6C,CAAC;AAEzD,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,YAAY,CAQhD,CAAC"}
1
+ {"version":3,"file":"forStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/forStatement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,GAAG,IAAI,KAAG,IAAI,IAAI,YAChC,CAAC;AAEhC,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,YAAY,CAQhD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"forStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/forStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAAqB,EACC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,YAAY,GAAiC,CACxD,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,EAC1B,EAAC,SAAS,EAAC,EACX,EAAE,CACF,GAAG,SAAS,CAAC,IAAI,CAAC;UACV,SAAS,CAAC,IAAI,CAAC;MACnB,SAAS,CAAC,IAAI,CAAC;MACf,SAAS,CAAC,MAAM,EAAE,EAAC,cAAc,EAAE,IAAI,EAAC,CAAC;MACzC,CAAC"}
1
+ {"version":3,"file":"forStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/forStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAqB,EAAwB,EAAE,CAC5E,IAAI,EAAE,IAAI,KAAK,cAAc,CAAC;AAEhC,MAAM,CAAC,MAAM,YAAY,GAAiC,CACxD,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,EAC1B,EAAC,SAAS,EAAC,EACX,EAAE,CACF,GAAG,SAAS,CAAC,IAAI,CAAC;UACV,SAAS,CAAC,IAAI,CAAC;MACnB,SAAS,CAAC,IAAI,CAAC;MACf,SAAS,CAAC,MAAM,EAAE,EAAC,cAAc,EAAE,IAAI,EAAC,CAAC;MACzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ifStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/ifStatement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,aAAa,GACxB,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,WAA2C,CAAC;AAEvD,QAAA,MAAM,WAAW,EAAE,cAAc,CAAC,WAAW,CAoB5C,CAAC;AAEF,OAAO,EAAC,WAAW,EAAC,CAAC"}
1
+ {"version":3,"file":"ifStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/ifStatement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,GAAG,IAAI,KAAG,IAAI,IAAI,WAChC,CAAC;AAE/B,QAAA,MAAM,WAAW,EAAE,cAAc,CAAC,WAAW,CAoB5C,CAAC;AAEF,OAAO,EAAC,WAAW,EAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ifStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/ifStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAqB,EACA,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,aAAa,CAAC;AAEvD,MAAM,WAAW,GAAgC,CAC/C,EAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAC,EAC7B,EAAC,SAAS,EAAC,EACX,EAAE;IACF,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,kBAAkB,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEhD,MAAM,sBAAsB,GAAG,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,CAAC;IAE7E,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,kBAAkB,EAAE,CAAC;QACvB,gBAAgB,GAAG,sBAAsB;YACvC,CAAC,CAAC,OAAO,kBAAkB,EAAE;YAC7B,CAAC,CAAC,QAAQ,kBAAkB,MAAM,CAAC;IACvC,CAAC;IAED,OAAO,MAAM,cAAc;MACvB,aAAa;IACf,gBAAgB,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF,OAAO,EAAC,WAAW,EAAC,CAAC"}
1
+ {"version":3,"file":"ifStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/ifStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAqB,EAAuB,EAAE,CAC1E,IAAI,EAAE,IAAI,KAAK,aAAa,CAAC;AAE/B,MAAM,WAAW,GAAgC,CAC/C,EAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAC,EAC7B,EAAC,SAAS,EAAC,EACX,EAAE;IACF,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,kBAAkB,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEhD,MAAM,sBAAsB,GAAG,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,CAAC;IAE7E,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,kBAAkB,EAAE,CAAC;QACvB,gBAAgB,GAAG,sBAAsB;YACvC,CAAC,CAAC,OAAO,kBAAkB,EAAE;YAC7B,CAAC,CAAC,QAAQ,kBAAkB,MAAM,CAAC;IACvC,CAAC;IAED,OAAO,MAAM,cAAc;MACvB,aAAa;IACf,gBAAgB,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF,OAAO,EAAC,WAAW,EAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"returnStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/returnStatement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,iBAAiB,GAC5B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,eAAmD,CAAC;AAE/D,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,eAAe,CAO3D,CAAC"}
1
+ {"version":3,"file":"returnStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/returnStatement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,iBAAiB,GAC5B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,eAAmD,CAAC;AAE/D,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,eAAe,CAmB3D,CAAC"}
@@ -1,5 +1,14 @@
1
1
  export const isReturnStatement = (node) => node?.type === "ReturnStatement";
2
2
  export const ReturnStatement = ({ argument }, { transpile }) => {
3
+ // It's common for minification of Javascript to yield return statements like `return (a, b, c)`,
4
+ // which is a sequence expression. In Lua, we need to split the sequence expression into multiple lines and return the last expression.
5
+ if (argument?.type === "SequenceExpression") {
6
+ const lastExpression = argument.expressions[argument.expressions.length - 1];
7
+ const expressions = argument.expressions.slice(0, -1);
8
+ const transpiledExpressions = transpile(expressions);
9
+ const transpiledLastExpresion = transpile(lastExpression);
10
+ return `${transpiledExpressions}\nreturn ${transpiledLastExpresion}`;
11
+ }
3
12
  const value = transpile(argument);
4
13
  return value ? `return ${value}` : "do return end";
5
14
  };
@@ -1 +1 @@
1
- {"version":3,"file":"returnStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/returnStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAqB,EACI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,iBAAiB,CAAC;AAE/D,MAAM,CAAC,MAAM,eAAe,GAAoC,CAC9D,EAAC,QAAQ,EAAC,EACV,EAAC,SAAS,EAAC,EACX,EAAE;IACF,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAElC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;AACrD,CAAC,CAAC"}
1
+ {"version":3,"file":"returnStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/returnStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAqB,EACI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,iBAAiB,CAAC;AAE/D,MAAM,CAAC,MAAM,eAAe,GAAoC,CAC9D,EAAC,QAAQ,EAAC,EACV,EAAC,SAAS,EAAC,EACX,EAAE;IACF,iGAAiG;IACjG,uIAAuI;IACvI,IAAI,QAAQ,EAAE,IAAI,KAAK,oBAAoB,EAAE,CAAC;QAC5C,MAAM,cAAc,GAClB,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,qBAAqB,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,uBAAuB,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;QAE1D,OAAO,GAAG,qBAAqB,YAAY,uBAAuB,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAElC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;AACrD,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getRequiredPolyfills.d.ts","sourceRoot":"","sources":["../../src/polyfills/getRequiredPolyfills.ts"],"names":[],"mappings":"AAGA,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,0BAenD"}
1
+ {"version":3,"file":"getRequiredPolyfills.d.ts","sourceRoot":"","sources":["../../src/polyfills/getRequiredPolyfills.ts"],"names":[],"mappings":"AAGA,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,0BAkBnD"}
@@ -1 +1 @@
1
- {"version":3,"file":"getRequiredPolyfills.js","sourceRoot":"","sources":["../../src/polyfills/getRequiredPolyfills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,8BAA8B,MAAM,mCAAmC,CAAC;AACpF,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAE3C,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,qEAAqE;IACrE,qCAAqC;IACrC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAClE,MAAM,eAAe,GAAG,8BAGvB,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC5D,0CAA0C;QAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,EAA4B,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"getRequiredPolyfills.js","sourceRoot":"","sources":["../../src/polyfills/getRequiredPolyfills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,8BAA8B,MAAM,mCAAmC,CAAC;AACpF,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAE3C,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,qEAAqE;IACrE,qCAAqC;IACrC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAClE,MAAM,eAAe,GAAG,8BAGvB,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CACzC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAChB,0CAA0C;QAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,EAA4B,CAC7B,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jspicl/core",
3
- "version": "4.0.0-alpha.3",
3
+ "version": "4.0.0",
4
4
  "description": "A javascript to PICO-8 LUA converter",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -69,6 +69,5 @@
69
69
  },
70
70
  "engines": {
71
71
  "node": ">=22"
72
- },
73
- "stableVersion": "4.0.0-alpha.2"
72
+ }
74
73
  }