context-compress 1.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.
Files changed (118) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +275 -0
  3. package/dist/cli/doctor.d.ts +2 -0
  4. package/dist/cli/doctor.d.ts.map +1 -0
  5. package/dist/cli/doctor.js +131 -0
  6. package/dist/cli/doctor.js.map +1 -0
  7. package/dist/cli/index.d.ts +12 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/index.js +31 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/cli/setup.d.ts +2 -0
  12. package/dist/cli/setup.d.ts.map +1 -0
  13. package/dist/cli/setup.js +43 -0
  14. package/dist/cli/setup.js.map +1 -0
  15. package/dist/cli/uninstall.d.ts +2 -0
  16. package/dist/cli/uninstall.d.ts.map +1 -0
  17. package/dist/cli/uninstall.js +102 -0
  18. package/dist/cli/uninstall.js.map +1 -0
  19. package/dist/config.d.ts +37 -0
  20. package/dist/config.d.ts.map +1 -0
  21. package/dist/config.js +79 -0
  22. package/dist/config.js.map +1 -0
  23. package/dist/executor.d.ts +21 -0
  24. package/dist/executor.d.ts.map +1 -0
  25. package/dist/executor.js +301 -0
  26. package/dist/executor.js.map +1 -0
  27. package/dist/hooks/pretooluse.d.ts +10 -0
  28. package/dist/hooks/pretooluse.d.ts.map +1 -0
  29. package/dist/hooks/pretooluse.js +117 -0
  30. package/dist/hooks/pretooluse.js.map +1 -0
  31. package/dist/index.d.ts +2 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +9 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/logger.d.ts +4 -0
  36. package/dist/logger.d.ts.map +1 -0
  37. package/dist/logger.js +13 -0
  38. package/dist/logger.js.map +1 -0
  39. package/dist/runtime/index.d.ts +22 -0
  40. package/dist/runtime/index.d.ts.map +1 -0
  41. package/dist/runtime/index.js +81 -0
  42. package/dist/runtime/index.js.map +1 -0
  43. package/dist/runtime/languages/elixir.d.ts +3 -0
  44. package/dist/runtime/languages/elixir.d.ts.map +1 -0
  45. package/dist/runtime/languages/elixir.js +15 -0
  46. package/dist/runtime/languages/elixir.js.map +1 -0
  47. package/dist/runtime/languages/go.d.ts +3 -0
  48. package/dist/runtime/languages/go.d.ts.map +1 -0
  49. package/dist/runtime/languages/go.js +29 -0
  50. package/dist/runtime/languages/go.js.map +1 -0
  51. package/dist/runtime/languages/javascript.d.ts +3 -0
  52. package/dist/runtime/languages/javascript.d.ts.map +1 -0
  53. package/dist/runtime/languages/javascript.js +13 -0
  54. package/dist/runtime/languages/javascript.js.map +1 -0
  55. package/dist/runtime/languages/perl.d.ts +3 -0
  56. package/dist/runtime/languages/perl.d.ts.map +1 -0
  57. package/dist/runtime/languages/perl.js +13 -0
  58. package/dist/runtime/languages/perl.js.map +1 -0
  59. package/dist/runtime/languages/php.d.ts +3 -0
  60. package/dist/runtime/languages/php.d.ts.map +1 -0
  61. package/dist/runtime/languages/php.js +24 -0
  62. package/dist/runtime/languages/php.js.map +1 -0
  63. package/dist/runtime/languages/python.d.ts +3 -0
  64. package/dist/runtime/languages/python.d.ts.map +1 -0
  65. package/dist/runtime/languages/python.js +13 -0
  66. package/dist/runtime/languages/python.js.map +1 -0
  67. package/dist/runtime/languages/r.d.ts +3 -0
  68. package/dist/runtime/languages/r.d.ts.map +1 -0
  69. package/dist/runtime/languages/r.js +13 -0
  70. package/dist/runtime/languages/r.js.map +1 -0
  71. package/dist/runtime/languages/ruby.d.ts +3 -0
  72. package/dist/runtime/languages/ruby.d.ts.map +1 -0
  73. package/dist/runtime/languages/ruby.js +13 -0
  74. package/dist/runtime/languages/ruby.js.map +1 -0
  75. package/dist/runtime/languages/rust.d.ts +3 -0
  76. package/dist/runtime/languages/rust.d.ts.map +1 -0
  77. package/dist/runtime/languages/rust.js +28 -0
  78. package/dist/runtime/languages/rust.js.map +1 -0
  79. package/dist/runtime/languages/shell.d.ts +3 -0
  80. package/dist/runtime/languages/shell.d.ts.map +1 -0
  81. package/dist/runtime/languages/shell.js +14 -0
  82. package/dist/runtime/languages/shell.js.map +1 -0
  83. package/dist/runtime/languages/typescript.d.ts +3 -0
  84. package/dist/runtime/languages/typescript.d.ts.map +1 -0
  85. package/dist/runtime/languages/typescript.js +15 -0
  86. package/dist/runtime/languages/typescript.js.map +1 -0
  87. package/dist/runtime/plugin.d.ts +38 -0
  88. package/dist/runtime/plugin.d.ts.map +1 -0
  89. package/dist/runtime/plugin.js +2 -0
  90. package/dist/runtime/plugin.js.map +1 -0
  91. package/dist/server.bundle.mjs +22769 -0
  92. package/dist/server.bundle.mjs.map +7 -0
  93. package/dist/server.d.ts +5 -0
  94. package/dist/server.d.ts.map +1 -0
  95. package/dist/server.js +405 -0
  96. package/dist/server.js.map +1 -0
  97. package/dist/snippet.d.ts +15 -0
  98. package/dist/snippet.d.ts.map +1 -0
  99. package/dist/snippet.js +92 -0
  100. package/dist/snippet.js.map +1 -0
  101. package/dist/stats.d.ts +10 -0
  102. package/dist/stats.d.ts.map +1 -0
  103. package/dist/stats.js +65 -0
  104. package/dist/stats.js.map +1 -0
  105. package/dist/store.d.ts +44 -0
  106. package/dist/store.d.ts.map +1 -0
  107. package/dist/store.js +590 -0
  108. package/dist/store.js.map +1 -0
  109. package/dist/types.d.ts +75 -0
  110. package/dist/types.d.ts.map +1 -0
  111. package/dist/types.js +14 -0
  112. package/dist/types.js.map +1 -0
  113. package/hooks/hooks.json +52 -0
  114. package/hooks/pretooluse.mjs +94 -0
  115. package/package.json +55 -0
  116. package/skills/context-compress/SKILL.md +118 -0
  117. package/skills/doctor/SKILL.md +15 -0
  118. package/skills/stats/SKILL.md +11 -0
