├── .npmignore
├── README.md
├── demo.gif
├── index.js
├── main.js
├── npm-utils.js
├── package-lock.json
└── package.json
/.npmignore:
--------------------------------------------------------------------------------
1 | demo.gif
2 |
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # `is-esm`
2 |
3 |
4 |
5 |
6 |
7 | This package tells you if an npm module uses ECMAScript modules or not.
8 |
9 | ## Why do I need to know?
10 |
11 | ECMAScript modules are statically analyzable. This helps bundlers and JavaScript optimizers to get rid of the unused exports and ultimately make your bundles smaller.
12 |
13 | You can read more about this [here](https://web.dev/commonjs-larger-bundles/).
14 |
15 | ## How to use it?
16 |
17 | To use `is-esm`:
18 |
19 | ```bash
20 | $ npx is-esm @angular/core 8.0.0
21 | $ ✔ Yes
22 | ```
23 |
24 | ```bash
25 | $ npx is-esm moment
26 | $ ✖ No
27 | ```
28 |
29 | ## License
30 |
31 | MIT
32 |
--------------------------------------------------------------------------------
/demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mgechev/is-esm/45d3fd1b981777eefc0d898d2b556fe6f23948eb/demo.gif
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | const main = require('./main');
4 |
5 | const packageName = process.argv[2];
6 | const version = process.argv[3];
7 | main(packageName, version);
8 |
--------------------------------------------------------------------------------
/main.js:
--------------------------------------------------------------------------------
1 | const tmp = require("tmp");
2 | const { join } = require("path");
3 | const { writeFileSync } = require("fs");
4 |
5 | const { rollup } = require("rollup");
6 | const nodeResolve = require("@rollup/plugin-node-resolve");
7 |
8 | const ora = require("ora");
9 | const rimraf = require("rimraf");
10 |
11 | const utils = require("./npm-utils");
12 |
13 | const getPackageVersion = async (packageName, version) => {
14 | let versions = [];
15 | try {
16 | versions = await utils.getVersionList(packageName);
17 | } catch (e) {
18 | throw new Error(e.message);
19 | }
20 | if (!version) {
21 | version = versions[versions.length - 1];
22 | }
23 | let found = false;
24 | for (const v of versions) {
25 | if (v === version) {
26 | found = true;
27 | break;
28 | }
29 | }
30 | if (found) {
31 | return version;
32 | }
33 | return undefined;
34 | };
35 |
36 | const initializeTempDir = (packageName, indexName) => {
37 | const tmpDir = tmp.dirSync();
38 | writeFileSync(join(tmpDir.name, "package.json"), '{ "name": "is-esm" }');
39 |
40 | const entryFile = join(tmpDir.name, indexName);
41 | writeFileSync(
42 | entryFile,
43 | `import * as isesm from "${packageName}";\nconsole.log(iesm);\n`
44 | );
45 |
46 | return tmpDir.name;
47 | };
48 |
49 | const checkESM = async (packageName, entryFile) => {
50 | let isESM = false;
51 |
52 | function moduleExists(packageName) {
53 | return {
54 | name: "module-exists",
55 | load(id) {
56 | if (id.indexOf(join("node_modules", packageName)) >= 0) {
57 | isESM = true;
58 | }
59 | },
60 | };
61 | }
62 |
63 | await rollup({
64 | input: entryFile,
65 | output: "out.js",
66 | onwarn() {},
67 | plugins: [
68 | nodeResolve({
69 | modulesOnly: true,
70 | }),
71 | moduleExists(packageName),
72 | ],
73 | });
74 |
75 | return isESM;
76 | };
77 |
78 | module.exports = async (packageName, version) => {
79 | const spinner = ora({ stream: process.stdout });
80 | spinner.text = `Fetching ${packageName}`;
81 | spinner.start();
82 |
83 | let userVersion = version;
84 | try {
85 | version = await getPackageVersion(packageName, version);
86 | } catch (e) {
87 | spinner.fail(
88 | `Unable to fetch the package ${packageName} stats: ${e.message}`
89 | );
90 | process.exit(0);
91 | }
92 |
93 | if (!version) {
94 | spinner.fail(`Unable to find version ${userVersion} of ${packageName}`);
95 | process.exit(0);
96 | }
97 | spinner.text = `Fetching ${packageName}@${version}...`;
98 |
99 | const indexName = "index.js";
100 | const tmpDirName = initializeTempDir(packageName, indexName);
101 |
102 | try {
103 | await utils.installModules(packageName, version, tmpDirName);
104 | } catch (e) {
105 | spinner.fail("Unable to fetch the package");
106 | process.exit(0);
107 | }
108 |
109 | const entryFile = join(tmpDirName, indexName);
110 |
111 | try {
112 | if (await checkESM(packageName, entryFile)) {
113 | spinner.succeed("Yes");
114 | } else {
115 | spinner.warn("No");
116 | }
117 | } catch {
118 | spinner.fail("Unable to detect the module format");
119 | process.exit(0);
120 | }
121 |
122 | rimraf.sync(tmpDirName);
123 | };
124 |
--------------------------------------------------------------------------------
/npm-utils.js:
--------------------------------------------------------------------------------
1 | const { exec } = require('child_process');
2 |
3 | const getVersionList = (name) => {
4 | if (!name) return Promise.reject(new Error('Empty name given as argument'));
5 | return new Promise((resolve, reject) =>
6 | exec(`npm show ${name} versions --json`, (err, stdout, stderr) => {
7 | if (err) {
8 | return reject(
9 | /Registry returned 404 for GET on|404 Not found|code E404/.test(
10 | stderr
11 | )
12 | ? new Error("The package you were looking for doesn't exist.")
13 | : err
14 | );
15 | }
16 | return resolve(JSON.parse(stdout));
17 | })
18 | );
19 | };
20 |
21 | const installCommand = (package, version, prefix) => {
22 | return `npm install --prefix ${prefix} ${package}@${version}`;
23 | };
24 |
25 | const installModules = (packageName, version, tmpDirName) => {
26 | return new Promise((resolve, reject) => {
27 | exec(
28 | installCommand(packageName, version, tmpDirName),
29 | {
30 | stdio: ['ignore'],
31 | },
32 | (error) => {
33 | if (error) {
34 | reject(error);
35 | } else {
36 | resolve();
37 | }
38 | }
39 | );
40 | });
41 | };
42 |
43 | module.exports = { getVersionList, installModules };
44 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "is-esm",
3 | "version": "0.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@rollup/plugin-node-resolve": {
8 | "version": "7.1.3",
9 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz",
10 | "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==",
11 | "requires": {
12 | "@rollup/pluginutils": "^3.0.8",
13 | "@types/resolve": "0.0.8",
14 | "builtin-modules": "^3.1.0",
15 | "is-module": "^1.0.0",
16 | "resolve": "^1.14.2"
17 | }
18 | },
19 | "@rollup/pluginutils": {
20 | "version": "3.0.10",
21 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.0.10.tgz",
22 | "integrity": "sha512-d44M7t+PjmMrASHbhgpSbVgtL6EFyX7J4mYxwQ/c5eoaE6N2VgCgEcWVzNnwycIloti+/MpwFr8qfw+nRw00sw==",
23 | "requires": {
24 | "@types/estree": "0.0.39",
25 | "estree-walker": "^1.0.1",
26 | "picomatch": "^2.2.2"
27 | }
28 | },
29 | "@types/color-name": {
30 | "version": "1.1.1",
31 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
32 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
33 | },
34 | "@types/estree": {
35 | "version": "0.0.39",
36 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
37 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw=="
38 | },
39 | "@types/node": {
40 | "version": "14.0.1",
41 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.1.tgz",
42 | "integrity": "sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA=="
43 | },
44 | "@types/resolve": {
45 | "version": "0.0.8",
46 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
47 | "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==",
48 | "requires": {
49 | "@types/node": "*"
50 | }
51 | },
52 | "ansi-regex": {
53 | "version": "5.0.1",
54 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
55 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
56 | },
57 | "ansi-styles": {
58 | "version": "4.2.1",
59 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
60 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
61 | "requires": {
62 | "@types/color-name": "^1.1.1",
63 | "color-convert": "^2.0.1"
64 | }
65 | },
66 | "balanced-match": {
67 | "version": "1.0.0",
68 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
69 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
70 | },
71 | "brace-expansion": {
72 | "version": "1.1.11",
73 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
74 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
75 | "requires": {
76 | "balanced-match": "^1.0.0",
77 | "concat-map": "0.0.1"
78 | }
79 | },
80 | "builtin-modules": {
81 | "version": "3.1.0",
82 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz",
83 | "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw=="
84 | },
85 | "chalk": {
86 | "version": "3.0.0",
87 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
88 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
89 | "requires": {
90 | "ansi-styles": "^4.1.0",
91 | "supports-color": "^7.1.0"
92 | }
93 | },
94 | "cli-cursor": {
95 | "version": "3.1.0",
96 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
97 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
98 | "requires": {
99 | "restore-cursor": "^3.1.0"
100 | }
101 | },
102 | "cli-spinners": {
103 | "version": "2.3.0",
104 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.3.0.tgz",
105 | "integrity": "sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w=="
106 | },
107 | "clone": {
108 | "version": "1.0.4",
109 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
110 | "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
111 | },
112 | "color-convert": {
113 | "version": "2.0.1",
114 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
115 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
116 | "requires": {
117 | "color-name": "~1.1.4"
118 | }
119 | },
120 | "color-name": {
121 | "version": "1.1.4",
122 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
123 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
124 | },
125 | "concat-map": {
126 | "version": "0.0.1",
127 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
128 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
129 | },
130 | "defaults": {
131 | "version": "1.0.3",
132 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
133 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
134 | "requires": {
135 | "clone": "^1.0.2"
136 | }
137 | },
138 | "escape-string-regexp": {
139 | "version": "1.0.5",
140 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
141 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
142 | },
143 | "estree-walker": {
144 | "version": "1.0.1",
145 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
146 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg=="
147 | },
148 | "fs.realpath": {
149 | "version": "1.0.0",
150 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
151 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
152 | },
153 | "fsevents": {
154 | "version": "2.1.3",
155 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
156 | "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
157 | "optional": true
158 | },
159 | "glob": {
160 | "version": "7.1.6",
161 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
162 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
163 | "requires": {
164 | "fs.realpath": "^1.0.0",
165 | "inflight": "^1.0.4",
166 | "inherits": "2",
167 | "minimatch": "^3.0.4",
168 | "once": "^1.3.0",
169 | "path-is-absolute": "^1.0.0"
170 | }
171 | },
172 | "has-flag": {
173 | "version": "4.0.0",
174 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
175 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
176 | },
177 | "inflight": {
178 | "version": "1.0.6",
179 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
180 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
181 | "requires": {
182 | "once": "^1.3.0",
183 | "wrappy": "1"
184 | }
185 | },
186 | "inherits": {
187 | "version": "2.0.4",
188 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
189 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
190 | },
191 | "is-interactive": {
192 | "version": "1.0.0",
193 | "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
194 | "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="
195 | },
196 | "is-module": {
197 | "version": "1.0.0",
198 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
199 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE="
200 | },
201 | "log-symbols": {
202 | "version": "3.0.0",
203 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
204 | "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
205 | "requires": {
206 | "chalk": "^2.4.2"
207 | },
208 | "dependencies": {
209 | "ansi-styles": {
210 | "version": "3.2.1",
211 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
212 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
213 | "requires": {
214 | "color-convert": "^1.9.0"
215 | }
216 | },
217 | "chalk": {
218 | "version": "2.4.2",
219 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
220 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
221 | "requires": {
222 | "ansi-styles": "^3.2.1",
223 | "escape-string-regexp": "^1.0.5",
224 | "supports-color": "^5.3.0"
225 | }
226 | },
227 | "color-convert": {
228 | "version": "1.9.3",
229 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
230 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
231 | "requires": {
232 | "color-name": "1.1.3"
233 | }
234 | },
235 | "color-name": {
236 | "version": "1.1.3",
237 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
238 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
239 | },
240 | "has-flag": {
241 | "version": "3.0.0",
242 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
243 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
244 | },
245 | "supports-color": {
246 | "version": "5.5.0",
247 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
248 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
249 | "requires": {
250 | "has-flag": "^3.0.0"
251 | }
252 | }
253 | }
254 | },
255 | "mimic-fn": {
256 | "version": "2.1.0",
257 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
258 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
259 | },
260 | "minimatch": {
261 | "version": "3.0.4",
262 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
263 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
264 | "requires": {
265 | "brace-expansion": "^1.1.7"
266 | }
267 | },
268 | "mute-stream": {
269 | "version": "0.0.8",
270 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
271 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="
272 | },
273 | "once": {
274 | "version": "1.4.0",
275 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
276 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
277 | "requires": {
278 | "wrappy": "1"
279 | }
280 | },
281 | "onetime": {
282 | "version": "5.1.0",
283 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
284 | "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
285 | "requires": {
286 | "mimic-fn": "^2.1.0"
287 | }
288 | },
289 | "ora": {
290 | "version": "4.0.4",
291 | "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.4.tgz",
292 | "integrity": "sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww==",
293 | "requires": {
294 | "chalk": "^3.0.0",
295 | "cli-cursor": "^3.1.0",
296 | "cli-spinners": "^2.2.0",
297 | "is-interactive": "^1.0.0",
298 | "log-symbols": "^3.0.0",
299 | "mute-stream": "0.0.8",
300 | "strip-ansi": "^6.0.0",
301 | "wcwidth": "^1.0.1"
302 | }
303 | },
304 | "path-is-absolute": {
305 | "version": "1.0.1",
306 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
307 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
308 | },
309 | "path-parse": {
310 | "version": "1.0.7",
311 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
312 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
313 | },
314 | "picomatch": {
315 | "version": "2.2.2",
316 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
317 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg=="
318 | },
319 | "resolve": {
320 | "version": "1.17.0",
321 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
322 | "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
323 | "requires": {
324 | "path-parse": "^1.0.6"
325 | }
326 | },
327 | "restore-cursor": {
328 | "version": "3.1.0",
329 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
330 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
331 | "requires": {
332 | "onetime": "^5.1.0",
333 | "signal-exit": "^3.0.2"
334 | }
335 | },
336 | "rimraf": {
337 | "version": "3.0.2",
338 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
339 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
340 | "requires": {
341 | "glob": "^7.1.3"
342 | }
343 | },
344 | "rollup": {
345 | "version": "2.10.2",
346 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.10.2.tgz",
347 | "integrity": "sha512-tivFM8UXBlYOUqpBYD3pRktYpZvK/eiCQ190eYlrAyrpE/lzkyG2gbawroNdbwmzyUc7Y4eT297xfzv0BDh9qw==",
348 | "requires": {
349 | "fsevents": "~2.1.2"
350 | }
351 | },
352 | "signal-exit": {
353 | "version": "3.0.3",
354 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
355 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
356 | },
357 | "strip-ansi": {
358 | "version": "6.0.0",
359 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
360 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
361 | "requires": {
362 | "ansi-regex": "^5.0.0"
363 | }
364 | },
365 | "supports-color": {
366 | "version": "7.1.0",
367 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
368 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
369 | "requires": {
370 | "has-flag": "^4.0.0"
371 | }
372 | },
373 | "tmp": {
374 | "version": "0.2.1",
375 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
376 | "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
377 | "requires": {
378 | "rimraf": "^3.0.0"
379 | }
380 | },
381 | "wcwidth": {
382 | "version": "1.0.1",
383 | "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
384 | "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
385 | "requires": {
386 | "defaults": "^1.0.3"
387 | }
388 | },
389 | "wrappy": {
390 | "version": "1.0.2",
391 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
392 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
393 | }
394 | }
395 | }
396 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "is-esm",
3 | "version": "0.0.0",
4 | "description": "CLI tool that helps you check if a package is using ECMAScript modules.",
5 | "main": "main.js",
6 | "bin": {
7 | "is-esm": "./index.js"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git+https://github.com/mgechev/is-esm.git"
12 | },
13 | "keywords": [
14 | "esm",
15 | "modules",
16 | "javascript",
17 | "npm",
18 | "cjs",
19 | "commonjs"
20 | ],
21 | "author": "Minko Gechev ",
22 | "license": "MIT",
23 | "bugs": {
24 | "url": "https://github.com/mgechev/is-esm/issues"
25 | },
26 | "homepage": "https://github.com/mgechev/is-esm#readme",
27 | "dependencies": {
28 | "@rollup/plugin-node-resolve": "^7.1.3",
29 | "ora": "^4.0.4",
30 | "rimraf": "^3.0.2",
31 | "rollup": "^2.10.2",
32 | "tmp": "^0.2.1"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------