{"_id":"@1-/jsparser","_rev":"5-ff50595d65c91a267c639ce7d7621b3f","name":"@1-/jsparser","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@1-/jsparser","version":"0.1.0","keywords":["ast","parser","dependency","module","analysis"],"author":{"name":"x-at-01@googlegroups.com"},"license":"MulanPSL-2.0","_id":"@1-/jsparser@0.1.0","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://github.com/webc-site/npm/tree/main/jsparser","bugs":{"url":"https://github.com/webc-site/npm/issues"},"dist":{"shasum":"7bac7f68088b35c98635629cf21b20f429a4a030","tarball":"https://registry.npmjs.org/@1-/jsparser/-/jsparser-0.1.0.tgz","fileCount":4,"integrity":"sha512-g6/C+R21pzHugRi5huFQ9R3UxNvS0b1u3jOB3hZixDzvZagpBzgR/bYpT4LAqushT0ofBOkrMhgx7GgSWdjd3A==","signatures":[{"sig":"MEUCIFqWWzhwHCa6o3GX39k6RNbHjqYxqXndcztaQLEly2QaAiEA+zviB+EGxpyu3dmCcxp0hJFxwlkmo42XQ/mustBJjAM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8418},"type":"module","exports":{"./*":"./*"},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://github.com/webc-site/npm.git","type":"git"},"_npmVersion":"11.16.0","description":"JavaScript module dependency analyzer that identifies imports and exports using AST parsing.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"@3-/read":"^0.1.4","@3-/is_obj":"^0.1.1","yuku-parser":"^0.6.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/jsparser_0.1.0_1784261117208_0.948978823223841","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@1-/jsparser","version":"0.1.1","keywords":["analysis","ast","dependency","module","parser"],"author":{"name":"x-at-01@googlegroups.com"},"license":"MulanPSL-2.0","_id":"@1-/jsparser@0.1.1","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://github.com/webc-site/npm/tree/main/jsparser","bugs":{"url":"https://github.com/webc-site/npm/issues"},"dist":{"shasum":"75ff1c4f1296a16ac72233f624735634c1fc533d","tarball":"https://registry.npmjs.org/@1-/jsparser/-/jsparser-0.1.1.tgz","fileCount":4,"integrity":"sha512-9LOF2qdMsEk70xor40j2PjdlCZz/kH5S0Y0xMOQNFllketHIaz06s6s8errQC97g5DN2hdcNicSiTokm6Modng==","signatures":[{"sig":"MEUCIE0xxfvdXosU4SfMmF7tsMHZpeDY3Yvo3FUPs/6lU9NxAiEAt9ZtBT2WSLhpLxUM2KNyYzMcLkmIyRNaDjGHnFtsQZU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10271},"type":"module","exports":{"./*":"./*"},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://github.com/webc-site/npm.git","type":"git"},"_npmVersion":"11.16.0","description":"JavaScript module dependency analyzer that identifies imports and exports using AST parsing.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"@3-/read":"^0.1.4","@3-/is_obj":"^0.1.1","yuku-parser":"^0.6.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/jsparser_0.1.1_1784261491628_0.5757743003861289","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@1-/jsparser","version":"0.1.2","keywords":["analysis","ast","dependency","module","parser"],"author":{"name":"x-at-01@googlegroups.com"},"license":"MulanPSL-2.0","_id":"@1-/jsparser@0.1.2","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://github.com/webc-site/npm/tree/main/jsparser","bugs":{"url":"https://github.com/webc-site/npm/issues"},"dist":{"shasum":"06acb181e83585ad3063c5383f0bbd4114b66603","tarball":"https://registry.npmjs.org/@1-/jsparser/-/jsparser-0.1.2.tgz","fileCount":4,"integrity":"sha512-QCuLeNJ2fY9LLHuSNeRlxO//QRTYVWvAf1rMudFtvj8v+qGSq50qUczRyOLB4kPKfPR5KbqeXuWsdbpDeJWw8Q==","signatures":[{"sig":"MEQCICGx1ZLbdsjadBv7PI1AMSXrI/a4t0tUcb7pVD0KWhfgAiAWHYsKj9DYs81QZX9YxyEABP8YLOozdOvTEiIr5fDTqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11493},"type":"module","exports":{"./*":"./*"},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://github.com/webc-site/npm.git","type":"git"},"_npmVersion":"11.16.0","description":"JavaScript module dependency analyzer that identifies imports and exports using AST parsing.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"@3-/read":"^0.1.4","@3-/is_obj":"^0.1.1","yuku-parser":"^0.6.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/jsparser_0.1.2_1784262573615_0.6066319295753309","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@1-/jsparser","version":"0.1.3","keywords":["analysis","ast","dependency","module","parser"],"author":{"name":"x-at-01@googlegroups.com"},"license":"MulanPSL-2.0","_id":"@1-/jsparser@0.1.3","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://github.com/webc-site/npm/tree/main/jsparser","bugs":{"url":"https://github.com/webc-site/npm/issues"},"dist":{"shasum":"6a7f58a76cc29b3fb2bc9792d084fe97b07f339c","tarball":"https://registry.npmjs.org/@1-/jsparser/-/jsparser-0.1.3.tgz","fileCount":4,"integrity":"sha512-muPGEb3ym8Kc0PZOPlNgXpVc5VlGdGvjskOYWZmtAgvYC7q9cv1QS0wNFI30+ZspVbcVXsmRpVK40Br6GBjuaw==","signatures":[{"sig":"MEUCIQD7qfcGQYpNWgEHEyTpFelMHaLF3q7wiCTDzal1UHr3gAIgVCmoBvReLGMUXLDuhMgZncslcuSC/yzwUw1DlWpqUmU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11154},"type":"module","exports":{"./*":"./*"},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://github.com/webc-site/npm.git","type":"git"},"_npmVersion":"11.16.0","description":"JavaScript module dependency analyzer that identifies imports and exports using AST parsing.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"@3-/read":"^0.1.4","@3-/is_obj":"^0.1.1","yuku-parser":"^0.7.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/jsparser_0.1.3_1784532408852_0.4478691463979241","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@1-/jsparser","version":"0.1.4","description":"JavaScript module dependency analyzer that identifies imports and exports using AST parsing.","keywords":["analysis","ast","dependency","module","parser"],"homepage":"https://github.com/webc-site/npm/tree/main/jsparser","license":"MulanPSL-2.0","author":{"name":"x-at-01@googlegroups.com"},"repository":{"type":"git","url":"git+https://github.com/webc-site/npm.git"},"type":"module","exports":{"./*":"./*"},"dependencies":{"@3-/is_obj":"^0.1.1","@3-/read":"^0.1.4","yuku-parser":"^0.8.0"},"_id":"@1-/jsparser@0.1.4","bugs":{"url":"https://github.com/webc-site/npm/issues"},"_nodeVersion":"26.2.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-gTdGPbF7Sm2DxsAROB+vyvYBw6jbnQpR4Uu2f1rVWCzoifhC4lBZY5xuSnt1EKsZCGw7D/9Teyqsi+F4QVqXUg==","shasum":"cdee9bf5e303f0a52c308c691549264e43c13593","tarball":"https://registry.npmjs.org/@1-/jsparser/-/jsparser-0.1.4.tgz","fileCount":4,"unpackedSize":11160,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIB7EYEQxw9gjRh/LZ5UFJ6r3Cvz9KhpjbaUNAdrSoyWEAiB6NB3+03icLH8fzCqYe/2C+3VisOlnfAnxyKwhqI8qtA=="}]},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"directories":{},"maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jsparser_0.1.4_1785218954503_0.17213689153806766"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-17T04:05:17.046Z","modified":"2026-07-28T06:09:14.798Z","0.1.0":"2026-07-17T04:05:17.327Z","0.1.1":"2026-07-17T04:11:31.762Z","0.1.2":"2026-07-17T04:29:33.742Z","0.1.3":"2026-07-20T07:26:48.982Z","0.1.4":"2026-07-28T06:09:14.634Z"},"bugs":{"url":"https://github.com/webc-site/npm/issues"},"author":{"name":"x-at-01@googlegroups.com"},"license":"MulanPSL-2.0","homepage":"https://github.com/webc-site/npm/tree/main/jsparser","keywords":["analysis","ast","dependency","module","parser"],"repository":{"type":"git","url":"git+https://github.com/webc-site/npm.git"},"description":"JavaScript module dependency analyzer that identifies imports and exports using AST parsing.","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"readme":"[English](#en) | [中文](#zh)\n\n---\n\n<a id=\"en\"></a>\n# @1-/jsparser : JavaScript Module Dependency Static Analyzer\n\n- [@1-/jsparser : JavaScript Module Dependency Static Analyzer](#1-jsparser-javascript-module-dependency-static-analyzer)\n  - [Functionality](#functionality)\n  - [Usage demonstration](#usage-demonstration)\n  - [Design approach](#design-approach)\n  - [Technology stack](#technology-stack)\n  - [Code structure](#code-structure)\n  - [Historical background](#historical-background)\n  - [About](#about)\n\n## Functionality\n\nPrecisely identifies import and export declarations in JavaScript modules without code execution. Supports static imports, dynamic imports (including interpolation-free template literals), interpolated dynamic template imports, default exports, named exports, destructuring exports, and renamed exports.\n\n## Usage demonstration\n\nInstall as an npm package:\n\n```bash\nnpm install @1-/jsparser\n```\n\nUse in JavaScript:\n\n```javascript\nimport importLi from '@1-/jsparser/importLi.js';\nimport exportLi from '@1-/jsparser/exportLi.js';\n\n// Analyze imports in a code string\nconst [staticImports, dynamicImports, templateImports] = importLi(`\n  import a from 'a-module';\n  import { b } from 'b-module';\n  export { c } from 'c-module';\n  export * from 'd-module';\n  import('e-module');\n  import(`f-module`);\n  import(`g-module-${x}`);\n`);\n// Returns: [['a-module', 'b-module', 'c-module', 'd-module'], ['e-module', 'f-module'], [['g-module-', '']]]\n\n// Analyze exports in a file (path-only)\nconst exportNames = exportLi('./src/module.js');\n// Returns undefined if file does not exist\n```\n\n## Design approach\n\nPerforms deep AST traversal using `yuku-parser`. `importLi` extracts module specifiers from `ImportDeclaration` (static imports), `ExportNamedDeclaration` and `ExportAllDeclaration` (static re-exports), and `ImportExpression` (dynamic imports); for template literals, interpolation-free ones go to `dynamicImports`, while interpolated ones go to `templateImports` as arrays of cooked quasis. `exportLi` traverses `ExportDefaultDeclaration` (`default`) and `ExportNamedDeclaration` (identifiers from declarations and renamed specifiers).\n\n![](https://cdn.jsdmirror.com/gh/webc-fs/-@6A/Ae4lnNxu11IazsfyRstA.svg)\n\n## Technology stack\n\n- yuku-parser: JavaScript/TypeScript AST parser\n- @3-/is_obj: Object type checking utility\n- @3-/read: File reading utility\n- Node.js built-in modules\n\n## Code structure\n\n```\nsrc/\n├── importLi.js    # Import analysis: returns [static, dynamic, template] triple\n└── exportLi.js    # Export analysis: accepts file path, returns export name array (including 'default') or undefined\n```\n\nThis library consists of exactly two plain JavaScript files — no abstractions, no extra dependencies, no type declarations.\n\n## Historical background\n\nThe ECMAScript 2015 (ES6) standard was finalized in June 2015, with the Modules feature as a core component. This specification defined static `import` and `export` syntax, enabling build tools to perform reliable static analysis for critical capabilities like code splitting and tree-shaking. `@1-/jsparser` adopts a lightweight design focused on reliably extracting inter-module references, serving as a small but essential part of modern frontend engineering infrastructure.\n\n\n## About\n\nThis library is developed by [WebC.site](https://webc.site).\n\n[WebC.site](https://webc.site): A new paradigm of web development for AI\n\n\n---\n\n<a id=\"zh\"></a>\n# @1-/jsparser : JavaScript 模块依赖静态分析器\n\n- [@1-/jsparser : JavaScript 模块依赖静态分析器](#1-jsparser-javascript-模块依赖静态分析器)\n  - [功能介绍](#功能介绍)\n  - [使用演示](#使用演示)\n  - [设计思路](#设计思路)\n  - [技术栈](#技术栈)\n  - [代码结构](#代码结构)\n  - [历史故事](#历史故事)\n  - [关于](#关于)\n\n## 功能介绍\n\n精确识别 JavaScript 模块中的导入与导出声明，无需执行代码。支持静态导入、动态导入（含无插值模板字面量）、带插值的动态模板导入、默认导出、命名导出、解构导出、重命名导出。\n\n## 使用演示\n\n安装为 npm 包：\n\n```bash\nnpm install @1-/jsparser\n```\n\n在 JavaScript 中使用：\n\n```javascript\nimport importLi from '@1-/jsparser/importLi.js';\nimport exportLi from '@1-/jsparser/exportLi.js';\n\n// 分析代码字符串中的导入\nconst [staticImports, dynamicImports, templateImports] = importLi(`\n  import a from 'a-module';\n  import { b } from 'b-module';\n  export { c } from 'c-module';\n  export * from 'd-module';\n  import('e-module');\n  import(`f-module`);\n  import(`g-module-${x}`);\n`);\n// 返回: [['a-module', 'b-module', 'c-module', 'd-module'], ['e-module', 'f-module'], [['g-module-', '']]]\n\n// 分析文件中的导出（仅接受文件路径）\nconst exportNames = exportLi('./src/module.js');\n// 若文件不存在，返回 undefined\n```\n\n## 设计思路\n\n基于 `yuku-parser` 生成的 AST 进行深度遍历。`importLi` 提取 `ImportDeclaration`（静态导入）、`ExportNamedDeclaration` 和 `ExportAllDeclaration`（静态 re-export）、`ImportExpression`（动态导入）节点中的模块源字符串；对模板字面量，区分无插值（归入动态导入）与含插值（归入模板导入）。`exportLi` 遍历导出节点，提取 `ExportDefaultDeclaration`（`default`）、`ExportNamedDeclaration`（声明体中的标识符及 `specifiers` 中的重命名名）。\n\n![](https://cdn.jsdmirror.com/gh/webc-fs/-@xw/DYkDdUYZ1zQCqrCoY9ug.svg)\n\n## 技术栈\n\n- yuku-parser：JavaScript/TypeScript AST 解析器\n- @3-/is_obj：对象类型检查工具\n- @3-/read：文件读取工具\n- Node.js 内置模块\n\n## 代码结构\n\n```\nsrc/\n├── importLi.js    # 导入分析：返回 [静态导入, 动态导入, 模板导入] 三元组\n└── exportLi.js    # 导出分析：接收文件路径，返回导出名称数组（含 'default'）或 undefined\n```\n\n本库由两个纯 JavaScript 文件构成，无抽象层、无额外依赖、无类型声明。\n\n## 历史故事\n\nECMAScript 2015（ES6）标准于 2015 年 6 月正式发布，其中模块系统（Modules）作为核心特性被纳入规范。该标准定义了静态的 `import` 和 `export` 语法，使构建工具能够进行可靠的静态分析，从而实现代码分割、摇树优化等关键能力。`@1-/jsparser` 采用轻量设计，专注解决模块间引用关系的可靠提取问题，是现代前端工程化基础设施的微小但重要的组成部分。\n\n\n## 关于\n\n本库由 [WebC.site](https://webc.site) 开发。\n\n[WebC.site](https://webc.site) : 面向人工智能的网站开发新范式\n\n","readmeFilename":"README.md"}