dialog-ide 0.5.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 (225) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/LICENSE +201 -0
  3. package/README.md +211 -0
  4. package/THIRD_PARTY_LICENSES.md +157 -0
  5. package/bin/darwin-arm64/aambundle +0 -0
  6. package/bin/darwin-arm64/dgdebug +0 -0
  7. package/bin/darwin-arm64/dialogc +0 -0
  8. package/bin/dialog-lib/stddebug.dg +112 -0
  9. package/bin/dialog-lib/stdlib.dg +6730 -0
  10. package/bin/dialog-lib/unit.dg +187 -0
  11. package/dist/cli/commands/run-skein.d.ts +17 -0
  12. package/dist/cli/commands/run-skein.d.ts.map +1 -0
  13. package/dist/cli/commands/run-skein.js +105 -0
  14. package/dist/cli/commands/run-skein.js.map +1 -0
  15. package/dist/cli/commands/sources.d.ts +12 -0
  16. package/dist/cli/commands/sources.d.ts.map +1 -0
  17. package/dist/cli/commands/sources.js +42 -0
  18. package/dist/cli/commands/sources.js.map +1 -0
  19. package/dist/cli/commands/test.d.ts +9 -0
  20. package/dist/cli/commands/test.d.ts.map +1 -0
  21. package/dist/cli/commands/test.js +41 -0
  22. package/dist/cli/commands/test.js.map +1 -0
  23. package/dist/cli/context.d.ts +9 -0
  24. package/dist/cli/context.d.ts.map +1 -0
  25. package/dist/cli/context.js +78 -0
  26. package/dist/cli/context.js.map +1 -0
  27. package/dist/cli.d.ts +3 -0
  28. package/dist/cli.d.ts.map +1 -0
  29. package/dist/cli.js +32 -0
  30. package/dist/cli.js.map +1 -0
  31. package/dist/dialog-cover-resize.d.ts +2 -0
  32. package/dist/dialog-cover-resize.d.ts.map +1 -0
  33. package/dist/dialog-cover-resize.js +46 -0
  34. package/dist/dialog-cover-resize.js.map +1 -0
  35. package/dist/dialog-export.d.ts +23 -0
  36. package/dist/dialog-export.d.ts.map +1 -0
  37. package/dist/dialog-export.js +133 -0
  38. package/dist/dialog-export.js.map +1 -0
  39. package/dist/dialog-feelies.d.ts +4 -0
  40. package/dist/dialog-feelies.d.ts.map +1 -0
  41. package/dist/dialog-feelies.js +62 -0
  42. package/dist/dialog-feelies.js.map +1 -0
  43. package/dist/dialog-outline.d.ts +19 -0
  44. package/dist/dialog-outline.d.ts.map +1 -0
  45. package/dist/dialog-outline.js +122 -0
  46. package/dist/dialog-outline.js.map +1 -0
  47. package/dist/dialog-project-init.d.ts +5 -0
  48. package/dist/dialog-project-init.d.ts.map +1 -0
  49. package/dist/dialog-project-init.js +107 -0
  50. package/dist/dialog-project-init.js.map +1 -0
  51. package/dist/dialog-source-coverage.d.ts +9 -0
  52. package/dist/dialog-source-coverage.d.ts.map +1 -0
  53. package/dist/dialog-source-coverage.js +61 -0
  54. package/dist/dialog-source-coverage.js.map +1 -0
  55. package/dist/dialog-source-decoration-provider.d.ts +11 -0
  56. package/dist/dialog-source-decoration-provider.d.ts.map +1 -0
  57. package/dist/dialog-source-decoration-provider.js +79 -0
  58. package/dist/dialog-source-decoration-provider.js.map +1 -0
  59. package/dist/dialog-symbol-index.d.ts +19 -0
  60. package/dist/dialog-symbol-index.d.ts.map +1 -0
  61. package/dist/dialog-symbol-index.js +107 -0
  62. package/dist/dialog-symbol-index.js.map +1 -0
  63. package/dist/dialog-symbol-provider.d.ts +5 -0
  64. package/dist/dialog-symbol-provider.d.ts.map +1 -0
  65. package/dist/dialog-symbol-provider.js +56 -0
  66. package/dist/dialog-symbol-provider.js.map +1 -0
  67. package/dist/dialog-web-export.d.ts +25 -0
  68. package/dist/dialog-web-export.d.ts.map +1 -0
  69. package/dist/dialog-web-export.js +283 -0
  70. package/dist/dialog-web-export.js.map +1 -0
  71. package/dist/dialog-workspace-symbol-provider.d.ts +16 -0
  72. package/dist/dialog-workspace-symbol-provider.d.ts.map +1 -0
  73. package/dist/dialog-workspace-symbol-provider.js +107 -0
  74. package/dist/dialog-workspace-symbol-provider.js.map +1 -0
  75. package/dist/dialog-workspace-watcher.d.ts +22 -0
  76. package/dist/dialog-workspace-watcher.d.ts.map +1 -0
  77. package/dist/dialog-workspace-watcher.js +102 -0
  78. package/dist/dialog-workspace-watcher.js.map +1 -0
  79. package/dist/dialoged/skein/compile-error.d.ts +10 -0
  80. package/dist/dialoged/skein/compile-error.d.ts.map +1 -0
  81. package/dist/dialoged/skein/compile-error.js +28 -0
  82. package/dist/dialoged/skein/compile-error.js.map +1 -0
  83. package/dist/dialoged/skein/dynamic.d.ts +14 -0
  84. package/dist/dialoged/skein/dynamic.d.ts.map +1 -0
  85. package/dist/dialoged/skein/dynamic.js +176 -0
  86. package/dist/dialoged/skein/dynamic.js.map +1 -0
  87. package/dist/dialoged/skein/frotz-build.d.ts +10 -0
  88. package/dist/dialoged/skein/frotz-build.d.ts.map +1 -0
  89. package/dist/dialoged/skein/frotz-build.js +70 -0
  90. package/dist/dialoged/skein/frotz-build.js.map +1 -0
  91. package/dist/dialoged/skein/index.d.ts +15 -0
  92. package/dist/dialoged/skein/index.d.ts.map +1 -0
  93. package/dist/dialoged/skein/index.js +31 -0
  94. package/dist/dialoged/skein/index.js.map +1 -0
  95. package/dist/dialoged/skein/io.d.ts +15 -0
  96. package/dist/dialoged/skein/io.d.ts.map +1 -0
  97. package/dist/dialoged/skein/io.js +53 -0
  98. package/dist/dialoged/skein/io.js.map +1 -0
  99. package/dist/dialoged/skein/persistence.d.ts +13 -0
  100. package/dist/dialoged/skein/persistence.d.ts.map +1 -0
  101. package/dist/dialoged/skein/persistence.js +228 -0
  102. package/dist/dialoged/skein/persistence.js.map +1 -0
  103. package/dist/dialoged/skein/process.d.ts +38 -0
  104. package/dist/dialoged/skein/process.d.ts.map +1 -0
  105. package/dist/dialoged/skein/process.js +189 -0
  106. package/dist/dialoged/skein/process.js.map +1 -0
  107. package/dist/dialoged/skein/progress.d.ts +17 -0
  108. package/dist/dialoged/skein/progress.d.ts.map +1 -0
  109. package/dist/dialoged/skein/progress.js +9 -0
  110. package/dist/dialoged/skein/progress.js.map +1 -0
  111. package/dist/dialoged/skein/project.d.ts +44 -0
  112. package/dist/dialoged/skein/project.d.ts.map +1 -0
  113. package/dist/dialoged/skein/project.js +223 -0
  114. package/dist/dialoged/skein/project.js.map +1 -0
  115. package/dist/dialoged/skein/search.d.ts +15 -0
  116. package/dist/dialoged/skein/search.d.ts.map +1 -0
  117. package/dist/dialoged/skein/search.js +99 -0
  118. package/dist/dialoged/skein/search.js.map +1 -0
  119. package/dist/dialoged/skein/service.d.ts +91 -0
  120. package/dist/dialoged/skein/service.d.ts.map +1 -0
  121. package/dist/dialoged/skein/service.js +1097 -0
  122. package/dist/dialoged/skein/service.js.map +1 -0
  123. package/dist/dialoged/skein/session.d.ts +96 -0
  124. package/dist/dialoged/skein/session.d.ts.map +1 -0
  125. package/dist/dialoged/skein/session.js +690 -0
  126. package/dist/dialoged/skein/session.js.map +1 -0
  127. package/dist/dialoged/skein/syntax.d.ts +5 -0
  128. package/dist/dialoged/skein/syntax.d.ts.map +1 -0
  129. package/dist/dialoged/skein/syntax.js +150 -0
  130. package/dist/dialoged/skein/syntax.js.map +1 -0
  131. package/dist/dialoged/skein/trace.d.ts +31 -0
  132. package/dist/dialoged/skein/trace.d.ts.map +1 -0
  133. package/dist/dialoged/skein/trace.js +172 -0
  134. package/dist/dialoged/skein/trace.js.map +1 -0
  135. package/dist/dialoged/skein/tree.d.ts +114 -0
  136. package/dist/dialoged/skein/tree.d.ts.map +1 -0
  137. package/dist/dialoged/skein/tree.js +701 -0
  138. package/dist/dialoged/skein/tree.js.map +1 -0
  139. package/dist/dialoged/skein/ui/ansi.d.ts +4 -0
  140. package/dist/dialoged/skein/ui/ansi.d.ts.map +1 -0
  141. package/dist/dialoged/skein/ui/ansi.js +215 -0
  142. package/dist/dialoged/skein/ui/ansi.js.map +1 -0
  143. package/dist/dialoged/skein/ui/diff.d.ts +7 -0
  144. package/dist/dialoged/skein/ui/diff.d.ts.map +1 -0
  145. package/dist/dialoged/skein/ui/diff.js +17 -0
  146. package/dist/dialoged/skein/ui/diff.js.map +1 -0
  147. package/dist/dialoged/skein/ui/knot-menu.d.ts +5 -0
  148. package/dist/dialoged/skein/ui/knot-menu.d.ts.map +1 -0
  149. package/dist/dialoged/skein/ui/knot-menu.js +89 -0
  150. package/dist/dialoged/skein/ui/knot-menu.js.map +1 -0
  151. package/dist/dialoged/skein/ui/marker-colors.d.ts +5 -0
  152. package/dist/dialoged/skein/ui/marker-colors.d.ts.map +1 -0
  153. package/dist/dialoged/skein/ui/marker-colors.js +18 -0
  154. package/dist/dialoged/skein/ui/marker-colors.js.map +1 -0
  155. package/dist/dialoged/skein/ui/render.d.ts +13 -0
  156. package/dist/dialoged/skein/ui/render.d.ts.map +1 -0
  157. package/dist/dialoged/skein/ui/render.js +332 -0
  158. package/dist/dialoged/skein/ui/render.js.map +1 -0
  159. package/dist/dialoged/skein/ui/traceRender.d.ts +11 -0
  160. package/dist/dialoged/skein/ui/traceRender.d.ts.map +1 -0
  161. package/dist/dialoged/skein/ui/traceRender.js +139 -0
  162. package/dist/dialoged/skein/ui/traceRender.js.map +1 -0
  163. package/dist/dialoged/skein/ui/tree-pane.d.ts +3 -0
  164. package/dist/dialoged/skein/ui/tree-pane.d.ts.map +1 -0
  165. package/dist/dialoged/skein/ui/tree-pane.js +135 -0
  166. package/dist/dialoged/skein/ui/tree-pane.js.map +1 -0
  167. package/dist/dialoged/skein/ui/webExportPage.d.ts +29 -0
  168. package/dist/dialoged/skein/ui/webExportPage.d.ts.map +1 -0
  169. package/dist/dialoged/skein/ui/webExportPage.js +72 -0
  170. package/dist/dialoged/skein/ui/webExportPage.js.map +1 -0
  171. package/dist/extension.d.ts +4 -0
  172. package/dist/extension.d.ts.map +1 -0
  173. package/dist/extension.js +885 -0
  174. package/dist/extension.js.map +1 -0
  175. package/dist/session-runner.d.ts +23 -0
  176. package/dist/session-runner.d.ts.map +1 -0
  177. package/dist/session-runner.js +92 -0
  178. package/dist/session-runner.js.map +1 -0
  179. package/language-configuration.json +43 -0
  180. package/media/icon.png +0 -0
  181. package/media/icons/arrow-down-circle-solid.svg +3 -0
  182. package/media/icons/arrow-down-solid.svg +3 -0
  183. package/media/icons/arrow-path-solid.svg +3 -0
  184. package/media/icons/arrow-right-solid.svg +3 -0
  185. package/media/icons/arrow-up-on-square-stack-solid.svg +5 -0
  186. package/media/icons/arrow-up-solid.svg +3 -0
  187. package/media/icons/arrow-uturn-left.svg +3 -0
  188. package/media/icons/arrow-uturn-right.svg +3 -0
  189. package/media/icons/bookmark-solid.svg +3 -0
  190. package/media/icons/bug-ant-solid.svg +3 -0
  191. package/media/icons/check-badge-solid.svg +3 -0
  192. package/media/icons/check-circle-solid.svg +3 -0
  193. package/media/icons/chevron-double-down-solid.svg +4 -0
  194. package/media/icons/chevron-double-up-solid.svg +4 -0
  195. package/media/icons/command-line-solid.svg +3 -0
  196. package/media/icons/cpu-chip-solid.svg +4 -0
  197. package/media/icons/dg-file-dark.svg +6 -0
  198. package/media/icons/dg-file-light.svg +6 -0
  199. package/media/icons/ellipsis-vertical-solid.svg +3 -0
  200. package/media/icons/exclamation-triangle.svg +3 -0
  201. package/media/icons/folder-arrow-down-solid.svg +3 -0
  202. package/media/icons/globe-alt.svg +3 -0
  203. package/media/icons/lock-closed-solid.svg +3 -0
  204. package/media/icons/magnifying-glass-solid.svg +3 -0
  205. package/media/icons/pencil-solid.svg +4 -0
  206. package/media/icons/play-solid.svg +3 -0
  207. package/media/icons/plus-circle-solid.svg +3 -0
  208. package/media/icons/scissors-solid.svg +5 -0
  209. package/media/icons/tag-solid.svg +3 -0
  210. package/media/icons/trash-solid.svg +3 -0
  211. package/media/icons/x-circle-solid.svg +3 -0
  212. package/media/js/datastar.js +9 -0
  213. package/media/js/main.js +1109 -0
  214. package/media/js/skein-loader.js +10 -0
  215. package/media/js/trace-loader.js +4 -0
  216. package/media/js/trace.js +147 -0
  217. package/media/style.css +5783 -0
  218. package/package.json +231 -0
  219. package/resources/bundle/default-cover.png +0 -0
  220. package/resources/bundle/introduction-to-if.pdf +0 -0
  221. package/resources/bundle/play-if-card.pdf +1990 -1
  222. package/resources/bundle/play.css +432 -0
  223. package/resources/bundle/style.css +450 -0
  224. package/resources/dfrotz-skein-patch.dg +4 -0
  225. package/syntaxes/dialog.tmLanguage.json +490 -0
