From 49b208c9ec8cf0d8c3a61023d4d152c88f6b6648 Mon Sep 17 00:00:00 2001 From: Vitaly Gashkov Date: Sun, 15 Feb 2026 17:44:53 +0500 Subject: [PATCH] refactor: migrate to esm --- bin/cli.js | 4 ++-- crextractor.js | 15 ++++++++------- package-lock.json | 2 +- package.json | 11 +++++++++-- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/bin/cli.js b/bin/cli.js index a8d3876..8914238 100755 --- a/bin/cli.js +++ b/bin/cli.js @@ -1,7 +1,7 @@ #!/usr/bin/env node -const { parseArgs } = require('node:util'); -const { extract } = require('../crextractor'); +import { parseArgs } from 'node:util'; +import { extract } from '../crextractor.js'; const args = parseArgs({ options: { diff --git a/crextractor.js b/crextractor.js index c2e5ee8..28cb9f3 100644 --- a/crextractor.js +++ b/crextractor.js @@ -1,8 +1,8 @@ -const { execSync } = require('node:child_process'); -const { join } = require('node:path'); -const { readdir, readFile, writeFile, rm } = require('node:fs/promises'); -const { existsSync } = require('node:fs'); -const { download } = require('molnia'); +import { execSync } from 'node:child_process'; +import { join } from 'node:path'; +import { readdir, readFile, writeFile, rm } from 'node:fs/promises'; +import { existsSync } from 'node:fs'; +import { download } from 'molnia'; const downloadMobileApk = async () => { const url = 'https://api.qqaoop.com/v11/apps/com.crunchyroll.crunchyroid/download?userId=1'; @@ -103,7 +103,8 @@ const parseVersion = async (decompiledDir) => { const manifestJsonPath = join(decompiledDir, 'resources', 'manifest.json'); const manifestXmlPath = join(decompiledDir, 'resources', 'AndroidManifest.xml'); if (existsSync(manifestJsonPath)) { - const manifest = require(manifestJsonPath); + const manifestContent = await readFile(manifestJsonPath, 'utf8'); + const manifest = JSON.parse(manifestContent); const version = `${manifest.version_name} (${manifest.version_code})`; return version; } else if (existsSync(manifestXmlPath)) { @@ -159,4 +160,4 @@ const pull = async ({ target = 'mobile' } = {}) => { return credentials; }; -module.exports = { extract, pull }; +export { extract, pull }; diff --git a/package-lock.json b/package-lock.json index e6f863f..49e8cb9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "typescript": "^5.9.3" }, "engines": { - "node": ">=22" + "node": ">=24" } }, "node_modules/@oxfmt/darwin-arm64": { diff --git a/package.json b/package.json index 38c7bc5..0ff2495 100644 --- a/package.json +++ b/package.json @@ -29,9 +29,16 @@ "crextractor.d.ts", "crextractor.js" ], - "type": "commonjs", + "type": "module", "main": "crextractor.js", "types": "crextractor.d.ts", + "exports": { + ".": { + "types": "./crextractor.d.ts", + "import": "./crextractor.js", + "require": "./crextractor.js" + } + }, "scripts": { "start": "node bin/cli.js", "extract:mobile": "node bin/cli.js --target mobile --output ./credentials.mobile.json", @@ -46,7 +53,7 @@ "typescript": "^5.9.3" }, "engines": { - "node": ">=22" + "node": ">=24" }, "readmeFilename": "README.md" }