purus 0.5.0 → 0.6.1

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/lib/purus-core.js CHANGED
@@ -22,7 +22,7 @@ const VERSION = require("../package.json").version;
22
22
  * @returns {string} Generated JavaScript code
23
23
  */
24
24
  function compile(source, options = {}) {
25
- const { header = true } = options;
25
+ const { header = true, strict = true } = options;
26
26
  const tmpFile = path.join(
27
27
  require("os").tmpdir(),
28
28
  `purus_${Date.now()}_${Math.random().toString(36).slice(2)}.purus`
@@ -31,6 +31,9 @@ function compile(source, options = {}) {
31
31
  try {
32
32
  fs.writeFileSync(tmpFile, source, "utf8");
33
33
  const args = ["build", "--stdout", "--no-header"];
34
+ if (!strict) {
35
+ args.push("--strict", "false");
36
+ }
34
37
  args.push(tmpFile);
35
38
  const result = execFileSync(process.execPath, [COMPILER_JS, ...args], {
36
39
  encoding: "utf8",
@@ -10,10 +10,17 @@ const args = process.argv.slice(3);
10
10
 
11
11
  let entry = null;
12
12
  let noHeader = false;
13
+ let strict = null;
13
14
 
14
15
  for (let i = 0; i < args.length; i++) {
15
16
  if (args[i] === "--no-header") {
16
17
  noHeader = true;
18
+ } else if (args[i] === "--strict") {
19
+ if (i + 1 < args.length && (args[i + 1] === "true" || args[i + 1] === "false")) {
20
+ strict = args[++i] === "true";
21
+ } else {
22
+ strict = true;
23
+ }
17
24
  } else if (args[i] === "--entry" || args[i] === "-e") {
18
25
  entry = args[++i];
19
26
  } else if (!args[i].startsWith("-")) {
@@ -24,7 +31,8 @@ for (let i = 0; i < args.length; i++) {
24
31
  if (entry && fs.existsSync(entry) && fs.statSync(entry).isFile()) {
25
32
  // Single file - compile and run
26
33
  const source = fs.readFileSync(entry, "utf8");
27
- const js = compile(source, { header: false });
34
+ const useStrict = strict !== null ? strict : true;
35
+ const js = compile(source, { header: false, strict: useStrict });
28
36
  const m = new (require("module"))();
29
37
  m._compile(js, entry);
30
38
  } else {
@@ -72,7 +80,8 @@ if (entry && fs.existsSync(entry) && fs.statSync(entry).isFile()) {
72
80
 
73
81
  for (const f of files) {
74
82
  const source = fs.readFileSync(f, "utf8");
75
- const js = compile(source, { header: false });
83
+ const useStrict2 = strict !== null ? strict : true;
84
+ const js = compile(source, { header: false, strict: useStrict2 });
76
85
 
77
86
  const tmpFile = path.join(
78
87
  require("os").tmpdir(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "purus",
3
- "version": "0.5.0",
3
+ "version": "0.6.1",
4
4
  "description": "A language that compiles to JavaScript — no Shift key required",
5
5
  "main": "index.js",
6
6
  "module": "index.mjs",
@@ -26,8 +26,8 @@
26
26
  "build:compiler": "moon build --target js",
27
27
  "build:copy": "node scripts/build.js",
28
28
  "build": "npm run build:compiler && npm run build:copy",
29
- "sync-version": "node scripts/sync-version.js",
30
- "prepublishOnly": "npm run sync-version && npm run build"
29
+ "sync": "node scripts/sync-version.js",
30
+ "prepublishOnly": "npm run sync && npm run build"
31
31
  },
32
32
  "keywords": [
33
33
  "compiler",