@nithin554/code-crawler 0.1.54 → 0.1.56
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/README.md +96 -4
- package/dist/crawler.d.ts +7 -0
- package/dist/crawler.js +126 -29
- package/dist/crawler.js.map +1 -1
- package/dist/graph/budget.d.ts +46 -0
- package/dist/graph/budget.js +72 -0
- package/dist/graph/budget.js.map +1 -0
- package/dist/graph/insights.d.ts +217 -0
- package/dist/graph/insights.js +612 -0
- package/dist/graph/insights.js.map +1 -0
- package/dist/graph/queries.d.ts +23 -6
- package/dist/graph/queries.js +106 -49
- package/dist/graph/queries.js.map +1 -1
- package/dist/graph/store.d.ts +19 -0
- package/dist/graph/store.js +170 -26
- package/dist/graph/store.js.map +1 -1
- package/dist/parser/cache.d.ts +28 -0
- package/dist/parser/cache.js +80 -0
- package/dist/parser/cache.js.map +1 -0
- package/dist/server.js +462 -163
- package/dist/server.js.map +1 -1
- package/package.json +3 -2
package/dist/graph/store.js
CHANGED
|
@@ -19,6 +19,7 @@ CREATE TABLE IF NOT EXISTS nodes (
|
|
|
19
19
|
id TEXT PRIMARY KEY,
|
|
20
20
|
kind TEXT NOT NULL,
|
|
21
21
|
qualified_name TEXT NOT NULL,
|
|
22
|
+
name TEXT,
|
|
22
23
|
file_path TEXT,
|
|
23
24
|
properties TEXT NOT NULL DEFAULT '{}',
|
|
24
25
|
updated_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
@@ -39,23 +40,108 @@ CREATE TABLE IF NOT EXISTS edges (
|
|
|
39
40
|
FOREIGN KEY (source) REFERENCES nodes (id) ON DELETE CASCADE,
|
|
40
41
|
FOREIGN KEY (target) REFERENCES nodes (id) ON DELETE CASCADE
|
|
41
42
|
);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
CREATE INDEX IF NOT EXISTS
|
|
43
|
+
-- Traversals always filter on one endpoint *and* an edge-kind list, so the
|
|
44
|
+
-- composite indexes replace the single-column ones of schema version 1.
|
|
45
|
+
CREATE INDEX IF NOT EXISTS idx_edges_source_kind ON edges (source, kind);
|
|
46
|
+
CREATE INDEX IF NOT EXISTS idx_edges_target_kind ON edges (target, kind);
|
|
47
|
+
CREATE INDEX IF NOT EXISTS idx_edges_kind ON edges (kind);
|
|
45
48
|
|
|
46
49
|
CREATE TABLE IF NOT EXISTS crawl_meta (
|
|
47
50
|
key TEXT PRIMARY KEY,
|
|
48
51
|
value TEXT
|
|
49
52
|
);
|
|
50
53
|
`;
|
|
54
|
+
/**
|
|
55
|
+
* Full-text index over node names. External-content FTS5 keeps the text in
|
|
56
|
+
* `nodes` (no duplication) and triggers keep the index in sync with every
|
|
57
|
+
* write path, including cascading deletes.
|
|
58
|
+
*/
|
|
59
|
+
const FTS_SCHEMA = `
|
|
60
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS nodes_fts USING fts5(
|
|
61
|
+
id,
|
|
62
|
+
qualified_name,
|
|
63
|
+
name,
|
|
64
|
+
content='nodes',
|
|
65
|
+
content_rowid='rowid',
|
|
66
|
+
tokenize='unicode61'
|
|
67
|
+
);
|
|
68
|
+
CREATE TRIGGER IF NOT EXISTS nodes_fts_ai AFTER INSERT ON nodes BEGIN
|
|
69
|
+
INSERT INTO nodes_fts (rowid, id, qualified_name, name)
|
|
70
|
+
VALUES (new.rowid, new.id, new.qualified_name, COALESCE(new.name, ''));
|
|
71
|
+
END;
|
|
72
|
+
CREATE TRIGGER IF NOT EXISTS nodes_fts_ad AFTER DELETE ON nodes BEGIN
|
|
73
|
+
INSERT INTO nodes_fts (nodes_fts, rowid, id, qualified_name, name)
|
|
74
|
+
VALUES ('delete', old.rowid, old.id, old.qualified_name, COALESCE(old.name, ''));
|
|
75
|
+
END;
|
|
76
|
+
CREATE TRIGGER IF NOT EXISTS nodes_fts_au AFTER UPDATE ON nodes BEGIN
|
|
77
|
+
INSERT INTO nodes_fts (nodes_fts, rowid, id, qualified_name, name)
|
|
78
|
+
VALUES ('delete', old.rowid, old.id, old.qualified_name, COALESCE(old.name, ''));
|
|
79
|
+
INSERT INTO nodes_fts (rowid, id, qualified_name, name)
|
|
80
|
+
VALUES (new.rowid, new.id, new.qualified_name, COALESCE(new.name, ''));
|
|
81
|
+
END;
|
|
82
|
+
`;
|
|
83
|
+
/** Per-file crawl manifest: change detection plus the cached parse result. */
|
|
84
|
+
const FILES_SCHEMA = `
|
|
85
|
+
CREATE TABLE IF NOT EXISTS files (
|
|
86
|
+
path TEXT PRIMARY KEY,
|
|
87
|
+
size INTEGER NOT NULL,
|
|
88
|
+
mtime_ms INTEGER NOT NULL,
|
|
89
|
+
sha256 TEXT NOT NULL,
|
|
90
|
+
language TEXT NOT NULL,
|
|
91
|
+
summary TEXT,
|
|
92
|
+
indexed_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
93
|
+
);
|
|
94
|
+
`;
|
|
95
|
+
/** Indexes that match the shapes the query layer actually asks for. */
|
|
96
|
+
const QUERY_INDEXES = `
|
|
97
|
+
CREATE INDEX IF NOT EXISTS idx_nodes_name_col ON nodes (name);
|
|
98
|
+
CREATE INDEX IF NOT EXISTS idx_edges_source_kind ON edges (source, kind);
|
|
99
|
+
CREATE INDEX IF NOT EXISTS idx_edges_target_kind ON edges (target, kind);
|
|
100
|
+
-- find_entry_points used to scan every node through json_extract().
|
|
101
|
+
CREATE INDEX IF NOT EXISTS idx_nodes_entry_point
|
|
102
|
+
ON nodes (json_extract(properties, '$.entryPoint'));
|
|
103
|
+
`;
|
|
51
104
|
/**
|
|
52
105
|
* Bumped whenever a migration below changes the on-disk shape. Databases
|
|
53
106
|
* created before versioning was introduced are stamped at this version when
|
|
54
107
|
* first opened, because the schema is already idempotent.
|
|
55
108
|
*/
|
|
56
|
-
const SCHEMA_VERSION =
|
|
109
|
+
const SCHEMA_VERSION = 2;
|
|
57
110
|
/** Ordered, idempotent upgrades. Append new entries; never rewrite history. */
|
|
58
|
-
const MIGRATIONS = [
|
|
111
|
+
const MIGRATIONS = [
|
|
112
|
+
{
|
|
113
|
+
version: 2,
|
|
114
|
+
up(db) {
|
|
115
|
+
db.exec(FILES_SCHEMA);
|
|
116
|
+
const columns = db.prepare("PRAGMA table_info(nodes)").all();
|
|
117
|
+
if (!columns.some((c) => c.name === "name")) {
|
|
118
|
+
db.exec("ALTER TABLE nodes ADD COLUMN name TEXT");
|
|
119
|
+
}
|
|
120
|
+
// Backfill the denormalised display name for rows written by v1.
|
|
121
|
+
const pending = db
|
|
122
|
+
.prepare("SELECT rowid AS rid, qualified_name AS qn FROM nodes WHERE name IS NULL")
|
|
123
|
+
.all();
|
|
124
|
+
if (pending.length > 0) {
|
|
125
|
+
const update = db.prepare("UPDATE nodes SET name = ? WHERE rowid = ?");
|
|
126
|
+
for (const row of pending)
|
|
127
|
+
update.run(displayName(row.qn), row.rid);
|
|
128
|
+
}
|
|
129
|
+
db.exec("DROP INDEX IF EXISTS idx_edges_source; DROP INDEX IF EXISTS idx_edges_target;");
|
|
130
|
+
db.exec(QUERY_INDEXES);
|
|
131
|
+
db.exec(FTS_SCHEMA);
|
|
132
|
+
// Populate the FTS index from existing content (no-op on a fresh DB).
|
|
133
|
+
db.exec("INSERT INTO nodes_fts (nodes_fts) VALUES ('rebuild')");
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
];
|
|
137
|
+
/** The short display name: the last `#` or `.` segment of a qualified name. */
|
|
138
|
+
function displayName(qualifiedName) {
|
|
139
|
+
const hash = qualifiedName.lastIndexOf("#");
|
|
140
|
+
if (hash >= 0)
|
|
141
|
+
return qualifiedName.slice(hash + 1);
|
|
142
|
+
const dot = qualifiedName.lastIndexOf(".");
|
|
143
|
+
return dot >= 0 ? qualifiedName.slice(dot + 1) : qualifiedName;
|
|
144
|
+
}
|
|
59
145
|
export class GraphStore {
|
|
60
146
|
db;
|
|
61
147
|
/** Default cap on transitive traversal depth (config override). */
|
|
@@ -76,28 +162,31 @@ export class GraphStore {
|
|
|
76
162
|
this.db.pragma("journal_mode = WAL");
|
|
77
163
|
this.db.pragma("foreign_keys = ON");
|
|
78
164
|
this.db.exec(SCHEMA);
|
|
79
|
-
this.insertNodeStmt = this.db.prepare(`
|
|
80
|
-
INSERT INTO nodes (id, kind, qualified_name, file_path, properties)
|
|
81
|
-
VALUES (@id, @kind, @qualifiedName, @filePath, @properties)
|
|
82
|
-
ON CONFLICT (id) DO UPDATE SET
|
|
83
|
-
kind = excluded.kind,
|
|
84
|
-
qualified_name = excluded.qualified_name,
|
|
85
|
-
file_path = excluded.file_path,
|
|
86
|
-
properties = excluded.properties,
|
|
87
|
-
updated_at = unixepoch()
|
|
88
|
-
`);
|
|
89
|
-
this.insertEdgeStmt = this.db.prepare(`
|
|
90
|
-
INSERT INTO edges (source, target, kind, properties)
|
|
91
|
-
VALUES (@source, @target, @kind, @properties)
|
|
92
|
-
ON CONFLICT (source, target, kind) DO UPDATE SET
|
|
93
|
-
properties = excluded.properties,
|
|
94
|
-
created_at = unixepoch()
|
|
95
|
-
`);
|
|
96
|
-
this.deleteFileNodesStmt = this.db.prepare("DELETE FROM nodes WHERE file_path = ?");
|
|
97
|
-
this.updateMetaStmt = this.db.prepare(`INSERT INTO crawl_meta (key, value) VALUES (@key, @value)
|
|
98
|
-
ON CONFLICT (key) DO UPDATE SET value = excluded.value`);
|
|
99
165
|
try {
|
|
166
|
+
// Migrations may add columns the prepared statements below depend on, so
|
|
167
|
+
// they must run first. Only the meta statement is safe before them.
|
|
168
|
+
this.updateMetaStmt = this.db.prepare(`INSERT INTO crawl_meta (key, value) VALUES (@key, @value)
|
|
169
|
+
ON CONFLICT (key) DO UPDATE SET value = excluded.value`);
|
|
100
170
|
this.migrate();
|
|
171
|
+
this.insertNodeStmt = this.db.prepare(`
|
|
172
|
+
INSERT INTO nodes (id, kind, qualified_name, name, file_path, properties)
|
|
173
|
+
VALUES (@id, @kind, @qualifiedName, @name, @filePath, @properties)
|
|
174
|
+
ON CONFLICT (id) DO UPDATE SET
|
|
175
|
+
kind = excluded.kind,
|
|
176
|
+
qualified_name = excluded.qualified_name,
|
|
177
|
+
name = excluded.name,
|
|
178
|
+
file_path = excluded.file_path,
|
|
179
|
+
properties = excluded.properties,
|
|
180
|
+
updated_at = unixepoch()
|
|
181
|
+
`);
|
|
182
|
+
this.insertEdgeStmt = this.db.prepare(`
|
|
183
|
+
INSERT INTO edges (source, target, kind, properties)
|
|
184
|
+
VALUES (@source, @target, @kind, @properties)
|
|
185
|
+
ON CONFLICT (source, target, kind) DO UPDATE SET
|
|
186
|
+
properties = excluded.properties,
|
|
187
|
+
created_at = unixepoch()
|
|
188
|
+
`);
|
|
189
|
+
this.deleteFileNodesStmt = this.db.prepare("DELETE FROM nodes WHERE file_path = ?");
|
|
101
190
|
}
|
|
102
191
|
catch (err) {
|
|
103
192
|
// A failed open must not keep the SQLite handle (and its WAL files)
|
|
@@ -144,6 +233,7 @@ export class GraphStore {
|
|
|
144
233
|
id: node.id,
|
|
145
234
|
kind: node.kind,
|
|
146
235
|
qualifiedName: node.qualifiedName,
|
|
236
|
+
name: node.properties.name ?? displayName(node.qualifiedName),
|
|
147
237
|
filePath: node.filePath,
|
|
148
238
|
properties: JSON.stringify(node.properties),
|
|
149
239
|
});
|
|
@@ -210,6 +300,60 @@ export class GraphStore {
|
|
|
210
300
|
*/
|
|
211
301
|
removeFile(filePath) {
|
|
212
302
|
this.deleteFileNodesStmt.run(filePath);
|
|
303
|
+
this.db.prepare("DELETE FROM files WHERE path = ?").run(filePath);
|
|
304
|
+
}
|
|
305
|
+
/** Crawl manifest of every indexed file, keyed by absolute path. */
|
|
306
|
+
listFileRecords() {
|
|
307
|
+
const rows = this.db
|
|
308
|
+
.prepare("SELECT path, size, mtime_ms, sha256, language, summary FROM files")
|
|
309
|
+
.all();
|
|
310
|
+
const out = new Map();
|
|
311
|
+
for (const row of rows) {
|
|
312
|
+
out.set(row.path, {
|
|
313
|
+
path: row.path,
|
|
314
|
+
size: row.size,
|
|
315
|
+
mtimeMs: row.mtime_ms,
|
|
316
|
+
sha256: row.sha256,
|
|
317
|
+
language: row.language,
|
|
318
|
+
summary: row.summary,
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
return out;
|
|
322
|
+
}
|
|
323
|
+
putFileRecord(record) {
|
|
324
|
+
this.db
|
|
325
|
+
.prepare(`INSERT INTO files (path, size, mtime_ms, sha256, language, summary, indexed_at)
|
|
326
|
+
VALUES (@path, @size, @mtimeMs, @sha256, @language, @summary, unixepoch())
|
|
327
|
+
ON CONFLICT (path) DO UPDATE SET
|
|
328
|
+
size = excluded.size,
|
|
329
|
+
mtime_ms = excluded.mtime_ms,
|
|
330
|
+
sha256 = excluded.sha256,
|
|
331
|
+
language = excluded.language,
|
|
332
|
+
summary = excluded.summary,
|
|
333
|
+
indexed_at = unixepoch()`)
|
|
334
|
+
.run({
|
|
335
|
+
path: record.path,
|
|
336
|
+
size: record.size,
|
|
337
|
+
mtimeMs: record.mtimeMs,
|
|
338
|
+
sha256: record.sha256,
|
|
339
|
+
language: record.language,
|
|
340
|
+
summary: record.summary,
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Flag a symbol as a framework-invoked entry point without rewriting the
|
|
345
|
+
* rest of its properties. Used for symbols in files that were not re-parsed,
|
|
346
|
+
* whose persisted row still needs the cross-file route annotation.
|
|
347
|
+
*/
|
|
348
|
+
markEntryPoint(id, kind, detail) {
|
|
349
|
+
const info = this.db
|
|
350
|
+
.prepare(`UPDATE nodes
|
|
351
|
+
SET properties = json_set(properties, '$.entryPoint', json('true'),
|
|
352
|
+
'$.entryPointKind', ?, '$.entryPointDetail', ?),
|
|
353
|
+
updated_at = unixepoch()
|
|
354
|
+
WHERE id = ? AND COALESCE(json_extract(properties, '$.entryPoint'), 0) <> 1`)
|
|
355
|
+
.run(kind, detail, id);
|
|
356
|
+
return info.changes > 0;
|
|
213
357
|
}
|
|
214
358
|
/**
|
|
215
359
|
* Delete file-less shared nodes (package, annotation, external symbol) that
|
|
@@ -296,7 +440,7 @@ export class GraphStore {
|
|
|
296
440
|
}
|
|
297
441
|
clearAll() {
|
|
298
442
|
const tx = this.db.transaction(() => {
|
|
299
|
-
this.db.exec("DELETE FROM edges; DELETE FROM nodes; DELETE FROM crawl_meta;");
|
|
443
|
+
this.db.exec("DELETE FROM edges; DELETE FROM nodes; DELETE FROM files; DELETE FROM crawl_meta;");
|
|
300
444
|
this.setMeta("schema_version", String(SCHEMA_VERSION));
|
|
301
445
|
});
|
|
302
446
|
tx();
|
package/dist/graph/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/graph/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/graph/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ParsedFile } from "./language.js";
|
|
2
|
+
/**
|
|
3
|
+
* Serialisation for the per-file parse cache.
|
|
4
|
+
*
|
|
5
|
+
* `ParsedFile` carries `Map` instances, which `JSON.stringify` silently
|
|
6
|
+
* flattens to `{}`. Packing converts them to plain objects so an unchanged
|
|
7
|
+
* file can be replayed from the crawl manifest instead of being parsed again.
|
|
8
|
+
*
|
|
9
|
+
* Only plain data is stored: nothing here may grow a function, class instance
|
|
10
|
+
* or cyclic reference, or the cache becomes lossy.
|
|
11
|
+
*/
|
|
12
|
+
interface PackedParsedFile extends Omit<ParsedFile, "localsByMethod" | "scopeTypes" | "scopeModules" | "externalModules"> {
|
|
13
|
+
localsByMethod: Record<string, Record<string, string>>;
|
|
14
|
+
scopeTypes?: Record<string, string>;
|
|
15
|
+
scopeModules?: Record<string, string>;
|
|
16
|
+
externalModules?: Record<string, string>;
|
|
17
|
+
/** Java files expose a simple-name -> FQN map (usually `scopeTypes`). */
|
|
18
|
+
typeByName?: Record<string, string>;
|
|
19
|
+
}
|
|
20
|
+
/** Convert a parsed file into a JSON-safe value. */
|
|
21
|
+
export declare function packParsedFile(parsed: ParsedFile): PackedParsedFile;
|
|
22
|
+
/** Restore a parsed file written by {@link packParsedFile}. */
|
|
23
|
+
export declare function unpackParsedFile(packed: PackedParsedFile): ParsedFile;
|
|
24
|
+
/** Serialise a parsed file for storage in the crawl manifest. */
|
|
25
|
+
export declare function encodeParsedFile(parsed: ParsedFile): string;
|
|
26
|
+
/** Decode a manifest summary; returns null when the payload is unusable. */
|
|
27
|
+
export declare function decodeParsedFile(json: string | null): ParsedFile | null;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
function mapToRecord(map) {
|
|
2
|
+
if (!map)
|
|
3
|
+
return undefined;
|
|
4
|
+
const out = {};
|
|
5
|
+
for (const [key, value] of map)
|
|
6
|
+
out[key] = value;
|
|
7
|
+
return out;
|
|
8
|
+
}
|
|
9
|
+
function recordToMap(record) {
|
|
10
|
+
const out = new Map();
|
|
11
|
+
for (const [key, value] of Object.entries(record ?? {}))
|
|
12
|
+
out.set(key, value);
|
|
13
|
+
return out;
|
|
14
|
+
}
|
|
15
|
+
/** Value equality for two optional string records. */
|
|
16
|
+
function sameRecord(a, b) {
|
|
17
|
+
if (!a || !b)
|
|
18
|
+
return a === b;
|
|
19
|
+
const keys = Object.keys(a);
|
|
20
|
+
if (keys.length !== Object.keys(b).length)
|
|
21
|
+
return false;
|
|
22
|
+
return keys.every((key) => a[key] === b[key]);
|
|
23
|
+
}
|
|
24
|
+
/** Convert a parsed file into a JSON-safe value. */
|
|
25
|
+
export function packParsedFile(parsed) {
|
|
26
|
+
const locals = {};
|
|
27
|
+
for (const [methodId, localsByMethod] of parsed.localsByMethod) {
|
|
28
|
+
locals[methodId] = mapToRecord(localsByMethod) ?? {};
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
...parsed,
|
|
32
|
+
localsByMethod: locals,
|
|
33
|
+
scopeTypes: mapToRecord(parsed.scopeTypes),
|
|
34
|
+
scopeModules: mapToRecord(parsed.scopeModules),
|
|
35
|
+
externalModules: mapToRecord(parsed.externalModules),
|
|
36
|
+
typeByName: mapToRecord(parsed.typeByName),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** Restore a parsed file written by {@link packParsedFile}. */
|
|
40
|
+
export function unpackParsedFile(packed) {
|
|
41
|
+
const localsByMethod = new Map();
|
|
42
|
+
for (const [methodId, locals] of Object.entries(packed.localsByMethod ?? {})) {
|
|
43
|
+
localsByMethod.set(methodId, recordToMap(locals));
|
|
44
|
+
}
|
|
45
|
+
const scopeTypes = recordToMap(packed.scopeTypes);
|
|
46
|
+
const parsed = {
|
|
47
|
+
...packed,
|
|
48
|
+
localsByMethod,
|
|
49
|
+
scopeTypes,
|
|
50
|
+
scopeModules: recordToMap(packed.scopeModules),
|
|
51
|
+
externalModules: recordToMap(packed.externalModules),
|
|
52
|
+
};
|
|
53
|
+
if (packed.typeByName) {
|
|
54
|
+
// Java sets `typeByName` to the very same map as `scopeTypes`; keep the
|
|
55
|
+
// aliasing so the resolver sees the object shape a fresh parse produces.
|
|
56
|
+
parsed.typeByName = sameRecord(packed.typeByName, packed.scopeTypes)
|
|
57
|
+
? scopeTypes
|
|
58
|
+
: recordToMap(packed.typeByName);
|
|
59
|
+
}
|
|
60
|
+
return parsed;
|
|
61
|
+
}
|
|
62
|
+
/** Serialise a parsed file for storage in the crawl manifest. */
|
|
63
|
+
export function encodeParsedFile(parsed) {
|
|
64
|
+
return JSON.stringify(packParsedFile(parsed));
|
|
65
|
+
}
|
|
66
|
+
/** Decode a manifest summary; returns null when the payload is unusable. */
|
|
67
|
+
export function decodeParsedFile(json) {
|
|
68
|
+
if (!json)
|
|
69
|
+
return null;
|
|
70
|
+
try {
|
|
71
|
+
const packed = JSON.parse(json);
|
|
72
|
+
if (!packed || typeof packed.filePath !== "string")
|
|
73
|
+
return null;
|
|
74
|
+
return unpackParsedFile(packed);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/parser/cache.ts"],"names":[],"mappings":"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"}
|