@yiero/vite-plugin-scriptcat-backup 1.0.0 → 1.0.2

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/index.cjs CHANGED
@@ -61,6 +61,7 @@ class BackupScript {
61
61
  addScript(scriptVersion, content) {
62
62
  const backupScriptPath = this.normalizeScriptPath(scriptVersion);
63
63
  (0, external_fs_namespaceObject.writeFileSync)(backupScriptPath, content, 'utf-8');
64
+ (0, external_fs_namespaceObject.writeFileSync)((0, external_node_path_namespaceObject.resolve)(this.backupDir, `${this.scriptName}.user.js`), content, 'utf-8');
64
65
  }
65
66
  normalizeScriptName(scriptVersion) {
66
67
  return `${this.scriptName}_${scriptVersion}.backup.js`;
@@ -81,6 +82,7 @@ function backupScriptPlugin(options = {}) {
81
82
  return {
82
83
  name: "vite-plugin-scriptact-backup",
83
84
  buildStart ({ plugins }) {
85
+ if (!Array.isArray(plugins)) return;
84
86
  const metaPlugin = plugins.find((plugin)=>"vite-plugin-scriptcat-meta-banner" === plugin.name);
85
87
  if (!metaPlugin) return;
86
88
  const parsedUserScript = metaPlugin.api.parsedUserScript;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../src/utils/matchVersion.ts","../src/module/BackupScript.ts","../src/index.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\r\n * 提取脚本版本\r\n */\r\nexport const matchVersion = ( content: string ): string | undefined => {\r\n\tif ( !/(\\/\\/\\s*==\\/UserScript==)/.test( content ) ) {\r\n\t\treturn undefined;\r\n\t}\r\n\t\r\n\tconst versionMatches = /\\/\\/\\s*@version\\s+(\\S*)\\b/.exec( content );\r\n\tif ( versionMatches && versionMatches[ 1 ] ) {\r\n\t\treturn versionMatches[ 1 ];\r\n\t}\r\n\treturn undefined;\r\n};\r\n","import { existsSync, mkdirSync, writeFileSync } from 'fs';\r\nimport { resolve } from 'node:path';\r\n\r\nexport class BackupExistError extends Error {\r\n\tconstructor( version: string ) {\r\n\t\tsuper( `脚本备份已存在, 请勿重复备份脚本`, { cause: version } );\r\n\t}\r\n}\r\n\r\n/**\r\n * 脚本备份管理器\r\n *\r\n * 核心功能:\r\n * 1. 自动初始化备份目录和元数据文件\r\n * 2. 安全地添加/验证脚本备份\r\n * 3. 防止重复备份相同版本\r\n * 4. 完善的错误处理和数据校验\r\n */\r\nexport class BackupScript {\r\n\tconstructor(\r\n\t\tprivate backupDir: string,\r\n\t\tprivate scriptName: string,\r\n\t) {\r\n\t\tthis.init();\r\n\t}\r\n\t\r\n\t/**\r\n\t * 初始化备份环境\r\n\t * 1. 创建备份目录(递归)\r\n\t * 2. 初始化元数据文件(如不存在)\r\n\t * @private\r\n\t */\r\n\tprivate init() {\r\n\t\t// 确保备份目录存在\r\n\t\tif ( !existsSync( this.backupDir ) ) {\r\n\t\t\tmkdirSync( this.backupDir, { recursive: true } );\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * 判断脚本是否已备份\r\n\t */\r\n\thasScript( scriptVersion: string ) {\r\n\t\tconst backupScriptPath = this.normalizeScriptPath( scriptVersion );\r\n\t\treturn existsSync( backupScriptPath );\r\n\t}\r\n\t\r\n\t\r\n\t/**\r\n\t * 添加脚本到备份\r\n\t */\r\n\taddScript(\r\n\t\tscriptVersion: string,\r\n\t\tcontent: string,\r\n\t) {\r\n\t\tconst backupScriptPath = this.normalizeScriptPath( scriptVersion );\r\n\t\t\r\n\t\t// 写入脚本\r\n\t\twriteFileSync( backupScriptPath, content, 'utf-8' );\r\n\t}\r\n\t\r\n\t/**\r\n\t * 规范化脚本名\r\n\t */\r\n\tprivate normalizeScriptName( scriptVersion: string ) {\r\n\t\treturn `${ this.scriptName }_${ scriptVersion }.backup.js`;\r\n\t}\r\n\t\r\n\t/**\r\n\t * 规范化脚本路径\r\n\t */\r\n\tprivate normalizeScriptPath( scriptVersion: string ) {\r\n\t\treturn resolve( this.backupDir, this.normalizeScriptName( scriptVersion ) );\r\n\t}\r\n}\r\n","import { Plugin } from 'vite';\r\nimport { ParseUserScript } from './types/UserScript.ts';\r\nimport { basename } from 'path';\r\nimport { matchVersion } from './utils/matchVersion.ts';\r\nimport { BackupExistError, BackupScript } from './module/BackupScript.ts';\r\n\r\n\r\ninterface BackupScriptOptions {\r\n\tbackupDir: string;\r\n\tmatch: RegExp;\r\n\tscriptName: string;\r\n}\r\n\r\n/**\r\n * Vite 插件:\r\n *\r\n * 将打包脚本同时生成一份备份文件.\r\n */\r\nexport default function backupScriptPlugin(\r\n\toptions: Partial<BackupScriptOptions> ={},\r\n): Plugin {\r\n\t// 默认配置\r\n\tconst mergedOption: BackupScriptOptions = {\r\n\t\tbackupDir: './backup',\r\n\t\tmatch: /\\.js$/,\r\n\t\tscriptName: basename( process.cwd() || __dirname ),\r\n\t\t...options,\r\n\t};\r\n\t\r\n\t// 脚本版本号\r\n\tlet scriptVersion: string | undefined;\r\n\tconst backupScript = new BackupScript( mergedOption.backupDir, mergedOption.scriptName );\r\n\t\r\n\treturn {\r\n\t\tname: 'vite-plugin-scriptact-backup',\r\n\t\t\r\n\t\t/**\r\n\t\t * 获取 vite-plugin-scriptcat-meta-banner 脚本导出的 UserScript\r\n\t\t */\r\n\t\tbuildStart( { plugins } ) {\r\n\t\t\tconst metaPlugin = plugins.find( plugin => plugin.name === 'vite-plugin-scriptcat-meta-banner' );\r\n\t\t\tif ( !metaPlugin ) return;\r\n\t\t\tconst parsedUserScript: ParseUserScript = metaPlugin.api.parsedUserScript;\r\n\t\t\tif ( parsedUserScript ) {\r\n\t\t\t\tconst mapper = Object.fromEntries( parsedUserScript.filter );\r\n\t\t\t\tscriptVersion = mapper.version;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\twriteBundle( _, bundle ) {\r\n\t\t\tfor ( const fileName in bundle ) {\r\n\t\t\t\tconst chunk = bundle[ fileName ];\r\n\t\t\t\tif ( chunk.type !== 'chunk' ) continue;\r\n\t\t\t\tif ( !mergedOption.match.test( fileName ) ) continue;\r\n\t\t\t\t\r\n\t\t\t\t// 获取脚本版本号\r\n\t\t\t\tconst bundleScriptVersion = scriptVersion\r\n\t\t\t\t\t? scriptVersion\r\n\t\t\t\t\t: matchVersion( chunk.code );\r\n\t\t\t\tif ( !bundleScriptVersion ) {\r\n\t\t\t\t\tconsole.warn( '[ScriptCat Backup] 没有检测到脚本版本号' );\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\t// 检查脚本是否已备份\r\n\t\t\t\tif ( backupScript.hasScript( bundleScriptVersion ) ) {\r\n\t\t\t\t\tthrow new BackupExistError( bundleScriptVersion );\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// 添加脚本备份\r\n\t\t\t\tbackupScript.addScript(\r\n\t\t\t\t\tbundleScriptVersion,\r\n\t\t\t\t\tchunk.code,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t},\r\n\t};\r\n}\r\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","matchVersion","content","versionMatches","BackupExistError","Error","version","BackupScript","backupDir","scriptName","existsSync","mkdirSync","scriptVersion","backupScriptPath","writeFileSync","resolve","backupScriptPlugin","options","mergedOption","basename","process","__dirname","backupScript","plugins","metaPlugin","plugin","parsedUserScript","mapper","_","bundle","fileName","chunk","bundleScriptVersion","console"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../src/utils/matchVersion.ts","../src/module/BackupScript.ts","../src/index.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\r\n * 提取脚本版本\r\n */\r\nexport const matchVersion = ( content: string ): string | undefined => {\r\n\tif ( !/(\\/\\/\\s*==\\/UserScript==)/.test( content ) ) {\r\n\t\treturn undefined;\r\n\t}\r\n\t\r\n\tconst versionMatches = /\\/\\/\\s*@version\\s+(\\S*)\\b/.exec( content );\r\n\tif ( versionMatches && versionMatches[ 1 ] ) {\r\n\t\treturn versionMatches[ 1 ];\r\n\t}\r\n\treturn undefined;\r\n};\r\n","import { existsSync, mkdirSync, writeFileSync } from 'fs';\r\nimport { resolve } from 'node:path';\r\n\r\nexport class BackupExistError extends Error {\r\n\tconstructor( version: string ) {\r\n\t\tsuper( `脚本备份已存在, 请勿重复备份脚本`, { cause: version } );\r\n\t}\r\n}\r\n\r\n/**\r\n * 脚本备份管理器\r\n *\r\n * 核心功能:\r\n * 1. 自动初始化备份目录和元数据文件\r\n * 2. 安全地添加/验证脚本备份\r\n * 3. 防止重复备份相同版本\r\n * 4. 完善的错误处理和数据校验\r\n */\r\nexport class BackupScript {\r\n\tconstructor(\r\n\t\tprivate backupDir: string,\r\n\t\tprivate scriptName: string,\r\n\t) {\r\n\t\tthis.init();\r\n\t}\r\n\t\r\n\t/**\r\n\t * 初始化备份环境\r\n\t * 1. 创建备份目录(递归)\r\n\t * 2. 初始化元数据文件(如不存在)\r\n\t * @private\r\n\t */\r\n\tprivate init() {\r\n\t\t// 确保备份目录存在\r\n\t\tif ( !existsSync( this.backupDir ) ) {\r\n\t\t\tmkdirSync( this.backupDir, { recursive: true } );\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * 判断脚本是否已备份\r\n\t */\r\n\thasScript( scriptVersion: string ) {\r\n\t\tconst backupScriptPath = this.normalizeScriptPath( scriptVersion );\r\n\t\treturn existsSync( backupScriptPath );\r\n\t}\r\n\t\r\n\t\r\n\t/**\r\n\t * 添加脚本到备份\r\n\t */\r\n\taddScript(\r\n\t\tscriptVersion: string,\r\n\t\tcontent: string,\r\n\t) {\r\n\t\tconst backupScriptPath = this.normalizeScriptPath( scriptVersion );\r\n\t\t\r\n\t\t// 写入备份脚本\r\n\t\twriteFileSync( backupScriptPath, content, 'utf-8' );\r\n\t\t// 写入最新脚本\r\n\t\twriteFileSync( resolve( this.backupDir, `${ this.scriptName }.user.js` ), content, 'utf-8' );\r\n\t}\r\n\t\r\n\t/**\r\n\t * 规范化脚本名\r\n\t */\r\n\tprivate normalizeScriptName( scriptVersion: string ) {\r\n\t\treturn `${ this.scriptName }_${ scriptVersion }.backup.js`;\r\n\t}\r\n\t\r\n\t/**\r\n\t * 规范化脚本路径\r\n\t */\r\n\tprivate normalizeScriptPath( scriptVersion: string ) {\r\n\t\treturn resolve( this.backupDir, this.normalizeScriptName( scriptVersion ) );\r\n\t}\r\n}\r\n","import { Plugin } from 'vite';\r\nimport { ParseUserScript } from './types/UserScript.ts';\r\nimport { basename } from 'path';\r\nimport { matchVersion } from './utils/matchVersion.ts';\r\nimport { BackupExistError, BackupScript } from './module/BackupScript.ts';\r\n\r\n\r\ninterface BackupScriptOptions {\r\n\tbackupDir: string;\r\n\tmatch: RegExp;\r\n\tscriptName: string;\r\n}\r\n\r\n/**\r\n * Vite 插件:\r\n *\r\n * 将打包脚本同时生成一份备份文件.\r\n */\r\nexport default function backupScriptPlugin(\r\n\toptions: Partial<BackupScriptOptions> = {},\r\n): Plugin {\r\n\t// 默认配置\r\n\tconst mergedOption: BackupScriptOptions = {\r\n\t\tbackupDir: './backup',\r\n\t\tmatch: /\\.js$/,\r\n\t\tscriptName: basename( process.cwd() || __dirname ),\r\n\t\t...options,\r\n\t};\r\n\t\r\n\t// 脚本版本号\r\n\tlet scriptVersion: string | undefined;\r\n\tconst backupScript = new BackupScript( mergedOption.backupDir, mergedOption.scriptName );\r\n\t\r\n\treturn {\r\n\t\tname: 'vite-plugin-scriptact-backup',\r\n\t\t\r\n\t\t/**\r\n\t\t * 获取 vite-plugin-scriptcat-meta-banner 脚本导出的 UserScript\r\n\t\t */\r\n\t\tbuildStart( { plugins } ) {\r\n\t\t\tif ( !Array.isArray( plugins ) ) return;\r\n\t\t\tconst metaPlugin = plugins.find( plugin => plugin.name === 'vite-plugin-scriptcat-meta-banner' );\r\n\t\t\tif ( !metaPlugin ) return;\r\n\t\t\tconst parsedUserScript: ParseUserScript = metaPlugin.api.parsedUserScript;\r\n\t\t\tif ( parsedUserScript ) {\r\n\t\t\t\tconst mapper = Object.fromEntries( parsedUserScript.filter );\r\n\t\t\t\tscriptVersion = mapper.version;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\twriteBundle( _, bundle ) {\r\n\t\t\tfor ( const fileName in bundle ) {\r\n\t\t\t\tconst chunk = bundle[ fileName ];\r\n\t\t\t\tif ( chunk.type !== 'chunk' ) continue;\r\n\t\t\t\tif ( !mergedOption.match.test( fileName ) ) continue;\r\n\t\t\t\t\r\n\t\t\t\t// 获取脚本版本号\r\n\t\t\t\tconst bundleScriptVersion = scriptVersion\r\n\t\t\t\t\t? scriptVersion\r\n\t\t\t\t\t: matchVersion( chunk.code );\r\n\t\t\t\tif ( !bundleScriptVersion ) {\r\n\t\t\t\t\tconsole.warn( '[ScriptCat Backup] 没有检测到脚本版本号' );\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\t// 检查脚本是否已备份\r\n\t\t\t\tif ( backupScript.hasScript( bundleScriptVersion ) ) {\r\n\t\t\t\t\tthrow new BackupExistError( bundleScriptVersion );\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// 添加脚本备份\r\n\t\t\t\tbackupScript.addScript(\r\n\t\t\t\t\tbundleScriptVersion,\r\n\t\t\t\t\tchunk.code,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t},\r\n\t};\r\n}\r\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","matchVersion","content","versionMatches","BackupExistError","Error","version","BackupScript","backupDir","scriptName","existsSync","mkdirSync","scriptVersion","backupScriptPath","writeFileSync","resolve","backupScriptPlugin","options","mergedOption","basename","process","__dirname","backupScript","plugins","Array","metaPlugin","plugin","parsedUserScript","mapper","_","bundle","fileName","chunk","bundleScriptVersion","console"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -33,6 +33,7 @@ class BackupScript {
33
33
  addScript(scriptVersion, content) {
34
34
  const backupScriptPath = this.normalizeScriptPath(scriptVersion);
35
35
  writeFileSync(backupScriptPath, content, 'utf-8');
36
+ writeFileSync(resolve(this.backupDir, `${this.scriptName}.user.js`), content, 'utf-8');
36
37
  }
37
38
  normalizeScriptName(scriptVersion) {
38
39
  return `${this.scriptName}_${scriptVersion}.backup.js`;
@@ -53,6 +54,7 @@ function backupScriptPlugin(options = {}) {
53
54
  return {
54
55
  name: "vite-plugin-scriptact-backup",
55
56
  buildStart ({ plugins }) {
57
+ if (!Array.isArray(plugins)) return;
56
58
  const metaPlugin = plugins.find((plugin)=>"vite-plugin-scriptcat-meta-banner" === plugin.name);
57
59
  if (!metaPlugin) return;
58
60
  const parsedUserScript = metaPlugin.api.parsedUserScript;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils/matchVersion.ts","../src/module/BackupScript.ts","../src/index.ts"],"sourcesContent":["/**\r\n * 提取脚本版本\r\n */\r\nexport const matchVersion = ( content: string ): string | undefined => {\r\n\tif ( !/(\\/\\/\\s*==\\/UserScript==)/.test( content ) ) {\r\n\t\treturn undefined;\r\n\t}\r\n\t\r\n\tconst versionMatches = /\\/\\/\\s*@version\\s+(\\S*)\\b/.exec( content );\r\n\tif ( versionMatches && versionMatches[ 1 ] ) {\r\n\t\treturn versionMatches[ 1 ];\r\n\t}\r\n\treturn undefined;\r\n};\r\n","import { existsSync, mkdirSync, writeFileSync } from 'fs';\r\nimport { resolve } from 'node:path';\r\n\r\nexport class BackupExistError extends Error {\r\n\tconstructor( version: string ) {\r\n\t\tsuper( `脚本备份已存在, 请勿重复备份脚本`, { cause: version } );\r\n\t}\r\n}\r\n\r\n/**\r\n * 脚本备份管理器\r\n *\r\n * 核心功能:\r\n * 1. 自动初始化备份目录和元数据文件\r\n * 2. 安全地添加/验证脚本备份\r\n * 3. 防止重复备份相同版本\r\n * 4. 完善的错误处理和数据校验\r\n */\r\nexport class BackupScript {\r\n\tconstructor(\r\n\t\tprivate backupDir: string,\r\n\t\tprivate scriptName: string,\r\n\t) {\r\n\t\tthis.init();\r\n\t}\r\n\t\r\n\t/**\r\n\t * 初始化备份环境\r\n\t * 1. 创建备份目录(递归)\r\n\t * 2. 初始化元数据文件(如不存在)\r\n\t * @private\r\n\t */\r\n\tprivate init() {\r\n\t\t// 确保备份目录存在\r\n\t\tif ( !existsSync( this.backupDir ) ) {\r\n\t\t\tmkdirSync( this.backupDir, { recursive: true } );\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * 判断脚本是否已备份\r\n\t */\r\n\thasScript( scriptVersion: string ) {\r\n\t\tconst backupScriptPath = this.normalizeScriptPath( scriptVersion );\r\n\t\treturn existsSync( backupScriptPath );\r\n\t}\r\n\t\r\n\t\r\n\t/**\r\n\t * 添加脚本到备份\r\n\t */\r\n\taddScript(\r\n\t\tscriptVersion: string,\r\n\t\tcontent: string,\r\n\t) {\r\n\t\tconst backupScriptPath = this.normalizeScriptPath( scriptVersion );\r\n\t\t\r\n\t\t// 写入脚本\r\n\t\twriteFileSync( backupScriptPath, content, 'utf-8' );\r\n\t}\r\n\t\r\n\t/**\r\n\t * 规范化脚本名\r\n\t */\r\n\tprivate normalizeScriptName( scriptVersion: string ) {\r\n\t\treturn `${ this.scriptName }_${ scriptVersion }.backup.js`;\r\n\t}\r\n\t\r\n\t/**\r\n\t * 规范化脚本路径\r\n\t */\r\n\tprivate normalizeScriptPath( scriptVersion: string ) {\r\n\t\treturn resolve( this.backupDir, this.normalizeScriptName( scriptVersion ) );\r\n\t}\r\n}\r\n","import { Plugin } from 'vite';\r\nimport { ParseUserScript } from './types/UserScript.ts';\r\nimport { basename } from 'path';\r\nimport { matchVersion } from './utils/matchVersion.ts';\r\nimport { BackupExistError, BackupScript } from './module/BackupScript.ts';\r\n\r\n\r\ninterface BackupScriptOptions {\r\n\tbackupDir: string;\r\n\tmatch: RegExp;\r\n\tscriptName: string;\r\n}\r\n\r\n/**\r\n * Vite 插件:\r\n *\r\n * 将打包脚本同时生成一份备份文件.\r\n */\r\nexport default function backupScriptPlugin(\r\n\toptions: Partial<BackupScriptOptions> ={},\r\n): Plugin {\r\n\t// 默认配置\r\n\tconst mergedOption: BackupScriptOptions = {\r\n\t\tbackupDir: './backup',\r\n\t\tmatch: /\\.js$/,\r\n\t\tscriptName: basename( process.cwd() || __dirname ),\r\n\t\t...options,\r\n\t};\r\n\t\r\n\t// 脚本版本号\r\n\tlet scriptVersion: string | undefined;\r\n\tconst backupScript = new BackupScript( mergedOption.backupDir, mergedOption.scriptName );\r\n\t\r\n\treturn {\r\n\t\tname: 'vite-plugin-scriptact-backup',\r\n\t\t\r\n\t\t/**\r\n\t\t * 获取 vite-plugin-scriptcat-meta-banner 脚本导出的 UserScript\r\n\t\t */\r\n\t\tbuildStart( { plugins } ) {\r\n\t\t\tconst metaPlugin = plugins.find( plugin => plugin.name === 'vite-plugin-scriptcat-meta-banner' );\r\n\t\t\tif ( !metaPlugin ) return;\r\n\t\t\tconst parsedUserScript: ParseUserScript = metaPlugin.api.parsedUserScript;\r\n\t\t\tif ( parsedUserScript ) {\r\n\t\t\t\tconst mapper = Object.fromEntries( parsedUserScript.filter );\r\n\t\t\t\tscriptVersion = mapper.version;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\twriteBundle( _, bundle ) {\r\n\t\t\tfor ( const fileName in bundle ) {\r\n\t\t\t\tconst chunk = bundle[ fileName ];\r\n\t\t\t\tif ( chunk.type !== 'chunk' ) continue;\r\n\t\t\t\tif ( !mergedOption.match.test( fileName ) ) continue;\r\n\t\t\t\t\r\n\t\t\t\t// 获取脚本版本号\r\n\t\t\t\tconst bundleScriptVersion = scriptVersion\r\n\t\t\t\t\t? scriptVersion\r\n\t\t\t\t\t: matchVersion( chunk.code );\r\n\t\t\t\tif ( !bundleScriptVersion ) {\r\n\t\t\t\t\tconsole.warn( '[ScriptCat Backup] 没有检测到脚本版本号' );\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\t// 检查脚本是否已备份\r\n\t\t\t\tif ( backupScript.hasScript( bundleScriptVersion ) ) {\r\n\t\t\t\t\tthrow new BackupExistError( bundleScriptVersion );\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// 添加脚本备份\r\n\t\t\t\tbackupScript.addScript(\r\n\t\t\t\t\tbundleScriptVersion,\r\n\t\t\t\t\tchunk.code,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t},\r\n\t};\r\n}\r\n"],"names":["matchVersion","content","versionMatches","BackupExistError","Error","version","BackupScript","backupDir","scriptName","existsSync","mkdirSync","scriptVersion","backupScriptPath","writeFileSync","resolve","backupScriptPlugin","options","mergedOption","basename","process","__dirname","backupScript","plugins","metaPlugin","plugin","parsedUserScript","mapper","Object","_","bundle","fileName","chunk","bundleScriptVersion","console"],"mappings":";;;AAGO,MAAMA,eAAe,CAAEC;IAC7B,IAAK,CAAC,4BAA4B,IAAI,CAAEA,UACvC;IAGD,MAAMC,iBAAiB,4BAA4B,IAAI,CAAED;IACzD,IAAKC,kBAAkBA,cAAc,CAAE,EAAG,EACzC,OAAOA,cAAc,CAAE,EAAG;AAG5B;ACVO,MAAMC,yBAAyBC;IACrC,YAAaC,OAAe,CAAG;QAC9B,KAAK,CAAE,CAAC,iBAAiB,CAAC,EAAE;YAAE,OAAOA;QAAQ;IAC9C;AACD;AAWO,MAAMC;;;IACZ,YACSC,SAAiB,EACjBC,UAAkB,CACzB;aAFOD,SAAS,GAATA;aACAC,UAAU,GAAVA;QAER,IAAI,CAAC,IAAI;IACV;IAQQ,OAAO;QAEd,IAAK,CAACC,WAAY,IAAI,CAAC,SAAS,GAC/BC,UAAW,IAAI,CAAC,SAAS,EAAE;YAAE,WAAW;QAAK;IAE/C;IAKA,UAAWC,aAAqB,EAAG;QAClC,MAAMC,mBAAmB,IAAI,CAAC,mBAAmB,CAAED;QACnD,OAAOF,WAAYG;IACpB;IAMA,UACCD,aAAqB,EACrBV,OAAe,EACd;QACD,MAAMW,mBAAmB,IAAI,CAAC,mBAAmB,CAAED;QAGnDE,cAAeD,kBAAkBX,SAAS;IAC3C;IAKQ,oBAAqBU,aAAqB,EAAG;QACpD,OAAO,GAAI,IAAI,CAAC,UAAU,CAAE,CAAC,EAAGA,cAAe,UAAU,CAAC;IAC3D;IAKQ,oBAAqBA,aAAqB,EAAG;QACpD,OAAOG,QAAS,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAEH;IAC3D;AACD;ACxDe,SAASI,mBACvBC,UAAuC,CAAC,CAAC;IAGzC,MAAMC,eAAoC;QACzC,WAAW;QACX,OAAO;QACP,YAAYC,SAAUC,QAAQ,GAAG,MAAMC;QACvC,GAAGJ,OAAO;IACX;IAGA,IAAIL;IACJ,MAAMU,eAAe,IAAIf,aAAcW,aAAa,SAAS,EAAEA,aAAa,UAAU;IAEtF,OAAO;QACN,MAAM;QAKN,YAAY,EAAEK,OAAO,EAAE;YACtB,MAAMC,aAAaD,QAAQ,IAAI,CAAEE,CAAAA,SAAUA,AAAgB,wCAAhBA,OAAO,IAAI;YACtD,IAAK,CAACD,YAAa;YACnB,MAAME,mBAAoCF,WAAW,GAAG,CAAC,gBAAgB;YACzE,IAAKE,kBAAmB;gBACvB,MAAMC,SAASC,OAAO,WAAW,CAAEF,iBAAiB,MAAM;gBAC1Dd,gBAAgBe,OAAO,OAAO;YAC/B;QACD;QAEA,aAAaE,CAAC,EAAEC,MAAM;YACrB,IAAM,MAAMC,YAAYD,OAAS;gBAChC,MAAME,QAAQF,MAAM,CAAEC,SAAU;gBAChC,IAAKC,AAAe,YAAfA,MAAM,IAAI,EAAe;gBAC9B,IAAK,CAACd,aAAa,KAAK,CAAC,IAAI,CAAEa,WAAa;gBAG5C,MAAME,sBAAsBrB,gBACzBA,gBACAX,aAAc+B,MAAM,IAAI;gBAC3B,IAAK,CAACC,qBAAsB;oBAC3BC,QAAQ,IAAI,CAAE;oBACd;gBACD;gBAEA,IAAKZ,aAAa,SAAS,CAAEW,sBAC5B,MAAM,IAAI7B,iBAAkB6B;gBAI7BX,aAAa,SAAS,CACrBW,qBACAD,MAAM,IAAI;YAEZ;QACD;IACD;AACD"}
1
+ {"version":3,"file":"index.js","sources":["../src/utils/matchVersion.ts","../src/module/BackupScript.ts","../src/index.ts"],"sourcesContent":["/**\r\n * 提取脚本版本\r\n */\r\nexport const matchVersion = ( content: string ): string | undefined => {\r\n\tif ( !/(\\/\\/\\s*==\\/UserScript==)/.test( content ) ) {\r\n\t\treturn undefined;\r\n\t}\r\n\t\r\n\tconst versionMatches = /\\/\\/\\s*@version\\s+(\\S*)\\b/.exec( content );\r\n\tif ( versionMatches && versionMatches[ 1 ] ) {\r\n\t\treturn versionMatches[ 1 ];\r\n\t}\r\n\treturn undefined;\r\n};\r\n","import { existsSync, mkdirSync, writeFileSync } from 'fs';\r\nimport { resolve } from 'node:path';\r\n\r\nexport class BackupExistError extends Error {\r\n\tconstructor( version: string ) {\r\n\t\tsuper( `脚本备份已存在, 请勿重复备份脚本`, { cause: version } );\r\n\t}\r\n}\r\n\r\n/**\r\n * 脚本备份管理器\r\n *\r\n * 核心功能:\r\n * 1. 自动初始化备份目录和元数据文件\r\n * 2. 安全地添加/验证脚本备份\r\n * 3. 防止重复备份相同版本\r\n * 4. 完善的错误处理和数据校验\r\n */\r\nexport class BackupScript {\r\n\tconstructor(\r\n\t\tprivate backupDir: string,\r\n\t\tprivate scriptName: string,\r\n\t) {\r\n\t\tthis.init();\r\n\t}\r\n\t\r\n\t/**\r\n\t * 初始化备份环境\r\n\t * 1. 创建备份目录(递归)\r\n\t * 2. 初始化元数据文件(如不存在)\r\n\t * @private\r\n\t */\r\n\tprivate init() {\r\n\t\t// 确保备份目录存在\r\n\t\tif ( !existsSync( this.backupDir ) ) {\r\n\t\t\tmkdirSync( this.backupDir, { recursive: true } );\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * 判断脚本是否已备份\r\n\t */\r\n\thasScript( scriptVersion: string ) {\r\n\t\tconst backupScriptPath = this.normalizeScriptPath( scriptVersion );\r\n\t\treturn existsSync( backupScriptPath );\r\n\t}\r\n\t\r\n\t\r\n\t/**\r\n\t * 添加脚本到备份\r\n\t */\r\n\taddScript(\r\n\t\tscriptVersion: string,\r\n\t\tcontent: string,\r\n\t) {\r\n\t\tconst backupScriptPath = this.normalizeScriptPath( scriptVersion );\r\n\t\t\r\n\t\t// 写入备份脚本\r\n\t\twriteFileSync( backupScriptPath, content, 'utf-8' );\r\n\t\t// 写入最新脚本\r\n\t\twriteFileSync( resolve( this.backupDir, `${ this.scriptName }.user.js` ), content, 'utf-8' );\r\n\t}\r\n\t\r\n\t/**\r\n\t * 规范化脚本名\r\n\t */\r\n\tprivate normalizeScriptName( scriptVersion: string ) {\r\n\t\treturn `${ this.scriptName }_${ scriptVersion }.backup.js`;\r\n\t}\r\n\t\r\n\t/**\r\n\t * 规范化脚本路径\r\n\t */\r\n\tprivate normalizeScriptPath( scriptVersion: string ) {\r\n\t\treturn resolve( this.backupDir, this.normalizeScriptName( scriptVersion ) );\r\n\t}\r\n}\r\n","import { Plugin } from 'vite';\r\nimport { ParseUserScript } from './types/UserScript.ts';\r\nimport { basename } from 'path';\r\nimport { matchVersion } from './utils/matchVersion.ts';\r\nimport { BackupExistError, BackupScript } from './module/BackupScript.ts';\r\n\r\n\r\ninterface BackupScriptOptions {\r\n\tbackupDir: string;\r\n\tmatch: RegExp;\r\n\tscriptName: string;\r\n}\r\n\r\n/**\r\n * Vite 插件:\r\n *\r\n * 将打包脚本同时生成一份备份文件.\r\n */\r\nexport default function backupScriptPlugin(\r\n\toptions: Partial<BackupScriptOptions> = {},\r\n): Plugin {\r\n\t// 默认配置\r\n\tconst mergedOption: BackupScriptOptions = {\r\n\t\tbackupDir: './backup',\r\n\t\tmatch: /\\.js$/,\r\n\t\tscriptName: basename( process.cwd() || __dirname ),\r\n\t\t...options,\r\n\t};\r\n\t\r\n\t// 脚本版本号\r\n\tlet scriptVersion: string | undefined;\r\n\tconst backupScript = new BackupScript( mergedOption.backupDir, mergedOption.scriptName );\r\n\t\r\n\treturn {\r\n\t\tname: 'vite-plugin-scriptact-backup',\r\n\t\t\r\n\t\t/**\r\n\t\t * 获取 vite-plugin-scriptcat-meta-banner 脚本导出的 UserScript\r\n\t\t */\r\n\t\tbuildStart( { plugins } ) {\r\n\t\t\tif ( !Array.isArray( plugins ) ) return;\r\n\t\t\tconst metaPlugin = plugins.find( plugin => plugin.name === 'vite-plugin-scriptcat-meta-banner' );\r\n\t\t\tif ( !metaPlugin ) return;\r\n\t\t\tconst parsedUserScript: ParseUserScript = metaPlugin.api.parsedUserScript;\r\n\t\t\tif ( parsedUserScript ) {\r\n\t\t\t\tconst mapper = Object.fromEntries( parsedUserScript.filter );\r\n\t\t\t\tscriptVersion = mapper.version;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\twriteBundle( _, bundle ) {\r\n\t\t\tfor ( const fileName in bundle ) {\r\n\t\t\t\tconst chunk = bundle[ fileName ];\r\n\t\t\t\tif ( chunk.type !== 'chunk' ) continue;\r\n\t\t\t\tif ( !mergedOption.match.test( fileName ) ) continue;\r\n\t\t\t\t\r\n\t\t\t\t// 获取脚本版本号\r\n\t\t\t\tconst bundleScriptVersion = scriptVersion\r\n\t\t\t\t\t? scriptVersion\r\n\t\t\t\t\t: matchVersion( chunk.code );\r\n\t\t\t\tif ( !bundleScriptVersion ) {\r\n\t\t\t\t\tconsole.warn( '[ScriptCat Backup] 没有检测到脚本版本号' );\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\t// 检查脚本是否已备份\r\n\t\t\t\tif ( backupScript.hasScript( bundleScriptVersion ) ) {\r\n\t\t\t\t\tthrow new BackupExistError( bundleScriptVersion );\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// 添加脚本备份\r\n\t\t\t\tbackupScript.addScript(\r\n\t\t\t\t\tbundleScriptVersion,\r\n\t\t\t\t\tchunk.code,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t},\r\n\t};\r\n}\r\n"],"names":["matchVersion","content","versionMatches","BackupExistError","Error","version","BackupScript","backupDir","scriptName","existsSync","mkdirSync","scriptVersion","backupScriptPath","writeFileSync","resolve","backupScriptPlugin","options","mergedOption","basename","process","__dirname","backupScript","plugins","Array","metaPlugin","plugin","parsedUserScript","mapper","Object","_","bundle","fileName","chunk","bundleScriptVersion","console"],"mappings":";;;AAGO,MAAMA,eAAe,CAAEC;IAC7B,IAAK,CAAC,4BAA4B,IAAI,CAAEA,UACvC;IAGD,MAAMC,iBAAiB,4BAA4B,IAAI,CAAED;IACzD,IAAKC,kBAAkBA,cAAc,CAAE,EAAG,EACzC,OAAOA,cAAc,CAAE,EAAG;AAG5B;ACVO,MAAMC,yBAAyBC;IACrC,YAAaC,OAAe,CAAG;QAC9B,KAAK,CAAE,CAAC,iBAAiB,CAAC,EAAE;YAAE,OAAOA;QAAQ;IAC9C;AACD;AAWO,MAAMC;;;IACZ,YACSC,SAAiB,EACjBC,UAAkB,CACzB;aAFOD,SAAS,GAATA;aACAC,UAAU,GAAVA;QAER,IAAI,CAAC,IAAI;IACV;IAQQ,OAAO;QAEd,IAAK,CAACC,WAAY,IAAI,CAAC,SAAS,GAC/BC,UAAW,IAAI,CAAC,SAAS,EAAE;YAAE,WAAW;QAAK;IAE/C;IAKA,UAAWC,aAAqB,EAAG;QAClC,MAAMC,mBAAmB,IAAI,CAAC,mBAAmB,CAAED;QACnD,OAAOF,WAAYG;IACpB;IAMA,UACCD,aAAqB,EACrBV,OAAe,EACd;QACD,MAAMW,mBAAmB,IAAI,CAAC,mBAAmB,CAAED;QAGnDE,cAAeD,kBAAkBX,SAAS;QAE1CY,cAAeC,QAAS,IAAI,CAAC,SAAS,EAAE,GAAI,IAAI,CAAC,UAAU,CAAE,QAAQ,CAAC,GAAIb,SAAS;IACpF;IAKQ,oBAAqBU,aAAqB,EAAG;QACpD,OAAO,GAAI,IAAI,CAAC,UAAU,CAAE,CAAC,EAAGA,cAAe,UAAU,CAAC;IAC3D;IAKQ,oBAAqBA,aAAqB,EAAG;QACpD,OAAOG,QAAS,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAEH;IAC3D;AACD;AC1De,SAASI,mBACvBC,UAAwC,CAAC,CAAC;IAG1C,MAAMC,eAAoC;QACzC,WAAW;QACX,OAAO;QACP,YAAYC,SAAUC,QAAQ,GAAG,MAAMC;QACvC,GAAGJ,OAAO;IACX;IAGA,IAAIL;IACJ,MAAMU,eAAe,IAAIf,aAAcW,aAAa,SAAS,EAAEA,aAAa,UAAU;IAEtF,OAAO;QACN,MAAM;QAKN,YAAY,EAAEK,OAAO,EAAE;YACtB,IAAK,CAACC,MAAM,OAAO,CAAED,UAAY;YACjC,MAAME,aAAaF,QAAQ,IAAI,CAAEG,CAAAA,SAAUA,AAAgB,wCAAhBA,OAAO,IAAI;YACtD,IAAK,CAACD,YAAa;YACnB,MAAME,mBAAoCF,WAAW,GAAG,CAAC,gBAAgB;YACzE,IAAKE,kBAAmB;gBACvB,MAAMC,SAASC,OAAO,WAAW,CAAEF,iBAAiB,MAAM;gBAC1Df,gBAAgBgB,OAAO,OAAO;YAC/B;QACD;QAEA,aAAaE,CAAC,EAAEC,MAAM;YACrB,IAAM,MAAMC,YAAYD,OAAS;gBAChC,MAAME,QAAQF,MAAM,CAAEC,SAAU;gBAChC,IAAKC,AAAe,YAAfA,MAAM,IAAI,EAAe;gBAC9B,IAAK,CAACf,aAAa,KAAK,CAAC,IAAI,CAAEc,WAAa;gBAG5C,MAAME,sBAAsBtB,gBACzBA,gBACAX,aAAcgC,MAAM,IAAI;gBAC3B,IAAK,CAACC,qBAAsB;oBAC3BC,QAAQ,IAAI,CAAE;oBACd;gBACD;gBAEA,IAAKb,aAAa,SAAS,CAAEY,sBAC5B,MAAM,IAAI9B,iBAAkB8B;gBAI7BZ,aAAa,SAAS,CACrBY,qBACAD,MAAM,IAAI;YAEZ;QACD;IACD;AACD"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@yiero/vite-plugin-scriptcat-backup",
3
3
  "description": "A vite plugin to backup script. ",
4
- "version": "1.0.0",
4
+ "version": "1.0.2",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": {