From df9ff700a494a83e416ad3e6782f2ffd8c4370d0 Mon Sep 17 00:00:00 2001 From: 0xluckycoder Date: Tue, 12 Aug 2025 01:55:28 +0530 Subject: [PATCH 1/4] fix(getNodeRequireCalls-utility): detect member_expression statements --- utils/src/ast-grep/require-call.ts | 62 +++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 14 deletions(-) diff --git a/utils/src/ast-grep/require-call.ts b/utils/src/ast-grep/require-call.ts index c4cdab33..7201aaa3 100644 --- a/utils/src/ast-grep/require-call.ts +++ b/utils/src/ast-grep/require-call.ts @@ -25,24 +25,58 @@ export const getNodeRequireCalls = (rootNode: SgRoot, nodeModuleName: string): S { has: { field: "value", - kind: "call_expression", - all: [ + any: [ { - has: { - field: "function", - kind: "identifier", - regex: "^require$" - } + kind: "call_expression", + all: [ + { + has: { + field: "function", + kind: "identifier", + regex: "^require$" + } + }, + { + has: { + field: "arguments", + kind: "arguments", + has: { + kind: "string", + regex: `^['"](node:)?${nodeModuleName}['"]$` + } + } + } + ] }, { - has: { - field: "arguments", - kind: "arguments", - has: { - kind: "string", - regex: `^['"](node:)?${nodeModuleName}['"]$` + kind: "member_expression", + all: [ + { + has: { + field: "object", + kind: "call_expression", + all: [ + { + has: { + field: "function", + kind: "identifier", + regex: "^require$" + } + }, + { + has: { + field: "arguments", + kind: "arguments", + has: { + kind: "string", + regex: `^['"](node:)?${nodeModuleName}['"]$` + } + } + } + ] + } } - } + ] } ] } From 6947eb8751b1ed2293a8a680656bdb4dbe1ce524 Mon Sep 17 00:00:00 2001 From: 0xluckycoder Date: Tue, 12 Aug 2025 06:58:02 +0530 Subject: [PATCH 2/4] test(getNodeRequireCalls-utility): detect member_expression test coverage --- utils/src/ast-grep/require-call.test.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/utils/src/ast-grep/require-call.test.ts b/utils/src/ast-grep/require-call.test.ts index edc76bf7..8aff7171 100644 --- a/utils/src/ast-grep/require-call.test.ts +++ b/utils/src/ast-grep/require-call.test.ts @@ -1,4 +1,4 @@ -import assert from "node:assert/strict"; +import assert from "node:assert/strict" ; import { describe, it } from "node:test"; import astGrep from '@ast-grep/napi'; import dedent from 'dedent'; @@ -13,6 +13,7 @@ describe("require-call", () => { require("no:assignment"); require(variable); require(\`backticks\`); + const cpus = require("node:os").cpus; `; const ast = astGrep.parse(astGrep.Lang.JavaScript, code); @@ -33,5 +34,9 @@ describe("require-call", () => { const utilRequires = getNodeRequireCalls(ast, 'util'); assert.strictEqual(utilRequires.length, 1); assert.strictEqual(utilRequires[0].field('value')?.text(), 'require("node:util")'); + + const osRequires = getNodeRequireCalls(ast, "os"); + assert.strictEqual(osRequires.length, 1); + assert.strictEqual(osRequires[0].field('value')?.text(), 'require("node:os").cpus'); }); }); From 9cd7f491c5c63e585b0336476a078db084c5301d Mon Sep 17 00:00:00 2001 From: 0xluckycoder Date: Tue, 12 Aug 2025 07:07:23 +0530 Subject: [PATCH 3/4] fix(getNodeRequireCalls-utility): remove trailing white space --- recipes/correct-ts-specifiers/src/fixtures/e2e/test.ts | 10 +++++----- utils/src/ast-grep/require-call.test.ts | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/recipes/correct-ts-specifiers/src/fixtures/e2e/test.ts b/recipes/correct-ts-specifiers/src/fixtures/e2e/test.ts index 34df1387..8ce2f40b 100644 --- a/recipes/correct-ts-specifiers/src/fixtures/e2e/test.ts +++ b/recipes/correct-ts-specifiers/src/fixtures/e2e/test.ts @@ -3,17 +3,17 @@ import { URL } from 'node:url'; import { bar } from '@dep/bar'; import { foo } from 'foo'; -import { Bird } from './Bird'; +import { Bird } from './Bird/index.ts'; import { Cat } from './Cat.ts'; -import { Dog } from '…/Dog/index.mjs'; +import { Dog } from '…/Dog/index.mts'; import { baseUrl } from '#config.js'; -import { qux } from './qux.js'; +import { qux } from './qux.js/index.ts'; -export { Zed } from './zed'; +export type { Zed } from './zed.d.ts'; // should.js be unchanged -const nil = await import('./nil.js'); +const nil = await import('./nil.ts'); const bird = new Bird('Tweety'); const cat = new Cat('Milo'); diff --git a/utils/src/ast-grep/require-call.test.ts b/utils/src/ast-grep/require-call.test.ts index 8aff7171..a4f3e30c 100644 --- a/utils/src/ast-grep/require-call.test.ts +++ b/utils/src/ast-grep/require-call.test.ts @@ -1,4 +1,4 @@ -import assert from "node:assert/strict" ; +import assert from "node:assert/strict"; import { describe, it } from "node:test"; import astGrep from '@ast-grep/napi'; import dedent from 'dedent'; From 8f1e2e2e7c0267b37753d651f9d283a02c62594a Mon Sep 17 00:00:00 2001 From: 0xluckycoder Date: Tue, 12 Aug 2025 07:24:34 +0530 Subject: [PATCH 4/4] Revert accidentally added file --- recipes/correct-ts-specifiers/src/fixtures/e2e/test.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/recipes/correct-ts-specifiers/src/fixtures/e2e/test.ts b/recipes/correct-ts-specifiers/src/fixtures/e2e/test.ts index 8ce2f40b..34df1387 100644 --- a/recipes/correct-ts-specifiers/src/fixtures/e2e/test.ts +++ b/recipes/correct-ts-specifiers/src/fixtures/e2e/test.ts @@ -3,17 +3,17 @@ import { URL } from 'node:url'; import { bar } from '@dep/bar'; import { foo } from 'foo'; -import { Bird } from './Bird/index.ts'; +import { Bird } from './Bird'; import { Cat } from './Cat.ts'; -import { Dog } from '…/Dog/index.mts'; +import { Dog } from '…/Dog/index.mjs'; import { baseUrl } from '#config.js'; -import { qux } from './qux.js/index.ts'; +import { qux } from './qux.js'; -export type { Zed } from './zed.d.ts'; +export { Zed } from './zed'; // should.js be unchanged -const nil = await import('./nil.ts'); +const nil = await import('./nil.js'); const bird = new Bird('Tweety'); const cat = new Cat('Milo');