@katnip-org/compiler 0.1.2 → 0.1.4

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/build/cli.js CHANGED
@@ -8,6 +8,12 @@ import { ErrorReporter } from "./utils/ErrorReporter.js";
8
8
  import { Logger } from "./utils/Logger.js";
9
9
  import yargs from 'yargs';
10
10
  import { hideBin } from 'yargs/helpers';
11
+ import { appendFileSync } from "node:fs";
12
+ import path from "node:path";
13
+ class FileLogger extends Logger {
14
+ logFilePath = path.resolve(process.cwd(), "examples", "log.txt");
15
+ write(msg) { appendFileSync(this.logFilePath, `${msg}\n`, { encoding: "utf8" }); }
16
+ }
11
17
  const cli = yargs(hideBin(process.argv));
12
18
  cli
13
19
  .scriptName('katnip')
@@ -30,7 +36,7 @@ cli
30
36
  .then((fileContent) => {
31
37
  // Create an error reporter instance
32
38
  const reporter = new ErrorReporter(fileContent, true);
33
- const logger = new Logger(true);
39
+ const logger = new FileLogger();
34
40
  if (argv.logger === true)
35
41
  logger.enable();
36
42
  else
@@ -62,7 +68,7 @@ cli
62
68
  fs.readFile(argv.source, { encoding: 'utf-8' })
63
69
  .then((fileContent) => {
64
70
  const reporter = new ErrorReporter(fileContent, true);
65
- const logger = new Logger(true);
71
+ const logger = new FileLogger();
66
72
  if (argv.logger === true)
67
73
  logger.enable();
68
74
  else
@@ -99,7 +105,7 @@ cli
99
105
  fs.readFile(argv.source, { encoding: 'utf-8' })
100
106
  .then(async (fileContent) => {
101
107
  const reporter = new ErrorReporter(fileContent, true);
102
- const logger = new Logger(true);
108
+ const logger = new FileLogger();
103
109
  if (argv.logger === true)
104
110
  logger.enable();
105
111
  else
package/build/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/build/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import { type KatnipError } from "./utils/ErrorReporter.js";
2
2
  export type { KatnipError } from "./utils/ErrorReporter.js";
3
- export declare function checkSource(source: string): Promise<readonly KatnipError[]>;
3
+ export declare function checkSource(source: string): readonly KatnipError[];
package/build/index.js CHANGED
@@ -5,7 +5,7 @@ import { loadStdlibModules } from "./semantic/StdlibLoader.js";
5
5
  import { ErrorReporter } from "./utils/ErrorReporter.js";
6
6
  import { Logger } from "./utils/Logger.js";
7
7
  let stdlibCache = null;
8
- export async function checkSource(source) {
8
+ export function checkSource(source) {
9
9
  const reporter = new ErrorReporter(source);
10
10
  const logger = new Logger(); // disabled by default
11
11
  const tokens = new Lexer(reporter, logger).tokenize(source);
@@ -14,7 +14,7 @@ export async function checkSource(source) {
14
14
  return reporter.getErrors();
15
15
  const analyzer = new SemanticAnalyzer(reporter, logger);
16
16
  try {
17
- stdlibCache ??= await loadStdlibModules(logger);
17
+ stdlibCache ??= loadStdlibModules(logger);
18
18
  analyzer.loadStdlib(stdlibCache);
19
19
  }
20
20
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAqB,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,aAAa,EAAoB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,IAAI,WAAW,GAA0B,IAAI,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAc;IAC5C,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC,sBAAsB;IAEnD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,GAAG;QAAE,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;IAEtC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxD,IAAI,CAAC;QACD,WAAW,KAAK,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAChD,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC;IACD,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAqB,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,aAAa,EAAoB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,IAAI,WAAW,GAA0B,IAAI,CAAC;AAE9C,MAAM,UAAU,WAAW,CAAC,MAAc;IACtC,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC,sBAAsB;IAEnD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,GAAG;QAAE,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;IAEtC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxD,IAAI,CAAC;QACD,WAAW,KAAK,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1C,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC;IACD,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;AAChC,CAAC"}
@@ -12,7 +12,7 @@ export interface StdlibModule {
12
12
  sourcePath: string;
13
13
  }
14
14
  /**
15
- * Lexes and parses every stdlib file. Errors here are compiler bugs, not user errors: they are printed with a banner and the load aborts.
15
+ * Lexes and parses every stdlib file (embedded at build time). Errors here are compiler bugs, not user errors: they are printed with a banner and the load aborts.
16
16
  * @throws when any stdlib file fails to lex or parse.
17
17
  */
18
- export declare function loadStdlibModules(logger?: Logger): Promise<StdlibModule[]>;
18
+ export declare function loadStdlibModules(logger?: Logger): StdlibModule[];
@@ -2,39 +2,33 @@
2
2
  * @fileoverview Loads the stdlib .knip files shipped with the compiler.
3
3
  * Each file defines one namespace (motion.knip -> motion.*); prelude.knip is special-cased by the analyzer and becomes bare globals (typeof, Num, ...).
4
4
  */
5
- import * as fs from "fs/promises";
6
- import * as path from "path";
7
- import { fileURLToPath } from "url";
8
5
  import { Lexer } from "../lexer/Lexer.js";
9
6
  import { Parser } from "../parser/Parser.js";
10
7
  import { ErrorReporter } from "../utils/ErrorReporter.js";
11
8
  import { Logger } from "../utils/Logger.js";
12
- const STDLIB_DIR = fileURLToPath(new URL("../../stdlib/", import.meta.url));
9
+ import { stdlibSources } from "../stdlib.generated.js";
13
10
  /**
14
- * Lexes and parses every stdlib file. Errors here are compiler bugs, not user errors: they are printed with a banner and the load aborts.
11
+ * Lexes and parses every stdlib file (embedded at build time). Errors here are compiler bugs, not user errors: they are printed with a banner and the load aborts.
15
12
  * @throws when any stdlib file fails to lex or parse.
16
13
  */
17
- export async function loadStdlibModules(logger = new Logger()) {
18
- const entries = (await fs.readdir(STDLIB_DIR)).filter((f) => f.endsWith(".knip"));
14
+ export function loadStdlibModules(logger = new Logger()) {
19
15
  // The prelude declares bare globals; load first
20
- entries.sort((a, b) => a === "prelude.knip" ? -1 : b === "prelude.knip" ? 1 : a.localeCompare(b));
16
+ const entries = [...stdlibSources].sort((a, b) => a.name === "prelude.knip" ? -1 : b.name === "prelude.knip" ? 1 : a.name.localeCompare(b.name));
21
17
  const modules = [];
22
- for (const entry of entries) {
23
- const sourcePath = path.join(STDLIB_DIR, entry);
24
- const content = await fs.readFile(sourcePath, { encoding: "utf-8" });
18
+ for (const { name, content } of entries) {
25
19
  const reporter = new ErrorReporter(content, true);
26
20
  const tokens = new Lexer(reporter, logger).tokenize(content);
27
21
  const ast = reporter.hasErrors() ? null : new Parser(reporter, logger).parse(tokens);
28
22
  if (reporter.hasErrors() || !ast) {
29
- console.error(`Internal compiler error in stdlib file '${sourcePath}' (this is a Katnip bug):`);
23
+ console.error(`Internal compiler error in stdlib file '${name}' (this is a Katnip bug):`);
30
24
  reporter.print();
31
- throw new Error(`stdlib file '${entry}' failed to load`);
25
+ throw new Error(`stdlib file '${name}' failed to load`);
32
26
  }
33
27
  modules.push({
34
- namespace: path.basename(entry, ".knip"),
28
+ namespace: name.replace(/\.knip$/, ""),
35
29
  ast,
36
30
  reporter,
37
- sourcePath,
31
+ sourcePath: name,
38
32
  });
39
33
  }
40
34
  return modules;
@@ -1 +1 @@
1
- {"version":3,"file":"StdlibLoader.js","sourceRoot":"","sources":["../../src/semantic/StdlibLoader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAU5C,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE5E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAiB,IAAI,MAAM,EAAE;IACjE,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,gDAAgD;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClB,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAC5E,CAAC;IAEF,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAElD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAErF,IAAI,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CACT,2CAA2C,UAAU,2BAA2B,CACnF,CAAC;YACF,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,kBAAkB,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACT,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;YACxC,GAAG;YACH,QAAQ;YACR,UAAU;SACb,CAAC,CAAC;IACP,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"StdlibLoader.js","sourceRoot":"","sources":["../../src/semantic/StdlibLoader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAUvD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB,IAAI,MAAM,EAAE;IAC3D,gDAAgD;IAChD,MAAM,OAAO,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC7C,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAChG,CAAC;IAEF,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAElD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAErF,IAAI,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CACT,2CAA2C,IAAI,2BAA2B,CAC7E,CAAC;YACF,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,kBAAkB,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACT,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;YACtC,GAAG;YACH,QAAQ;YACR,UAAU,EAAE,IAAI;SACnB,CAAC,CAAC;IACP,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const stdlibSources: {
2
+ name: string;
3
+ content: string;
4
+ }[];
@@ -0,0 +1,52 @@
1
+ // AUTO-GEN'D by scripts/gen-stdlib.mjs; do not edit.
2
+ export const stdlibSources = [
3
+ {
4
+ "name": "clone.knip",
5
+ "content": "#> clone.knip ~ clone lifecycle blocks. <#\n\nproc onStart(@opcode = \"control_start_as_clone\", @hat) -> void {}\nproc create(@opcode = \"control_create_clone_of\", target: str) -> void {}\nproc delete(@opcode = \"control_delete_this_clone\") -> void {}\n"
6
+ },
7
+ {
8
+ "name": "console.knip",
9
+ "content": "#> console.knip ~ debug/interaction helpers. <#\n\nproc log(@opcode = \"katnip_console_log\", msg: str) -> void {}\nproc input(@opcode = \"sensing_askandwait\", prompt: str) -> str {}\nproc warn(@opcode = \"katnip_console_warn\", msg: str) -> void {}\nproc error(@opcode = \"katnip_console_error\", msg: str) -> void {}"
10
+ },
11
+ {
12
+ "name": "control.knip",
13
+ "content": "#> control.knip ~ control-flow hat blocks. <#\n\nproc onclone(@opcode = \"control_start_as_clone\", @hat) -> void {}\n"
14
+ },
15
+ {
16
+ "name": "dict.knip",
17
+ "content": "#> dict.knip ~ methods on dict values (first param `self` marks a method). <#\n\nproc contains(@opcode = \"katnip_dict_contains\", self: dict<K, V>, key: K) -> bool {}\nproc length(@opcode = \"katnip_dict_length\", self: dict<K, V>) -> num {}\nproc keys(@opcode = \"katnip_dict_keys\", self: dict<K, V>) -> list<K> {}\nproc values(@opcode = \"katnip_dict_values\", self: dict<K, V>) -> list<V> {}\nproc merge(@opcode = \"katnip_dict_merg\", self: dict<K, V>, addition: dict<K, V>) -> void {}\n"
18
+ },
19
+ {
20
+ "name": "events.knip",
21
+ "content": "#> events.knip ~ event hat blocks. <#\n\nproc onflag(@opcode = \"event_whenflagclicked\", @hat) -> void {}\n"
22
+ },
23
+ {
24
+ "name": "list.knip",
25
+ "content": "#> list.knip ~ methods on list values (first param `self` marks a method). <#\n\nproc add(@opcode = \"data_addtolist\", self: list<T>, item: T) -> void {}\nproc contains(@opcode = \"data_listcontainsitem\", self: list<T>, item: T) -> bool {}\nproc length(@opcode = \"data_lengthoflist\", self: list<T>) -> num {}\nproc remove(@opcode = \"data_deleteoflist\", self: list<T>, idx: num) -> T {}\nproc clear(@opcode = \"data_deletealloflist\", self: list<T>) -> void {}\nproc indexOf(@opcode = \"data_itemnumoflist\", self: list<T>, item: T) -> num {}\n\nproc merge(@opcode = \"katnip_list_merge\", self: list<T>, addition: list<T>) -> void {}"
26
+ },
27
+ {
28
+ "name": "looks.knip",
29
+ "content": "#> looks.knip ~ sprite appearance blocks. <#\n\nproc say(@opcode = \"looks_say\", msg: str) -> void {}\nproc say(@opcode = \"looks_sayforsecs\", msg: str, seconds: num) -> void {}\n"
30
+ },
31
+ {
32
+ "name": "math.knip",
33
+ "content": "#> math.knip ~ math operations + math constants. <#\n\nproc pow(@opcode = \"operator_mathop\", base: num, exponent: num) -> num {}\n\npublic pi: num = 3.141592653589793;\npublic e: num = 2.718281828459045;\npublic tau: num = 6.283185307179586;"
34
+ },
35
+ {
36
+ "name": "motion.knip",
37
+ "content": "#> motion.knip ~ sprite motion blocks. <#\n\npublic enum Target { RANDOM, MOUSE }\npublic enum RotationStyle { LEFT, RIGHT }\n\nproc move(@opcode = \"motion_movesteps\", steps: num) -> void {}\nproc turn(@opcode = \"motion_turnright\", degrees: num) -> void {}\n\nproc goTo(@opcode = \"motion_goto\", position: Target | str) -> void {}\nproc goTo(@opcode = \"motion_gotoxy\", x: num, y: num) -> void {}\nproc glideTo(@opcode = \"motion_glideto\", time: num, position: Target | str) -> void {}\nproc glideTo(@opcode = \"motion_glidetoxy\", time: num, x: num, y: num) -> void {}\n\nproc point(@opcode = \"motion_pointindirection\", degrees: num) -> void {}\nproc point(@opcode = \"motion_pointtowards\", target: Target) -> void {}\n\nproc changeX(@opcode = \"motion_changexby\", dX: num) -> void {}\nproc setX(@opcode = \"motion_setx\", x: num) -> void {}\nproc changeY(@opcode = \"motion_changeyby\", dY: num) -> void {}\nproc setY(@opcode = \"motion_sety\", y: num) -> void {}\n\nproc ifOnEdgeBounce(@opcode = \"motion_ifonedgebounce\") -> void {}\nproc setRotationStyle(@opcode = \"motion_setrotationstyle\", style: RotationStyle) -> void {}\n\nproc getPosition(@opcode = \"katnip_motion_position\") -> (num, num) {}\n"
38
+ },
39
+ {
40
+ "name": "pen.knip",
41
+ "content": "#> pen.knip ~ pen extension blocks. <#\n\npublic enum ColorParam { COLOR, SATURATION, BRIGHTNESS, TRANSPARENCY }\n\nproc down(@opcode = \"pen_penDown\") -> void {}\nproc up(@opcode = \"pen_penUp\") -> void {}\nproc clear(@opcode = \"pen_clear\") -> void {}\nproc setHex(@opcode = \"pen_setPenColorToColor\", hex: str) -> void {}\n\nproc setAttr(@opcode = \"pen_setPenColorParamTo\", attr: ColorParam, value: num) -> void {}\nproc changeAttr(@opcode = \"pen_changePenColorParamBy\", attr: ColorParam, dA: num) -> void {}\n\nproc setSize(@opcode = \"pen_setPenSizeTo\", size: num) -> void {}\nproc changeSize(@opcode = \"pen_changePenSizeBy\", dS: num) -> void {}"
42
+ },
43
+ {
44
+ "name": "prelude.knip",
45
+ "content": "#> prelude.knip ~ bare global builtins, available without a namespace. <#\n\nproc typeof(@opcode = \"katnip_typeof\", value: any) -> str {} # TODO: use the katnip one\n\n# casts\nproc Num(@opcode = \"katnip_cast_num\", value: any) -> num {}\nproc Str(@opcode = \"katnip_cast_str\", value: any) -> str {}\nproc Bool(@opcode = \"katnip_cast_bool\", value: any) -> bool {}\nproc List(@opcode = \"katnip_cast_list\", value: any) -> list<str> {}\n\nproc wait(@opcode = \"control_wait\", seconds: num) -> void {}\n\n# iter helpers\nproc range(@opcode = \"katnip_range\", stop: num) -> list<num> {}\nproc range(@opcode = \"katnip_range\", start: num, stop: num, step: num = 1) -> list<num> {}\n\nproc zip(@opcode = \"katnip_zip\", l1: list<T>, l2: list<U>) -> (list<T>, list<U>) {}\nproc enumerate(@opcode = \"katnip_enumerate\", items: list<T>) -> (list<num>, list<T>) {}\n\n# constants\npublic true: bool = \"true\" == \"true\";\npublic false: bool = \"false\" == \"\";\n\n# misc\nproc len(@opcode = \"operator_length\", input: str) -> num {}"
46
+ },
47
+ {
48
+ "name": "str.knip",
49
+ "content": "#> str.knip ~ methods on string values (first param `self` marks a method). <#\n\nproc contains(@opcode = \"operator_contains\", self: str, substring: str) -> bool {}"
50
+ }
51
+ ];
52
+ //# sourceMappingURL=stdlib.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdlib.generated.js","sourceRoot":"","sources":["../src/stdlib.generated.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,CAAC,MAAM,aAAa,GAC1B;IACI;QACI,MAAM,EAAE,YAAY;QACpB,SAAS,EAAE,kQAAkQ;KAChR;IACD;QACI,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE,iUAAiU;KAC/U;IACD;QACI,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE,wHAAwH;KACtI;IACD;QACI,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,+eAA+e;KAC7f;IACD;QACI,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,8GAA8G;KAC5H;IACD;QACI,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,ioBAAioB;KAC/oB;IACD;QACI,MAAM,EAAE,YAAY;QACpB,SAAS,EAAE,uLAAuL;KACrM;IACD;QACI,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,qPAAqP;KACnQ;IACD;QACI,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,qsCAAqsC;KACntC;IACD;QACI,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,upBAAupB;KACrqB;IACD;QACI,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE,+gCAA+gC;KAC7hC;IACD;QACI,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,wKAAwK;KACtL;CACJ,CAAC"}
@@ -10,9 +10,11 @@ export class KatnipError {
10
10
  this.source = source;
11
11
  this.message = message;
12
12
  this.location = location;
13
- if (captureStack) {
13
+ // captureStackTrace is V8-only (Node/Chromium); cast avoids erors in other runtimes
14
+ const captureStackTrace = Error.captureStackTrace;
15
+ if (captureStack && captureStackTrace) {
14
16
  const err = {};
15
- Error.captureStackTrace(err, KatnipError);
17
+ captureStackTrace(err, KatnipError);
16
18
  this.stackTrace = err.stack;
17
19
  }
18
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorReporter.js","sourceRoot":"","sources":["../../src/utils/ErrorReporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ErrorReporter.js","sourceRoot":"","sources":["../../src/utils/ErrorReporter.ts"],"names":[],"mappings":"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"}
@@ -18,14 +18,12 @@ export declare class KatnipLog {
18
18
  } | undefined, timestamp?: Date);
19
19
  }
20
20
  export declare class Logger {
21
- private writeToFile;
22
21
  enabled: boolean;
23
22
  logs: KatnipLog[];
24
- private logFilePath;
25
23
  private formatters;
26
- constructor(writeToFile?: boolean);
27
24
  private sanitizeForLog;
28
25
  print(log: KatnipLog): void;
26
+ protected write(_msg: string): void;
29
27
  log(log: KatnipLog): void;
30
28
  enable(): void;
31
29
  disable(): void;
@@ -1,5 +1,3 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
1
  import { pc } from "./colors.js";
4
2
  export var KatnipLogType;
5
3
  (function (KatnipLogType) {
@@ -21,20 +19,14 @@ export class KatnipLog {
21
19
  }
22
20
  }
23
21
  export class Logger {
24
- writeToFile;
25
22
  enabled = false;
26
23
  logs = [];
27
- logFilePath;
28
24
  formatters = {
29
25
  [KatnipLogType.Info]: (msg) => pc.cyan(msg),
30
26
  [KatnipLogType.Warn]: (msg) => pc.yellow(msg),
31
27
  [KatnipLogType.Error]: (msg) => pc.red(msg),
32
28
  [KatnipLogType.Debug]: (msg) => pc.gray(msg)
33
29
  };
34
- constructor(writeToFile = false) {
35
- this.writeToFile = writeToFile;
36
- this.logFilePath = path.resolve(process.cwd(), "examples", "log.txt");
37
- }
38
30
  sanitizeForLog(value) {
39
31
  if (typeof value === "string") {
40
32
  return JSON.stringify(value); // \n and \r etc are escaped
@@ -46,11 +38,10 @@ export class Logger {
46
38
  const baseMessage = `${log.timestamp} - [${log.type}] ${this.sanitizeForLog(log.message)}` +
47
39
  (log.location ? ` at line ${log.location.line}, column ${log.location.column}` : "");
48
40
  console.log(this.formatters[log.type](baseMessage));
49
- if (this.writeToFile) {
50
- fs.appendFileSync(this.logFilePath, `${baseMessage}\n`, { encoding: "utf8" });
51
- }
41
+ this.write(baseMessage);
52
42
  }
53
43
  }
44
+ write(_msg) { }
54
45
  log(log) {
55
46
  this.logs.push(log);
56
47
  this.print(log);
@@ -1 +1 @@
1
- {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/utils/Logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/utils/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACrB,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,gCAAe,CAAA;IACf,gCAAe,CAAA;AACnB,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAED,MAAM,OAAO,SAAS;IAEP;IACA;IACA;IACA;IAJX,YACW,IAAmB,EACnB,OAAe,EACf,QAA2C,EAC3C,YAAkB,IAAI,IAAI,EAAE;QAH5B,SAAI,GAAJ,IAAI,CAAe;QACnB,YAAO,GAAP,OAAO,CAAQ;QACf,aAAQ,GAAR,QAAQ,CAAmC;QAC3C,cAAS,GAAT,SAAS,CAAmB;IACpC,CAAC;CACP;AAED,MAAM,OAAO,MAAM;IACf,OAAO,GAAY,KAAK,CAAC;IACzB,IAAI,GAAgB,EAAE,CAAC;IAEf,UAAU,GAAmD;QACjE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3C,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;QAC7C,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;QAC3C,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;KAC/C,CAAC;IAEM,cAAc,CAAC,KAAU;QAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,4BAA4B;QAC9D,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,GAAc;QAChB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,WAAW,GACb,GAAG,GAAG,CAAC,SAAS,OAAO,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;gBACtE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,QAAQ,CAAC,IAAI,YAAY,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAES,KAAK,CAAC,IAAY,IAAS,CAAC;IAEtC,GAAG,CAAC,GAAc;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,KAAK,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;IACjC,OAAO,KAAK,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;CACtC"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Minimal ANSI colorizer, drop in for picocolors.
3
3
  */
4
- const useColor = process.env.NO_COLOR == null && process.stdout?.isTTY === true;
4
+ const proc = globalThis.process;
5
+ const useColor = proc?.env?.NO_COLOR == null && proc?.stdout?.isTTY === true;
5
6
  const wrap = (open, close) => (s) => useColor ? `\x1b[${open}m${s}\x1b[${close}m` : s;
6
7
  export const pc = {
7
8
  red: wrap(31, 39),
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/utils/colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;AAEhF,MAAM,IAAI,GACN,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAChC,CAAC,CAAS,EAAU,EAAE,CAClB,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,EAAE,GAAG;IACd,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IACjB,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IAClB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IAClB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;CACpB,CAAC"}
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/utils/colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,IAAI,GAAI,UAAuG,CAAC,OAAO,CAAC;AAC9H,MAAM,QAAQ,GAAG,IAAI,EAAE,GAAG,EAAE,QAAQ,IAAI,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;AAE7E,MAAM,IAAI,GACN,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAChC,CAAC,CAAS,EAAU,EAAE,CAClB,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,EAAE,GAAG;IACd,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IACjB,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IAClB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IAClB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;CACpB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@katnip-org/compiler",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Compiler and type-checker for the Katnip language (.knip), targeting Scratch SB3.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Benjamin Clark",
@@ -52,6 +52,7 @@
52
52
  "typescript": "^5.8.3"
53
53
  },
54
54
  "scripts": {
55
+ "prebuild": "node scripts/gen-stdlib.mjs",
55
56
  "build": "tsc",
56
57
  "prepublishOnly": "npm run build"
57
58
  }