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.
- package/CHANGELOG.md +69 -0
- package/LICENSE +201 -0
- package/README.md +211 -0
- package/THIRD_PARTY_LICENSES.md +157 -0
- package/bin/darwin-arm64/aambundle +0 -0
- package/bin/darwin-arm64/dgdebug +0 -0
- package/bin/darwin-arm64/dialogc +0 -0
- package/bin/dialog-lib/stddebug.dg +112 -0
- package/bin/dialog-lib/stdlib.dg +6730 -0
- package/bin/dialog-lib/unit.dg +187 -0
- package/dist/cli/commands/run-skein.d.ts +17 -0
- package/dist/cli/commands/run-skein.d.ts.map +1 -0
- package/dist/cli/commands/run-skein.js +105 -0
- package/dist/cli/commands/run-skein.js.map +1 -0
- package/dist/cli/commands/sources.d.ts +12 -0
- package/dist/cli/commands/sources.d.ts.map +1 -0
- package/dist/cli/commands/sources.js +42 -0
- package/dist/cli/commands/sources.js.map +1 -0
- package/dist/cli/commands/test.d.ts +9 -0
- package/dist/cli/commands/test.d.ts.map +1 -0
- package/dist/cli/commands/test.js +41 -0
- package/dist/cli/commands/test.js.map +1 -0
- package/dist/cli/context.d.ts +9 -0
- package/dist/cli/context.d.ts.map +1 -0
- package/dist/cli/context.js +78 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +32 -0
- package/dist/cli.js.map +1 -0
- package/dist/dialog-cover-resize.d.ts +2 -0
- package/dist/dialog-cover-resize.d.ts.map +1 -0
- package/dist/dialog-cover-resize.js +46 -0
- package/dist/dialog-cover-resize.js.map +1 -0
- package/dist/dialog-export.d.ts +23 -0
- package/dist/dialog-export.d.ts.map +1 -0
- package/dist/dialog-export.js +133 -0
- package/dist/dialog-export.js.map +1 -0
- package/dist/dialog-feelies.d.ts +4 -0
- package/dist/dialog-feelies.d.ts.map +1 -0
- package/dist/dialog-feelies.js +62 -0
- package/dist/dialog-feelies.js.map +1 -0
- package/dist/dialog-outline.d.ts +19 -0
- package/dist/dialog-outline.d.ts.map +1 -0
- package/dist/dialog-outline.js +122 -0
- package/dist/dialog-outline.js.map +1 -0
- package/dist/dialog-project-init.d.ts +5 -0
- package/dist/dialog-project-init.d.ts.map +1 -0
- package/dist/dialog-project-init.js +107 -0
- package/dist/dialog-project-init.js.map +1 -0
- package/dist/dialog-source-coverage.d.ts +9 -0
- package/dist/dialog-source-coverage.d.ts.map +1 -0
- package/dist/dialog-source-coverage.js +61 -0
- package/dist/dialog-source-coverage.js.map +1 -0
- package/dist/dialog-source-decoration-provider.d.ts +11 -0
- package/dist/dialog-source-decoration-provider.d.ts.map +1 -0
- package/dist/dialog-source-decoration-provider.js +79 -0
- package/dist/dialog-source-decoration-provider.js.map +1 -0
- package/dist/dialog-symbol-index.d.ts +19 -0
- package/dist/dialog-symbol-index.d.ts.map +1 -0
- package/dist/dialog-symbol-index.js +107 -0
- package/dist/dialog-symbol-index.js.map +1 -0
- package/dist/dialog-symbol-provider.d.ts +5 -0
- package/dist/dialog-symbol-provider.d.ts.map +1 -0
- package/dist/dialog-symbol-provider.js +56 -0
- package/dist/dialog-symbol-provider.js.map +1 -0
- package/dist/dialog-web-export.d.ts +25 -0
- package/dist/dialog-web-export.d.ts.map +1 -0
- package/dist/dialog-web-export.js +283 -0
- package/dist/dialog-web-export.js.map +1 -0
- package/dist/dialog-workspace-symbol-provider.d.ts +16 -0
- package/dist/dialog-workspace-symbol-provider.d.ts.map +1 -0
- package/dist/dialog-workspace-symbol-provider.js +107 -0
- package/dist/dialog-workspace-symbol-provider.js.map +1 -0
- package/dist/dialog-workspace-watcher.d.ts +22 -0
- package/dist/dialog-workspace-watcher.d.ts.map +1 -0
- package/dist/dialog-workspace-watcher.js +102 -0
- package/dist/dialog-workspace-watcher.js.map +1 -0
- package/dist/dialoged/skein/compile-error.d.ts +10 -0
- package/dist/dialoged/skein/compile-error.d.ts.map +1 -0
- package/dist/dialoged/skein/compile-error.js +28 -0
- package/dist/dialoged/skein/compile-error.js.map +1 -0
- package/dist/dialoged/skein/dynamic.d.ts +14 -0
- package/dist/dialoged/skein/dynamic.d.ts.map +1 -0
- package/dist/dialoged/skein/dynamic.js +176 -0
- package/dist/dialoged/skein/dynamic.js.map +1 -0
- package/dist/dialoged/skein/frotz-build.d.ts +10 -0
- package/dist/dialoged/skein/frotz-build.d.ts.map +1 -0
- package/dist/dialoged/skein/frotz-build.js +70 -0
- package/dist/dialoged/skein/frotz-build.js.map +1 -0
- package/dist/dialoged/skein/index.d.ts +15 -0
- package/dist/dialoged/skein/index.d.ts.map +1 -0
- package/dist/dialoged/skein/index.js +31 -0
- package/dist/dialoged/skein/index.js.map +1 -0
- package/dist/dialoged/skein/io.d.ts +15 -0
- package/dist/dialoged/skein/io.d.ts.map +1 -0
- package/dist/dialoged/skein/io.js +53 -0
- package/dist/dialoged/skein/io.js.map +1 -0
- package/dist/dialoged/skein/persistence.d.ts +13 -0
- package/dist/dialoged/skein/persistence.d.ts.map +1 -0
- package/dist/dialoged/skein/persistence.js +228 -0
- package/dist/dialoged/skein/persistence.js.map +1 -0
- package/dist/dialoged/skein/process.d.ts +38 -0
- package/dist/dialoged/skein/process.d.ts.map +1 -0
- package/dist/dialoged/skein/process.js +189 -0
- package/dist/dialoged/skein/process.js.map +1 -0
- package/dist/dialoged/skein/progress.d.ts +17 -0
- package/dist/dialoged/skein/progress.d.ts.map +1 -0
- package/dist/dialoged/skein/progress.js +9 -0
- package/dist/dialoged/skein/progress.js.map +1 -0
- package/dist/dialoged/skein/project.d.ts +44 -0
- package/dist/dialoged/skein/project.d.ts.map +1 -0
- package/dist/dialoged/skein/project.js +223 -0
- package/dist/dialoged/skein/project.js.map +1 -0
- package/dist/dialoged/skein/search.d.ts +15 -0
- package/dist/dialoged/skein/search.d.ts.map +1 -0
- package/dist/dialoged/skein/search.js +99 -0
- package/dist/dialoged/skein/search.js.map +1 -0
- package/dist/dialoged/skein/service.d.ts +91 -0
- package/dist/dialoged/skein/service.d.ts.map +1 -0
- package/dist/dialoged/skein/service.js +1097 -0
- package/dist/dialoged/skein/service.js.map +1 -0
- package/dist/dialoged/skein/session.d.ts +96 -0
- package/dist/dialoged/skein/session.d.ts.map +1 -0
- package/dist/dialoged/skein/session.js +690 -0
- package/dist/dialoged/skein/session.js.map +1 -0
- package/dist/dialoged/skein/syntax.d.ts +5 -0
- package/dist/dialoged/skein/syntax.d.ts.map +1 -0
- package/dist/dialoged/skein/syntax.js +150 -0
- package/dist/dialoged/skein/syntax.js.map +1 -0
- package/dist/dialoged/skein/trace.d.ts +31 -0
- package/dist/dialoged/skein/trace.d.ts.map +1 -0
- package/dist/dialoged/skein/trace.js +172 -0
- package/dist/dialoged/skein/trace.js.map +1 -0
- package/dist/dialoged/skein/tree.d.ts +114 -0
- package/dist/dialoged/skein/tree.d.ts.map +1 -0
- package/dist/dialoged/skein/tree.js +701 -0
- package/dist/dialoged/skein/tree.js.map +1 -0
- package/dist/dialoged/skein/ui/ansi.d.ts +4 -0
- package/dist/dialoged/skein/ui/ansi.d.ts.map +1 -0
- package/dist/dialoged/skein/ui/ansi.js +215 -0
- package/dist/dialoged/skein/ui/ansi.js.map +1 -0
- package/dist/dialoged/skein/ui/diff.d.ts +7 -0
- package/dist/dialoged/skein/ui/diff.d.ts.map +1 -0
- package/dist/dialoged/skein/ui/diff.js +17 -0
- package/dist/dialoged/skein/ui/diff.js.map +1 -0
- package/dist/dialoged/skein/ui/knot-menu.d.ts +5 -0
- package/dist/dialoged/skein/ui/knot-menu.d.ts.map +1 -0
- package/dist/dialoged/skein/ui/knot-menu.js +89 -0
- package/dist/dialoged/skein/ui/knot-menu.js.map +1 -0
- package/dist/dialoged/skein/ui/marker-colors.d.ts +5 -0
- package/dist/dialoged/skein/ui/marker-colors.d.ts.map +1 -0
- package/dist/dialoged/skein/ui/marker-colors.js +18 -0
- package/dist/dialoged/skein/ui/marker-colors.js.map +1 -0
- package/dist/dialoged/skein/ui/render.d.ts +13 -0
- package/dist/dialoged/skein/ui/render.d.ts.map +1 -0
- package/dist/dialoged/skein/ui/render.js +332 -0
- package/dist/dialoged/skein/ui/render.js.map +1 -0
- package/dist/dialoged/skein/ui/traceRender.d.ts +11 -0
- package/dist/dialoged/skein/ui/traceRender.d.ts.map +1 -0
- package/dist/dialoged/skein/ui/traceRender.js +139 -0
- package/dist/dialoged/skein/ui/traceRender.js.map +1 -0
- package/dist/dialoged/skein/ui/tree-pane.d.ts +3 -0
- package/dist/dialoged/skein/ui/tree-pane.d.ts.map +1 -0
- package/dist/dialoged/skein/ui/tree-pane.js +135 -0
- package/dist/dialoged/skein/ui/tree-pane.js.map +1 -0
- package/dist/dialoged/skein/ui/webExportPage.d.ts +29 -0
- package/dist/dialoged/skein/ui/webExportPage.d.ts.map +1 -0
- package/dist/dialoged/skein/ui/webExportPage.js +72 -0
- package/dist/dialoged/skein/ui/webExportPage.js.map +1 -0
- package/dist/extension.d.ts +4 -0
- package/dist/extension.d.ts.map +1 -0
- package/dist/extension.js +885 -0
- package/dist/extension.js.map +1 -0
- package/dist/session-runner.d.ts +23 -0
- package/dist/session-runner.d.ts.map +1 -0
- package/dist/session-runner.js +92 -0
- package/dist/session-runner.js.map +1 -0
- package/language-configuration.json +43 -0
- package/media/icon.png +0 -0
- package/media/icons/arrow-down-circle-solid.svg +3 -0
- package/media/icons/arrow-down-solid.svg +3 -0
- package/media/icons/arrow-path-solid.svg +3 -0
- package/media/icons/arrow-right-solid.svg +3 -0
- package/media/icons/arrow-up-on-square-stack-solid.svg +5 -0
- package/media/icons/arrow-up-solid.svg +3 -0
- package/media/icons/arrow-uturn-left.svg +3 -0
- package/media/icons/arrow-uturn-right.svg +3 -0
- package/media/icons/bookmark-solid.svg +3 -0
- package/media/icons/bug-ant-solid.svg +3 -0
- package/media/icons/check-badge-solid.svg +3 -0
- package/media/icons/check-circle-solid.svg +3 -0
- package/media/icons/chevron-double-down-solid.svg +4 -0
- package/media/icons/chevron-double-up-solid.svg +4 -0
- package/media/icons/command-line-solid.svg +3 -0
- package/media/icons/cpu-chip-solid.svg +4 -0
- package/media/icons/dg-file-dark.svg +6 -0
- package/media/icons/dg-file-light.svg +6 -0
- package/media/icons/ellipsis-vertical-solid.svg +3 -0
- package/media/icons/exclamation-triangle.svg +3 -0
- package/media/icons/folder-arrow-down-solid.svg +3 -0
- package/media/icons/globe-alt.svg +3 -0
- package/media/icons/lock-closed-solid.svg +3 -0
- package/media/icons/magnifying-glass-solid.svg +3 -0
- package/media/icons/pencil-solid.svg +4 -0
- package/media/icons/play-solid.svg +3 -0
- package/media/icons/plus-circle-solid.svg +3 -0
- package/media/icons/scissors-solid.svg +5 -0
- package/media/icons/tag-solid.svg +3 -0
- package/media/icons/trash-solid.svg +3 -0
- package/media/icons/x-circle-solid.svg +3 -0
- package/media/js/datastar.js +9 -0
- package/media/js/main.js +1109 -0
- package/media/js/skein-loader.js +10 -0
- package/media/js/trace-loader.js +4 -0
- package/media/js/trace.js +147 -0
- package/media/style.css +5783 -0
- package/package.json +231 -0
- package/resources/bundle/default-cover.png +0 -0
- package/resources/bundle/introduction-to-if.pdf +0 -0
- package/resources/bundle/play-if-card.pdf +1990 -1
- package/resources/bundle/play.css +432 -0
- package/resources/bundle/style.css +450 -0
- package/resources/dfrotz-skein-patch.dg +4 -0
- package/syntaxes/dialog.tmLanguage.json +490 -0
|
@@ -0,0 +1,107 @@
|
|
|
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.DialogWorkspaceSymbolProvider = void 0;
|
|
37
|
+
const vscode = __importStar(require("vscode"));
|
|
38
|
+
const dialog_symbol_index_1 = require("./dialog-symbol-index");
|
|
39
|
+
const BATCH_SIZE = 32;
|
|
40
|
+
function toPosition(position) {
|
|
41
|
+
return new vscode.Position(position.line, position.character);
|
|
42
|
+
}
|
|
43
|
+
function toSymbolInformation(symbol) {
|
|
44
|
+
const kind = symbol.kind === 'topic' ? vscode.SymbolKind.Class : vscode.SymbolKind.Function;
|
|
45
|
+
const range = new vscode.Range(toPosition(symbol.selectionRange.start), toPosition(symbol.selectionRange.end));
|
|
46
|
+
const location = new vscode.Location(vscode.Uri.file(symbol.filePath), range);
|
|
47
|
+
return new vscode.SymbolInformation(symbol.name, kind, symbol.containerName, location);
|
|
48
|
+
}
|
|
49
|
+
async function loadInBatches(filePaths, index) {
|
|
50
|
+
for (let i = 0; i < filePaths.length; i += BATCH_SIZE) {
|
|
51
|
+
const batch = filePaths.slice(i, i + BATCH_SIZE);
|
|
52
|
+
await Promise.all(batch.map(async (filePath) => {
|
|
53
|
+
try {
|
|
54
|
+
index.setFile(filePath, await (0, dialog_symbol_index_1.readIndexedFile)(filePath));
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
console.error(`Failed to index ${filePath}:`, error);
|
|
58
|
+
}
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
class DialogWorkspaceSymbolProvider {
|
|
63
|
+
constructor(watcher) {
|
|
64
|
+
this.index = new dialog_symbol_index_1.DialogSymbolIndex();
|
|
65
|
+
this.watcher = watcher;
|
|
66
|
+
this.watcherSubscription = this.watcher.onDidChangeFiles((event) => this.queueFileEvent(event));
|
|
67
|
+
this.ready = this.initialize();
|
|
68
|
+
this.updateChain = this.ready;
|
|
69
|
+
}
|
|
70
|
+
async provideWorkspaceSymbols(query) {
|
|
71
|
+
await this.ready;
|
|
72
|
+
const results = [];
|
|
73
|
+
for (const symbol of this.index.search(query)) {
|
|
74
|
+
try {
|
|
75
|
+
results.push(toSymbolInformation(symbol));
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
console.error(`Failed to build a workspace symbol for "${symbol.name}" in ${symbol.filePath}:`, error);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return results;
|
|
82
|
+
}
|
|
83
|
+
dispose() {
|
|
84
|
+
this.watcherSubscription.dispose();
|
|
85
|
+
}
|
|
86
|
+
async initialize() {
|
|
87
|
+
await this.watcher.ready;
|
|
88
|
+
await loadInBatches(this.watcher.listFiles(), this.index);
|
|
89
|
+
}
|
|
90
|
+
queueFileEvent(event) {
|
|
91
|
+
this.updateChain = this.updateChain.catch(() => undefined).then(() => this.applyFileEvent(event));
|
|
92
|
+
}
|
|
93
|
+
async applyFileEvent(event) {
|
|
94
|
+
if (event.type === 'delete') {
|
|
95
|
+
this.index.removeFile(event.filePath);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
this.index.setFile(event.filePath, await (0, dialog_symbol_index_1.readIndexedFile)(event.filePath));
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
console.error(`Failed to reindex ${event.filePath}:`, error);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.DialogWorkspaceSymbolProvider = DialogWorkspaceSymbolProvider;
|
|
107
|
+
//# sourceMappingURL=dialog-workspace-symbol-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-workspace-symbol-provider.js","sourceRoot":"","sources":["../src/dialog-workspace-symbol-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as vscode from 'vscode';
|
|
2
|
+
export type DgFileChangeType = 'change' | 'create' | 'delete';
|
|
3
|
+
export interface DgFileEvent {
|
|
4
|
+
type: DgFileChangeType;
|
|
5
|
+
filePath: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class DialogWorkspaceWatcher implements vscode.Disposable {
|
|
8
|
+
private readonly emitter;
|
|
9
|
+
private readonly configEmitter;
|
|
10
|
+
private readonly watcher;
|
|
11
|
+
private readonly configWatcher;
|
|
12
|
+
private files;
|
|
13
|
+
readonly ready: Promise<void>;
|
|
14
|
+
constructor(rootDir: string | undefined);
|
|
15
|
+
listFiles(): string[];
|
|
16
|
+
onDidChangeFiles(listener: (event: DgFileEvent) => void): vscode.Disposable;
|
|
17
|
+
onDidChangeProjectConfig(listener: (type: DgFileChangeType) => void): vscode.Disposable;
|
|
18
|
+
dispose(): void;
|
|
19
|
+
private initialize;
|
|
20
|
+
private emit;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=dialog-workspace-watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-workspace-watcher.d.ts","sourceRoot":"","sources":["../src/dialog-workspace-watcher.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAGjC,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAwBD,qBAAa,sBAAuB,YAAW,MAAM,CAAC,UAAU;IAC9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAClE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+C;IAC7E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuC;IACrE,OAAO,CAAC,KAAK,CAAgB;IAC7B,SAAgB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAEzB,OAAO,EAAE,MAAM,GAAG,SAAS;IAoBvC,SAAS,IAAI,MAAM,EAAE;IAIrB,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,CAAC,UAAU;IAK3E,wBAAwB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,GAAG,MAAM,CAAC,UAAU;IAIvF,OAAO,IAAI,IAAI;YAUD,UAAU;IAOxB,OAAO,CAAC,IAAI;CASb"}
|
|
@@ -0,0 +1,102 @@
|
|
|
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.DialogWorkspaceWatcher = void 0;
|
|
37
|
+
const vscode = __importStar(require("vscode"));
|
|
38
|
+
const project_1 = require("./dialoged/skein/project");
|
|
39
|
+
async function resolveDgFiles(rootDir) {
|
|
40
|
+
if (rootDir) {
|
|
41
|
+
try {
|
|
42
|
+
const project = (0, project_1.readProject)(rootDir);
|
|
43
|
+
return (0, project_1.expandSources)(project, { test: true, debug: true });
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const pattern = rootDir ? new vscode.RelativePattern(rootDir, '**/*.dg') : '**/*.dg';
|
|
49
|
+
const uris = await vscode.workspace.findFiles(pattern, '**/{node_modules,.git}/**');
|
|
50
|
+
return uris.map((uri) => uri.fsPath);
|
|
51
|
+
}
|
|
52
|
+
class DialogWorkspaceWatcher {
|
|
53
|
+
constructor(rootDir) {
|
|
54
|
+
this.emitter = new vscode.EventEmitter();
|
|
55
|
+
this.configEmitter = new vscode.EventEmitter();
|
|
56
|
+
this.files = [];
|
|
57
|
+
this.ready = this.initialize(rootDir);
|
|
58
|
+
if (rootDir) {
|
|
59
|
+
this.watcher = vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(rootDir, '**/*.dg'));
|
|
60
|
+
this.watcher.onDidChange((uri) => this.emit('change', uri));
|
|
61
|
+
this.watcher.onDidCreate((uri) => this.emit('create', uri));
|
|
62
|
+
this.watcher.onDidDelete((uri) => this.emit('delete', uri));
|
|
63
|
+
this.configWatcher = vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(rootDir, 'dialog.json'));
|
|
64
|
+
this.configWatcher.onDidChange(() => this.configEmitter.fire('change'));
|
|
65
|
+
this.configWatcher.onDidCreate(() => this.configEmitter.fire('create'));
|
|
66
|
+
this.configWatcher.onDidDelete(() => this.configEmitter.fire('delete'));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
listFiles() {
|
|
70
|
+
return this.files;
|
|
71
|
+
}
|
|
72
|
+
onDidChangeFiles(listener) {
|
|
73
|
+
return this.emitter.event(listener);
|
|
74
|
+
}
|
|
75
|
+
onDidChangeProjectConfig(listener) {
|
|
76
|
+
return this.configEmitter.event(listener);
|
|
77
|
+
}
|
|
78
|
+
dispose() {
|
|
79
|
+
this.watcher?.dispose();
|
|
80
|
+
this.configWatcher?.dispose();
|
|
81
|
+
this.emitter.dispose();
|
|
82
|
+
this.configEmitter.dispose();
|
|
83
|
+
}
|
|
84
|
+
async initialize(rootDir) {
|
|
85
|
+
const discovered = await resolveDgFiles(rootDir);
|
|
86
|
+
const merged = new Set(this.files);
|
|
87
|
+
discovered.forEach((filePath) => merged.add(filePath));
|
|
88
|
+
this.files = Array.from(merged);
|
|
89
|
+
}
|
|
90
|
+
emit(type, uri) {
|
|
91
|
+
const filePath = uri.fsPath;
|
|
92
|
+
if (type === 'delete') {
|
|
93
|
+
this.files = this.files.filter((existing) => existing !== filePath);
|
|
94
|
+
}
|
|
95
|
+
else if (!this.files.includes(filePath)) {
|
|
96
|
+
this.files.push(filePath);
|
|
97
|
+
}
|
|
98
|
+
this.emitter.fire({ type, filePath });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.DialogWorkspaceWatcher = DialogWorkspaceWatcher;
|
|
102
|
+
//# sourceMappingURL=dialog-workspace-watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-workspace-watcher.js","sourceRoot":"","sources":["../src/dialog-workspace-watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class DialogCompileError extends Error {
|
|
2
|
+
readonly filePath: string | null;
|
|
3
|
+
readonly line: number | null;
|
|
4
|
+
constructor(rawOutput: string);
|
|
5
|
+
}
|
|
6
|
+
export declare function parseErrorLocation(plainText: string): {
|
|
7
|
+
filePath: string;
|
|
8
|
+
line: number;
|
|
9
|
+
} | null;
|
|
10
|
+
//# sourceMappingURL=compile-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-error.d.ts","sourceRoot":"","sources":["../../../src/dialoged/skein/compile-error.ts"],"names":[],"mappings":"AAWA,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,SAAgB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,SAAgB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;gBAExB,SAAS,EAAE,MAAM;CAQ9B;AAgBD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAM/F"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DialogCompileError = void 0;
|
|
4
|
+
exports.parseErrorLocation = parseErrorLocation;
|
|
5
|
+
class DialogCompileError extends Error {
|
|
6
|
+
constructor(rawOutput) {
|
|
7
|
+
const plain = stripAnsi(rawOutput).trim();
|
|
8
|
+
super(plain || 'dgdebug exited before starting - check the Dialog source for errors.');
|
|
9
|
+
this.name = 'DialogCompileError';
|
|
10
|
+
const location = parseErrorLocation(plain);
|
|
11
|
+
this.filePath = location?.filePath ?? null;
|
|
12
|
+
this.line = location?.line ?? null;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.DialogCompileError = DialogCompileError;
|
|
16
|
+
const ANSI_PATTERN = /\x1b\[[0-9;]*m/g;
|
|
17
|
+
function stripAnsi(text) {
|
|
18
|
+
return text.replace(ANSI_PATTERN, '');
|
|
19
|
+
}
|
|
20
|
+
const ERROR_LOCATION_RE = /Error:\s+(.+?),\s+line\s+(\d+):/;
|
|
21
|
+
function parseErrorLocation(plainText) {
|
|
22
|
+
const match = ERROR_LOCATION_RE.exec(plainText);
|
|
23
|
+
if (!match) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
return { filePath: match[1].trim(), line: parseInt(match[2], 10) };
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=compile-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-error.js","sourceRoot":"","sources":["../../../src/dialoged/skein/compile-error.ts"],"names":[],"mappings":";;;AAuCA,gDAMC;AAlCD,MAAa,kBAAmB,SAAQ,KAAK;IAI3C,YAAY,SAAiB;QAC3B,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,KAAK,CAAC,KAAK,IAAI,sEAAsE,CAAC,CAAC;QACvF,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC;IACrC,CAAC;CACF;AAZD,gDAYC;AAGD,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAEvC,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,iBAAiB,GAAG,iCAAiC,CAAC;AAO5D,SAAgB,kBAAkB,CAAC,SAAiB;IAClD,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface DynamicState {
|
|
2
|
+
flags: Set<string>;
|
|
3
|
+
vars: Record<string, string>;
|
|
4
|
+
}
|
|
5
|
+
export interface DynamicChanges {
|
|
6
|
+
added: Set<string>;
|
|
7
|
+
removed: Set<string>;
|
|
8
|
+
changed: Set<[string, string]>;
|
|
9
|
+
}
|
|
10
|
+
export declare class DynamicProcessor {
|
|
11
|
+
parse(response: string): DynamicState;
|
|
12
|
+
diff(before: DynamicState, after: DynamicState): DynamicChanges;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=dynamic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic.d.ts","sourceRoot":"","sources":["../../../src/dialoged/skein/dynamic.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAKD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAChC;AAuLD,qBAAa,gBAAgB;IAIpB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY;IAarC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,cAAc;CAkCvE"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DynamicProcessor = void 0;
|
|
4
|
+
const ansi_1 = require("./ui/ansi");
|
|
5
|
+
const SECTION_HEADER_RE = /^[A-Z \-]+$/;
|
|
6
|
+
const FACT_VALUE_RE = /^(\(.+\))\s+(.*)$/;
|
|
7
|
+
const OBJECT_VALUE_RE = /^(\S+)\s+(.+)$/;
|
|
8
|
+
const PARENT_PATTERN = '($ has parent $)';
|
|
9
|
+
const RELATION_PATTERN = '($ has relation $)';
|
|
10
|
+
const LOCATION_PATTERN = '($ is $ $)';
|
|
11
|
+
function isSoftEnd(line) {
|
|
12
|
+
return line === undefined || line === '' || line.startsWith('(');
|
|
13
|
+
}
|
|
14
|
+
function preParse(lines) {
|
|
15
|
+
const result = [];
|
|
16
|
+
let prior = null;
|
|
17
|
+
const flush = () => {
|
|
18
|
+
if (prior !== null) {
|
|
19
|
+
result.push(prior);
|
|
20
|
+
prior = null;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
for (const line of lines) {
|
|
24
|
+
if (line.trim() === '') {
|
|
25
|
+
flush();
|
|
26
|
+
result.push('');
|
|
27
|
+
}
|
|
28
|
+
else if (SECTION_HEADER_RE.test(line)) {
|
|
29
|
+
flush();
|
|
30
|
+
result.push(line);
|
|
31
|
+
}
|
|
32
|
+
else if (line.startsWith(' ')) {
|
|
33
|
+
flush();
|
|
34
|
+
prior = line.trim();
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const base = prior ?? '';
|
|
38
|
+
prior = base.endsWith('-') ? base + line : `${base}${base ? ' ' : ''}${line}`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
flush();
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
function parseSections(lines) {
|
|
45
|
+
const globalFlags = new Set();
|
|
46
|
+
const objectFlags = {};
|
|
47
|
+
const globalVars = {};
|
|
48
|
+
const objectVars = {};
|
|
49
|
+
let i = 0;
|
|
50
|
+
while (i < lines.length && lines[i] !== 'PER-OBJECT FLAGS') {
|
|
51
|
+
const line = lines[i++];
|
|
52
|
+
if (line === '')
|
|
53
|
+
continue;
|
|
54
|
+
const match = FACT_VALUE_RE.exec(line);
|
|
55
|
+
if (match && match[2].startsWith('on')) {
|
|
56
|
+
globalFlags.add(match[1]);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
i++;
|
|
60
|
+
while (i < lines.length && lines[i] !== 'GLOBAL VARIABLES') {
|
|
61
|
+
const fact = lines[i++];
|
|
62
|
+
if (fact === '')
|
|
63
|
+
continue;
|
|
64
|
+
if (!isSoftEnd(lines[i])) {
|
|
65
|
+
objectFlags[fact] = lines[i].trim().split(/\s+/);
|
|
66
|
+
i++;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
i++;
|
|
70
|
+
while (i < lines.length && lines[i] !== 'PER-OBJECT VARIABLES') {
|
|
71
|
+
const line = lines[i++];
|
|
72
|
+
if (line === '')
|
|
73
|
+
continue;
|
|
74
|
+
const match = FACT_VALUE_RE.exec(line);
|
|
75
|
+
if (match && match[2] !== '<unset>') {
|
|
76
|
+
globalVars[match[1]] = match[2];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
i++;
|
|
80
|
+
while (i < lines.length) {
|
|
81
|
+
const fact = lines[i++];
|
|
82
|
+
if (fact === '')
|
|
83
|
+
continue;
|
|
84
|
+
const values = [];
|
|
85
|
+
while (i < lines.length && !isSoftEnd(lines[i])) {
|
|
86
|
+
const match = OBJECT_VALUE_RE.exec(lines[i]);
|
|
87
|
+
if (match) {
|
|
88
|
+
values.push([match[1], match[2]]);
|
|
89
|
+
}
|
|
90
|
+
i++;
|
|
91
|
+
}
|
|
92
|
+
if (values.length > 0) {
|
|
93
|
+
objectVars[fact] = values;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return { globalFlags, objectFlags, globalVars, objectVars };
|
|
97
|
+
}
|
|
98
|
+
function flattenPred(patternName, value) {
|
|
99
|
+
return patternName.replace('$', value);
|
|
100
|
+
}
|
|
101
|
+
function flattenPredMulti(patternName, ...values) {
|
|
102
|
+
return values.reduce((acc, value) => flattenPred(acc, value), patternName);
|
|
103
|
+
}
|
|
104
|
+
function flattenPredicates(sections) {
|
|
105
|
+
const { globalFlags, objectFlags, globalVars, objectVars } = sections;
|
|
106
|
+
const flags = new Set(globalFlags);
|
|
107
|
+
for (const [pattern, objectNames] of Object.entries(objectFlags)) {
|
|
108
|
+
for (const objectName of objectNames) {
|
|
109
|
+
flags.add(flattenPred(pattern, objectName));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const vars = {};
|
|
113
|
+
for (const [pattern, value] of Object.entries(globalVars)) {
|
|
114
|
+
vars[pattern] = flattenPred(pattern, value);
|
|
115
|
+
}
|
|
116
|
+
for (const [pattern, pairs] of Object.entries(objectVars)) {
|
|
117
|
+
if (pattern === PARENT_PATTERN || pattern === RELATION_PATTERN) {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
for (const [objectName, value] of pairs) {
|
|
121
|
+
vars[flattenPred(pattern, objectName)] = flattenPredMulti(pattern, objectName, value);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
const relationByObject = new Map();
|
|
125
|
+
for (const [objectName, relation] of objectVars[RELATION_PATTERN] ?? []) {
|
|
126
|
+
relationByObject.set(objectName, relation);
|
|
127
|
+
}
|
|
128
|
+
for (const [objectName, parent] of objectVars[PARENT_PATTERN] ?? []) {
|
|
129
|
+
const relation = relationByObject.get(objectName) ?? '<unset>';
|
|
130
|
+
vars[flattenPred(LOCATION_PATTERN, objectName)] =
|
|
131
|
+
flattenPredMulti(LOCATION_PATTERN, objectName, relation, parent);
|
|
132
|
+
}
|
|
133
|
+
return { flags, vars };
|
|
134
|
+
}
|
|
135
|
+
class DynamicProcessor {
|
|
136
|
+
parse(response) {
|
|
137
|
+
const lines = (0, ansi_1.stripAnsi)(response).split('\n');
|
|
138
|
+
const preParsed = preParse(lines.slice(2));
|
|
139
|
+
return flattenPredicates(parseSections(preParsed));
|
|
140
|
+
}
|
|
141
|
+
diff(before, after) {
|
|
142
|
+
const added = new Set();
|
|
143
|
+
const removed = new Set();
|
|
144
|
+
const changed = new Set();
|
|
145
|
+
for (const flag of after.flags) {
|
|
146
|
+
if (!before.flags.has(flag)) {
|
|
147
|
+
added.add(flag);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
for (const flag of before.flags) {
|
|
151
|
+
if (!after.flags.has(flag)) {
|
|
152
|
+
removed.add(flag);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
const allKeys = new Set([...Object.keys(before.vars), ...Object.keys(after.vars)]);
|
|
156
|
+
for (const key of allKeys) {
|
|
157
|
+
const beforeValue = before.vars[key];
|
|
158
|
+
const afterValue = after.vars[key];
|
|
159
|
+
if (beforeValue === afterValue) {
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
if (beforeValue !== undefined && afterValue !== undefined) {
|
|
163
|
+
changed.add([beforeValue, afterValue]);
|
|
164
|
+
}
|
|
165
|
+
else if (beforeValue !== undefined) {
|
|
166
|
+
removed.add(beforeValue);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
added.add(afterValue);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return { added, removed, changed };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
exports.DynamicProcessor = DynamicProcessor;
|
|
176
|
+
//# sourceMappingURL=dynamic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic.js","sourceRoot":"","sources":["../../../src/dialoged/skein/dynamic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DialogProject } from './project';
|
|
2
|
+
export interface FrotzBuildConfig {
|
|
3
|
+
project: DialogProject;
|
|
4
|
+
engine: 'frotz' | 'frotz-release';
|
|
5
|
+
binDir?: string;
|
|
6
|
+
bundledBinDir?: string;
|
|
7
|
+
patchSourcePath: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function buildFrotzGame(config: FrotzBuildConfig): Promise<string>;
|
|
10
|
+
//# sourceMappingURL=frotz-build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frotz-build.d.ts","sourceRoot":"","sources":["../../../src/dialoged/skein/frotz-build.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAqC,MAAM,WAAW,CAAC;AAK7E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,OAAO,GAAG,eAAe,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAwBD,wBAAsB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB9E"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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.buildFrotzGame = buildFrotzGame;
|
|
37
|
+
const child_process_1 = require("child_process");
|
|
38
|
+
const util_1 = require("util");
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const os = __importStar(require("os"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const project_1 = require("./project");
|
|
43
|
+
const compile_error_1 = require("./compile-error");
|
|
44
|
+
const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
|
|
45
|
+
function sanitizeForPath(name) {
|
|
46
|
+
return name.replace(/[^a-zA-Z0-9_-]+/g, '-') || 'project';
|
|
47
|
+
}
|
|
48
|
+
function gamePathFor(project, engine) {
|
|
49
|
+
return path.join(os.tmpdir(), 'dialog-ide-skein', sanitizeForPath(project.name), engine, `${project.name}.zblorb`);
|
|
50
|
+
}
|
|
51
|
+
async function buildFrotzGame(config) {
|
|
52
|
+
const { project, engine, binDir, bundledBinDir, patchSourcePath } = config;
|
|
53
|
+
const dialogcPath = (0, project_1.resolveCommandPath)(binDir, 'dialogc', bundledBinDir);
|
|
54
|
+
const sourceFiles = (0, project_1.expandSources)(project, {
|
|
55
|
+
debug: engine === 'frotz',
|
|
56
|
+
target: 'zblorb',
|
|
57
|
+
prePatch: [patchSourcePath]
|
|
58
|
+
});
|
|
59
|
+
const gamePath = gamePathFor(project, engine);
|
|
60
|
+
await fs.promises.mkdir(path.dirname(gamePath), { recursive: true });
|
|
61
|
+
try {
|
|
62
|
+
await execFileAsync(dialogcPath, ['-t', 'zblorb', '-o', gamePath, ...sourceFiles]);
|
|
63
|
+
return gamePath;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
const stderr = error.stderr ?? error.message;
|
|
67
|
+
throw new compile_error_1.DialogCompileError(stderr);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=frotz-build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frotz-build.js","sourceRoot":"","sources":["../../../src/dialoged/skein/frotz-build.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA,wCAmBC;AA3DD,iDAAyC;AACzC,+BAAiC;AACjC,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,uCAA6E;AAC7E,mDAAqD;AAErD,MAAM,aAAa,GAAG,IAAA,gBAAS,EAAC,wBAAQ,CAAC,CAAC;AAY1C,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC;AAC5D,CAAC;AAOD,SAAS,WAAW,CAAC,OAAsB,EAAE,MAAiC;IAC5E,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,kBAAkB,EAAE,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC;AACrH,CAAC;AASM,KAAK,UAAU,cAAc,CAAC,MAAwB;IAC3D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IAC3E,MAAM,WAAW,GAAG,IAAA,4BAAkB,EAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,IAAA,uBAAa,EAAC,OAAO,EAAE;QACzC,KAAK,EAAE,MAAM,KAAK,OAAO;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,CAAC,eAAe,CAAC;KAC5B,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAE9C,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAErE,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;QACnF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAI,KAA6B,CAAC,MAAM,IAAK,KAAe,CAAC,OAAO,CAAC;QACjF,MAAM,IAAI,kCAAkB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export * from './process';
|
|
2
|
+
export * from './session';
|
|
3
|
+
export * from './compile-error';
|
|
4
|
+
export * from './tree';
|
|
5
|
+
export * from './service';
|
|
6
|
+
export * from './dynamic';
|
|
7
|
+
export * from './persistence';
|
|
8
|
+
export * from './io';
|
|
9
|
+
export * from './project';
|
|
10
|
+
export * from './progress';
|
|
11
|
+
export * from './trace';
|
|
12
|
+
export * from './frotz-build';
|
|
13
|
+
export * from './syntax';
|
|
14
|
+
export * from './search';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dialoged/skein/index.ts"],"names":[],"mappings":"AAIA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,MAAM,CAAC;AACrB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./process"), exports);
|
|
18
|
+
__exportStar(require("./session"), exports);
|
|
19
|
+
__exportStar(require("./compile-error"), exports);
|
|
20
|
+
__exportStar(require("./tree"), exports);
|
|
21
|
+
__exportStar(require("./service"), exports);
|
|
22
|
+
__exportStar(require("./dynamic"), exports);
|
|
23
|
+
__exportStar(require("./persistence"), exports);
|
|
24
|
+
__exportStar(require("./io"), exports);
|
|
25
|
+
__exportStar(require("./project"), exports);
|
|
26
|
+
__exportStar(require("./progress"), exports);
|
|
27
|
+
__exportStar(require("./trace"), exports);
|
|
28
|
+
__exportStar(require("./frotz-build"), exports);
|
|
29
|
+
__exportStar(require("./syntax"), exports);
|
|
30
|
+
__exportStar(require("./search"), exports);
|
|
31
|
+
//# sourceMappingURL=index.js.map
|