package/dist/logger.js ADDED
@@ -0,0 +1,13 @@
1
+ import { getConfig } from "./config.js";
2
+ export function debug(...args) {
3
+ if (getConfig().debug) {
4
+ process.stderr.write(`[context-compress] ${args.map(String).join(" ")}\n`);
5
+ }
6
+ }
7
+ export function warn(...args) {
8
+ process.stderr.write(`[context-compress WARN] ${args.map(String).join(" ")}\n`);
9
+ }
10
+ export function error(...args) {
11
+ process.stderr.write(`[context-compress ERROR] ${args.map(String).join(" ")}\n`);
12
+ }
13
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,UAAU,KAAK,CAAC,GAAG,IAAe;IACvC,IAAI,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;AACF,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAAG,IAAe;IACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAG,IAAe;IACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClF,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { Language } from "../types.js";
2
+ import type { LanguagePlugin } from "./plugin.js";
3
+ declare const ALL_PLUGINS: LanguagePlugin[];
4
+ export type RuntimeMap = Map<Language, {
5
+ plugin: LanguagePlugin;
6
+ runtime: string;
7
+ }>;
8
+ /**
9
+ * Detect all available runtimes in parallel (~40ms vs ~250ms sequential).
10
+ */
11
+ export declare function detectRuntimes(): Promise<RuntimeMap>;
12
+ /**
13
+ * Get a human-readable summary of detected runtimes.
14
+ */
15
+ export declare function getRuntimeSummary(runtimes: RuntimeMap): string;
16
+ /**
17
+ * Check if Bun is available (for display in tool descriptions).
18
+ */
19
+ export declare function hasBun(runtimes: RuntimeMap): boolean;
20
+ export { ALL_PLUGINS };
21
+ export type { LanguagePlugin } from "./plugin.js";
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAiBlD,QAAA,MAAM,WAAW,EAAE,cAAc,EAYhC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAapF;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,CAuB1D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAM9D;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAGpD;AAED,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { exec } from "node:child_process";
2
+ import { promisify } from "node:util";
3
+ import { debug } from "../logger.js";
4
+ // Import all language plugins
5
+ import { elixirPlugin } from "./languages/elixir.js";
6
+ import { goPlugin } from "./languages/go.js";
7
+ import { javascriptPlugin } from "./languages/javascript.js";
8
+ import { perlPlugin } from "./languages/perl.js";
9
+ import { phpPlugin } from "./languages/php.js";
10
+ import { pythonPlugin } from "./languages/python.js";
11
+ import { rPlugin } from "./languages/r.js";
12
+ import { rubyPlugin } from "./languages/ruby.js";
13
+ import { rustPlugin } from "./languages/rust.js";
14
+ import { shellPlugin } from "./languages/shell.js";
15
+ import { typescriptPlugin } from "./languages/typescript.js";
16
+ const execAsync = promisify(exec);
17
+ const ALL_PLUGINS = [
18
+ javascriptPlugin,
19
+ typescriptPlugin,
20
+ pythonPlugin,
21
+ shellPlugin,
22
+ rubyPlugin,
23
+ goPlugin,
24
+ rustPlugin,
25
+ phpPlugin,
26
+ perlPlugin,
27
+ rPlugin,
28
+ elixirPlugin,
29
+ ];
30
+ async function commandExists(cmd) {
31
+ const checkCmd = process.platform === "win32" ? `where ${cmd} 2>nul` : `command -v ${cmd} 2>/dev/null`;
32
+ try {
33
+ await execAsync(checkCmd, { timeout: 3000 });
34
+ return true;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ /**
41
+ * Detect all available runtimes in parallel (~40ms vs ~250ms sequential).
42
+ */
43
+ export async function detectRuntimes() {
44
+ const map = new Map();
45
+ // Build detection tasks for all plugins in parallel
46
+ const tasks = ALL_PLUGINS.map(async (plugin) => {
47
+ for (const candidate of plugin.runtimeCandidates) {
48
+ if (await commandExists(candidate)) {
49
+ return { plugin, runtime: candidate };
50
+ }
51
+ }
52
+ return null;
53
+ });
54
+ const results = await Promise.all(tasks);
55
+ for (const result of results) {
56
+ if (result) {
57
+ map.set(result.plugin.language, result);
58
+ debug(`Detected ${result.plugin.language}: ${result.runtime}`);
59
+ }
60
+ }
61
+ return map;
62
+ }
63
+ /**
64
+ * Get a human-readable summary of detected runtimes.
65
+ */
66
+ export function getRuntimeSummary(runtimes) {
67
+ const lines = [];
68
+ for (const [lang, { runtime }] of runtimes) {
69
+ lines.push(` ${lang}: ${runtime}`);
70
+ }
71
+ return lines.join("\n");
72
+ }
73
+ /**
74
+ * Check if Bun is available (for display in tool descriptions).
75
+ */
76
+ export function hasBun(runtimes) {
77
+ const js = runtimes.get("javascript");
78
+ return js?.runtime === "bun";
79
+ }
80
+ export { ALL_PLUGINS };
81
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { LanguagePlugin } from "../plugin.js";
2
+ export declare const elixirPlugin: LanguagePlugin;
3
+ //# sourceMappingURL=elixir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elixir.d.ts","sourceRoot":"","sources":["../../../src/runtime/languages/elixir.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,YAAY,EAAE,cAgB1B,CAAC"}
@@ -0,0 +1,15 @@
1
+ export const elixirPlugin = {
2
+ language: "elixir",
3
+ runtimeCandidates: ["elixir"],
4
+ fileExtension: ".exs",
5
+ buildCommand(runtime, filePath) {
6
+ return [runtime, filePath];
7
+ },
8
+ wrapWithFileContent(code, filePath) {
9
+ const escaped = JSON.stringify(filePath);
10
+ return `file_content_path = ${escaped}\nfile_content = File.read!(file_content_path)\n${code}`;
11
+ },
12
+ // elixir may be a .cmd shim on Windows
13
+ needsShell: process.platform === "win32",
14
+ };
15
+ //# sourceMappingURL=elixir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elixir.js","sourceRoot":"","sources":["../../../src/runtime/languages/elixir.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC3C,QAAQ,EAAE,QAAQ;IAClB,iBAAiB,EAAE,CAAC,QAAQ,CAAC;IAC7B,aAAa,EAAE,MAAM;IAErB,YAAY,CAAC,OAAO,EAAE,QAAQ;QAC7B,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,mBAAmB,CAAC,IAAI,EAAE,QAAQ;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,uBAAuB,OAAO,mDAAmD,IAAI,EAAE,CAAC;IAChG,CAAC;IAED,uCAAuC;IACvC,UAAU,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;CACxC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LanguagePlugin } from "../plugin.js";
2
+ export declare const goPlugin: LanguagePlugin;
3
+ //# sourceMappingURL=go.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go.d.ts","sourceRoot":"","sources":["../../../src/runtime/languages/go.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,QAAQ,EAAE,cAiCtB,CAAC"}
@@ -0,0 +1,29 @@
1
+ export const goPlugin = {
2
+ language: "go",
3
+ runtimeCandidates: ["go"],
4
+ fileExtension: ".go",
5
+ buildCommand(runtime, filePath) {
6
+ return [runtime, "run", filePath];
7
+ },
8
+ preprocessCode(code) {
9
+ // Wrap in package main if not already present
10
+ if (!code.includes("package ")) {
11
+ const hasImport = code.includes("import ");
12
+ if (hasImport) {
13
+ return `package main\n\n${code}`;
14
+ }
15
+ return `package main\n\nimport "fmt"\n\nfunc main() {\n${code}\n_ = fmt.Sprintf("")\n}`;
16
+ }
17
+ return undefined;
18
+ },
19
+ wrapWithFileContent(code, filePath) {
20
+ const escaped = JSON.stringify(filePath);
21
+ const hasPackage = code.includes("package ");
22
+ if (hasPackage) {
23
+ // Insert after package declaration
24
+ return code.replace(/(package\s+\w+\n)/, `$1\nimport "os"\n\nvar FILE_CONTENT_PATH = ${escaped}\nvar _ = func() string { b, _ := os.ReadFile(FILE_CONTENT_PATH); return string(b) }()\n`);
25
+ }
26
+ return `package main\n\nimport (\n\t"fmt"\n\t"os"\n)\n\nfunc main() {\n\tFILE_CONTENT_PATH := ${escaped}\n\tb, _ := os.ReadFile(FILE_CONTENT_PATH)\n\tFILE_CONTENT := string(b)\n\t_ = FILE_CONTENT_PATH\n\t_ = FILE_CONTENT\n\t_ = fmt.Sprintf("")\n${code}\n}`;
27
+ },
28
+ };
29
+ //# sourceMappingURL=go.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go.js","sourceRoot":"","sources":["../../../src/runtime/languages/go.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACvC,QAAQ,EAAE,IAAI;IACd,iBAAiB,EAAE,CAAC,IAAI,CAAC;IACzB,aAAa,EAAE,KAAK;IAEpB,YAAY,CAAC,OAAO,EAAE,QAAQ;QAC7B,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,cAAc,CAAC,IAAI;QAClB,8CAA8C;QAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,SAAS,EAAE,CAAC;gBACf,OAAO,mBAAmB,IAAI,EAAE,CAAC;YAClC,CAAC;YACD,OAAO,kDAAkD,IAAI,0BAA0B,CAAC;QACzF,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,mBAAmB,CAAC,IAAI,EAAE,QAAQ;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,UAAU,EAAE,CAAC;YAChB,mCAAmC;YACnC,OAAO,IAAI,CAAC,OAAO,CAClB,mBAAmB,EACnB,8CAA8C,OAAO,0FAA0F,CAC/I,CAAC;QACH,CAAC;QACD,OAAO,yFAAyF,OAAO,gJAAgJ,IAAI,KAAK,CAAC;IAClQ,CAAC;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LanguagePlugin } from "../plugin.js";
2
+ export declare const javascriptPlugin: LanguagePlugin;
3
+ //# sourceMappingURL=javascript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript.d.ts","sourceRoot":"","sources":["../../../src/runtime/languages/javascript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,gBAAgB,EAAE,cAa9B,CAAC"}
@@ -0,0 +1,13 @@
1
+ export const javascriptPlugin = {
2
+ language: "javascript",
3
+ runtimeCandidates: ["bun", "node"],
4
+ fileExtension: ".js",
5
+ buildCommand(runtime, filePath) {
6
+ return [runtime, filePath];
7
+ },
8
+ wrapWithFileContent(code, filePath) {
9
+ const escaped = JSON.stringify(filePath);
10
+ return `const FILE_CONTENT_PATH = ${escaped};\nconst FILE_CONTENT = require("fs").readFileSync(FILE_CONTENT_PATH, "utf-8");\n${code}`;
11
+ },
12
+ };
13
+ //# sourceMappingURL=javascript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../src/runtime/languages/javascript.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC/C,QAAQ,EAAE,YAAY;IACtB,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;IAClC,aAAa,EAAE,KAAK;IAEpB,YAAY,CAAC,OAAO,EAAE,QAAQ;QAC7B,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,mBAAmB,CAAC,IAAI,EAAE,QAAQ;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,6BAA6B,OAAO,oFAAoF,IAAI,EAAE,CAAC;IACvI,CAAC;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LanguagePlugin } from "../plugin.js";
2
+ export declare const perlPlugin: LanguagePlugin;
3
+ //# sourceMappingURL=perl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perl.d.ts","sourceRoot":"","sources":["../../../src/runtime/languages/perl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,UAAU,EAAE,cAaxB,CAAC"}
@@ -0,0 +1,13 @@
1
+ export const perlPlugin = {
2
+ language: "perl",
3
+ runtimeCandidates: ["perl"],
4
+ fileExtension: ".pl",
5
+ buildCommand(runtime, filePath) {
6
+ return [runtime, filePath];
7
+ },
8
+ wrapWithFileContent(code, filePath) {
9
+ const escaped = JSON.stringify(filePath);
10
+ return `my $FILE_CONTENT_PATH = ${escaped};\nopen(my $fh, '<', $FILE_CONTENT_PATH) or die "Cannot open: $!";\nmy $FILE_CONTENT = do { local $/; <$fh> };\nclose($fh);\n${code}`;
11
+ },
12
+ };
13
+ //# sourceMappingURL=perl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perl.js","sourceRoot":"","sources":["../../../src/runtime/languages/perl.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAmB;IACzC,QAAQ,EAAE,MAAM;IAChB,iBAAiB,EAAE,CAAC,MAAM,CAAC;IAC3B,aAAa,EAAE,KAAK;IAEpB,YAAY,CAAC,OAAO,EAAE,QAAQ;QAC7B,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,mBAAmB,CAAC,IAAI,EAAE,QAAQ;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,2BAA2B,OAAO,gIAAgI,IAAI,EAAE,CAAC;IACjL,CAAC;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LanguagePlugin } from "../plugin.js";
2
+ export declare const phpPlugin: LanguagePlugin;
3
+ //# sourceMappingURL=php.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"php.d.ts","sourceRoot":"","sources":["../../../src/runtime/languages/php.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,SAAS,EAAE,cAyBvB,CAAC"}
@@ -0,0 +1,24 @@
1
+ export const phpPlugin = {
2
+ language: "php",
3
+ runtimeCandidates: ["php"],
4
+ fileExtension: ".php",
5
+ buildCommand(runtime, filePath) {
6
+ return [runtime, filePath];
7
+ },
8
+ preprocessCode(code) {
9
+ // Add <?php tag if not present
10
+ if (!code.trimStart().startsWith("<?")) {
11
+ return `<?php\n${code}`;
12
+ }
13
+ return undefined;
14
+ },
15
+ wrapWithFileContent(code, filePath) {
16
+ const escaped = JSON.stringify(filePath);
17
+ const preamble = `$FILE_CONTENT_PATH = ${escaped};\n$FILE_CONTENT = file_get_contents($FILE_CONTENT_PATH);\n`;
18
+ if (code.trimStart().startsWith("<?")) {
19
+ return code.replace(/(<\?php\s*)/, `$1\n${preamble}`);
20
+ }
21
+ return `<?php\n${preamble}${code}`;
22
+ },
23
+ };
24
+ //# sourceMappingURL=php.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"php.js","sourceRoot":"","sources":["../../../src/runtime/languages/php.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAmB;IACxC,QAAQ,EAAE,KAAK;IACf,iBAAiB,EAAE,CAAC,KAAK,CAAC;IAC1B,aAAa,EAAE,MAAM;IAErB,YAAY,CAAC,OAAO,EAAE,QAAQ;QAC7B,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,cAAc,CAAC,IAAI;QAClB,+BAA+B;QAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,OAAO,UAAU,IAAI,EAAE,CAAC;QACzB,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,mBAAmB,CAAC,IAAI,EAAE,QAAQ;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,wBAAwB,OAAO,6DAA6D,CAAC;QAC9G,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,QAAQ,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,UAAU,QAAQ,GAAG,IAAI,EAAE,CAAC;IACpC,CAAC;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LanguagePlugin } from "../plugin.js";
2
+ export declare const pythonPlugin: LanguagePlugin;
3
+ //# sourceMappingURL=python.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../src/runtime/languages/python.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,YAAY,EAAE,cAa1B,CAAC"}
@@ -0,0 +1,13 @@
1
+ export const pythonPlugin = {
2
+ language: "python",
3
+ runtimeCandidates: ["python3", "python"],
4
+ fileExtension: ".py",
5
+ buildCommand(runtime, filePath) {
6
+ return [runtime, filePath];
7
+ },
8
+ wrapWithFileContent(code, filePath) {
9
+ const escaped = JSON.stringify(filePath);
10
+ return `FILE_CONTENT_PATH = ${escaped}\nwith open(FILE_CONTENT_PATH, "r") as _f:\n FILE_CONTENT = _f.read()\n${code}`;
11
+ },
12
+ };
13
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/runtime/languages/python.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC3C,QAAQ,EAAE,QAAQ;IAClB,iBAAiB,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IACxC,aAAa,EAAE,KAAK;IAEpB,YAAY,CAAC,OAAO,EAAE,QAAQ;QAC7B,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,mBAAmB,CAAC,IAAI,EAAE,QAAQ;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,uBAAuB,OAAO,6EAA6E,IAAI,EAAE,CAAC;IAC1H,CAAC;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LanguagePlugin } from "../plugin.js";
2
+ export declare const rPlugin: LanguagePlugin;
3
+ //# sourceMappingURL=r.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"r.d.ts","sourceRoot":"","sources":["../../../src/runtime/languages/r.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,OAAO,EAAE,cAarB,CAAC"}
@@ -0,0 +1,13 @@
1
+ export const rPlugin = {
2
+ language: "r",
3
+ runtimeCandidates: ["Rscript", "r"],
4
+ fileExtension: ".R",
5
+ buildCommand(runtime, filePath) {
6
+ return [runtime, filePath];
7
+ },
8
+ wrapWithFileContent(code, filePath) {
9
+ const escaped = JSON.stringify(filePath);
10
+ return `FILE_CONTENT_PATH <- ${escaped}\nFILE_CONTENT <- readLines(FILE_CONTENT_PATH, warn=FALSE)\nFILE_CONTENT <- paste(FILE_CONTENT, collapse="\\n")\n${code}`;
11
+ },
12
+ };
13
+ //# sourceMappingURL=r.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"r.js","sourceRoot":"","sources":["../../../src/runtime/languages/r.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAmB;IACtC,QAAQ,EAAE,GAAG;IACb,iBAAiB,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC;IACnC,aAAa,EAAE,IAAI;IAEnB,YAAY,CAAC,OAAO,EAAE,QAAQ;QAC7B,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,mBAAmB,CAAC,IAAI,EAAE,QAAQ;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,wBAAwB,OAAO,oHAAoH,IAAI,EAAE,CAAC;IAClK,CAAC;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LanguagePlugin } from "../plugin.js";
2
+ export declare const rubyPlugin: LanguagePlugin;
3
+ //# sourceMappingURL=ruby.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruby.d.ts","sourceRoot":"","sources":["../../../src/runtime/languages/ruby.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,UAAU,EAAE,cAaxB,CAAC"}
@@ -0,0 +1,13 @@
1
+ export const rubyPlugin = {
2
+ language: "ruby",
3
+ runtimeCandidates: ["ruby"],
4
+ fileExtension: ".rb",
5
+ buildCommand(runtime, filePath) {
6
+ return [runtime, filePath];
7
+ },
8
+ wrapWithFileContent(code, filePath) {
9
+ const escaped = JSON.stringify(filePath);
10
+ return `FILE_CONTENT_PATH = ${escaped}\nFILE_CONTENT = File.read(FILE_CONTENT_PATH)\n${code}`;
11
+ },
12
+ };
13
+ //# sourceMappingURL=ruby.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruby.js","sourceRoot":"","sources":["../../../src/runtime/languages/ruby.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAmB;IACzC,QAAQ,EAAE,MAAM;IAChB,iBAAiB,EAAE,CAAC,MAAM,CAAC;IAC3B,aAAa,EAAE,KAAK;IAEpB,YAAY,CAAC,OAAO,EAAE,QAAQ;QAC7B,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,mBAAmB,CAAC,IAAI,EAAE,QAAQ;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,uBAAuB,OAAO,kDAAkD,IAAI,EAAE,CAAC;IAC/F,CAAC;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LanguagePlugin } from "../plugin.js";
2
+ export declare const rustPlugin: LanguagePlugin;
3
+ //# sourceMappingURL=rust.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../../src/runtime/languages/rust.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,UAAU,EAAE,cA8BxB,CAAC"}
@@ -0,0 +1,28 @@
1
+ export const rustPlugin = {
2
+ language: "rust",
3
+ runtimeCandidates: ["rustc"],
4
+ fileExtension: ".rs",
5
+ buildCommand(_runtime, filePath) {
6
+ // For Rust, the binary path is used after compilation
7
+ return [filePath];
8
+ },
9
+ // Security fix: use execFileSync array form instead of shell string
10
+ compileStep(runtime, srcPath, binPath) {
11
+ return [runtime, srcPath, "-o", binPath];
12
+ },
13
+ preprocessCode(code) {
14
+ if (!code.includes("fn main")) {
15
+ return `fn main() {\n${code}\n}`;
16
+ }
17
+ return undefined;
18
+ },
19
+ wrapWithFileContent(code, filePath) {
20
+ const escaped = JSON.stringify(filePath);
21
+ const preamble = `use std::fs;\nlet file_content_path = ${escaped};\nlet file_content = fs::read_to_string(file_content_path).unwrap();\n`;
22
+ if (code.includes("fn main")) {
23
+ return code.replace(/fn main\s*\(\s*\)\s*\{/, `fn main() {\n${preamble}`);
24
+ }
25
+ return `fn main() {\n${preamble}${code}\n}`;
26
+ },
27
+ };
28
+ //# sourceMappingURL=rust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../src/runtime/languages/rust.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAmB;IACzC,QAAQ,EAAE,MAAM;IAChB,iBAAiB,EAAE,CAAC,OAAO,CAAC;IAC5B,aAAa,EAAE,KAAK;IAEpB,YAAY,CAAC,QAAQ,EAAE,QAAQ;QAC9B,sDAAsD;QACtD,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnB,CAAC;IAED,oEAAoE;IACpE,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO;QACpC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,cAAc,CAAC,IAAI;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,OAAO,gBAAgB,IAAI,KAAK,CAAC;QAClC,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,mBAAmB,CAAC,IAAI,EAAE,QAAQ;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,yCAAyC,OAAO,yEAAyE,CAAC;QAC3I,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,gBAAgB,QAAQ,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,gBAAgB,QAAQ,GAAG,IAAI,KAAK,CAAC;IAC7C,CAAC;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LanguagePlugin } from "../plugin.js";
2
+ export declare const shellPlugin: LanguagePlugin;
3
+ //# sourceMappingURL=shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/runtime/languages/shell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,WAAW,EAAE,cAczB,CAAC"}
@@ -0,0 +1,14 @@
1
+ export const shellPlugin = {
2
+ language: "shell",
3
+ runtimeCandidates: ["bash", "sh"],
4
+ fileExtension: ".sh",
5
+ buildCommand(runtime, filePath) {
6
+ return [runtime, filePath];
7
+ },
8
+ wrapWithFileContent(code, filePath) {
9
+ // Single-quote the path for shell safety
10
+ const escaped = filePath.replace(/'/g, "'\\''");
11
+ return `FILE_CONTENT_PATH='${escaped}'\nFILE_CONTENT=$(cat '${escaped}')\n${code}`;
12
+ },
13
+ };
14
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/runtime/languages/shell.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAmB;IAC1C,QAAQ,EAAE,OAAO;IACjB,iBAAiB,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;IACjC,aAAa,EAAE,KAAK;IAEpB,YAAY,CAAC,OAAO,EAAE,QAAQ;QAC7B,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,mBAAmB,CAAC,IAAI,EAAE,QAAQ;QACjC,yCAAyC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,sBAAsB,OAAO,0BAA0B,OAAO,OAAO,IAAI,EAAE,CAAC;IACpF,CAAC;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LanguagePlugin } from "../plugin.js";
2
+ export declare const typescriptPlugin: LanguagePlugin;
3
+ //# sourceMappingURL=typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/runtime/languages/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,gBAAgB,EAAE,cAgB9B,CAAC"}
@@ -0,0 +1,15 @@
1
+ export const typescriptPlugin = {
2
+ language: "typescript",
3
+ runtimeCandidates: ["bun", "tsx", "ts-node"],
4
+ fileExtension: ".ts",
5
+ buildCommand(runtime, filePath) {
6
+ return [runtime, filePath];
7
+ },
8
+ wrapWithFileContent(code, filePath) {
9
+ const escaped = JSON.stringify(filePath);
10
+ return `const FILE_CONTENT_PATH = ${escaped};\nconst FILE_CONTENT = require("fs").readFileSync(FILE_CONTENT_PATH, "utf-8");\n${code}`;
11
+ },
12
+ // tsx and ts-node may be .cmd shims on Windows
13
+ needsShell: process.platform === "win32",
14
+ };
15
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/runtime/languages/typescript.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC/C,QAAQ,EAAE,YAAY;IACtB,iBAAiB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC;IAC5C,aAAa,EAAE,KAAK;IAEpB,YAAY,CAAC,OAAO,EAAE,QAAQ;QAC7B,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,mBAAmB,CAAC,IAAI,EAAE,QAAQ;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,6BAA6B,OAAO,oFAAoF,IAAI,EAAE,CAAC;IACvI,CAAC;IAED,+CAA+C;IAC/C,UAAU,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;CACxC,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { Language } from "../types.js";
2
+ export interface LanguagePlugin {
3
+ /** Language identifier */
4
+ language: Language;
5
+ /** Runtime binary names to try, in preference order */
6
+ runtimeCandidates: string[];
7
+ /**
8
+ * Build the command array to execute a file.
9
+ * @param runtime The detected runtime binary (e.g. "bun", "node", "python3")
10
+ * @param filePath Path to the source file
11
+ */
12
+ buildCommand(runtime: string, filePath: string): string[];
13
+ /**
14
+ * Optional code preprocessing (e.g. add package main wrapper for Go).
15
+ * Return the transformed code, or undefined to use original.
16
+ */
17
+ preprocessCode?(code: string): string | undefined;
18
+ /**
19
+ * Wrap user code to inject FILE_CONTENT variable for execute_file.
20
+ * @param code User code
21
+ * @param filePath Path to the content file
22
+ */
23
+ wrapWithFileContent?(code: string, filePath: string): string;
24
+ /**
25
+ * File extension for temporary source files.
26
+ */
27
+ fileExtension: string;
28
+ /**
29
+ * Optional compile step before execution (e.g. rustc).
30
+ * Returns the command to run the compiled binary.
31
+ */
32
+ compileStep?(runtime: string, srcPath: string, binPath: string): string[];
33
+ /**
34
+ * Whether this language needs shell: true for spawning (e.g. .cmd shims on Windows).
35
+ */
36
+ needsShell?: boolean;
37
+ }
38
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/runtime/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC9B,0BAA0B;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IAEnB,uDAAuD;IACvD,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAE5B;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE1D;;;OAGG;IACH,cAAc,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAElD;;;;OAIG;IACH,mBAAmB,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAE7D;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,WAAW,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE1E;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/runtime/plugin.ts"],"names":[],"mappings":""}