@@ -0,0 +1,44 @@
1
+ export interface ProjectSources {
2
+ main: string[];
3
+ test?: string[];
4
+ debug?: string[];
5
+ library?: string[];
6
+ }
7
+ export interface ExportConfig {
8
+ name: string;
9
+ format: 'zblorb' | 'z8' | 'aa';
10
+ includeDebug: boolean;
11
+ output: string;
12
+ dialogcOptions?: string[];
13
+ }
14
+ export interface FeelieConfig {
15
+ path: string;
16
+ name: string;
17
+ }
18
+ export interface DialogProject {
19
+ name: string;
20
+ binDir?: string;
21
+ sources: ProjectSources;
22
+ exports: ExportConfig[];
23
+ dialogcOptions?: string[];
24
+ feelies?: FeelieConfig[];
25
+ rootDir: string;
26
+ }
27
+ export declare function readProject(rootDir: string): DialogProject;
28
+ export interface ExpandSourcesOptions {
29
+ debug?: boolean;
30
+ test?: boolean;
31
+ target?: string;
32
+ prePatch?: string[];
33
+ }
34
+ export declare function expandSources(project: DialogProject, options?: ExpandSourcesOptions): string[];
35
+ export declare function isFileCoveredBySource(project: DialogProject, filePath: string): boolean;
36
+ export interface DuplicateSourceFile {
37
+ filePath: string;
38
+ categories: string[];
39
+ }
40
+ export declare function findDuplicateSourceFiles(project: DialogProject): DuplicateSourceFile[];
41
+ export declare function resolveCommandPath(binDir: string | undefined, command: string, bundledBinDir?: string): string;
42
+ export declare function resolveBundledBinDir(extensionPath: string): string | undefined;
43
+ export declare function resolveBundledLibraryDir(extensionPath: string): string | undefined;
44
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/dialoged/skein/project.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IAIf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AASD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,YAAY,EAAE,CAAC;IAKxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAoBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CA6B1D;AAsED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAgBD,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,GAAE,oBAAyB,GAAG,MAAM,EAAE,CAclG;AAUD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAevF;AAQD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAoBD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,mBAAmB,EAAE,CA+BtF;AAwCD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAIR;AASD,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI9E;AAQD,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGlF"}
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.readProject = readProject;
37
+ exports.expandSources = expandSources;
38
+ exports.isFileCoveredBySource = isFileCoveredBySource;
39
+ exports.findDuplicateSourceFiles = findDuplicateSourceFiles;
40
+ exports.resolveCommandPath = resolveCommandPath;
41
+ exports.resolveBundledBinDir = resolveBundledBinDir;
42
+ exports.resolveBundledLibraryDir = resolveBundledLibraryDir;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ function resolveBinDir(rootDir, binDir) {
46
+ if (!binDir) {
47
+ return undefined;
48
+ }
49
+ return path.isAbsolute(binDir) ? binDir : path.join(rootDir, binDir);
50
+ }
51
+ function readProject(rootDir) {
52
+ const filePath = path.join(rootDir, 'dialog.json');
53
+ if (!fs.existsSync(filePath)) {
54
+ throw new Error(`${filePath} does not exist`);
55
+ }
56
+ let parsed;
57
+ try {
58
+ parsed = JSON.parse(fs.readFileSync(filePath, 'utf8'));
59
+ }
60
+ catch (error) {
61
+ throw new Error(`Could not read ${filePath}: ${error.message}`);
62
+ }
63
+ return {
64
+ name: parsed.name ?? '',
65
+ binDir: resolveBinDir(rootDir, parsed.binDir),
66
+ sources: { main: [], ...parsed.sources },
67
+ exports: normalizeExports(parsed.exports),
68
+ dialogcOptions: normalizeDialogcOptions(parsed.dialogcOptions),
69
+ feelies: normalizeFeelies(parsed.feelies),
70
+ rootDir
71
+ };
72
+ }
73
+ function normalizeDialogcOptions(value) {
74
+ if (!Array.isArray(value) || !value.every((entry) => typeof entry === 'string')) {
75
+ return undefined;
76
+ }
77
+ return value;
78
+ }
79
+ function normalizeExports(exports) {
80
+ if (!Array.isArray(exports)) {
81
+ return [];
82
+ }
83
+ const result = [];
84
+ for (const entry of exports) {
85
+ if (entry &&
86
+ typeof entry === 'object' &&
87
+ typeof entry.name === 'string' &&
88
+ typeof entry.format === 'string' &&
89
+ typeof entry.output === 'string') {
90
+ const { name, format, output } = entry;
91
+ const dialogcOptions = normalizeDialogcOptions(entry.dialogcOptions);
92
+ result.push({
93
+ name,
94
+ format,
95
+ output,
96
+ includeDebug: Boolean(entry.includeDebug),
97
+ ...(dialogcOptions ? { dialogcOptions } : {})
98
+ });
99
+ }
100
+ else {
101
+ console.warn(`Skipping malformed dialog.json export entry: ${JSON.stringify(entry)}`);
102
+ }
103
+ }
104
+ return result;
105
+ }
106
+ function normalizeFeelies(feelies) {
107
+ if (!Array.isArray(feelies)) {
108
+ return [];
109
+ }
110
+ const result = [];
111
+ for (const entry of feelies) {
112
+ if (entry &&
113
+ typeof entry === 'object' &&
114
+ typeof entry.path === 'string' &&
115
+ typeof entry.name === 'string') {
116
+ const { path: feeliePath, name } = entry;
117
+ result.push({ path: feeliePath, name });
118
+ }
119
+ else {
120
+ console.warn(`Skipping malformed dialog.json feelie entry: ${JSON.stringify(entry)}`);
121
+ }
122
+ }
123
+ return result;
124
+ }
125
+ const TARGET_SUFFIX_RE = /\.([^.]+)\.dg$/i;
126
+ function expandSources(project, options = {}) {
127
+ const { debug = false, test = false, target, prePatch = [] } = options;
128
+ const { main, test: testSources = [], debug: debugSources = [], library = [] } = project.sources;
129
+ const entries = [
130
+ ...prePatch,
131
+ ...main,
132
+ ...(test ? testSources : []),
133
+ ...(debug ? debugSources : []),
134
+ ...library
135
+ ];
136
+ const expanded = entries.flatMap((entry) => expandSourceEntry(project.rootDir, entry));
137
+ return filterByTarget(expanded, target);
138
+ }
139
+ function isFileCoveredBySource(project, filePath) {
140
+ const resolvedFile = path.resolve(filePath);
141
+ const { main, test = [], debug = [], library = [] } = project.sources;
142
+ const entries = [...main, ...test, ...debug, ...library];
143
+ return entries.some((entry) => {
144
+ const fullPath = path.isAbsolute(entry) ? entry : path.join(project.rootDir, entry);
145
+ if (!fs.existsSync(fullPath)) {
146
+ return false;
147
+ }
148
+ if (fs.statSync(fullPath).isDirectory()) {
149
+ return path.dirname(resolvedFile) === path.resolve(fullPath);
150
+ }
151
+ return path.resolve(fullPath) === resolvedFile;
152
+ });
153
+ }
154
+ function findDuplicateSourceFiles(project) {
155
+ const { main, test = [], debug = [], library = [] } = project.sources;
156
+ const categoryEntries = [
157
+ ['main', main],
158
+ ['test', test],
159
+ ['debug', debug],
160
+ ['library', library]
161
+ ];
162
+ const categoriesByFile = new Map();
163
+ for (const [category, entries] of categoryEntries) {
164
+ for (const entry of entries) {
165
+ for (const filePath of expandSourceEntry(project.rootDir, entry)) {
166
+ const resolved = path.resolve(filePath);
167
+ const categories = categoriesByFile.get(resolved);
168
+ if (categories) {
169
+ categories.push(category);
170
+ }
171
+ else {
172
+ categoriesByFile.set(resolved, [category]);
173
+ }
174
+ }
175
+ }
176
+ }
177
+ const duplicates = [];
178
+ for (const [filePath, categories] of categoriesByFile) {
179
+ if (categories.length > 1) {
180
+ duplicates.push({ filePath, categories });
181
+ }
182
+ }
183
+ return duplicates.sort((a, b) => a.filePath.localeCompare(b.filePath));
184
+ }
185
+ function expandSourceEntry(rootDir, entry) {
186
+ const fullPath = path.isAbsolute(entry) ? entry : path.join(rootDir, entry);
187
+ if (!fs.existsSync(fullPath)) {
188
+ console.warn(`No match for ${entry}`);
189
+ return [];
190
+ }
191
+ if (fs.statSync(fullPath).isDirectory()) {
192
+ return fs
193
+ .readdirSync(fullPath)
194
+ .filter((name) => name.endsWith('.dg'))
195
+ .sort()
196
+ .map((name) => path.join(fullPath, name));
197
+ }
198
+ return [fullPath];
199
+ }
200
+ function filterByTarget(paths, target) {
201
+ if (!target) {
202
+ return paths;
203
+ }
204
+ return paths.filter((filePath) => {
205
+ const match = TARGET_SUFFIX_RE.exec(path.basename(filePath));
206
+ return !match || match[1] === target;
207
+ });
208
+ }
209
+ function resolveCommandPath(binDir, command, bundledBinDir) {
210
+ const named = process.platform === 'win32' ? `${command}.exe` : command;
211
+ const dir = binDir ?? bundledBinDir;
212
+ return dir ? path.join(dir, named) : named;
213
+ }
214
+ function resolveBundledBinDir(extensionPath) {
215
+ const dir = path.join(extensionPath, 'bin', `${process.platform}-${process.arch}`);
216
+ const named = process.platform === 'win32' ? 'dgdebug.exe' : 'dgdebug';
217
+ return fs.existsSync(path.join(dir, named)) ? dir : undefined;
218
+ }
219
+ function resolveBundledLibraryDir(extensionPath) {
220
+ const dir = path.join(extensionPath, 'bin', 'dialog-lib');
221
+ return fs.existsSync(path.join(dir, 'stdlib.dg')) ? dir : undefined;
222
+ }
223
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/dialoged/skein/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { SkeinTree } from './tree';
2
+ export type SearchField = 'label' | 'response';
3
+ export interface SearchResult {
4
+ knotId: number;
5
+ field: SearchField;
6
+ command: string;
7
+ label: string | null;
8
+ snippet: string;
9
+ }
10
+ export interface SearchResults {
11
+ results: SearchResult[];
12
+ totalMatches: number;
13
+ }
14
+ export declare function searchKnots(tree: SkeinTree, query: string): SearchResults;
15
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/dialoged/skein/search.ts"],"names":[],"mappings":"AAQA,OAAO,EAAe,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,UAAU,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;IAEnB,OAAO,EAAE,MAAM,CAAC;IAEhB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAE5B,OAAO,EAAE,YAAY,EAAE,CAAC;IAExB,YAAY,EAAE,MAAM,CAAC;CACtB;AAyHD,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CA0CzE"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.searchKnots = searchKnots;
4
+ const MAX_RESULTS = 50;
5
+ const SNIPPET_RADIUS = 60;
6
+ const ANSI_PATTERN = /\x1b\[[0-9;]*m/g;
7
+ function stripAnsi(text) {
8
+ return text.replace(ANSI_PATTERN, '');
9
+ }
10
+ function stripCommandEcho(responseText, command) {
11
+ const echo = `> ${command}\n`;
12
+ return responseText.startsWith(echo) ? responseText.slice(echo.length) : responseText;
13
+ }
14
+ function searchableResponseText(knot) {
15
+ const raw = stripAnsi(knot.state === 'new' ? knot.unblessedResponse ?? '' : knot.response);
16
+ return stripCommandEcho(raw, knot.command);
17
+ }
18
+ function queryTerms(query) {
19
+ return query
20
+ .toLowerCase()
21
+ .split(/\s+/)
22
+ .filter((term) => term.length > 0);
23
+ }
24
+ function matchesAllTerms(text, terms) {
25
+ const lower = text.toLowerCase();
26
+ return terms.every((term) => lower.includes(term));
27
+ }
28
+ function escapeHtml(text) {
29
+ return text
30
+ .replace(/&/g, '&amp;')
31
+ .replace(/</g, '&lt;')
32
+ .replace(/>/g, '&gt;')
33
+ .replace(/"/g, '&quot;')
34
+ .replace(/'/g, '&#39;');
35
+ }
36
+ function escapeRegExp(text) {
37
+ return text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
38
+ }
39
+ function highlightTerms(escapedText, terms) {
40
+ const pattern = new RegExp(`(${terms.map(escapeRegExp).join('|')})`, 'gi');
41
+ return escapedText.replace(pattern, '<mark class="bg-warning/60 rounded-sm px-0.5">$1</mark>');
42
+ }
43
+ function buildSnippet(text, terms) {
44
+ const lower = text.toLowerCase();
45
+ let matchIndex = 0;
46
+ let matchLength = 0;
47
+ let earliest = Infinity;
48
+ for (const term of terms) {
49
+ const index = lower.indexOf(term);
50
+ if (index !== -1 && index < earliest) {
51
+ earliest = index;
52
+ matchIndex = index;
53
+ matchLength = term.length;
54
+ }
55
+ }
56
+ const start = Math.max(0, matchIndex - SNIPPET_RADIUS);
57
+ const end = Math.min(text.length, matchIndex + matchLength + SNIPPET_RADIUS);
58
+ const prefix = start > 0 ? '…' : '';
59
+ const suffix = end < text.length ? '…' : '';
60
+ const window = text.slice(start, end).replace(/\s+/g, ' ').trim();
61
+ return prefix + highlightTerms(escapeHtml(window), terms) + suffix;
62
+ }
63
+ function searchKnots(tree, query) {
64
+ const terms = queryTerms(query);
65
+ if (terms.length === 0) {
66
+ return { results: [], totalMatches: 0 };
67
+ }
68
+ const results = [];
69
+ let totalMatches = 0;
70
+ const record = (knot, field, text) => {
71
+ totalMatches++;
72
+ if (results.length < MAX_RESULTS) {
73
+ results.push({
74
+ knotId: knot.id,
75
+ field,
76
+ command: escapeHtml(knot.command),
77
+ label: knot.label ? escapeHtml(knot.label) : null,
78
+ snippet: buildSnippet(text, terms)
79
+ });
80
+ }
81
+ };
82
+ const ids = tree
83
+ .getAllKnots()
84
+ .map((knot) => knot.id)
85
+ .sort((a, b) => a - b);
86
+ for (const id of ids) {
87
+ const knot = tree.getDerivedKnot(id);
88
+ const label = knot.label ? stripAnsi(knot.label) : null;
89
+ if (label && matchesAllTerms(label, terms)) {
90
+ record(knot, 'label', label);
91
+ }
92
+ const responseText = searchableResponseText(knot);
93
+ if (responseText && matchesAllTerms(responseText, terms)) {
94
+ record(knot, 'response', responseText);
95
+ }
96
+ }
97
+ return { results, totalMatches };
98
+ }
99
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/dialoged/skein/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ import { SkeinSession } from './session';
2
+ import { DialogCompileError } from './compile-error';
3
+ import { SkeinTree } from './tree';
4
+ import { ProgressHost, ProgressReporter, CancellationToken } from './progress';
5
+ export interface ServiceConfig {
6
+ port: number;
7
+ host: string;
8
+ mediaRoot: string;
9
+ grammarPath?: string;
10
+ onTraceRequested?: () => void;
11
+ onCompileError?: (error: DialogCompileError) => void;
12
+ }
13
+ export interface SseEvent {
14
+ type: string;
15
+ data: any;
16
+ }
17
+ export declare class SkeinService implements ProgressHost {
18
+ private config;
19
+ private sessions;
20
+ private isRunning;
21
+ private server;
22
+ private port;
23
+ private activeSession;
24
+ private activeSessionId;
25
+ private saveHandler;
26
+ private readonly sseClients;
27
+ private readonly onActiveSessionChange;
28
+ private cancelCurrentReplay;
29
+ private currentProgress;
30
+ private currentTrace;
31
+ private searchQuery;
32
+ private traceLoading;
33
+ private readonly traceSseClients;
34
+ private grammarPromise;
35
+ constructor(config: ServiceConfig);
36
+ start(): Promise<void>;
37
+ stop(): Promise<void>;
38
+ getPort(): number;
39
+ setActiveSession(session: SkeinSession | undefined, sessionId: string | undefined, onSave?: () => Promise<void>): void;
40
+ private currentDisplayInfo;
41
+ private currentSearchResults;
42
+ private handleRequest;
43
+ private reportIfCompileError;
44
+ private handleSendCommand;
45
+ private handleSendKeystroke;
46
+ private handleNavigateSpine;
47
+ private handleSeekStatus;
48
+ private handleKnotAction;
49
+ private handleSetLabel;
50
+ private handleSetMarker;
51
+ private handleSetMarkerFilter;
52
+ private handleInsertParent;
53
+ private handleSetCommand;
54
+ private handleSearch;
55
+ private handleReplayAll;
56
+ private handleCancelReplay;
57
+ private handleSave;
58
+ private handleCloseMenus;
59
+ private handleToggleDynamicState;
60
+ private handleTraceKnot;
61
+ private handleTraceStartup;
62
+ private handleTraceSearch;
63
+ private handleTraceToggleNode;
64
+ private handleTraceExpandCollapseAll;
65
+ private handleTraceSourcePreview;
66
+ private getGrammar;
67
+ private handleUndoRedo;
68
+ private handleSseConnect;
69
+ private broadcast;
70
+ private handleTraceSseConnect;
71
+ private broadcastTrace;
72
+ private sendTracePatch;
73
+ private sendPatch;
74
+ private broadcastScript;
75
+ private broadcastFlash;
76
+ withProgress<T>(options: {
77
+ title: string;
78
+ cancellable: boolean;
79
+ }, task: (progress: ProgressReporter, token: CancellationToken) => Promise<T>): Promise<T>;
80
+ private sendScript;
81
+ private serveStaticFile;
82
+ createSession(config: any): SkeinSession;
83
+ loadSession(tree: SkeinTree, config: any): SkeinSession;
84
+ getSession(id: string): SkeinSession | null;
85
+ getAllSessions(): SkeinSession[];
86
+ handleSkeinEndpoints(): Promise<void>;
87
+ serveUiComponents(): void;
88
+ sendSseUpdate(event: SseEvent): void;
89
+ isRunningService(): boolean;
90
+ }
91
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/dialoged/skein/service.ts"],"names":[],"mappings":"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"}