@any-listen/extension-kit 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { argv } from 'node:process'\nimport { parseArgs } from 'node:util'\n\nconst { values } = parseArgs({\n args: argv.slice(2),\n options: {\n build: {\n type: 'boolean',\n },\n publish: {\n type: 'boolean',\n },\n },\n})\n\nif (values.build) {\n void import('./build')\n} else if (values.publish) {\n void import('./publish')\n} else {\n console.log('Please specify a command: build or publish')\n}\n"],"mappings":";;;;AAKA,IAAM,EAAE,WAAW,UAAU;CAC3B,MAAM,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"bin.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { argv } from 'node:process'\nimport { parseArgs } from 'node:util'\n\nconst { values } = parseArgs({\n args: argv.slice(2),\n options: {\n build: {\n type: 'boolean',\n },\n publish: {\n type: 'boolean',\n },\n },\n})\n\nif (values.build) {\n void import('./build')\n} else if (values.publish) {\n void import('./publish')\n} else {\n console.log('Please specify a command: build or publish')\n}\n"],"mappings":";;;;AAKA,IAAM,EAAE,WAAW,UAAU;CAC3B,MAAM,KAAK,MAAM,CAAC;CAClB,SAAS;EACP,OAAO,EACL,MAAM,UACR;EACA,SAAS,EACP,MAAM,UACR;CACF;AACF,CAAC;AAED,IAAI,OAAO,OACT,OAAY;KACP,IAAI,OAAO,SAChB,OAAY;KAEZ,QAAQ,IAAI,4CAA4C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-cwRtaFpY.js","names":[],"sources":["../src/cpResources.ts","../src/mainifest.ts","../src/pack.ts","../src/vite.config.ts","../src/build.ts"],"sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nimport { state } from './state'\n\nexport const cpResources = async () => {\n const sourcePath = state.resourcesDir\n const targetPath = path.join(state.distDir, 'resources')\n const sourceI18nPath = state.i18nDir\n const targetI18nPath = path.join(state.distDir, 'i18n')\n\n await Promise.all([\n fs.promises.cp(sourcePath, targetPath, { recursive: true }),\n fs.promises.cp(sourceI18nPath, targetI18nPath, { recursive: true }),\n ])\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport { EXTENSION } from './constants'\nimport { state } from './state'\nimport type { ExtensionConfig } from './types/build'\n\nexport const createMainifest = async (config: ExtensionConfig) => {\n const mainifest = {\n id: config.id,\n name: config.name,\n description: config.description,\n icon: config.icon,\n version: config.version,\n target_engine: config.target_engine,\n author: config.author,\n homepage: config.homepage,\n license: config.license,\n categories: config.categories,\n tags: config.tags,\n grant: config.grant,\n contributes: config.contributes,\n main: EXTENSION.entryFileName,\n }\n\n await fs.promises.writeFile(path.join(state.distDir, EXTENSION.mainifestName), JSON.stringify(mainifest, null, 2), 'utf8')\n}\n","import crypto from 'node:crypto'\nimport fs from 'node:fs'\nimport path from 'node:path'\n\nimport { EXTENSION } from './constants'\nimport { state } from './state'\nimport type { ExtensionConfig } from './types/build'\nimport { buildPackageName } from './utils'\n\nconst buildPublicKey = (publicKey: string) => {\n if (!publicKey.includes('-----BEGIN PUBLIC KEY-----')) {\n return `-----BEGIN PUBLIC KEY-----\\n${publicKey}\\n-----END PUBLIC KEY-----`\n }\n return publicKey\n}\n\nconst signData = (data: Buffer, privateKey: string) => {\n const sign = crypto.createSign('SHA256')\n sign.update(data)\n sign.end()\n const signature = sign.sign(privateKey, 'hex')\n return signature\n}\nconst verifySignature = (data: Buffer, publicKey: string, signature: string) => {\n const verify = crypto.createVerify('SHA256')\n verify.update(data)\n verify.end()\n const isValid = verify.verify(publicKey, signature, 'hex')\n return isValid\n}\n\nconst packFile = async ({ gzip, cwd, files, dist }: { gzip: boolean; cwd: string; files: string[]; dist: string }) => {\n const { c } = await import('tar')\n return new Promise<void>((resolve, reject) => {\n c(\n {\n gzip,\n cwd,\n },\n files\n )\n .pipe(fs.createWriteStream(dist))\n .on('finish', () => {\n resolve()\n })\n .on('error', reject)\n })\n}\n\nexport const pack = async (config: ExtensionConfig) => {\n let privateKey = process.env.PRI_KEY?.trim()\n let publicKey = process.env.PUB_KEY?.trim()\n if (!privateKey || !publicKey) throw new Error('Missing private key or public key')\n if (!privateKey.includes('-----BEGIN PRIVATE KEY-----')) {\n privateKey = `-----BEGIN PRIVATE KEY-----\\n${privateKey}\\n-----END PRIVATE KEY-----`\n }\n\n const unpackedDir = path.join(state.outputDir, 'unpacked')\n await fs.promises.rm(unpackedDir, { recursive: true }).catch(() => {})\n await fs.promises.mkdir(unpackedDir, { recursive: true }).catch(() => {})\n const extBundleFilePath = path.join(unpackedDir, EXTENSION.extBundleFileName)\n await packFile({\n gzip: true,\n cwd: state.distDir,\n files: [EXTENSION.entryFileName, EXTENSION.mainifestName, 'resources', 'i18n'],\n dist: extBundleFilePath,\n })\n const buf = await fs.promises.readFile(extBundleFilePath)\n const signature = signData(buf, privateKey)\n if (!verifySignature(buf, buildPublicKey(publicKey), signature)) {\n throw new Error('Signature is valid, please check your public key')\n }\n await fs.promises.writeFile(path.join(unpackedDir, EXTENSION.signFileName), `${signature}\\n${publicKey}`)\n await packFile({\n gzip: true,\n cwd: unpackedDir,\n files: [EXTENSION.extBundleFileName, EXTENSION.signFileName],\n dist: path.join(state.outputDir, buildPackageName(config)),\n })\n}\n","import { defineConfig } from 'vite'\n\nimport { EXTENSION } from './constants'\nimport { state } from './state'\n\nconst createBuildConfig = (name: string, filePath: string) => {\n return defineConfig({\n base: './',\n mode: process.env.NODE_ENV,\n publicDir: false,\n resolve: {\n alias: {\n '@': state.srcDir,\n },\n },\n build: {\n target: 'esnext',\n emptyOutDir: true,\n minify: false,\n outDir: state.distDir,\n rolldownOptions: {\n external: ['any-listen'],\n input: {\n [name]: filePath,\n },\n output: {\n entryFileNames: '[name]',\n format: 'iife',\n },\n },\n },\n })\n}\n\nexport default (isIsolateMode?: boolean) => {\n const inputs = isIsolateMode\n ? {\n [EXTENSION.entryFileName]: state.mainEntry,\n 'resources/isolate-preload.js': state.isolatePreloadEntry,\n }\n : {\n [EXTENSION.entryFileName]: state.mainEntry,\n }\n return Object.entries(inputs).map(([name, filePath]) => createBuildConfig(name, filePath))\n}\n","import { cpResources } from './cpResources'\nimport { createMainifest } from './mainifest'\nimport { pack } from './pack'\nimport { state } from './state'\nimport { build, getConfig, loadEnvFile } from './utils'\nimport createConfigs from './vite.config'\n\nconst run = async () => {\n await loadEnvFile()\n const config = await getConfig()\n const appConfigs = createConfigs(state.isIsolateMode)\n await Promise.all(appConfigs.map(async (appConfig) => build(appConfig)))\n await Promise.all([cpResources(), createMainifest(config)])\n await pack(config)\n}\n\nvoid run()\n"],"mappings":";;;;;;AAKA,IAAa,cAAc,YAAY;CACrC,MAAM,aAAa,MAAM;CACzB,MAAM,aAAa,KAAK,KAAK,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"build-cwRtaFpY.js","names":[],"sources":["../src/cpResources.ts","../src/mainifest.ts","../src/pack.ts","../src/vite.config.ts","../src/build.ts"],"sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nimport { state } from './state'\n\nexport const cpResources = async () => {\n const sourcePath = state.resourcesDir\n const targetPath = path.join(state.distDir, 'resources')\n const sourceI18nPath = state.i18nDir\n const targetI18nPath = path.join(state.distDir, 'i18n')\n\n await Promise.all([\n fs.promises.cp(sourcePath, targetPath, { recursive: true }),\n fs.promises.cp(sourceI18nPath, targetI18nPath, { recursive: true }),\n ])\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport { EXTENSION } from './constants'\nimport { state } from './state'\nimport type { ExtensionConfig } from './types/build'\n\nexport const createMainifest = async (config: ExtensionConfig) => {\n const mainifest = {\n id: config.id,\n name: config.name,\n description: config.description,\n icon: config.icon,\n version: config.version,\n target_engine: config.target_engine,\n author: config.author,\n homepage: config.homepage,\n license: config.license,\n categories: config.categories,\n tags: config.tags,\n grant: config.grant,\n contributes: config.contributes,\n main: EXTENSION.entryFileName,\n }\n\n await fs.promises.writeFile(path.join(state.distDir, EXTENSION.mainifestName), JSON.stringify(mainifest, null, 2), 'utf8')\n}\n","import crypto from 'node:crypto'\nimport fs from 'node:fs'\nimport path from 'node:path'\n\nimport { EXTENSION } from './constants'\nimport { state } from './state'\nimport type { ExtensionConfig } from './types/build'\nimport { buildPackageName } from './utils'\n\nconst buildPublicKey = (publicKey: string) => {\n if (!publicKey.includes('-----BEGIN PUBLIC KEY-----')) {\n return `-----BEGIN PUBLIC KEY-----\\n${publicKey}\\n-----END PUBLIC KEY-----`\n }\n return publicKey\n}\n\nconst signData = (data: Buffer, privateKey: string) => {\n const sign = crypto.createSign('SHA256')\n sign.update(data)\n sign.end()\n const signature = sign.sign(privateKey, 'hex')\n return signature\n}\nconst verifySignature = (data: Buffer, publicKey: string, signature: string) => {\n const verify = crypto.createVerify('SHA256')\n verify.update(data)\n verify.end()\n const isValid = verify.verify(publicKey, signature, 'hex')\n return isValid\n}\n\nconst packFile = async ({ gzip, cwd, files, dist }: { gzip: boolean; cwd: string; files: string[]; dist: string }) => {\n const { c } = await import('tar')\n return new Promise<void>((resolve, reject) => {\n c(\n {\n gzip,\n cwd,\n },\n files\n )\n .pipe(fs.createWriteStream(dist))\n .on('finish', () => {\n resolve()\n })\n .on('error', reject)\n })\n}\n\nexport const pack = async (config: ExtensionConfig) => {\n let privateKey = process.env.PRI_KEY?.trim()\n let publicKey = process.env.PUB_KEY?.trim()\n if (!privateKey || !publicKey) throw new Error('Missing private key or public key')\n if (!privateKey.includes('-----BEGIN PRIVATE KEY-----')) {\n privateKey = `-----BEGIN PRIVATE KEY-----\\n${privateKey}\\n-----END PRIVATE KEY-----`\n }\n\n const unpackedDir = path.join(state.outputDir, 'unpacked')\n await fs.promises.rm(unpackedDir, { recursive: true }).catch(() => {})\n await fs.promises.mkdir(unpackedDir, { recursive: true }).catch(() => {})\n const extBundleFilePath = path.join(unpackedDir, EXTENSION.extBundleFileName)\n await packFile({\n gzip: true,\n cwd: state.distDir,\n files: [EXTENSION.entryFileName, EXTENSION.mainifestName, 'resources', 'i18n'],\n dist: extBundleFilePath,\n })\n const buf = await fs.promises.readFile(extBundleFilePath)\n const signature = signData(buf, privateKey)\n if (!verifySignature(buf, buildPublicKey(publicKey), signature)) {\n throw new Error('Signature is valid, please check your public key')\n }\n await fs.promises.writeFile(path.join(unpackedDir, EXTENSION.signFileName), `${signature}\\n${publicKey}`)\n await packFile({\n gzip: true,\n cwd: unpackedDir,\n files: [EXTENSION.extBundleFileName, EXTENSION.signFileName],\n dist: path.join(state.outputDir, buildPackageName(config)),\n })\n}\n","import { defineConfig } from 'vite'\n\nimport { EXTENSION } from './constants'\nimport { state } from './state'\n\nconst createBuildConfig = (name: string, filePath: string) => {\n return defineConfig({\n base: './',\n mode: process.env.NODE_ENV,\n publicDir: false,\n resolve: {\n alias: {\n '@': state.srcDir,\n },\n },\n build: {\n target: 'esnext',\n emptyOutDir: true,\n minify: false,\n outDir: state.distDir,\n rolldownOptions: {\n external: ['any-listen'],\n input: {\n [name]: filePath,\n },\n output: {\n entryFileNames: '[name]',\n format: 'iife',\n },\n },\n },\n })\n}\n\nexport default (isIsolateMode?: boolean) => {\n const inputs = isIsolateMode\n ? {\n [EXTENSION.entryFileName]: state.mainEntry,\n 'resources/isolate-preload.js': state.isolatePreloadEntry,\n }\n : {\n [EXTENSION.entryFileName]: state.mainEntry,\n }\n return Object.entries(inputs).map(([name, filePath]) => createBuildConfig(name, filePath))\n}\n","import { cpResources } from './cpResources'\nimport { createMainifest } from './mainifest'\nimport { pack } from './pack'\nimport { state } from './state'\nimport { build, getConfig, loadEnvFile } from './utils'\nimport createConfigs from './vite.config'\n\nconst run = async () => {\n await loadEnvFile()\n const config = await getConfig()\n const appConfigs = createConfigs(state.isIsolateMode)\n await Promise.all(appConfigs.map(async (appConfig) => build(appConfig)))\n await Promise.all([cpResources(), createMainifest(config)])\n await pack(config)\n}\n\nvoid run()\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish-WfB8QiEk.js","names":[],"sources":["../src/publish.ts"],"sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nimport type { VersionInfo } from './types/build'\nimport { buildPackageName, getConfig, ROOT_DIR } from './utils'\n\nexport const run = async () => {\n const config = await getConfig()\n const filePath = path.join(ROOT_DIR, 'publish/version.json')\n let versionInfo = await fs.promises\n .readFile(filePath, 'utf-8')\n .then((d) => JSON.parse(d) as VersionInfo)\n .catch(() => null)\n if (versionInfo) {\n if (versionInfo.version === config.version) {\n console.warn(`Version (v${config.version}) already published`)\n process.exit(1)\n }\n versionInfo.history ||= []\n versionInfo.history.push({\n version: versionInfo.version,\n download_url: versionInfo.download_url,\n log: versionInfo.log,\n date: versionInfo.date,\n })\n } else {\n versionInfo = { version: '', download_url: '', log: '', date: new Date().toISOString(), history: [] }\n }\n versionInfo.version = config.version\n if (config.download_url_template) {\n versionInfo.download_url = `${config.download_url_template.replaceAll('{version}', config.version)}/${buildPackageName(config)}`\n }\n versionInfo.log = await fs.promises\n .readFile(path.join(ROOT_DIR, 'publish/changeLog.md'), 'utf-8')\n .then((d) => d.toString().trim())\n .catch(() => '')\n versionInfo.date = new Date().toISOString()\n\n await fs.promises.rm(filePath, { recursive: true, force: true })\n await fs.promises.writeFile(filePath, JSON.stringify(versionInfo))\n}\n\nvoid run()\n"],"mappings":";;;;AAMA,IAAa,MAAM,YAAY;CAC7B,MAAM,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"publish-WfB8QiEk.js","names":[],"sources":["../src/publish.ts"],"sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nimport type { VersionInfo } from './types/build'\nimport { buildPackageName, getConfig, ROOT_DIR } from './utils'\n\nexport const run = async () => {\n const config = await getConfig()\n const filePath = path.join(ROOT_DIR, 'publish/version.json')\n let versionInfo = await fs.promises\n .readFile(filePath, 'utf-8')\n .then((d) => JSON.parse(d) as VersionInfo)\n .catch(() => null)\n if (versionInfo) {\n if (versionInfo.version === config.version) {\n console.warn(`Version (v${config.version}) already published`)\n process.exit(1)\n }\n versionInfo.history ||= []\n versionInfo.history.push({\n version: versionInfo.version,\n download_url: versionInfo.download_url,\n log: versionInfo.log,\n date: versionInfo.date,\n })\n } else {\n versionInfo = { version: '', download_url: '', log: '', date: new Date().toISOString(), history: [] }\n }\n versionInfo.version = config.version\n if (config.download_url_template) {\n versionInfo.download_url = `${config.download_url_template.replaceAll('{version}', config.version)}/${buildPackageName(config)}`\n }\n versionInfo.log = await fs.promises\n .readFile(path.join(ROOT_DIR, 'publish/changeLog.md'), 'utf-8')\n .then((d) => d.toString().trim())\n .catch(() => '')\n versionInfo.date = new Date().toISOString()\n\n await fs.promises.rm(filePath, { recursive: true, force: true })\n await fs.promises.writeFile(filePath, JSON.stringify(versionInfo))\n}\n\nvoid run()\n"],"mappings":";;;;AAMA,IAAa,MAAM,YAAY;CAC7B,MAAM,SAAS,MAAM,UAAU;CAC/B,MAAM,WAAW,KAAK,KAAK,UAAU,sBAAsB;CAC3D,IAAI,cAAc,MAAM,GAAG,SACxB,SAAS,UAAU,OAAO,EAC1B,MAAM,MAAM,KAAK,MAAM,CAAC,CAAgB,EACxC,YAAY,IAAI;CACnB,IAAI,aAAa;EACf,IAAI,YAAY,YAAY,OAAO,SAAS;GAC1C,QAAQ,KAAK,aAAa,OAAO,QAAQ,oBAAoB;GAC7D,QAAQ,KAAK,CAAC;EAChB;EACA,YAAY,YAAY,CAAC;EACzB,YAAY,QAAQ,KAAK;GACvB,SAAS,YAAY;GACrB,cAAc,YAAY;GAC1B,KAAK,YAAY;GACjB,MAAM,YAAY;EACpB,CAAC;CACH,OACE,cAAc;EAAE,SAAS;EAAI,cAAc;EAAI,KAAK;EAAI,uBAAM,IAAI,KAAK,GAAE,YAAY;EAAG,SAAS,CAAC;CAAE;CAEtG,YAAY,UAAU,OAAO;CAC7B,IAAI,OAAO,uBACT,YAAY,eAAe,GAAG,OAAO,sBAAsB,WAAW,aAAa,OAAO,OAAO,EAAE,GAAG,iBAAiB,MAAM;CAE/H,YAAY,MAAM,MAAM,GAAG,SACxB,SAAS,KAAK,KAAK,UAAU,sBAAsB,GAAG,OAAO,EAC7D,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,EAC/B,YAAY,EAAE;CACjB,YAAY,wBAAO,IAAI,KAAK,GAAE,YAAY;CAE1C,MAAM,GAAG,SAAS,GAAG,UAAU;EAAE,WAAW;EAAM,OAAO;CAAK,CAAC;CAC/D,MAAM,GAAG,SAAS,UAAU,UAAU,KAAK,UAAU,WAAW,CAAC;AACnE;AAEK,IAAI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-BN85b34y.js","names":[],"sources":["../src/state.ts","../src/constants.ts","../src/utils.ts"],"sourcesContent":["export const state = {\n srcDir: '',\n distDir: '',\n outputDir: '',\n i18nDir: '',\n resourcesDir: '',\n isIsolateMode: false,\n mainEntry: '',\n isolatePreloadEntry: '',\n}\n","export const EXTENSION = {\n pkgExtName: 'alix',\n mainifestName: 'manifest.json',\n signFileName: 'sig',\n extBundleFileName: 'ext.tgz',\n entryFileName: 'main.js',\n versionInfoName: 'version.json',\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\n\nimport { build as viteBuild, type UserConfig } from 'vite'\n\nimport { EXTENSION } from './constants'\nimport { state } from './state'\nimport type { ExtensionConfig } from './types/build'\n\nexport const ROOT_DIR = path.join(import.meta.dirname.split('node_modules')[0])\n\nconst buildPath = (subPath: string) => {\n if (path.isAbsolute(subPath)) return subPath\n return path.join(ROOT_DIR, subPath)\n}\n\nexport const getConfig = async () => {\n const configPath = path.join(ROOT_DIR, 'config.ts')\n await fs.access(configPath, fs.constants.F_OK)\n const config = ((await import(`file://${configPath}`)) as { default: ExtensionConfig }).default\n\n state.srcDir = buildPath(config.buildConfig?.srcDir || 'src')\n state.distDir = buildPath(config.buildConfig?.distDir || 'dist')\n state.outputDir = buildPath(config.buildConfig?.outputDir || 'build')\n state.i18nDir = buildPath(config.buildConfig?.i18nDir || 'i18n')\n state.resourcesDir = buildPath(config.buildConfig?.resourcesDir || 'resources')\n state.isIsolateMode = config.buildConfig?.isIsolateMode || false\n if (state.isIsolateMode) {\n state.mainEntry = buildPath(config.buildConfig?.mainEntry || path.join(state.srcDir, 'main/index.ts'))\n state.isolatePreloadEntry = buildPath(\n config.buildConfig?.isolatePreloadEntry || path.join(state.srcDir, 'isolate-preload/index.ts')\n )\n } else {\n state.mainEntry = buildPath(config.buildConfig?.mainEntry || path.join(state.srcDir, 'index.ts'))\n }\n\n return config\n}\n\nexport const loadEnvFile = async () => {\n const envPath = path.join(ROOT_DIR, '.env')\n let envContent: string\n try {\n await fs.access(envPath, fs.constants.F_OK)\n envContent = (await fs.readFile(envPath, 'utf-8')).trim()\n } catch {\n return\n }\n if (!envContent) return\n const lines = envContent.split('\\n')\n for (const line of lines) {\n let [key, ...rest] = line.split('=')\n key = key.trim()\n if (key.startsWith('#') || key === '') continue\n process.env[key] = rest.join('=').trim()\n }\n}\n\nexport const buildPackageName = (config: ExtensionConfig) => {\n return `${config.id}_v${config.version}.${EXTENSION.pkgExtName}`\n}\n\n/**\n * build code\n */\nexport const build = async (config: UserConfig) => {\n if (config.build) config.build.watch = null\n return viteBuild({ ...config, configFile: false })\n .then(() => {\n // output\n // console.log(output)\n return true\n })\n .catch((error) => {\n console.log(error)\n return false\n })\n}\n"],"mappings":";;;;AAAA,IAAa,QAAQ;CACnB,QAAQ;CACR,SAAS;CACT,WAAW;CACX,SAAS;CACT,cAAc;CACd,eAAe;CACf,WAAW;CACX,qBAAqB;
|
|
1
|
+
{"version":3,"file":"utils-BN85b34y.js","names":[],"sources":["../src/state.ts","../src/constants.ts","../src/utils.ts"],"sourcesContent":["export const state = {\n srcDir: '',\n distDir: '',\n outputDir: '',\n i18nDir: '',\n resourcesDir: '',\n isIsolateMode: false,\n mainEntry: '',\n isolatePreloadEntry: '',\n}\n","export const EXTENSION = {\n pkgExtName: 'alix',\n mainifestName: 'manifest.json',\n signFileName: 'sig',\n extBundleFileName: 'ext.tgz',\n entryFileName: 'main.js',\n versionInfoName: 'version.json',\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\n\nimport { build as viteBuild, type UserConfig } from 'vite'\n\nimport { EXTENSION } from './constants'\nimport { state } from './state'\nimport type { ExtensionConfig } from './types/build'\n\nexport const ROOT_DIR = path.join(import.meta.dirname.split('node_modules')[0])\n\nconst buildPath = (subPath: string) => {\n if (path.isAbsolute(subPath)) return subPath\n return path.join(ROOT_DIR, subPath)\n}\n\nexport const getConfig = async () => {\n const configPath = path.join(ROOT_DIR, 'config.ts')\n await fs.access(configPath, fs.constants.F_OK)\n const config = ((await import(`file://${configPath}`)) as { default: ExtensionConfig }).default\n\n state.srcDir = buildPath(config.buildConfig?.srcDir || 'src')\n state.distDir = buildPath(config.buildConfig?.distDir || 'dist')\n state.outputDir = buildPath(config.buildConfig?.outputDir || 'build')\n state.i18nDir = buildPath(config.buildConfig?.i18nDir || 'i18n')\n state.resourcesDir = buildPath(config.buildConfig?.resourcesDir || 'resources')\n state.isIsolateMode = config.buildConfig?.isIsolateMode || false\n if (state.isIsolateMode) {\n state.mainEntry = buildPath(config.buildConfig?.mainEntry || path.join(state.srcDir, 'main/index.ts'))\n state.isolatePreloadEntry = buildPath(\n config.buildConfig?.isolatePreloadEntry || path.join(state.srcDir, 'isolate-preload/index.ts')\n )\n } else {\n state.mainEntry = buildPath(config.buildConfig?.mainEntry || path.join(state.srcDir, 'index.ts'))\n }\n\n return config\n}\n\nexport const loadEnvFile = async () => {\n const envPath = path.join(ROOT_DIR, '.env')\n let envContent: string\n try {\n await fs.access(envPath, fs.constants.F_OK)\n envContent = (await fs.readFile(envPath, 'utf-8')).trim()\n } catch {\n return\n }\n if (!envContent) return\n const lines = envContent.split('\\n')\n for (const line of lines) {\n let [key, ...rest] = line.split('=')\n key = key.trim()\n if (key.startsWith('#') || key === '') continue\n process.env[key] = rest.join('=').trim()\n }\n}\n\nexport const buildPackageName = (config: ExtensionConfig) => {\n return `${config.id}_v${config.version}.${EXTENSION.pkgExtName}`\n}\n\n/**\n * build code\n */\nexport const build = async (config: UserConfig) => {\n if (config.build) config.build.watch = null\n return viteBuild({ ...config, configFile: false })\n .then(() => {\n // output\n // console.log(output)\n return true\n })\n .catch((error) => {\n console.log(error)\n return false\n })\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@any-listen/extension-kit",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"any-listen",
|
|
6
6
|
"any-listen-extension"
|
|
@@ -61,17 +61,17 @@
|
|
|
61
61
|
"@eslint/js": "^9.39.4",
|
|
62
62
|
"@tsconfig/node24": "^24.0.4",
|
|
63
63
|
"@tsconfig/recommended": "^1.0.13",
|
|
64
|
-
"@typescript-eslint/eslint-plugin": "^8.59.
|
|
65
|
-
"@typescript-eslint/parser": "^8.59.
|
|
64
|
+
"@typescript-eslint/eslint-plugin": "^8.59.3",
|
|
65
|
+
"@typescript-eslint/parser": "^8.59.3",
|
|
66
66
|
"eslint-config-love": "^154.0.0",
|
|
67
67
|
"globals": "^17.6.0",
|
|
68
|
-
"tar": "^7.5.
|
|
69
|
-
"vite": "^8.0.
|
|
68
|
+
"tar": "^7.5.15",
|
|
69
|
+
"vite": "^8.0.13"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
|
-
"@types/node": "^25.
|
|
72
|
+
"@types/node": "^25.8.0",
|
|
73
73
|
"eslint": "^9.39.4",
|
|
74
|
-
"oxfmt": "^0.
|
|
74
|
+
"oxfmt": "^0.49.0",
|
|
75
75
|
"typescript": "^5.9.3"
|
|
76
76
|
},
|
|
77
77
|
"peerDependencies": {
|
package/types/app/api.d.ts
CHANGED
|
@@ -614,6 +614,22 @@ declare namespace AnyListen {
|
|
|
614
614
|
desc?: string
|
|
615
615
|
date?: string
|
|
616
616
|
}
|
|
617
|
+
|
|
618
|
+
interface MusicCommentItem {
|
|
619
|
+
id: string
|
|
620
|
+
userId?: string
|
|
621
|
+
userName: string
|
|
622
|
+
text: string
|
|
623
|
+
time?: number
|
|
624
|
+
images?: string[]
|
|
625
|
+
location?: string
|
|
626
|
+
avatar?: string
|
|
627
|
+
likedCount?: number
|
|
628
|
+
skipPage?: boolean
|
|
629
|
+
replyTotal?: number
|
|
630
|
+
reply?: MusicCommentItem[]
|
|
631
|
+
replySkipPage?: boolean
|
|
632
|
+
}
|
|
617
633
|
}
|
|
618
634
|
}
|
|
619
635
|
|
|
@@ -629,7 +645,7 @@ interface CommonParams {
|
|
|
629
645
|
}
|
|
630
646
|
interface CommonListParams extends CommonParams {
|
|
631
647
|
page: number
|
|
632
|
-
limit
|
|
648
|
+
limit?: number
|
|
633
649
|
}
|
|
634
650
|
interface CommonSearchParams extends CommonListParams {
|
|
635
651
|
keyword: string
|
|
@@ -691,21 +707,6 @@ interface MusicCommentParams extends CommonListParams {
|
|
|
691
707
|
id?: string
|
|
692
708
|
type: 'hot' | 'new' | 'reply'
|
|
693
709
|
}
|
|
694
|
-
export interface MusicComment {
|
|
695
|
-
id: string
|
|
696
|
-
userId?: string
|
|
697
|
-
userName: string
|
|
698
|
-
text: string
|
|
699
|
-
time?: number
|
|
700
|
-
images?: string[]
|
|
701
|
-
location?: string
|
|
702
|
-
avatar?: string
|
|
703
|
-
likedCount?: number
|
|
704
|
-
skipPage?: boolean
|
|
705
|
-
replyTotal?: number
|
|
706
|
-
reply?: MusicComment[]
|
|
707
|
-
replySkipPage?: boolean
|
|
708
|
-
}
|
|
709
710
|
export interface ListCommonResult<T> {
|
|
710
711
|
list: T[]
|
|
711
712
|
total: number
|
|
@@ -775,6 +776,7 @@ declare global {
|
|
|
775
776
|
type TagGroupItem = AnyListen.Resource.TagGroupItem
|
|
776
777
|
type TopSongsItem = AnyListen.Resource.TopSongsItem
|
|
777
778
|
type TopSongsDetailInfo = AnyListen.Resource.TopSongsDetailInfo
|
|
779
|
+
type MusicCommentItem = AnyListen.Resource.MusicCommentItem
|
|
778
780
|
|
|
779
781
|
type ParamsData = Record<string, string | number | null | undefined | boolean>
|
|
780
782
|
interface RequestOptions {
|
|
@@ -785,7 +787,7 @@ declare global {
|
|
|
785
787
|
maxRedirect?: number
|
|
786
788
|
// signal?: AbortController['signal']
|
|
787
789
|
signal?: unknown
|
|
788
|
-
json?: Record<string, unknown>
|
|
790
|
+
json?: Record<string, unknown> | unknown[]
|
|
789
791
|
form?: Record<string, string | number | null | undefined | boolean>
|
|
790
792
|
binary?: Uint8Array
|
|
791
793
|
text?: string
|
|
@@ -1085,7 +1087,7 @@ declare global {
|
|
|
1085
1087
|
topSongs: (params: CommonParams) => Promise<AnyListen.Resource.TopSongsItem[]>
|
|
1086
1088
|
topSongsDate: (params: TopSongsDateParams) => Promise<AnyListen.Resource.TagItem[]>
|
|
1087
1089
|
topSongsDetail: (params: TopSongsDetailParams) => Promise<TopSongsDetailResult>
|
|
1088
|
-
musicComment: (params: MusicCommentParams) => Promise<ListCommonResult<
|
|
1090
|
+
musicComment: (params: MusicCommentParams) => Promise<ListCommonResult<AnyListen.Resource.MusicCommentItem>>
|
|
1089
1091
|
}
|
|
1090
1092
|
|
|
1091
1093
|
interface BackupDataAction {
|