@appland/appmap 3.184.0 → 3.185.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 CHANGED
@@ -1,3 +1,11 @@
1
+ # [@appland/appmap-v3.185.0](https://github.com/getappmap/appmap-js/compare/@appland/appmap-v3.184.0...@appland/appmap-v3.185.0) (2025-02-05)
2
+
3
+
4
+ ### Features
5
+
6
+ * Add basic memory persistence to Windows ([e5402af](https://github.com/getappmap/appmap-js/commit/e5402af09e693de5e482df2b22133aba95b15b13))
7
+ * Support for file exclusion patterns in Navie ([2d1dcdf](https://github.com/getappmap/appmap-js/commit/2d1dcdf8caea5338be33da71ecb73900f0aa6882))
8
+
1
9
  # [@appland/appmap-v3.184.0](https://github.com/getappmap/appmap-js/compare/@appland/appmap-v3.183.0...@appland/appmap-v3.184.0) (2025-01-29)
2
10
 
3
11
 
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _a, _ContentRestrictions_global, _ContentRestrictions_local, _ContentRestrictions_instance;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const node_fs_1 = require("node:fs");
16
+ const node_os_1 = require("node:os");
17
+ const node_path_1 = require("node:path");
18
+ const minimatch_1 = require("minimatch");
19
+ class ContentRestrictions {
20
+ constructor() {
21
+ this.localRequired = false;
22
+ _ContentRestrictions_global.set(this, void 0);
23
+ _ContentRestrictions_local.set(this, new Map());
24
+ this.loadDefaults();
25
+ }
26
+ setGlobalRestrictions(restrictions) {
27
+ __classPrivateFieldSet(this, _ContentRestrictions_global, restrictions.map(makePattern), "f");
28
+ }
29
+ setLocalRestrictions(root, restrictions) {
30
+ __classPrivateFieldGet(this, _ContentRestrictions_local, "f").set(normalizeAbsolute(root), restrictions.map(makePattern));
31
+ }
32
+ safeRestricted(rootOrAbsolute, relative) {
33
+ try {
34
+ return this.isRestricted(rootOrAbsolute, relative);
35
+ }
36
+ catch (e) {
37
+ console.error(e);
38
+ return true;
39
+ }
40
+ }
41
+ isRestricted(rootOrAbsolute, relative) {
42
+ const normalized = normalizeAbsolute(rootOrAbsolute);
43
+ if (relative)
44
+ return this.isRestrictedImpl(normalized, relative);
45
+ else {
46
+ const root = [...__classPrivateFieldGet(this, _ContentRestrictions_local, "f").keys()].find((r) => normalized.startsWith(r));
47
+ if (root)
48
+ return this.isRestrictedImpl(root, normalized.slice(root.length + 1));
49
+ else if (this.localRequired)
50
+ throw new Error(`No local restrictions for path ${normalized}`);
51
+ else
52
+ return this.isRestrictedImpl('', normalized);
53
+ }
54
+ }
55
+ isRestrictedImpl(root, path) {
56
+ let normalized = path.replaceAll('\\', '/');
57
+ if (normalized.startsWith('/'))
58
+ normalized = normalized.slice(1);
59
+ if (__classPrivateFieldGet(this, _ContentRestrictions_global, "f")) {
60
+ for (const matcher of __classPrivateFieldGet(this, _ContentRestrictions_global, "f")) {
61
+ if (matcher.match(normalized))
62
+ return true;
63
+ }
64
+ }
65
+ const localRestrictions = __classPrivateFieldGet(this, _ContentRestrictions_local, "f").get(root);
66
+ if (localRestrictions) {
67
+ for (const matcher of localRestrictions) {
68
+ if (matcher.match(normalized))
69
+ return true;
70
+ }
71
+ }
72
+ else if (this.localRequired)
73
+ throw new Error(`No local restrictions for root ${root}`);
74
+ return false;
75
+ }
76
+ reset() {
77
+ __classPrivateFieldSet(this, _ContentRestrictions_global, undefined, "f");
78
+ __classPrivateFieldGet(this, _ContentRestrictions_local, "f").clear();
79
+ }
80
+ loadDefaults() {
81
+ this.setGlobalRestrictions(getDefaultPatterns());
82
+ }
83
+ static get instance() {
84
+ if (!__classPrivateFieldGet(this, _a, "f", _ContentRestrictions_instance))
85
+ __classPrivateFieldSet(this, _a, new ContentRestrictions(), "f", _ContentRestrictions_instance);
86
+ return __classPrivateFieldGet(this, _a, "f", _ContentRestrictions_instance);
87
+ }
88
+ }
89
+ exports.default = ContentRestrictions;
90
+ _a = ContentRestrictions, _ContentRestrictions_global = new WeakMap(), _ContentRestrictions_local = new WeakMap();
91
+ _ContentRestrictions_instance = { value: void 0 };
92
+ function makePattern(pattern) {
93
+ let pat = pattern;
94
+ // patterns starting with a slash are relative to the project root
95
+ if (pat.startsWith('/'))
96
+ pat = pat.slice(1);
97
+ // others can be anywhere
98
+ else
99
+ pat = '**/' + pat;
100
+ return new minimatch_1.Minimatch(pat, { dot: true, matchBase: true });
101
+ }
102
+ function normalizeAbsolute(path) {
103
+ let normalized = path;
104
+ // lower case the first character so windows drives are all lower case
105
+ if (normalized[0] >= 'A' && normalized[0] <= 'Z')
106
+ normalized = normalized[0].toLowerCase() + normalized.slice(1);
107
+ return normalized.replaceAll('\\', '/');
108
+ }
109
+ /*
110
+ * tries to read the global patterns from a
111
+ * config file or fall back to hardcoded list
112
+ */
113
+ function getDefaultPatterns() {
114
+ // TODO: is there a better place to put this code?
115
+ const configPath = (0, node_path_1.join)((0, node_os_1.homedir)(), '.appmap', 'navie', 'global-ignore');
116
+ try {
117
+ return (0, node_fs_1.readFileSync)(configPath, 'utf-8')
118
+ .split('\n')
119
+ .map((s) => s.trim());
120
+ }
121
+ catch (e) {
122
+ console.warn(`Using default content restriction list, you can override it in ${configPath}`);
123
+ return DEFAULT_PATTERNS;
124
+ }
125
+ }
126
+ const DEFAULT_PATTERNS = [
127
+ 'config/**',
128
+ 'db_config/**',
129
+ 'db-scripts/**',
130
+ 'backups/**',
131
+ '.vscode/**',
132
+ 'config*.json',
133
+ 'db_config*.json',
134
+ 'application*.properties',
135
+ 'web*.config',
136
+ 'app*.config',
137
+ '*.pem',
138
+ '*.key',
139
+ '*.crt',
140
+ '*.log',
141
+ 'config*.yaml',
142
+ 'application*.yaml',
143
+ 'application*.yml',
144
+ 'config*.yml',
145
+ 'database*.yml',
146
+ 'config*.groovy',
147
+ 'config*.py',
148
+ 'config*.js',
149
+ 'hibernate.cfg*.yml',
150
+ 'pom.xml',
151
+ 'settings*.js',
152
+ 'settings*.py',
153
+ '*.ini',
154
+ '*.env',
155
+ '**/SWIFT/*.xml',
156
+ '*.csv',
157
+ '**/src/main/resources/*.properties',
158
+ '**/src/main/resources/*.yaml',
159
+ '**/src/main/resources/*.yml',
160
+ '**/src/main/resources/*.json',
161
+ '**/src/main/resources/*.xml',
162
+ ];
163
+ //# sourceMappingURL=ContentRestrictions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentRestrictions.js","sourceRoot":"","sources":["../../../src/rpc/explain/ContentRestrictions.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,9 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar
18
18
  function reject(value) { resume("throw", value); }
19
19
  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
20
20
  };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
21
24
  Object.defineProperty(exports, "__esModule", { value: true });
22
25
  const console_1 = require("console");
23
26
  const promises_1 = require("node:fs/promises");
@@ -25,6 +28,7 @@ const node_path_1 = require("node:path");
25
28
  const navie_1 = require("@appland/navie");
26
29
  const search_1 = require("@appland/search");
27
30
  const utils_1 = require("../../utils");
31
+ const ContentRestrictions_1 = __importDefault(require("./ContentRestrictions"));
28
32
  /**
29
33
  * Collect context information from specified locations
30
34
  * within source directories. It reads the contents of files at these locations and extracts code snippets
@@ -68,12 +72,19 @@ async function collectLocationContext(sourceDirectories, locations, explicitFile
68
72
  .map((loc) => loc.location.toString())
69
73
  .join(', ')}`);
70
74
  for (const { location, directory } of candidateLocations) {
71
- let pathTokens = [];
72
- if ((0, node_path_1.isAbsolute)(location.path))
73
- pathTokens = [location.path];
74
- else if (directory)
75
- pathTokens = [directory, location.path].filter(Boolean);
76
- const path = (0, node_path_1.join)(...pathTokens);
75
+ const path = (0, node_path_1.join)(directory, location.path);
76
+ if (ContentRestrictions_1.default.instance.safeRestricted(directory, location.path)) {
77
+ if ((0, utils_1.verbose)())
78
+ (0, console_1.warn)(`[location-context] Skipping restricted location: ${path}`);
79
+ result.push({
80
+ type: navie_1.ContextV2.ContextItemType.CodeSnippet,
81
+ // TODO: tell the client out of band
82
+ content: '[file content access denied by security policy]',
83
+ location: location.toString(),
84
+ directory,
85
+ });
86
+ continue;
87
+ }
77
88
  const stats = await (0, promises_1.stat)(path).catch(() => undefined);
78
89
  if (!stats) {
79
90
  if ((0, utils_1.verbose)())
@@ -1 +1 @@
1
- {"version":3,"file":"collect-location-context.js","sourceRoot":"","sources":["../../../src/rpc/explain/collect-location-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collect-location-context.js","sourceRoot":"","sources":["../../../src/rpc/explain/collect-location-context.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ const debug_1 = __importDefault(require("debug"));
9
9
  const search_1 = require("@appland/search");
10
10
  const filter_patterns_1 = require("./filter-patterns");
11
11
  const build_index_in_temp_dir_1 = __importDefault(require("./build-index-in-temp-dir"));
12
+ const ContentRestrictions_1 = __importDefault(require("../ContentRestrictions"));
12
13
  const debug = (0, debug_1.default)('appmap:index:project-files');
13
14
  function fileFilter(includePatterns, excludePatterns) {
14
15
  return async (path) => {
@@ -20,6 +21,10 @@ function fileFilter(includePatterns, excludePatterns) {
20
21
  const includeFile = (0, filter_patterns_1.fileNameMatchesFilterPatterns)(path, includePatterns, excludePatterns);
21
22
  if (!includeFile)
22
23
  return false;
24
+ if (ContentRestrictions_1.default.instance.safeRestricted(path)) {
25
+ debug('Skipping restricted file: %s', path);
26
+ return false;
27
+ }
23
28
  const isData = (0, search_1.isDataFile)(path);
24
29
  if (isData && (await (0, search_1.isLargeFile)(path))) {
25
30
  debug('Skipping large data file: %s', path);
@@ -1 +1 @@
1
- {"version":3,"file":"project-file-index.js","sourceRoot":"","sources":["../../../../src/rpc/explain/index/project-file-index.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAqC;AACrC,kDAA8B;AAE9B,4CAYyB;AACzB,uDAAkE;AAElE,wFAAgF;AAEhF,MAAM,KAAK,GAAG,IAAA,eAAS,EAAC,4BAA4B,CAAC,CAAC;AAEtD,SAAS,UAAU,CACjB,eAAqC,EACrC,eAAqC;IAErC,OAAO,KAAK,EAAE,IAAY,EAAE,EAAE;QAC5B,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,IAAA,qBAAY,EAAC,IAAI,CAAC,EAAE;YACtB,KAAK,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC;SACd;QAED,MAAM,WAAW,GAAG,IAAA,+CAA6B,EAAC,IAAI,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;QAC1F,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAE/B,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,CAAC;QAChC,IAAI,MAAM,IAAI,CAAC,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC,EAAE;YACvC,KAAK,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,EAAoB,EACpB,WAAqB,EACrB,eAAqC,EACrC,eAAqC;IAErC,MAAM,SAAS,GAAG,IAAI,kBAAS,CAAC,EAAE,CAAC,CAAC;IAEpC,MAAM,MAAM,GAAG,UAAU,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAC5D,MAAM,IAAA,uBAAc,EAAC,SAAS,EAAE,WAAW,EAAE,yBAAgB,EAAE,MAAM,EAAE,qBAAY,EAAE,mBAAU,CAAC,CAAC;IAEjG,OAAO,SAAS,CAAC;AACnB,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,iBAA2B,EAC3B,eAAqC,EACrC,eAAqC;IAErC,OAAO,MAAM,IAAA,iCAAmB,EAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;QAC5D,MAAM,EAAE,GAAG,IAAI,wBAAO,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,MAAM,UAAU,CAAC,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC;AATD,sDASC;AAEM,KAAK,UAAU,kBAAkB,CACtC,SAAoB,EACpB,iBAA2B,EAC3B,eAAqC,EACrC,eAAqC,EACrC,WAAqB;IAErB,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,iBAAiB,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IAC/F,IAAI;QACF,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;KAChE;YAAS;QACR,KAAK,CAAC,KAAK,EAAE,CAAC;KACf;AACH,CAAC;AAbD,gDAaC"}
1
+ {"version":3,"file":"project-file-index.js","sourceRoot":"","sources":["../../../../src/rpc/explain/index/project-file-index.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAqC;AACrC,kDAA8B;AAE9B,4CAYyB;AACzB,uDAAkE;AAElE,wFAAgF;AAEhF,iFAAyD;AAEzD,MAAM,KAAK,GAAG,IAAA,eAAS,EAAC,4BAA4B,CAAC,CAAC;AAEtD,SAAS,UAAU,CACjB,eAAqC,EACrC,eAAqC;IAErC,OAAO,KAAK,EAAE,IAAY,EAAE,EAAE;QAC5B,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,IAAA,qBAAY,EAAC,IAAI,CAAC,EAAE;YACtB,KAAK,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC;SACd;QAED,MAAM,WAAW,GAAG,IAAA,+CAA6B,EAAC,IAAI,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;QAC1F,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAE/B,IAAI,6BAAmB,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YACrD,KAAK,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC;SACd;QAED,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,CAAC;QAChC,IAAI,MAAM,IAAI,CAAC,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC,EAAE;YACvC,KAAK,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,EAAoB,EACpB,WAAqB,EACrB,eAAqC,EACrC,eAAqC;IAErC,MAAM,SAAS,GAAG,IAAI,kBAAS,CAAC,EAAE,CAAC,CAAC;IAEpC,MAAM,MAAM,GAAG,UAAU,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAC5D,MAAM,IAAA,uBAAc,EAAC,SAAS,EAAE,WAAW,EAAE,yBAAgB,EAAE,MAAM,EAAE,qBAAY,EAAE,mBAAU,CAAC,CAAC;IAEjG,OAAO,SAAS,CAAC;AACnB,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,iBAA2B,EAC3B,eAAqC,EACrC,eAAqC;IAErC,OAAO,MAAM,IAAA,iCAAmB,EAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;QAC5D,MAAM,EAAE,GAAG,IAAI,wBAAO,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,MAAM,UAAU,CAAC,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC;AATD,sDASC;AAEM,KAAK,UAAU,kBAAkB,CACtC,SAAoB,EACpB,iBAA2B,EAC3B,eAAqC,EACrC,eAAqC,EACrC,WAAqB;IAErB,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,iBAAiB,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IAC/F,IAAI;QACF,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;KAChE;YAAS;QACR,KAAK,CAAC,KAAK,EAAE,CAAC;KACf;AACH,CAAC;AAbD,gDAaC"}
@@ -1,20 +1,86 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const ihistory_1 = require("./ihistory");
7
+ const thread_1 = __importDefault(require("./thread"));
8
+ const path_1 = require("path");
9
+ const promises_1 = require("fs/promises");
10
+ const configuration_1 = __importDefault(require("../../configuration"));
4
11
  class HistoryWindows {
5
12
  constructor(directory) {
6
13
  this.directory = directory;
7
- console.warn('History is currently disabled. It is not yet implemented on Windows.');
14
+ this.debounceTimers = new Map();
8
15
  }
9
- token() {
10
- // Do nothing
16
+ token(threadId, userMessageId, assistantMessageId, token) {
17
+ const thread = this.getOrCreateThread(threadId);
18
+ const exchange = thread.exchanges.find(({ question }) => question.messageId === userMessageId);
19
+ if (!exchange) {
20
+ throw new Error(`no exchange found for user message ${userMessageId}`);
21
+ }
22
+ if (!exchange.answer) {
23
+ exchange.answer = {
24
+ messageId: assistantMessageId,
25
+ role: 'assistant',
26
+ content: '',
27
+ };
28
+ }
29
+ exchange.answer.content += token;
30
+ this.writeThread(threadId);
11
31
  }
12
- question() {
13
- // Do nothing
32
+ question(threadId, userMessageId, question, codeSelection, prompt) {
33
+ const thread = this.getOrCreateThread(threadId);
34
+ const timestamp = new Date();
35
+ const serializedCodeSelection = codeSelection ? JSON.stringify(codeSelection) : undefined;
36
+ thread.question(timestamp.getTime(), userMessageId, question, serializedCodeSelection, prompt);
37
+ this.writeThread(threadId);
14
38
  }
15
- load(threadId) {
16
- throw new ihistory_1.ThreadAccessError(threadId, 'load', new Error('Not implemented on Windows'));
39
+ async load(threadId) {
40
+ let thread = HistoryWindows.THREADS.get(threadId);
41
+ if (!thread) {
42
+ const filePath = (0, path_1.join)(this.directory, `${threadId}.json`);
43
+ try {
44
+ const serialized = await (0, promises_1.readFile)(filePath, 'utf-8');
45
+ thread = thread_1.default.fromJSON(threadId, JSON.parse(serialized));
46
+ }
47
+ catch (e) {
48
+ throw new ihistory_1.ThreadAccessError(threadId, 'load', e instanceof Error ? e : new Error(String(e)));
49
+ }
50
+ HistoryWindows.THREADS.set(threadId, thread);
51
+ }
52
+ return thread;
53
+ }
54
+ getOrCreateThread(threadId) {
55
+ let thread = HistoryWindows.THREADS.get(threadId);
56
+ if (!thread) {
57
+ thread = new thread_1.default(threadId, Date.now(), (0, configuration_1.default)().projectDirectories);
58
+ HistoryWindows.THREADS.set(threadId, thread);
59
+ }
60
+ return thread;
61
+ }
62
+ writeThread(threadId) {
63
+ const timer = this.debounceTimers.get(threadId);
64
+ if (timer)
65
+ return;
66
+ this.debounceTimers.set(threadId, setTimeout(() => {
67
+ this.debounceTimers.delete(threadId);
68
+ const thread = HistoryWindows.THREADS.get(threadId);
69
+ if (!thread) {
70
+ console.warn(`tried to write thread ${threadId} to file, but it was not found`);
71
+ return;
72
+ }
73
+ const serialized = JSON.stringify(thread.asJSON());
74
+ const filePath = (0, path_1.join)(this.directory, `${thread.threadId}.json`);
75
+ (0, promises_1.mkdir)(this.directory, { recursive: true })
76
+ .then(() => (0, promises_1.writeFile)(filePath, serialized))
77
+ .catch((e) => {
78
+ console.warn(`failed to write thread ${thread.threadId} to file ${filePath}: ${e}`);
79
+ });
80
+ }, HistoryWindows.DEBOUNCE_TIME));
17
81
  }
18
82
  }
19
83
  exports.default = HistoryWindows;
84
+ HistoryWindows.THREADS = new Map();
85
+ HistoryWindows.DEBOUNCE_TIME = 1000;
20
86
  //# sourceMappingURL=historyWindows.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"historyWindows.js","sourceRoot":"","sources":["../../../../src/rpc/explain/navie/historyWindows.ts"],"names":[],"mappings":";;AAAA,yCAA+C;AAI/C,MAAqB,cAAc;IACjC,YAA4B,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;QAC3C,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IACvF,CAAC;IAED,KAAK;QACH,aAAa;IACf,CAAC;IAED,QAAQ;QACN,aAAa;IACf,CAAC;IAED,IAAI,CAAC,QAAgB;QACnB,MAAM,IAAI,4BAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACzF,CAAC;CACF;AAhBD,iCAgBC"}
1
+ {"version":3,"file":"historyWindows.js","sourceRoot":"","sources":["../../../../src/rpc/explain/navie/historyWindows.ts"],"names":[],"mappings":";;;;;AACA,yCAA+C;AAE/C,sDAA8C;AAC9C,+BAA4B;AAC5B,0CAAyD;AACzD,wEAAgD;AAEhD,MAAqB,cAAc;IAKjC,YAA4B,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;QAJrC,mBAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;IAIX,CAAC;IAEjD,KAAK,CAAC,QAAgB,EAAE,aAAqB,EAAE,kBAA0B,EAAE,KAAa;QACtF,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,KAAK,aAAa,CAAC,CAAC;QAC/F,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,sCAAsC,aAAa,EAAE,CAAC,CAAC;SACxE;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACpB,QAAQ,CAAC,MAAM,GAAG;gBAChB,SAAS,EAAE,kBAAkB;gBAC7B,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE;aACZ,CAAC;SACH;QACD,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ,CACN,QAAgB,EAChB,aAAqB,EACrB,QAAgB,EAChB,aAA8C,EAC9C,MAA0B;QAE1B,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,uBAAuB,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,CAAC,CAAC;QAC/F,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB;QACzB,IAAI,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;YAC1D,IAAI;gBACF,MAAM,UAAU,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACrD,MAAM,GAAG,gBAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAe,CAAC,CAAC;aAC1E;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,IAAI,4BAAiB,CACzB,QAAQ,EACR,MAAM,EACN,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC9C,CAAC;aACH;YACD,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SAC9C;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,iBAAiB,CAAC,QAAgB;QACxC,IAAI,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,IAAI,gBAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAA,uBAAa,GAAE,CAAC,kBAAkB,CAAC,CAAC;YAC9E,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SAC9C;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,WAAW,CAAC,QAAgB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,KAAK;YAAE,OAAO;QAElB,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,QAAQ,EACR,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAErC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,CAAC,IAAI,CAAC,yBAAyB,QAAQ,gCAAgC,CAAC,CAAC;gBAChF,OAAO;aACR;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,QAAQ,OAAO,CAAC,CAAC;YACjE,IAAA,gBAAK,EAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;iBACvC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAA,oBAAS,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;iBAC3C,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACX,OAAO,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,QAAQ,YAAY,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;YACtF,CAAC,CAAC,CAAC;QACP,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CACjC,CAAC;IACJ,CAAC;;AA1FH,iCA2FC;AAzFgB,sBAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC3B,4BAAa,GAAG,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appland/appmap",
3
- "version": "3.184.0",
3
+ "version": "3.185.0",
4
4
  "description": "",
5
5
  "bin": "built/cli.js",
6
6
  "engines": {