@appthreat/atom-parsetools 1.0.9 → 1.0.11

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/astgen.js CHANGED
@@ -59,17 +59,53 @@ const babelSafeParserOptions = {
59
59
 
60
60
  /**
61
61
  * Return paths to all (j|tsx?) files.
62
+ * Optionally includes specific bundled files from node_modules if:
63
+ * 1. ASTGEN_INCLUDE_NODE_MODULES_BUNDLES is "true", OR
64
+ * 2. ASTGEN_IGNORE_DIRS is non-empty and doesn't include "node_modules"
62
65
  */
63
- const getAllSrcJSAndTSFiles = (src) =>
64
- Promise.all([
66
+ const getAllSrcJSAndTSFiles = (src) => {
67
+ const filePattern = "\\.(js|jsx|cjs|mjs|ts|tsx|vue|svelte|xsjs|xsjslib|ejs)$";
68
+ const bundledNodeModulesPattern =
69
+ "node_modules/.*\\.(bundle|dist|index|min|app)\\.(js|cjs|mjs)$";
70
+
71
+ // Step 1: Collect all JS/TS files EXCLUDING node_modules
72
+ const allFilesPromise = Promise.resolve(
65
73
  getAllFiles(
66
74
  src,
67
75
  undefined,
68
76
  undefined,
69
77
  undefined,
70
- new RegExp("\\.(js|jsx|cjs|mjs|ts|tsx|vue|svelte)$")
78
+ new RegExp(filePattern),
79
+ true // ignore node_modules
71
80
  )
72
- ]);
81
+ );
82
+
83
+ // Step 2: Check if we should include node_modules bundles
84
+ const shouldIncludeNodeModulesBundles =
85
+ process.env?.ASTGEN_INCLUDE_NODE_MODULES_BUNDLES === "true" ||
86
+ (process.env?.ASTGEN_IGNORE_DIRS &&
87
+ process.env.ASTGEN_IGNORE_DIRS.length > 0 &&
88
+ !process.env.ASTGEN_IGNORE_DIRS.toLowerCase().includes("node_modules"));
89
+
90
+ let bundledFilesPromise = Promise.resolve([]);
91
+ if (shouldIncludeNodeModulesBundles) {
92
+ bundledFilesPromise = Promise.resolve(
93
+ getAllFiles(
94
+ src,
95
+ undefined,
96
+ undefined,
97
+ undefined,
98
+ new RegExp(bundledNodeModulesPattern),
99
+ false // DO NOT ignore node_modules
100
+ )
101
+ );
102
+ }
103
+
104
+ // Step 3: Combine both lists
105
+ return Promise.all([allFilesPromise, bundledFilesPromise]).then(
106
+ ([allFiles, bundledFiles]) => [...allFiles, ...bundledFiles]
107
+ );
108
+ };
73
109
 
74
110
  /**
75
111
  * Convert a single JS/TS file to AST
@@ -242,30 +278,44 @@ const createJSAst = async (options) => {
242
278
  try {
243
279
  const promiseMap = await getAllSrcJSAndTSFiles(options.src);
244
280
  const srcFiles = promiseMap.flatMap((d) => d);
281
+ const CONCURRENCY_LIMIT = 10;
282
+ const chunks = [];
283
+ for (let i = 0; i < srcFiles.length; i += CONCURRENCY_LIMIT) {
284
+ chunks.push(srcFiles.slice(i, i + CONCURRENCY_LIMIT));
285
+ }
245
286
  let ts;
246
287
  if (options.tsTypes) {
247
- ts = createTsc(srcFiles);
288
+ const projectFiles = srcFiles.filter(
289
+ (file) => !file.includes("node_modules")
290
+ );
291
+ ts = createTsc(projectFiles);
248
292
  }
249
- for (const file of srcFiles) {
293
+ for (const chunk of chunks) {
294
+ await Promise.all(chunk.map((file) => processFile(file, options, ts)));
295
+ }
296
+ } catch (err) {
297
+ console.error(err);
298
+ }
299
+ };
300
+
301
+ const processFile = (file, options, ts) => {
302
+ try {
303
+ const ast = fileToJsAst(file);
304
+ writeAstFile(file, ast, options);
305
+ if (ts) {
250
306
  try {
251
- const ast = fileToJsAst(file);
252
- writeAstFile(file, ast, options);
253
- } catch (err) {
254
- console.error(file, err.message);
255
- }
256
- if (ts) {
257
- try {
258
- const tsAst = ts.program.getSourceFile(file);
307
+ const tsAst = ts.program.getSourceFile(file);
308
+ if (tsAst) {
259
309
  tsc.forEachChild(tsAst, ts.addType);
260
310
  writeTypesFile(file, ts.seenTypes, options);
261
311
  ts.seenTypes.clear();
262
- } catch (err) {
263
- console.warn("Retrieving types", file, ":", err.message);
264
312
  }
313
+ } catch (err) {
314
+ console.warn("Retrieving types", file, ":", err.message);
265
315
  }
266
316
  }
267
317
  } catch (err) {
268
- console.error(err);
318
+ console.error(file, err.message);
269
319
  }
270
320
  };
271
321
 
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@appthreat/atom-parsetools",
3
- "version": "1.0.9",
3
+ "version": "1.0.11",
4
4
  "description": "Parsing tools that complement the @appthreat/atom project.",
5
5
  "main": "./index.js",
6
6
  "type": "module",
7
7
  "scripts": {
8
- "pretty": "prettier --write *.mjs *.js --trailing-comma=none",
8
+ "pretty": "prettier --write *.cjs *.js --trailing-comma=none",
9
9
  "lint": "eslint *.mjs *.js"
10
10
  },
11
11
  "dependencies": {
12
- "@appthreat/atom-common": "^1.0.9",
12
+ "@appthreat/atom-common": "^1.0.11",
13
13
  "@babel/parser": "^7.28.4",
14
14
  "typescript": "^5.9.2",
15
15
  "yargs": "^17.7.2"
@@ -1,9 +1,9 @@
1
1
  <?php return array(
2
2
  'root' => array(
3
3
  'name' => '__root__',
4
- 'pretty_version' => 'v2.4.0',
5
- 'version' => '2.4.0.0',
6
- 'reference' => '8ecf2e7452e7c3dbb2763c22a8b073164027db16',
4
+ 'pretty_version' => 'v2.4.2',
5
+ 'version' => '2.4.2.0',
6
+ 'reference' => '81c8c31d2d731f23fc361ff00d09764321b94f31',
7
7
  'type' => 'library',
8
8
  'install_path' => __DIR__ . '/../../',
9
9
  'aliases' => array(),
@@ -11,9 +11,9 @@
11
11
  ),
12
12
  'versions' => array(
13
13
  '__root__' => array(
14
- 'pretty_version' => 'v2.4.0',
15
- 'version' => '2.4.0.0',
16
- 'reference' => '8ecf2e7452e7c3dbb2763c22a8b073164027db16',
14
+ 'pretty_version' => 'v2.4.2',
15
+ 'version' => '2.4.2.0',
16
+ 'reference' => '81c8c31d2d731f23fc361ff00d09764321b94f31',
17
17
  'type' => 'library',
18
18
  'install_path' => __DIR__ . '/../../',
19
19
  'aliases' => array(),
@@ -6,10 +6,10 @@ checking for whether -fvisibility=hidden is accepted as CFLAGS... yes
6
6
  creating Makefile
7
7
 
8
8
  current directory: /home/runner/work/atom/atom/wrapper/nodejs/packages/atom-parsetools/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism
9
- make DESTDIR\= sitearchdir\=./.gem.20250917-3140-k3ebp1 sitelibdir\=./.gem.20250917-3140-k3ebp1 clean
9
+ make DESTDIR\= sitearchdir\=./.gem.20250923-3116-zqo1mu sitelibdir\=./.gem.20250923-3116-zqo1mu clean
10
10
 
11
11
  current directory: /home/runner/work/atom/atom/wrapper/nodejs/packages/atom-parsetools/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism
12
- make DESTDIR\= sitearchdir\=./.gem.20250917-3140-k3ebp1 sitelibdir\=./.gem.20250917-3140-k3ebp1
12
+ make DESTDIR\= sitearchdir\=./.gem.20250923-3116-zqo1mu sitelibdir\=./.gem.20250923-3116-zqo1mu
13
13
  compiling api_node.c
14
14
  compiling api_pack.c
15
15
  compiling extension.c
@@ -37,8 +37,8 @@ compiling ./../../src/util/pm_strpbrk.c
37
37
  linking shared-object prism/prism.so
38
38
 
39
39
  current directory: /home/runner/work/atom/atom/wrapper/nodejs/packages/atom-parsetools/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism
40
- make DESTDIR\= sitearchdir\=./.gem.20250917-3140-k3ebp1 sitelibdir\=./.gem.20250917-3140-k3ebp1 install
41
- /usr/bin/install -c -m 0755 prism.so ./.gem.20250917-3140-k3ebp1/prism
40
+ make DESTDIR\= sitearchdir\=./.gem.20250923-3116-zqo1mu sitelibdir\=./.gem.20250923-3116-zqo1mu install
41
+ /usr/bin/install -c -m 0755 prism.so ./.gem.20250923-3116-zqo1mu/prism
42
42
 
43
43
  current directory: /home/runner/work/atom/atom/wrapper/nodejs/packages/atom-parsetools/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism
44
- make DESTDIR\= sitearchdir\=./.gem.20250917-3140-k3ebp1 sitelibdir\=./.gem.20250917-3140-k3ebp1 clean
44
+ make DESTDIR\= sitearchdir\=./.gem.20250923-3116-zqo1mu sitelibdir\=./.gem.20250923-3116-zqo1mu clean
@@ -3,16 +3,16 @@ current directory: /home/runner/work/atom/atom/wrapper/nodejs/packages/atom-pars
3
3
  creating Makefile
4
4
 
5
5
  current directory: /home/runner/work/atom/atom/wrapper/nodejs/packages/atom-parsetools/plugins/rubyastgen/bundle/ruby/3.4.0/gems/racc-1.8.1/ext/racc/cparse
6
- make DESTDIR\= sitearchdir\=./.gem.20250917-3140-l2d66h sitelibdir\=./.gem.20250917-3140-l2d66h clean
6
+ make DESTDIR\= sitearchdir\=./.gem.20250923-3116-5j476j sitelibdir\=./.gem.20250923-3116-5j476j clean
7
7
 
8
8
  current directory: /home/runner/work/atom/atom/wrapper/nodejs/packages/atom-parsetools/plugins/rubyastgen/bundle/ruby/3.4.0/gems/racc-1.8.1/ext/racc/cparse
9
- make DESTDIR\= sitearchdir\=./.gem.20250917-3140-l2d66h sitelibdir\=./.gem.20250917-3140-l2d66h
9
+ make DESTDIR\= sitearchdir\=./.gem.20250923-3116-5j476j sitelibdir\=./.gem.20250923-3116-5j476j
10
10
  compiling cparse.c
11
11
  linking shared-object racc/cparse.so
12
12
 
13
13
  current directory: /home/runner/work/atom/atom/wrapper/nodejs/packages/atom-parsetools/plugins/rubyastgen/bundle/ruby/3.4.0/gems/racc-1.8.1/ext/racc/cparse
14
- make DESTDIR\= sitearchdir\=./.gem.20250917-3140-l2d66h sitelibdir\=./.gem.20250917-3140-l2d66h install
15
- /usr/bin/install -c -m 0755 cparse.so ./.gem.20250917-3140-l2d66h/racc
14
+ make DESTDIR\= sitearchdir\=./.gem.20250923-3116-5j476j sitelibdir\=./.gem.20250923-3116-5j476j install
15
+ /usr/bin/install -c -m 0755 cparse.so ./.gem.20250923-3116-5j476j/racc
16
16
 
17
17
  current directory: /home/runner/work/atom/atom/wrapper/nodejs/packages/atom-parsetools/plugins/rubyastgen/bundle/ruby/3.4.0/gems/racc-1.8.1/ext/racc/cparse
18
- make DESTDIR\= sitearchdir\=./.gem.20250917-3140-l2d66h sitelibdir\=./.gem.20250917-3140-l2d66h clean
18
+ make DESTDIR\= sitearchdir\=./.gem.20250923-3116-5j476j sitelibdir\=./.gem.20250923-3116-5j476j clean