From 2a4e5a17a1d10766016429a6d702916c6b22199a Mon Sep 17 00:00:00 2001 From: Devlin Pajaron Date: Mon, 11 May 2026 14:05:51 +0800 Subject: [PATCH 1/2] Fix #234 automate src/index.ts --- docs/pull_request_template.md | 1 - package.json | 2 +- scripts/generate-index.mjs | 36 +++++++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 scripts/generate-index.mjs diff --git a/docs/pull_request_template.md b/docs/pull_request_template.md index d2c84c5..59fe1c1 100644 --- a/docs/pull_request_template.md +++ b/docs/pull_request_template.md @@ -7,7 +7,6 @@ Closes: # - [ ] **Created method file** under `src//.ts` - [ ] **Added jsdoc comments** in the method file - [ ] **Created a test** under `src//.test.ts` -- [ ] **Export the method file in main entry file** `src/index.ts` - [ ] **Generate docs** --- diff --git a/package.json b/package.json index 13a3474..80b7a83 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "test:ci": "jest --no-cache", "test:clear": "jest --clearCache", "docusaurus": "docusaurus", - "docusaurus:generate": "node scripts/md-generate.mjs", + "docusaurus:generate": "node scripts/md-generate.mjs && node scripts/generate-index.mjs", "docusaurus:start": "docusaurus start", "docusaurus:build": "docusaurus build", "docusaurus:swizzle": "docusaurus swizzle", diff --git a/scripts/generate-index.mjs b/scripts/generate-index.mjs new file mode 100644 index 0000000..86c1ab1 --- /dev/null +++ b/scripts/generate-index.mjs @@ -0,0 +1,36 @@ +import fs from 'fs'; +import { readdir } from 'fs/promises'; +import path from 'path'; + +const SRC_DIR = 'src'; +const INDEX_FILE = path.join(SRC_DIR, 'index.ts'); + +const toCamelCase = (str) => + str.replace(/-([a-z])/g, (_, char) => char.toUpperCase()); + +async function generateIndex() { + const dirents = await readdir(SRC_DIR, { withFileTypes: true }); + const exports = []; + + for (const dirent of dirents) { + if (!dirent.isDirectory()) continue; + + const methodName = dirent.name; + const filePath = path.join(SRC_DIR, methodName, `${methodName}.ts`); + + // skip if file does not exist + if (!fs.existsSync(filePath)) continue; + + const exportName = toCamelCase(methodName); + + exports.push( + `export { ${exportName} } from './${methodName}/${methodName}';` + ); + } + + const content = exports.join('\n') + '\n'; + fs.writeFileSync(INDEX_FILE, content); + console.log(`Generated ${INDEX_FILE}`); +} + +generateIndex(); From 15eea62ff3aee49bf29c8e199c04e077d483b561 Mon Sep 17 00:00:00 2001 From: Devlin Pajaron Date: Mon, 11 May 2026 14:14:28 +0800 Subject: [PATCH 2/2] Update build script --- .vscode/settings.json | 6 +++--- package.json | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 35e5f0f..aaffea1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,13 +1,13 @@ { "files.exclude": { - // "**/dist": false, + // "**/dist": false }, "[typescript]": { "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode" }, - "typescript.tsdk": "node_modules/typescript/lib", + "js/ts.tsdk.path": "node_modules/typescript/lib", "editor.codeActionsOnSave": { "source.fixAll": "explicit" - }, + } } diff --git a/package.json b/package.json index 80b7a83..cdb7adf 100644 --- a/package.json +++ b/package.json @@ -30,14 +30,14 @@ "LICENSE" ], "scripts": { - "build": "rm -rf dist/; tsup", + "build": "rm -rf dist/; npm run generate-index; tsup", "format:check": "eslint ./src", "format:fix": "eslint ./src --fix", "prepublishOnly": "yarn build", "test:ci": "jest --no-cache", "test:clear": "jest --clearCache", "docusaurus": "docusaurus", - "docusaurus:generate": "node scripts/md-generate.mjs && node scripts/generate-index.mjs", + "docusaurus:generate": "node scripts/md-generate.mjs; npm run generate-index", "docusaurus:start": "docusaurus start", "docusaurus:build": "docusaurus build", "docusaurus:swizzle": "docusaurus swizzle", @@ -45,7 +45,8 @@ "docusaurus:clear": "docusaurus clear", "docusaurus:serve": "docusaurus serve", "docusaurus:write-translations": "docusaurus write-translations", - "docusaurus:write-heading-ids": "docusaurus write-heading-ids" + "docusaurus:write-heading-ids": "docusaurus write-heading-ids", + "generate-index": "node scripts/generate-index.mjs" }, "dependencies": { "@docusaurus/plugin-google-gtag": "3.9.2",