@iflyrpa/actions 1.2.25-beta.1 → 1.2.25-beta.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.
Files changed (65) hide show
  1. package/dist/actions/baijiahaoLogin/index.d.ts +5 -0
  2. package/dist/actions/baijiahaoLogin/rpa-server.d.ts +2 -0
  3. package/dist/actions/baijiahaoLogin/rpa.d.ts +2 -0
  4. package/dist/actions/baijiahaoPublish/index.d.ts +1 -0
  5. package/dist/actions/common/sessionCheck/index.d.ts +56 -8
  6. package/dist/actions/getXhsCollection/index.d.ts +17 -15
  7. package/dist/actions/getXhsGroup/index.d.ts +9 -7
  8. package/dist/actions/getXhsWebUnreadCount/index.d.ts +12 -0
  9. package/dist/actions/searchAccountInfo/getBjhInfo.d.ts +2 -1
  10. package/dist/actions/searchAccountInfo/getTTInfo.d.ts +2 -1
  11. package/dist/actions/searchAccountInfo/getWxInfo.d.ts +2 -1
  12. package/dist/actions/searchAccountInfo/getXhsInfo.d.ts +4 -3
  13. package/dist/actions/searchAccountInfo/index.d.ts +56 -5
  14. package/dist/actions/searchAccountInfo/types.d.ts +43 -38
  15. package/dist/actions/searchBjhUserArticle/index.d.ts +7 -0
  16. package/dist/actions/searchPublishInfo/handleBjhData.d.ts +4 -3
  17. package/dist/actions/searchPublishInfo/handleTTData.d.ts +2 -1
  18. package/dist/actions/searchPublishInfo/handleWXData.d.ts +4 -3
  19. package/dist/actions/searchPublishInfo/handleXhsData.d.ts +4 -3
  20. package/dist/actions/searchPublishInfo/index.d.ts +61 -14
  21. package/dist/actions/searchPublishInfo/types.d.ts +108 -47
  22. package/dist/actions/searchWeixinAccountCard/index.d.ts +18 -0
  23. package/dist/actions/searchWeixinUserArticle/index.d.ts +8 -0
  24. package/dist/actions/searchXhsWebConnections/index.d.ts +36 -0
  25. package/dist/actions/searchXhsWebLike/index.d.ts +73 -0
  26. package/dist/actions/searchXhsWebMentions/index.d.ts +72 -0
  27. package/dist/actions/searchXiaohongshuUserArticle/index.d.ts +7 -0
  28. package/dist/actions/toutiaoLogin/index.d.ts +5 -0
  29. package/dist/actions/toutiaoLogin/rpa-server.d.ts +2 -0
  30. package/dist/actions/toutiaoLogin/rpa.d.ts +2 -0
  31. package/dist/actions/toutiaoPublish/index.d.ts +1 -0
  32. package/dist/actions/weixinLogin/index.d.ts +5 -0
  33. package/dist/actions/weixinLogin/rpa-server.d.ts +2 -0
  34. package/dist/actions/weixinLogin/rpa.d.ts +2 -0
  35. package/dist/actions/weixinPublish/index.d.ts +2 -1
  36. package/dist/actions/xiaohongshuLogin/index.d.ts +5 -0
  37. package/dist/actions/xiaohongshuLogin/rpa-server.d.ts +2 -0
  38. package/dist/actions/xiaohongshuLogin/rpa.d.ts +2 -0
  39. package/dist/actions/xiaohongshuLogin/utils.d.ts +1 -0
  40. package/dist/actions/xiaohongshuPublish/index.d.ts +129 -35
  41. package/dist/actions/xiaohongshuPublish/mock.d.ts +1 -1
  42. package/dist/actions/xiaohongshuPublish/rpa-server-mock.d.ts +2 -0
  43. package/dist/actions/xiaohongshuPublish/rpa-server.d.ts +2 -0
  44. package/dist/actions/xiaohongshuWebCommentAction/index.d.ts +14 -0
  45. package/dist/actions/xiaohongshuWebIntimacySearch/index.d.ts +13 -0
  46. package/dist/actions/xiaohongshuWebMsgRead/index.d.ts +12 -0
  47. package/dist/actions/xiaohongshuWebMsgReply/index.d.ts +47 -0
  48. package/dist/actions/xiaohongshuWebNoteFeed/index.d.ts +19 -0
  49. package/dist/actions/xiaohongshuWebRelationAction/index.d.ts +17 -0
  50. package/dist/actions/xiaohongshuWebSearch/index.d.ts +62 -0
  51. package/dist/bundle.js +22373 -8763
  52. package/dist/bundle.js.map +1 -1
  53. package/dist/index.d.ts +186 -15
  54. package/dist/index.js +11054 -3305
  55. package/dist/index.js.map +1 -1
  56. package/dist/index.mjs +11000 -3270
  57. package/dist/index.mjs.map +1 -1
  58. package/dist/types.d.ts +80 -15
  59. package/dist/utils/http.d.ts +8 -3
  60. package/dist/utils/index.d.ts +2 -2
  61. package/dist/utils/proxy.d.ts +8 -1
  62. package/dist/utils/xhsXsEncrypt.d.ts +201 -17
  63. package/dist/utils/xhs_ob/index.d.ts +5 -0
  64. package/dist/utils/xhs_ob/mnsvc2.d.ts +7 -0
  65. package/package.json +6 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["webpack://@iflyrpa/actions/../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/helpers.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/index.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/browser.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/common.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/index.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/node.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/index.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/parse-proxy-response.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/supports-color@8.1.1/node_modules/supports-color/index.js","webpack://@iflyrpa/actions/./src/utils/XhsXsCommonEnc.js","webpack://@iflyrpa/actions/./src/utils/ttABEncrypt.js","webpack://@iflyrpa/actions/./src/utils/proxy.ts","webpack://@iflyrpa/actions/./src/utils/http.ts","webpack://@iflyrpa/actions/./src/utils/index.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoPublish/utils.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/getBaijiahaoActivity/index.ts","webpack://@iflyrpa/actions/./src/actions/getToutiaoConfig/index.ts","webpack://@iflyrpa/actions/./src/actions/getBaijiaohaoConfig/index.ts","webpack://@iflyrpa/actions/./src/actions/searchToutiaoTopicList/index.ts","webpack://@iflyrpa/actions/./src/actions/searchToutiaoLocation/index.ts","webpack://@iflyrpa/actions/./src/actions/searchToutiaoUserID/index.ts","webpack://@iflyrpa/actions/./src/actions/searchXiaohongshuLocation/index.ts","webpack://@iflyrpa/actions/./src/utils/xhsXsEncrypt.ts","webpack://@iflyrpa/actions/./src/actions/searchXiaohongshuTopicList/index.ts","webpack://@iflyrpa/actions/./src/actions/toutiaoPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/toutiaoPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/toutiaoPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/common/FansTool/index.ts","webpack://@iflyrpa/actions/./src/actions/common/sessionCheck/index.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/types.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getBjhInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getTTInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getWxInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getXhsInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/index.ts","webpack://@iflyrpa/actions/./src/actions/searchBjhTopicList/index.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/types.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleTTData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleWXData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleBjhData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleXhsData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/index.ts","webpack://@iflyrpa/actions/./src/actions/getWeixinConfig/index.ts","webpack://@iflyrpa/actions/./src/actions/getWeixinCollection/index.ts","webpack://@iflyrpa/actions/./src/actions/getXhsCollection/index.ts","webpack://@iflyrpa/actions/./src/actions/weitoutiaoPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/weitoutiaoPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/weitoutiaoPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/utils.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/weixinmpPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/weixinmpPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/weixinmpPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/getXhsGroup/index.ts","webpack://@iflyrpa/actions/./src/actions/getXhsHotTopic/index.ts","webpack://@iflyrpa/actions/./src/actions/getToutiaoCollection/index.ts","webpack://@iflyrpa/actions/./src/index.ts"],"sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.req = exports.json = exports.toBuffer = void 0;\nconst http = __importStar(require(\"http\"));\nconst https = __importStar(require(\"https\"));\nasync function toBuffer(stream) {\n let length = 0;\n const chunks = [];\n for await (const chunk of stream) {\n length += chunk.length;\n chunks.push(chunk);\n }\n return Buffer.concat(chunks, length);\n}\nexports.toBuffer = toBuffer;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function json(stream) {\n const buf = await toBuffer(stream);\n const str = buf.toString('utf8');\n try {\n return JSON.parse(str);\n }\n catch (_err) {\n const err = _err;\n err.message += ` (input: ${str})`;\n throw err;\n }\n}\nexports.json = json;\nfunction req(url, opts = {}) {\n const href = typeof url === 'string' ? url : url.href;\n const req = (href.startsWith('https:') ? https : http).request(url, opts);\n const promise = new Promise((resolve, reject) => {\n req\n .once('response', resolve)\n .once('error', reject)\n .end();\n });\n req.then = promise.then.bind(promise);\n return req;\n}\nexports.req = req;\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Agent = void 0;\nconst net = __importStar(require(\"net\"));\nconst http = __importStar(require(\"http\"));\nconst https_1 = require(\"https\");\n__exportStar(require(\"./helpers\"), exports);\nconst INTERNAL = Symbol('AgentBaseInternalState');\nclass Agent extends http.Agent {\n constructor(opts) {\n super(opts);\n this[INTERNAL] = {};\n }\n /**\n * Determine whether this is an `http` or `https` request.\n */\n isSecureEndpoint(options) {\n if (options) {\n // First check the `secureEndpoint` property explicitly, since this\n // means that a parent `Agent` is \"passing through\" to this instance.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (typeof options.secureEndpoint === 'boolean') {\n return options.secureEndpoint;\n }\n // If no explicit `secure` endpoint, check if `protocol` property is\n // set. This will usually be the case since using a full string URL\n // or `URL` instance should be the most common usage.\n if (typeof options.protocol === 'string') {\n return options.protocol === 'https:';\n }\n }\n // Finally, if no `protocol` property was set, then fall back to\n // checking the stack trace of the current call stack, and try to\n // detect the \"https\" module.\n const { stack } = new Error();\n if (typeof stack !== 'string')\n return false;\n return stack\n .split('\\n')\n .some((l) => l.indexOf('(https.js:') !== -1 ||\n l.indexOf('node:https:') !== -1);\n }\n // In order to support async signatures in `connect()` and Node's native\n // connection pooling in `http.Agent`, the array of sockets for each origin\n // has to be updated synchronously. This is so the length of the array is\n // accurate when `addRequest()` is next called. We achieve this by creating a\n // fake socket and adding it to `sockets[origin]` and incrementing\n // `totalSocketCount`.\n incrementSockets(name) {\n // If `maxSockets` and `maxTotalSockets` are both Infinity then there is no\n // need to create a fake socket because Node.js native connection pooling\n // will never be invoked.\n if (this.maxSockets === Infinity && this.maxTotalSockets === Infinity) {\n return null;\n }\n // All instances of `sockets` are expected TypeScript errors. The\n // alternative is to add it as a private property of this class but that\n // will break TypeScript subclassing.\n if (!this.sockets[name]) {\n // @ts-expect-error `sockets` is readonly in `@types/node`\n this.sockets[name] = [];\n }\n const fakeSocket = new net.Socket({ writable: false });\n this.sockets[name].push(fakeSocket);\n // @ts-expect-error `totalSocketCount` isn't defined in `@types/node`\n this.totalSocketCount++;\n return fakeSocket;\n }\n decrementSockets(name, socket) {\n if (!this.sockets[name] || socket === null) {\n return;\n }\n const sockets = this.sockets[name];\n const index = sockets.indexOf(socket);\n if (index !== -1) {\n sockets.splice(index, 1);\n // @ts-expect-error `totalSocketCount` isn't defined in `@types/node`\n this.totalSocketCount--;\n if (sockets.length === 0) {\n // @ts-expect-error `sockets` is readonly in `@types/node`\n delete this.sockets[name];\n }\n }\n }\n // In order to properly update the socket pool, we need to call `getName()` on\n // the core `https.Agent` if it is a secureEndpoint.\n getName(options) {\n const secureEndpoint = this.isSecureEndpoint(options);\n if (secureEndpoint) {\n // @ts-expect-error `getName()` isn't defined in `@types/node`\n return https_1.Agent.prototype.getName.call(this, options);\n }\n // @ts-expect-error `getName()` isn't defined in `@types/node`\n return super.getName(options);\n }\n createSocket(req, options, cb) {\n const connectOpts = {\n ...options,\n secureEndpoint: this.isSecureEndpoint(options),\n };\n const name = this.getName(connectOpts);\n const fakeSocket = this.incrementSockets(name);\n Promise.resolve()\n .then(() => this.connect(req, connectOpts))\n .then((socket) => {\n this.decrementSockets(name, fakeSocket);\n if (socket instanceof http.Agent) {\n try {\n // @ts-expect-error `addRequest()` isn't defined in `@types/node`\n return socket.addRequest(req, connectOpts);\n }\n catch (err) {\n return cb(err);\n }\n }\n this[INTERNAL].currentSocket = socket;\n // @ts-expect-error `createSocket()` isn't defined in `@types/node`\n super.createSocket(req, options, cb);\n }, (err) => {\n this.decrementSockets(name, fakeSocket);\n cb(err);\n });\n }\n createConnection() {\n const socket = this[INTERNAL].currentSocket;\n this[INTERNAL].currentSocket = undefined;\n if (!socket) {\n throw new Error('No socket was returned in the `connect()` function');\n }\n return socket;\n }\n get defaultPort() {\n return (this[INTERNAL].defaultPort ??\n (this.protocol === 'https:' ? 443 : 80));\n }\n set defaultPort(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].defaultPort = v;\n }\n }\n get protocol() {\n return (this[INTERNAL].protocol ??\n (this.isSecureEndpoint() ? 'https:' : 'http:'));\n }\n set protocol(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].protocol = v;\n }\n }\n}\nexports.Agent = Agent;\n//# sourceMappingURL=index.js.map","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(' ', ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpsProxyAgent = void 0;\nconst net = __importStar(require(\"net\"));\nconst tls = __importStar(require(\"tls\"));\nconst assert_1 = __importDefault(require(\"assert\"));\nconst debug_1 = __importDefault(require(\"debug\"));\nconst agent_base_1 = require(\"agent-base\");\nconst url_1 = require(\"url\");\nconst parse_proxy_response_1 = require(\"./parse-proxy-response\");\nconst debug = (0, debug_1.default)('https-proxy-agent');\nconst setServernameFromNonIpHost = (options) => {\n if (options.servername === undefined &&\n options.host &&\n !net.isIP(options.host)) {\n return {\n ...options,\n servername: options.host,\n };\n }\n return options;\n};\n/**\n * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to\n * the specified \"HTTP(s) proxy server\" in order to proxy HTTPS requests.\n *\n * Outgoing HTTP requests are first tunneled through the proxy server using the\n * `CONNECT` HTTP request method to establish a connection to the proxy server,\n * and then the proxy server connects to the destination target and issues the\n * HTTP request from the proxy server.\n *\n * `https:` requests have their socket connection upgraded to TLS once\n * the connection to the proxy server has been established.\n */\nclass HttpsProxyAgent extends agent_base_1.Agent {\n constructor(proxy, opts) {\n super(opts);\n this.options = { path: undefined };\n this.proxy = typeof proxy === 'string' ? new url_1.URL(proxy) : proxy;\n this.proxyHeaders = opts?.headers ?? {};\n debug('Creating new HttpsProxyAgent instance: %o', this.proxy.href);\n // Trim off the brackets from IPv6 addresses\n const host = (this.proxy.hostname || this.proxy.host).replace(/^\\[|\\]$/g, '');\n const port = this.proxy.port\n ? parseInt(this.proxy.port, 10)\n : this.proxy.protocol === 'https:'\n ? 443\n : 80;\n this.connectOpts = {\n // Attempt to negotiate http/1.1 for proxy servers that support http/2\n ALPNProtocols: ['http/1.1'],\n ...(opts ? omit(opts, 'headers') : null),\n host,\n port,\n };\n }\n /**\n * Called when the node-core HTTP client library is creating a\n * new HTTP request.\n */\n async connect(req, opts) {\n const { proxy } = this;\n if (!opts.host) {\n throw new TypeError('No \"host\" provided');\n }\n // Create a socket connection to the proxy server.\n let socket;\n if (proxy.protocol === 'https:') {\n debug('Creating `tls.Socket`: %o', this.connectOpts);\n socket = tls.connect(setServernameFromNonIpHost(this.connectOpts));\n }\n else {\n debug('Creating `net.Socket`: %o', this.connectOpts);\n socket = net.connect(this.connectOpts);\n }\n const headers = typeof this.proxyHeaders === 'function'\n ? this.proxyHeaders()\n : { ...this.proxyHeaders };\n const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host;\n let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\\r\\n`;\n // Inject the `Proxy-Authorization` header if necessary.\n if (proxy.username || proxy.password) {\n const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(auth).toString('base64')}`;\n }\n headers.Host = `${host}:${opts.port}`;\n if (!headers['Proxy-Connection']) {\n headers['Proxy-Connection'] = this.keepAlive\n ? 'Keep-Alive'\n : 'close';\n }\n for (const name of Object.keys(headers)) {\n payload += `${name}: ${headers[name]}\\r\\n`;\n }\n const proxyResponsePromise = (0, parse_proxy_response_1.parseProxyResponse)(socket);\n socket.write(`${payload}\\r\\n`);\n const { connect, buffered } = await proxyResponsePromise;\n req.emit('proxyConnect', connect);\n this.emit('proxyConnect', connect, req);\n if (connect.statusCode === 200) {\n req.once('socket', resume);\n if (opts.secureEndpoint) {\n // The proxy is connecting to a TLS server, so upgrade\n // this socket connection to a TLS connection.\n debug('Upgrading socket connection to TLS');\n return tls.connect({\n ...omit(setServernameFromNonIpHost(opts), 'host', 'path', 'port'),\n socket,\n });\n }\n return socket;\n }\n // Some other status code that's not 200... need to re-play the HTTP\n // header \"data\" events onto the socket once the HTTP machinery is\n // attached so that the node core `http` can parse and handle the\n // error status code.\n // Close the original socket, and a new \"fake\" socket is returned\n // instead, so that the proxy doesn't get the HTTP request\n // written to it (which may contain `Authorization` headers or other\n // sensitive data).\n //\n // See: https://hackerone.com/reports/541502\n socket.destroy();\n const fakeSocket = new net.Socket({ writable: false });\n fakeSocket.readable = true;\n // Need to wait for the \"socket\" event to re-play the \"data\" events.\n req.once('socket', (s) => {\n debug('Replaying proxy buffer for failed request');\n (0, assert_1.default)(s.listenerCount('data') > 0);\n // Replay the \"buffered\" Buffer onto the fake `socket`, since at\n // this point the HTTP module machinery has been hooked up for\n // the user.\n s.push(buffered);\n s.push(null);\n });\n return fakeSocket;\n }\n}\nHttpsProxyAgent.protocols = ['http', 'https'];\nexports.HttpsProxyAgent = HttpsProxyAgent;\nfunction resume(socket) {\n socket.resume();\n}\nfunction omit(obj, ...keys) {\n const ret = {};\n let key;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseProxyResponse = void 0;\nconst debug_1 = __importDefault(require(\"debug\"));\nconst debug = (0, debug_1.default)('https-proxy-agent:parse-proxy-response');\nfunction parseProxyResponse(socket) {\n return new Promise((resolve, reject) => {\n // we need to buffer any HTTP traffic that happens with the proxy before we get\n // the CONNECT response, so that if the response is anything other than an \"200\"\n // response code, then we can re-play the \"data\" events on the socket once the\n // HTTP parser is hooked up...\n let buffersLength = 0;\n const buffers = [];\n function read() {\n const b = socket.read();\n if (b)\n ondata(b);\n else\n socket.once('readable', read);\n }\n function cleanup() {\n socket.removeListener('end', onend);\n socket.removeListener('error', onerror);\n socket.removeListener('readable', read);\n }\n function onend() {\n cleanup();\n debug('onend');\n reject(new Error('Proxy connection ended before receiving CONNECT response'));\n }\n function onerror(err) {\n cleanup();\n debug('onerror %o', err);\n reject(err);\n }\n function ondata(b) {\n buffers.push(b);\n buffersLength += b.length;\n const buffered = Buffer.concat(buffers, buffersLength);\n const endOfHeaders = buffered.indexOf('\\r\\n\\r\\n');\n if (endOfHeaders === -1) {\n // keep buffering\n debug('have not received end of HTTP headers yet...');\n read();\n return;\n }\n const headerParts = buffered\n .slice(0, endOfHeaders)\n .toString('ascii')\n .split('\\r\\n');\n const firstLine = headerParts.shift();\n if (!firstLine) {\n socket.destroy();\n return reject(new Error('No header received from proxy CONNECT response'));\n }\n const firstLineParts = firstLine.split(' ');\n const statusCode = +firstLineParts[1];\n const statusText = firstLineParts.slice(2).join(' ');\n const headers = {};\n for (const header of headerParts) {\n if (!header)\n continue;\n const firstColon = header.indexOf(':');\n if (firstColon === -1) {\n socket.destroy();\n return reject(new Error(`Invalid header from proxy CONNECT response: \"${header}\"`));\n }\n const key = header.slice(0, firstColon).toLowerCase();\n const value = header.slice(firstColon + 1).trimStart();\n const current = headers[key];\n if (typeof current === 'string') {\n headers[key] = [current, value];\n }\n else if (Array.isArray(current)) {\n current.push(value);\n }\n else {\n headers[key] = value;\n }\n }\n debug('got proxy server response: %o %o', firstLine, headers);\n cleanup();\n resolve({\n connect: {\n statusCode,\n statusText,\n headers,\n },\n buffered,\n });\n }\n socket.on('error', onerror);\n socket.on('end', onend);\n read();\n });\n}\nexports.parseProxyResponse = parseProxyResponse;\n//# sourceMappingURL=parse-proxy-response.js.map","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet flagForceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tflagForceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m') ||\n\t\t\thasFlag('color=full') ||\n\t\t\thasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream, options = {}) {\n\tconst level = supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options\n\t});\n\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel({isTTY: tty.isatty(1)}),\n\tstderr: getSupportLevel({isTTY: tty.isatty(2)})\n};\n","\nvar encrypt_lookup = [\n \"Z\",\n \"m\",\n \"s\",\n \"e\",\n \"r\",\n \"b\",\n \"B\",\n \"o\",\n \"H\",\n \"Q\",\n \"t\",\n \"N\",\n \"P\",\n \"+\",\n \"w\",\n \"O\",\n \"c\",\n \"z\",\n \"a\",\n \"/\",\n \"L\",\n \"p\",\n \"n\",\n \"g\",\n \"G\",\n \"8\",\n \"y\",\n \"J\",\n \"q\",\n \"4\",\n \"2\",\n \"K\",\n \"W\",\n \"Y\",\n \"j\",\n \"0\",\n \"D\",\n \"S\",\n \"f\",\n \"d\",\n \"i\",\n \"k\",\n \"x\",\n \"3\",\n \"V\",\n \"T\",\n \"1\",\n \"6\",\n \"I\",\n \"l\",\n \"U\",\n \"A\",\n \"F\",\n \"M\",\n \"9\",\n \"7\",\n \"h\",\n \"E\",\n \"C\",\n \"v\",\n \"u\",\n \"R\",\n \"X\",\n \"5\"\n];\n\nlet esm_typeof = {}\nesm_typeof.A = function (t) {\n return typeof t\n}\n\nfunction encrypt_b64Encode(t) {\n var e = 664\n , r = 634\n , n = 448\n , o = 599\n , i = 315\n , a = 416\n , u = 512\n , s = 361\n , c = 406\n , l = 487\n , f = 496\n , p = 333\n , h = 630\n , d = 639\n , v = 548\n , g = 582\n , m = 447\n , y = 468\n , w = 375\n , b = 331\n , _ = 149\n , E = 382\n , x = 265\n , k = 625\n , T = 570\n , S = 551\n , A = 582\n , L = 581\n , I = 638\n , R = 618\n , O = 606\n , C = 429\n , N = 651\n , P = 667\n , B = 817\n , M = 333\n , j = 567\n , F = 747\n , D = 561\n , q = 570\n , U = 676\n , G = 840\n , H = 240\n , V = {\n udFrB: function (t, e) {\n return t % e\n },\n cCZFe: function (t, e) {\n return t === e\n },\n jevwl: function (t, e) {\n return t - e\n },\n aqlTy: function (t, e) {\n return t + e\n },\n rceYY: function (t, e) {\n return t >> e\n },\n OwjMq: function (t, e) {\n return t & e\n },\n kSGXO: function (t, e) {\n return t << e\n },\n veNiI: function (t, e) {\n return t === e\n },\n QLthP: function (t, e) {\n return t + e\n },\n wDtJz: function (t, e) {\n return t + e\n },\n nYqUQ: function (t, e) {\n return t & e\n },\n TCArD: function (t, e) {\n return t << e\n },\n RHteb: function (t, e) {\n return t - e\n },\n mZPJZ: function (t, e) {\n return t < e\n },\n zDETq: function (t, e, r, n) {\n return t(e, r, n)\n },\n YlZGp: function (t, e) {\n return t > e\n }\n };\n function W(t, e) {\n return a0_0x10f4ac(e, t - -H)\n }\n for (var X = (W(-413, -442) + W(-e, -r) + \"7\")[W(-n, -o)](\"|\"), z = 0; ;) {\n switch (X[z++]) {\n case \"0\":\n var Y;\n continue;\n case \"1\":\n var K = [];\n continue;\n case \"2\":\n var J = V[W(-i, -a)]($, 3);\n continue;\n case \"3\":\n var $ = t[W(-350, -u)];\n continue;\n case \"4\":\n V[W(-s, -c)](J, 1) ? (Y = t[V[W(-l, -f)]($, 1)],\n K[W(-p, -346)](V[W(-h, -d)](encrypt_lookup[V[W(-503, -v)](Y, 2)] + encrypt_lookup[V[W(-g, -741)](V[W(-331, -m)](Y, 4), 63)], \"==\"))) : V[W(-y, -w)](J, 2) && (Y = V[W(-b, -_)](t[$ - 2], 8) + t[V[W(-l, -E)]($, 1)],\n K[W(-333, -x)](V[W(-k, -505)](V[W(-T, -S)](encrypt_lookup[Y >> 10], encrypt_lookup[V[W(-A, -L)](Y >> 4, 63)]) + encrypt_lookup[V[W(-I, -R)](V[W(-O, -C)](Y, 2), 63)], \"=\")));\n continue;\n case \"5\":\n var Q = 16383;\n continue;\n case \"6\":\n for (var Z = 0, tt = V[W(-509, -N)]($, J); V[W(-P, -B)](Z, tt); Z += Q)\n K[W(-M, -153)](V[W(-j, -F)](encrypt_encodeChunk, t, Z, V[W(-D, -413)](Z + Q, tt) ? tt : V[W(-q, -501)](Z, Q)));\n continue;\n case \"7\":\n return K[W(-U, -G)](\"\")\n }\n break\n }\n}\n\nfunction encrypt_encodeUtf8(t) {\n var e = 185\n , r = 410\n , n = 480\n , o = 222\n , i = 194\n , a = 165\n , u = 147\n , s = 290\n , c = 460\n , l = 472\n , f = 497\n , p = 462\n , h = 286\n , d = 209\n , v = 223\n , g = 590\n , m = {\n bIGxm: function (t, e) {\n return t(e)\n },\n MahgM: function (t, e) {\n return t < e\n },\n czxKn: function (t, e) {\n return t === e\n },\n clYIu: function (t, e) {\n return t + e\n }\n }\n , y = m[b(477, 488)](encodeURIComponent, t)\n , w = [];\n function b(t, e) {\n return a0_0x10f4ac(t, e - g)\n }\n for (var _ = 0; m[b(333, e)](_, y[b(r, n)]); _++) {\n var E = y[b(o, 290)](_);\n if (m[b(i, a)](E, \"%\")) {\n var x = y[b(u, s)](m[b(574, 472)](_, 1)) + y[b(c, 290)](m[b(605, l)](_, 2))\n , k = parseInt(x, 16);\n w[b(592, f)](k),\n _ += 2\n } else\n w[b(p, f)](E[b(217, h) + b(d, v)](0))\n }\n return w\n}\n\nfunction sign_common(h) {\n return encrypt_b64Encode(encrypt_encodeUtf8(JSON.stringify(h)))\n}\nfunction encrypt_tripletToBase64(t) {\n var e = 11\n , r = 15\n , n = 199\n , o = 34\n , i = 4\n , a = 102\n , u = 276\n , s = 205\n , c = 218\n , l = 11\n , f = 115\n , p = 34\n , h = 161\n , d = 123\n , v = 335\n , g = {};\n function m(t, e) {\n return a0_0x10f4ac(e, t - v)\n }\n g[m(205, 328)] = function (t, e) {\n return t + e\n }\n ,\n g[m(e, 53)] = function (t, e) {\n return t >> e\n }\n ,\n g[m(r, n)] = function (t, e) {\n return t & e\n }\n ,\n g[m(o, i)] = function (t, e) {\n return t >> e\n }\n ,\n g[m(-a, -u)] = function (t, e) {\n return t & e\n }\n ;\n var y = g;\n return y[m(s, c)](encrypt_lookup[63 & y[m(l, -75)](t, 18)], encrypt_lookup[y[m(r, f)](y[m(p, h)](t, 12), 63)]) + encrypt_lookup[t >> 6 & 63] + encrypt_lookup[y[m(-a, -d)](t, 63)]\n}\nfunction encrypt_encodeChunk(t, e, r) {\n var n, o = 165, i = 246, a = 205, u = 353, s = 162, c = 17, l = 351, f = 191, p = 139, h = 79, d = 86, v = 233, g = 270, m = 166, y = {\n hwomB: function (t, e) {\n return t < e\n },\n iHUeL: function (t, e) {\n return t & e\n },\n ELxEv: function (t, e) {\n return t << e\n },\n lBuRH: function (t, e) {\n return t << e\n },\n SkIJl: function (t, e) {\n return t & e\n },\n JYxWY: function (t, e) {\n return t + e\n },\n CxjtF: function (t, e) {\n return t(e)\n }\n }, w = [];\n function b(t, e) {\n return a0_0x10f4ac(t, e - m)\n }\n for (var _ = e; y[b(-63, -o)](_, r); _ += 3)\n n = y[b(-i, -a)](y[b(-166, -124)](t[_], 16), 16711680) + y[b(-u, -205)](y[b(s, -c)](t[_ + 1], 8), 65280) + y[b(-l, -208)](t[y[b(-350, -f)](_, 2)], 255),\n w[b(p, 73)](y[b(h, d)](encrypt_tripletToBase64, n));\n return w[b(-v, -g)](\"\")\n}\n\nfunction a0_0x3693(t, e) {\n var r = [\n \"xUKNL\",\n \"jUrZI\",\n \"rviFu\",\n \"join\",\n \"get\",\n \"LjDtD\",\n \"ZJHyP\",\n \"wOmGY\",\n \"enumera\",\n \"aONWR\",\n \"string\",\n \"kQpMi\",\n \"mZPJZ\",\n \"Ysiay\",\n \"czxKn\",\n \"|5|6|4|\",\n \"prototy\",\n \"jklmnop\",\n \"MuYbw\",\n \"diDwk\",\n \"TRFtx\",\n \"drDHI\",\n \"WLARA\",\n \"xyz0123\",\n \"asBytes\",\n \"|6|0|1|\",\n \"JOtEi\",\n \"Oialn\",\n \"OQrEi\",\n \"uPnXq\",\n \"VWXYZab\",\n \"cIbFa\",\n \"qYuta\",\n \"QDOZZ\",\n \"MahgM\",\n \"iRXZq\",\n \"22098XlFGYn\",\n \"mmLKn\",\n \"jMcIE\",\n \"stringi\",\n \"[object\",\n \"nYqUQ\",\n \"jSgjk\",\n \"ucyEo\",\n \"iewJI\",\n \"vgTwl\",\n \"DnNGR\",\n \"oBytes\",\n \"Xtwzk\",\n \"aqlTy\",\n \"JWnPK\",\n \"1|0|2|4\",\n \"qrstuvw\",\n \"_gg\",\n \"QLthP\",\n \"FJIWy\",\n \"yRnhISG\",\n \"pjUsr\",\n \"KAwuh\",\n \"Thhoa\",\n \"jarkJ\",\n \"WjRNN\",\n \"asStrin\",\n \"x3VT16I\",\n \"357835LaQWjW\",\n \"SkIJl\",\n \"size\",\n \"iyorr\",\n \"iHUeL\",\n \"tTanW\",\n \"tNusJ\",\n \"NiSrP\",\n \"eAt\",\n \"TCArD\",\n \"a2r1ZQo\",\n \"iamspam\",\n \"bOnfu\",\n \"UNSKg\",\n \"HIJKLMN\",\n \"ZfMKC\",\n \"bJhXU\",\n \"zwAAc\",\n \"JYxWY\",\n \"lUAFM97\",\n \"mwaRe\",\n \"EzYWD\",\n \"replace\",\n \"uOtUJ\",\n \"__esMod\",\n \"ViQWI\",\n \"aCMFL\",\n \"EAKSd\",\n \"ule\",\n \"pqnFP\",\n \"qYDsL\",\n \"270726pnaYfG\",\n \"glBZG\",\n \"OwjMq\",\n \"YGrjc\",\n \"ZhAcd\",\n \"JDqFL\",\n \"456789+\",\n \"kEjQs\",\n \"lWhbD\",\n \"OaLTI\",\n \"dXlgm\",\n \"cVte9UJ\",\n \"ctor\",\n \"hwomB\",\n \"wDtJz\",\n \"constru\",\n \"ABHuC\",\n \"zDETq\",\n \"SYNeA\",\n \"BGbij\",\n \"ionFq\",\n \"QzaNS\",\n \"7|3|5|4\",\n \"YlZGp\",\n \"Bjniw\",\n \"ZITuN\",\n \"KPTzH\",\n \"HrBeq\",\n \"xobsT\",\n \"kXJkC\",\n \"QSrEZ\",\n \"ENXtO\",\n \"FYbRJ\",\n \"wOcza/L\",\n \"_hh\",\n \"dVXMb\",\n \"ppkua\",\n \"WgamZ\",\n \"HuwCW\",\n \"362424fnLCuh\",\n \"charCod\",\n \"HhPqg\",\n \"ODunI\",\n \"eJzqq\",\n \"charAt\",\n \"JGAgI\",\n \"ZmserbB\",\n \"TURcG\",\n \"WyrqF\",\n \"iYJzH\",\n \"VIwfH\",\n \"tzzOB\",\n \"YgiCH\",\n \"byyMQ\",\n \"ELxEv\",\n \"0DSfdik\",\n \"HRihr\",\n \"_ii\",\n \"aDsrp\",\n \"ble\",\n \"jTGtW\",\n \"configu\",\n \"cXiYW\",\n \"56kSpAsC\",\n \"158KIldlA\",\n \"oHQtNP+\",\n \"BHavO\",\n \"PCIlh\",\n \"QatIf\",\n \"IKyqh\",\n \"Words\",\n \"Qwnrg\",\n \"44lQAgNu\",\n \"cdefghi\",\n \"nTwxD\",\n \"RHteb\",\n \"coqPr\",\n \"rJwmI\",\n \"aBoeK\",\n \"default\",\n \"exports\",\n \"rceYY\",\n \"isArray\",\n \"mdKKO\",\n \"kzxWE\",\n \"DeBtm\",\n \"tjjUn\",\n \"vJEcD\",\n \"LpfE8xz\",\n \"bin\",\n \"HKazo\",\n \"rable\",\n \"call\",\n \"wordsTo\",\n \"zBiyt\",\n \"GrsGL\",\n \"fqulF\",\n \"jevwl\",\n \"mxfLj\",\n \"xlUnt\",\n \"q42KWYj\",\n \"endian\",\n \"eEqDc\",\n \"oyGAZ\",\n \"bytesTo\",\n \"OzjuJ\",\n \"IfwWq\",\n \"ize\",\n \"6648810piiNEz\",\n \"lTHdy\",\n \"vDLZJ\",\n \"stringT\",\n \"A4NjFqY\",\n \"GkjTz\",\n \"eooJA\",\n \"substr\",\n \"veNiI\",\n \"LYfDp\",\n \"ljKsP\",\n \"jJYWG\",\n \"bcYAf\",\n \"srikB\",\n \"utf8\",\n \"qTbeY\",\n \"yqRzd\",\n \"|3|5\",\n \"bjbAy\",\n \" Array]\",\n \"rMbXP\",\n \"u5wPHsO\",\n \"test\",\n \"gMIMC\",\n \"Deyqv\",\n \" argume\",\n \"ABCDEFG\",\n \"undefin\",\n \"split\",\n \"QTlsj\",\n \"_isBuff\",\n \"OPQRSTU\",\n \"Illegal\",\n \"loSen\",\n \"navigat\",\n \"ObwNo\",\n \"qPbcq\",\n \"7182692QogvXX\",\n \"tvqSn\",\n \"DGptJ\",\n \"HhTfW\",\n \"avIYx\",\n \"defineP\",\n \"PFQbW\",\n \"CjFyM\",\n \"toStrin\",\n \"yMWXS\",\n \"yMyOy\",\n \"0XTdDgM\",\n \"eXkru\",\n \"_blocks\",\n \"indexOf\",\n \"mbBQr\",\n \"lBuRH\",\n \"HzGjH\",\n \"HNErV\",\n \"mEokX\",\n \"userAge\",\n \"UpmtD\",\n \"sgomx\",\n \"KDfKS\",\n \"OTbSq\",\n \"lxMGW\",\n \"0|3|2|1\",\n \"dfWyB\",\n \"lWzAd\",\n \"eyXTL\",\n \"5624qreyZK\",\n \"pow\",\n \"IJstz\",\n \"LMlMB\",\n \"INlwI\",\n \"lRulU\",\n \"TCgZh\",\n \"_digest\",\n \"UBhIl\",\n \"fLtZZ\",\n \"FYSKq\",\n \"2|8|0\",\n \"IoCeZ\",\n \" Object\",\n \"UuTvI\",\n \"lNKLD\",\n \"String\",\n \"Bytes\",\n \"rBVvW\",\n \"KblCWi+\",\n \"pRaIH\",\n \"roperty\",\n \"vTINI\",\n \"atLE\",\n \"functio\",\n \"Udqoy\",\n \"nt \",\n \"htSWx\",\n \"hEwRK\",\n \"encodin\",\n \"sCSVK\",\n \"VuAZF\",\n \"xeIIy\",\n \"RBjMb\",\n \"taTrq\",\n \"vDLFJ\",\n \"bPkya\",\n \"HzimH\",\n \"nCffO\",\n \"BWbtU\",\n \"2|8\",\n \"slice\",\n \"lxMGQ\",\n \"tTiwe\",\n \"JDhJB\",\n \"rCode\",\n \"gNDzY\",\n \"wJkyu\",\n \"cCZFe\",\n \"RNGSl\",\n \"floor\",\n \"clYIu\",\n \"vLiwz\",\n \"BiNSE\",\n \"MtYWB\",\n \"fromCha\",\n \"StNOc\",\n \"|7|5|3|\",\n \"9|1|4|6\",\n \"length\",\n \"UNYAE\",\n \"pngG8yJ\",\n \"hasOwnP\",\n \"pYeWu\",\n \"wTjkk\",\n \"Bvk6/7=\",\n \"KTmgk\",\n \"bIGxm\",\n \"readFlo\",\n \"LFZch\",\n \"_ff\",\n \"1|3|4|2\",\n \"binary\",\n \"LLdJZ\",\n \"ZofOU\",\n \"6399uFPxTQ\",\n \"push\",\n \"YntPT\",\n \"kSGXO\",\n \"random\",\n \"HfpCU\",\n \"hECvuRX\",\n \"getTime\",\n \"iwSyV\",\n \"alert\",\n \"LKMcb\",\n \"DJVdg\",\n \"Hex\",\n \"URzKO\",\n \"CxjtF\",\n \"ZVOCs\",\n \"isBuffe\",\n \"vGpbT\",\n \"rotl\",\n \"udFrB\",\n \"CnbsH\",\n \"crLST\"\n ]\n return r[t -= 131]\n}\nfunction a0_0x10f4ac(t, e) {\n return a0_0x3693(e - -570, t)\n}\n\nvar encrypt_mcr = function (t) {\n var e = 67\n , r = 15\n , n = 164\n , o = 126\n , i = 137\n , a = 39\n , u = 176\n , s = 72\n , c = 56\n , l = 21\n , f = 35\n , p = 34\n , h = 35\n , d = 18\n , v = 25\n , g = 185\n , m = 1149\n , y = 744\n , w = 1295\n , b = 1248\n , _ = 1310\n , E = 1096\n , x = 1166\n , k = 1095\n , T = 1196\n , S = 1180\n , A = 1039\n , L = 976\n , R = 1347\n , I = 1117\n , O = 1168\n , C = 1233\n , N = 1157\n , P = 1006\n , B = 1122\n , M = 1277\n , j = 1288\n , F = 1271\n , D = 986\n , q = 162\n , U = {};\n function H(t, e) {\n return a0_0x10f4ac(e, t - q)\n }\n U[H(-73, -66)] = function (t, e) {\n return t === e\n }\n ,\n U[H(e, 186)] = function (t, e) {\n return t < e\n }\n ,\n U[H(-r, -n)] = function (t, e) {\n return t ^ e\n }\n ,\n U[H(r, -o)] = function (t, e) {\n return t & e\n }\n ,\n U[H(-i, -a)] = function (t, e) {\n return t < e\n }\n ,\n U[H(-175, -u)] = function (t, e) {\n return t ^ e\n }\n ,\n U[H(-59, s)] = function (t, e) {\n return t ^ e\n }\n ,\n U[H(-c, -l)] = function (t, e) {\n return t >>> e\n }\n ,\n U[H(f, p)] = function (t, e) {\n return t >>> e\n }\n ;\n for (var G, V, W = U, z = 3988292384, X = 256, Y = []; X--; Y[X] = W[H(h, -66)](G, 0))\n for (V = 8,\n G = X; V--;)\n G = W[H(r, d)](G, 1) ? W[H(35, v)](G, 1) ^ z : W[H(h, g)](G, 1);\n return function (t) {\n function e(t, e) {\n return H(e - 1181, t)\n }\n if (W[e(m, 1108)]((0,\n esm_typeof.A)(t), e(y, 914))) {\n for (var r = 0, n = -1; W[e(w, b)](r, t[e(_, 1233)]); ++r)\n n = W[e(E, x)](Y[W[e(k, T)](n, 255) ^ t[e(S, A) + e(1022, L)](r)], n >>> 8);\n return W[e(R, 1166)](n, -1) ^ z\n }\n for (r = 0,\n n = -1; W[e(I, 1044)](r, t[e(O, C)]); ++r)\n n = W[e(N, P)](Y[W[e(1229, B)](W[e(M, T)](n, 255), t[r])], W[e(j, 1125)](n, 8));\n return W[e(F, B)](W[e(D, 1122)](n, -1), z)\n }\n}();\n\nfunction GenXSCommon(a1cookie, x_t, x_s) {\n let b1 = 'I38rHdgsjopgIvesdVwgIC+oIELmBZ5e3VwXLgFTIxS3bqwErFeexd0ekncAzMFYnqthIhJeSnMDKutRI3KsYorWHPtGrbV0P9WfIi/eWc6eYqtyQApPI37ekmR1QL+5Ii6sdnoeSfqYHqwl2qt5B0DoIvMzOZQqZVw7IxOeTqwr4qtiIkrOIi/skccxICLdI3Oe0utl2ADZsLveDSKsSPw5IEvsiutJOqw8BVwfPpdeTDWOIx4VIiu6ZPwbPut5IvlaLbgs3qtxIxes1VwHIkumIkIyejgsY/WTge7sjutKrZgedWI9gfKeYWZGI36eWPwyIEJefut0ocVAPBLLI3Aeiqt3cZ7sVom4IESyIhEqQd4AICY24F4gIiifpVwAICZVJo3sWWJs1qwiIvdef97e0ekKIi/e1piS8qwUIE7s1fds6WAeiVwqed5sdut3IxILbd6sdqtDbgKs0PwgIv8aI3z5rqwGBVtwzfTsKD7sdBdskut+Iioed/As1SiiIkKs0F6s3nVuIkge1Pt0IkVkwPwwNVtMI3/e1qtdIkKs1VwVIEesdutA+qwKsuw7IvrRIxDgJfIj2IJexVtVIhiKIi6eDVw/bz4zLadsYjmfIkWo4VtPmVw5IvAe3qtk+LJeTl5sTSEyIEJekdgs3PtsnPwqI35sSPt0Ih/sV04TIk0ejjNsfqw7Iv3sVut04B8qIkWyIvKsxFOekzNsdAKsYPtKIiMFI3MurVtKIvzjIh6s6lFut//sWqtaI3IYbuwl'\n let h = {\n \"s0\": 3,\n \"s1\": \"\",\n \"x0\": \"1\",\n \"x1\": \"3.6.8\",\n \"x2\": \"Mac OS\",\n \"x3\": \"xhs-pc-web\",\n \"x4\": \"4.20.1\",\n \"x5\": a1cookie, // a1 cookie\n \"x6\": x_t,\n \"x7\": x_s,\n \"x8\": b1,\n \"x9\": encrypt_mcr(x_t + x_s + b1),\n \"x10\": 1,\n }\n\n return sign_common(h)\n}\n\nmodule.exports = GenXSCommon\n\n\n// let a1 = '195b24e679dmxgripk2o89yld9kdnoklz0h04octb40000365251';\n// let x_t = 1754108104611;\n// const x_s = 'XYS_2UQhPsHCH0c1PjhFHjIj2erjwjQM89PjNsQhPjHCHDlkJdphHjIj2ePjwjQTJdPIP/ZlgAmGy0Yt4Lh3cFq34DE84F+ewBrM/9IUwebz8F+3J9Qi+SQD8dzN4e8EPeYS2eb7c0mTc9Yrc7z14nI3nLkQcDSenLkG4sR68FVM+nSF2e+NJ9zca0mkzrTj4DV3GMqMpoS3yeWEznbM+L40wn4Lpbb9zr+7/SW6PMYYzeQ1aFTI8gm8J/YL/FzTc0D6zgSyPjTy+0Ys+7c38g8NLSQD8AWjNsQh+sHCHfRjyfp04sQR'\n\n// console.log(GenXSCommon(a1, x_t, x_s));\n","const a0_0x45db08=a0_0x4b0d;function a0_0x4b0d(_0x2bd218,_0x316d6){const _0x165410=a0_0x1654();return a0_0x4b0d=function(_0x4b0d73,_0x5794db){_0x4b0d73=_0x4b0d73-0x84;let _0x1859e3=_0x165410[_0x4b0d73];return _0x1859e3;},a0_0x4b0d(_0x2bd218,_0x316d6);}(function(_0x1b2596,_0x16c0e0){const _0x1227f1=a0_0x4b0d,_0x46fb59=_0x1b2596();while(!![]){try{const _0x383dd4=parseInt(_0x1227f1(0x85))/0x1+-parseInt(_0x1227f1(0xb0))/0x2*(-parseInt(_0x1227f1(0x9b))/0x3)+parseInt(_0x1227f1(0xaa))/0x4+-parseInt(_0x1227f1(0xa0))/0x5*(parseInt(_0x1227f1(0x9d))/0x6)+parseInt(_0x1227f1(0x86))/0x7+-parseInt(_0x1227f1(0xab))/0x8*(parseInt(_0x1227f1(0x8d))/0x9)+parseInt(_0x1227f1(0x91))/0xa;if(_0x383dd4===_0x16c0e0)break;else _0x46fb59['push'](_0x46fb59['shift']());}catch(_0x4fc071){_0x46fb59['push'](_0x46fb59['shift']());}}}(a0_0x1654,0x807f8));const Random=Math['random'](),Ts=Date['now'](),Sm3DoneTs=Ts+0x30,xhrParaDoneTs=Ts+0x109,xhrReqDoneTs=Ts+0x10af0;function a0_0x1654(){const _0x46e031=['floor','dhzx','map','_compress','charCodeAt','min','invalid\\x20j\\x20for\\x20constant\\x20Tj','reset','662|856|1920|977|1920|977|1920|1080|Linux\\x20x86_64','6GqxJwW','error','1578UVUSyW','fromCharCode','replace','17445vhaSjq','isNaN','toString','push','length','write','reduce','charAt','reg','split','2475936ufrFMu','2137592VTpBSF','join','Dkdpgh2ZmsQB80/MfvV36XI1R45-WUAlEixNLwoqYTOPuzKFjJnry79HbGcaStCe','exports','fmUmtNjj1OfTrR716RULEyQaLPrOG1jpZz0/4Tyzr7/IbcOXs8PxVxHmrAIsIMm6IfTserj+JgCbPHUssUmedGKwCrIziubgSU0FT1MmqPOZXcPDGB3xUyq+vaM7HZyYgJtKyMR=','48064qVwnFy','concat','prototype','167524mhzzJE','5968354Oyyfma','chunk','string','forEach','size','slice','sort','9BjSPrC','sum','repeat','splice','239400JtRPVl'];a0_0x1654=function(){return _0x46e031;};return a0_0x1654();}class SM3Hasher{constructor(){const _0x468533=a0_0x4b0d;this[_0x468533(0xa8)]=new Array(0x8),this[_0x468533(0x87)]=[],this[_0x468533(0x8a)]=0x0,this[_0x468533(0x99)]();}[a0_0x45db08(0x99)](){const _0x11e792=a0_0x45db08;this[_0x11e792(0xa8)][0x0]=0x7380166f,this[_0x11e792(0xa8)][0x1]=0x4914b2b9,this['reg'][0x2]=0x172442d7,this[_0x11e792(0xa8)][0x3]=0xda8a0600,this['reg'][0x4]=0xa96f30bc,this[_0x11e792(0xa8)][0x5]=0x163138aa,this[_0x11e792(0xa8)][0x6]=0xe38dee4d,this[_0x11e792(0xa8)][0x7]=0xb0fb0e4e,this[_0x11e792(0x87)]=[],this[_0x11e792(0x8a)]=0x0;}[a0_0x45db08(0xa5)](_0x22d1ef){const _0x182388=a0_0x45db08;var _0x2ded18=_0x182388(0x88)==typeof _0x22d1ef?function(_0x5e491d){const _0x12d911=_0x182388;var _0x5795ab=encodeURIComponent(_0x5e491d)[_0x12d911(0x9f)](/%([0-9A-F]{2})/g,function(_0x22d98b,_0x5659da){const _0x357908=_0x12d911;return String[_0x357908(0x9e)]('0x'+_0x5659da);}),_0x5c0d1c=new Array(_0x5795ab['length']);return Array[_0x12d911(0x84)][_0x12d911(0x89)]['call'](_0x5795ab,function(_0x2e8583,_0x28f42f){const _0x4b2a85=_0x12d911;_0x5c0d1c[_0x28f42f]=_0x2e8583[_0x4b2a85(0x96)](0x0);}),_0x5c0d1c;}(_0x22d1ef):_0x22d1ef;this['size']+=_0x2ded18['length'];var _0xffe4ea=0x40-this[_0x182388(0x87)][_0x182388(0xa4)];if(_0x2ded18[_0x182388(0xa4)]<_0xffe4ea)this['chunk']=this[_0x182388(0x87)][_0x182388(0xb1)](_0x2ded18);else{for(this['chunk']=this[_0x182388(0x87)][_0x182388(0xb1)](_0x2ded18[_0x182388(0x8b)](0x0,_0xffe4ea));this[_0x182388(0x87)]['length']>=0x40;)this['_compress'](this[_0x182388(0x87)]),_0xffe4ea<_0x2ded18[_0x182388(0xa4)]?this['chunk']=_0x2ded18[_0x182388(0x8b)](_0xffe4ea,Math[_0x182388(0x97)](_0xffe4ea+0x40,_0x2ded18['length'])):this[_0x182388(0x87)]=[],_0xffe4ea+=0x40;}}[a0_0x45db08(0x8e)](_0x34ff8d,_0xecf9f6){const _0x3ddb20=a0_0x45db08;_0x34ff8d&&(this[_0x3ddb20(0x99)](),this[_0x3ddb20(0xa5)](_0x34ff8d)),this['_fill']();for(var _0x28ac8a=0x0;_0x28ac8a<this[_0x3ddb20(0x87)][_0x3ddb20(0xa4)];_0x28ac8a+=0x40)this[_0x3ddb20(0x95)](this[_0x3ddb20(0x87)]['slice'](_0x28ac8a,_0x28ac8a+0x40));var _0x117621,_0x335539,_0x450e58,_0x5b1ad8=null;if('hex'==_0xecf9f6){_0x5b1ad8='';for(_0x28ac8a=0x0;_0x28ac8a<0x8;_0x28ac8a++)_0x5b1ad8+=(_0x117621=this[_0x3ddb20(0xa8)][_0x28ac8a][_0x3ddb20(0xa2)](0x10),_0x335539=0x8,_0x450e58='0',_0x117621[_0x3ddb20(0xa4)]>=_0x335539?_0x117621:_0x450e58[_0x3ddb20(0x8f)](_0x335539-_0x117621[_0x3ddb20(0xa4)])+_0x117621);}else for(_0x5b1ad8=new Array(0x20),_0x28ac8a=0x0;_0x28ac8a<0x8;_0x28ac8a++){var _0x46ad66=this[_0x3ddb20(0xa8)][_0x28ac8a];_0x5b1ad8[0x4*_0x28ac8a+0x3]=(0xff&_0x46ad66)>>>0x0,_0x46ad66>>>=0x8,_0x5b1ad8[0x4*_0x28ac8a+0x2]=(0xff&_0x46ad66)>>>0x0,_0x46ad66>>>=0x8,_0x5b1ad8[0x4*_0x28ac8a+0x1]=(0xff&_0x46ad66)>>>0x0,_0x46ad66>>>=0x8,_0x5b1ad8[0x4*_0x28ac8a]=(0xff&_0x46ad66)>>>0x0;}return this[_0x3ddb20(0x99)](),_0x5b1ad8;}['_fill'](){const _0xa844a0=a0_0x45db08;var _0x15bc36=0x8*this[_0xa844a0(0x8a)],_0x4a32f3=this['chunk'][_0xa844a0(0xa3)](0x80)%0x40;for(0x40-_0x4a32f3<0x8&&(_0x4a32f3-=0x40);_0x4a32f3<0x38;_0x4a32f3++)this[_0xa844a0(0x87)][_0xa844a0(0xa3)](0x0);for(var _0x36cc0b=0x0;_0x36cc0b<0x4;_0x36cc0b++){var _0xd7dcfe=Math[_0xa844a0(0x92)](_0x15bc36/0x100000000);this['chunk'][_0xa844a0(0xa3)](_0xd7dcfe>>>0x8*(0x3-_0x36cc0b)&0xff);}for(_0x36cc0b=0x0;_0x36cc0b<0x4;_0x36cc0b++)this[_0xa844a0(0x87)][_0xa844a0(0xa3)](_0x15bc36>>>0x8*(0x3-_0x36cc0b)&0xff);}[a0_0x45db08(0x95)](_0x1e530c){const _0x3c50af=a0_0x45db08;function _0x3da582(_0x14b06e,_0x4ec82e){return(_0x14b06e<<(_0x4ec82e%=0x20)|_0x14b06e>>>0x20-_0x4ec82e)>>>0x0;}function _0x489962(_0x5dd43e){const _0x744660=a0_0x4b0d;return 0x0<=_0x5dd43e&&_0x5dd43e<0x10?0x79cc4519:0x10<=_0x5dd43e&&_0x5dd43e<0x40?0x7a879d8a:void console[_0x744660(0x9c)](_0x744660(0x98));}function _0x197f71(_0x5e22dd,_0xfc800b,_0x1300f1,_0xed8891){const _0x3414cb=a0_0x4b0d;return 0x0<=_0x5e22dd&&_0x5e22dd<0x10?(_0xfc800b^_0x1300f1^_0xed8891)>>>0x0:0x10<=_0x5e22dd&&_0x5e22dd<0x40?(_0xfc800b&_0x1300f1|_0xfc800b&_0xed8891|_0x1300f1&_0xed8891)>>>0x0:(console[_0x3414cb(0x9c)]('invalid\\x20j\\x20for\\x20bool\\x20function\\x20FF'),0x0);}function _0x2f42fb(_0x326645,_0x2c63af,_0x558c0d,_0x4a902b){const _0x493bba=a0_0x4b0d;return 0x0<=_0x326645&&_0x326645<0x10?(_0x2c63af^_0x558c0d^_0x4a902b)>>>0x0:0x10<=_0x326645&&_0x326645<0x40?(_0x2c63af&_0x558c0d|~_0x2c63af&_0x4a902b)>>>0x0:(console[_0x493bba(0x9c)]('invalid\\x20j\\x20for\\x20bool\\x20function\\x20GG'),0x0);}if(_0x1e530c[_0x3c50af(0xa4)]<0x40){console[_0x3c50af(0x9c)]('compress\\x20error:\\x20not\\x20enough\\x20data');return;}else{for(var _0x23a9bd=function(_0x7114f5){for(var _0x49cf1f=new Array(0x84),_0x698c70=0x0;_0x698c70<0x10;_0x698c70++)_0x49cf1f[_0x698c70]=_0x7114f5[0x4*_0x698c70]<<0x18,_0x49cf1f[_0x698c70]|=_0x7114f5[0x4*_0x698c70+0x1]<<0x10,_0x49cf1f[_0x698c70]|=_0x7114f5[0x4*_0x698c70+0x2]<<0x8,_0x49cf1f[_0x698c70]|=_0x7114f5[0x4*_0x698c70+0x3],_0x49cf1f[_0x698c70]>>>=0x0;for(var _0xe5328=0x10;_0xe5328<0x44;_0xe5328++){var _0x2b58f2=_0x49cf1f[_0xe5328-0x10]^_0x49cf1f[_0xe5328-0x9]^_0x3da582(_0x49cf1f[_0xe5328-0x3],0xf);_0x2b58f2=_0x2b58f2^_0x3da582(_0x2b58f2,0xf)^_0x3da582(_0x2b58f2,0x17),_0x49cf1f[_0xe5328]=(_0x2b58f2^_0x3da582(_0x49cf1f[_0xe5328-0xd],0x7)^_0x49cf1f[_0xe5328-0x6])>>>0x0;}for(_0xe5328=0x0;_0xe5328<0x40;_0xe5328++)_0x49cf1f[_0xe5328+0x44]=(_0x49cf1f[_0xe5328]^_0x49cf1f[_0xe5328+0x4])>>>0x0;return _0x49cf1f;}(_0x1e530c),_0x17c086=this[_0x3c50af(0xa8)][_0x3c50af(0x8b)](0x0),_0x3621a2=0x0;_0x3621a2<0x40;_0x3621a2++){var _0x5959b9=_0x3da582(_0x17c086[0x0],0xc)+_0x17c086[0x4]+_0x3da582(_0x489962(_0x3621a2),_0x3621a2),_0x3b42ff=((_0x5959b9=_0x3da582(_0x5959b9=(0xffffffff&_0x5959b9)>>>0x0,0x7))^_0x3da582(_0x17c086[0x0],0xc))>>>0x0,_0x50d411=_0x197f71(_0x3621a2,_0x17c086[0x0],_0x17c086[0x1],_0x17c086[0x2]);_0x50d411=(0xffffffff&(_0x50d411=_0x50d411+_0x17c086[0x3]+_0x3b42ff+_0x23a9bd[_0x3621a2+0x44]))>>>0x0;var _0x910e21=_0x2f42fb(_0x3621a2,_0x17c086[0x4],_0x17c086[0x5],_0x17c086[0x6]);_0x910e21=(0xffffffff&(_0x910e21=_0x910e21+_0x17c086[0x7]+_0x5959b9+_0x23a9bd[_0x3621a2]))>>>0x0,_0x17c086[0x3]=_0x17c086[0x2],_0x17c086[0x2]=_0x3da582(_0x17c086[0x1],0x9),_0x17c086[0x1]=_0x17c086[0x0],_0x17c086[0x0]=_0x50d411,_0x17c086[0x7]=_0x17c086[0x6],_0x17c086[0x6]=_0x3da582(_0x17c086[0x5],0x13),_0x17c086[0x5]=_0x17c086[0x4],_0x17c086[0x4]=(_0x910e21^_0x3da582(_0x910e21,0x9)^_0x3da582(_0x910e21,0x11))>>>0x0;}for(var _0x459622=0x0;_0x459622<0x8;_0x459622++)this['reg'][_0x459622]=(this[_0x3c50af(0xa8)][_0x459622]^_0x17c086[_0x459622])>>>0x0;}}}function EnvData2CharCode(_0x58cd97,_0x23e1e0,_0x3ca6b2){const _0x56cb93=a0_0x45db08;let _0x2d49d4=Random*0xf0>>0x0>0x6d?(Random*0xf0>>0x0)+0x2:Random*0xf0>>0x0,_0x3f2013=Random*0xff>>0x0&0x4d|0x2|0x10|0x20|0x80,_0x4b8ded=[Random*0xffff&0xff&0xaa|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x0,0x2)[0x0]&0x55,Random*0xffff&0xff&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x0,0x2)[0x0]&0xaa,Random*0xffff>>0x8&0xaa|[0x1,0x0,0x1,0xf]['slice'](0x0,0x2)[0x1]&0x55,Random*0xffff>>0x8&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x0,0x2)[0x1]&0xaa,_0x2d49d4&0xaa|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x0]&0x55,_0x2d49d4&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x0]&0xaa,_0x3f2013&0xaa|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x1]&0x55,_0x3f2013&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x1]&0xaa],_0x5bb315=_0x56cb93(0x9a)['split']('')[_0x56cb93(0x94)](_0x42b4c4=>_0x42b4c4[_0x56cb93(0x96)](0x0)),_0x1cdc95=((String(xhrParaDoneTs+0x3)&0xff)+',')[_0x56cb93(0xa9)]('')[_0x56cb93(0x94)](_0x58aa5d=>_0x58aa5d[_0x56cb93(0x96)](0x0));const _0x26ee7a=new SM3Hasher(),_0xe2d586=_0x26ee7a[_0x56cb93(0x8e)](_0x26ee7a['sum'](_0x58cd97+_0x56cb93(0x93))),_0x571095=_0x26ee7a[_0x56cb93(0x8e)](_0x26ee7a[_0x56cb93(0x8e)](_0x23e1e0+'dhzx')),_0x4dabdb=_0x26ee7a[_0x56cb93(0x8e)](_0x3ca6b2);let _0x4139e6=[0x29,(xhrReqDoneTs-0x190e5788800)/0x3e8/0x3c/0x3c/0x18/0xe>>0x0,0x6,xhrParaDoneTs-Ts+0x3&0xff,xhrParaDoneTs&0xff,xhrParaDoneTs>>0x8&0xff,xhrParaDoneTs>>0x10&0xff,xhrParaDoneTs>>0x18&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100/0x100&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100/0x100&0xff%0x100&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100/0x100&0xff%0x100&0xff/0x100&0xff,[0xa,0x4,0x4,0x0,0x1][0x4]&0xff,[0xa,0x4,0x4,0x0,0x1][0x4]>>0x8&0xff,[0xa,0x4,0x4,0x0,0x1][0x0],[0xa,0x4,0x4,0x0,0x1][0x1],[0xa,0x4,0x4,0x0,0x1][0x2],[0xa,0x4,0x4,0x0,0x1][0x3],0x8&0xff,0x8>>0x8&0xff,0x8>>0x10&0xff,0x8>>0x18&0xff,_0xe2d586[0x9],_0xe2d586[0x12],0x3,_0xe2d586[0x3],_0x571095[0xa],_0x571095[0x13],0x4,_0x571095[0x4],_0x4dabdb[0xb],_0x4dabdb[0x15],0x5,_0x4dabdb[0x5],Sm3DoneTs&0xff,Sm3DoneTs>>0x8&0xff,Sm3DoneTs>>0x10&0xff,Sm3DoneTs>>0x18&0xff,Sm3DoneTs/0x100/0x100/0x100/0x100&0xff,Sm3DoneTs/0x100/0x100/0x100/0x100/0x100&0xff,0x3,0x6529&0xff,0x6529>>0x8&0xff,0x6529>>0x10&0xff,0x6529>>0x18&0xff,0x4cf&0xff,0x4cf>>0x8&0xff,0x4cf>>0x10&0xff,0x4cf>>0x18&0xff,_0x5bb315['length'],_0x5bb315['length'],0x0,_0x1cdc95[_0x56cb93(0xa4)],_0x1cdc95[_0x56cb93(0xa4)],0x0],_0x339170=[_0x4139e6[0x9],_0x4139e6[0x12],_0x4139e6[0x1e],_0x4139e6[0x23],_0x4139e6[0x2f],_0x4139e6[0x4],_0x4139e6[0x2c],_0x4139e6[0x13],_0x4139e6[0xa],_0x4139e6[0x17],_0x4139e6[0xc],_0x4139e6[0x28],_0x4139e6[0x19],_0x4139e6[0x2a],_0x4139e6[0x3],_0x4139e6[0x16],_0x4139e6[0x26],_0x4139e6[0x15],_0x4139e6[0x5],_0x4139e6[0x2d],_0x4139e6[0x1],_0x4139e6[0x1d],_0x4139e6[0x6],_0x4139e6[0x2b],_0x4139e6[0x21],_0x4139e6[0xe],_0x4139e6[0x24],_0x4139e6[0x25],_0x4139e6[0x2],_0x4139e6[0x2e],_0x4139e6[0xf],_0x4139e6[0x30],_0x4139e6[0x1f],_0x4139e6[0x1a],_0x4139e6[0x10],_0x4139e6[0xd],_0x4139e6[0x8],_0x4139e6[0x29],_0x4139e6[0x1b],_0x4139e6[0x11],_0x4139e6[0x27],_0x4139e6[0x14],_0x4139e6[0xb],_0x4139e6[0x0],_0x4139e6[0x22],_0x4139e6[0x7],_0x4139e6[0x32],_0x4139e6[0x33],_0x4139e6[0x35],_0x4139e6[0x36]];function _0x56e1cd(_0x24b6d5,_0x196cf7){const _0x2eb1f3=_0x56cb93;return _0x196cf7[_0x2eb1f3(0x8c)]((_0x2171ba,_0x925e58)=>_0x925e58-_0x2171ba)[_0x2eb1f3(0x89)](_0x540dbd=>{const _0x2fbb10=_0x2eb1f3;_0x540dbd>=0x0&&_0x540dbd<_0x24b6d5[_0x2fbb10(0xa4)]&&_0x24b6d5[_0x2fbb10(0x90)](_0x540dbd,0x1);}),_0x24b6d5;}let _0x41ebdd=_0x4b8ded[_0x56cb93(0xb1)](_0x56e1cd(_0x4139e6,[0x18,0x1c,0x20,0x31,0x34])),_0x42a240=_0x41ebdd[_0x56cb93(0xa6)]((_0x49ec53,_0x3d9ba0)=>_0x49ec53^_0x3d9ba0),_0xeaa831=_0x339170['concat'](_0x5bb315,_0x1cdc95,_0x42a240),_0x477e24=[],_0x3bd924=0x0;for(let _0xa7bf19=0x0;_0xa7bf19+0x2<_0xeaa831[_0x56cb93(0xa4)];){_0x477e24[_0x56cb93(0xa3)](Random*0x3e8&0xff&0x91|_0xeaa831[_0xa7bf19++]&0x6e),_0x477e24['push'](Random*0x3e8&0xff&0x42|_0xeaa831[_0xa7bf19++]&0xbd),_0x477e24[_0x56cb93(0xa3)](Random*0x3e8&0xff&0x2c|_0xeaa831[_0xa7bf19++]&0xd3),_0x477e24[_0x56cb93(0xa3)](_0xeaa831[_0xa7bf19-0x3]&0x91|_0xeaa831[_0xa7bf19-0x2]&0x42|_0xeaa831[_0xa7bf19-0x1]&0x2c),_0x3bd924+=0x3;}let _0x23c273=_0x4b8ded[_0x56cb93(0xb1)](_0x477e24,_0xeaa831[_0x56cb93(0x8b)](_0x3bd924,_0xeaa831[_0x56cb93(0xa4)]));return _0x23c273[_0x56cb93(0x94)](_0x4d13ab=>String['fromCharCode'](_0x4d13ab))[_0x56cb93(0xac)]('');}function Base2Data(_0x348aa6){const _0x2bc7c7=a0_0x45db08;let _0x874207=[Random*0xffff&0xff&0xaa|[0x3,0x52][0x0]&0x55,Random*0xffff&0xff&0x55|[0x3,0x52][0x0]&0xaa,Random*0x28>>0x0&0xaa|[0x3,0x52][0x1]&0x55,Random*0x28>>0x0&0x55|[0x3,0x52][0x1]&0xaa][_0x2bc7c7(0x94)](_0x224d00=>{const _0x31697c=_0x2bc7c7;return String[_0x31697c(0x9e)](_0x224d00);})[_0x2bc7c7(0xac)](''),_0x235e4f=[0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0,0xef,0xee,0xed,0xec,0xeb,0xea,0xe9,0xe8,0xe7,0xe6,0xe5,0xe4,0xe3,0xe2,0xe1,0xe0,0xdf,0xde,0xdd,0xdc,0xdb,0xda,0xd9,0xd8,0xd7,0xd6,0xd5,0xd4,0xd3,0xd2,0xd1,0xd0,0xcf,0xce,0xcd,0xcc,0xcb,0xca,0xc9,0xc8,0xc7,0xc6,0xc5,0xc4,0xc3,0xc2,0xc1,0xc0,0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb9,0xb8,0xb7,0xb6,0xb5,0xb4,0xb3,0xb2,0xb1,0xb0,0xaf,0xae,0xad,0xac,0xab,0xaa,0xa9,0xa8,0xa7,0xa6,0xa5,0xa4,0xa3,0xa2,0xa1,0xa0,0x9f,0x9e,0x9d,0x9c,0x9b,0x9a,0x99,0x98,0x97,0x96,0x95,0x94,0x93,0x92,0x91,0x90,0x8f,0x8e,0x8d,0x8c,0x8b,0x8a,0x89,0x88,0x87,0x86,0x85,0x84,0x83,0x82,0x81,0x80,0x7f,0x7e,0x7d,0x7c,0x7b,0x7a,0x79,0x78,0x77,0x76,0x75,0x74,0x73,0x72,0x71,0x70,0x6f,0x6e,0x6d,0x6c,0x6b,0x6a,0x69,0x68,0x67,0x66,0x65,0x64,0x63,0x62,0x61,0x60,0x5f,0x5e,0x5d,0x5c,0x5b,0x5a,0x59,0x58,0x57,0x56,0x55,0x54,0x53,0x52,0x51,0x50,0x4f,0x4e,0x4d,0x4c,0x4b,0x4a,0x49,0x48,0x47,0x46,0x45,0x44,0x43,0x42,0x41,0x40,0x3f,0x3e,0x3d,0x3c,0x3b,0x3a,0x39,0x38,0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x30,0x2f,0x2e,0x2d,0x2c,0x2b,0x2a,0x29,0x28,0x27,0x26,0x25,0x24,0x23,0x22,0x21,0x20,0x1f,0x1e,0x1d,0x1c,0x1b,0x1a,0x19,0x18,0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0];const _0x29dde1='Ó'[_0x2bc7c7(0x96)](0x0);let _0x4a74f1=0x0;for(let _0xef36c2=0x0;_0xef36c2<_0x235e4f[_0x2bc7c7(0xa4)];_0xef36c2++){let _0x4120e4=_0x235e4f[_0xef36c2];_0x4a74f1=(_0x4a74f1*_0x4120e4+_0x4a74f1+_0x29dde1)%0x100,[_0x235e4f[_0xef36c2],_0x235e4f[_0x4a74f1]]=[_0x235e4f[_0x4a74f1],_0x235e4f[_0xef36c2]];}let _0x39cb62=0x0,_0x5cbaf6='';for(let _0x29a672=0x0;_0x29a672<_0x348aa6[_0x2bc7c7(0xa4)];_0x29a672++){let _0x96c5ae=_0x348aa6[_0x2bc7c7(0x96)](_0x29a672),_0x46c34b=_0x29a672+0x1,_0x5d4cb4=_0x235e4f[_0x46c34b];[_0x235e4f[_0x46c34b],_0x235e4f[(_0x39cb62+_0x5d4cb4)%0x100]]=[_0x235e4f[(_0x39cb62+_0x5d4cb4)%0x100],_0x235e4f[_0x46c34b]];let _0x506f4f=_0x235e4f[(_0x235e4f[_0x46c34b]+_0x5d4cb4)%0x100];_0x39cb62=(_0x39cb62+_0x5d4cb4)%0x100,_0x5cbaf6+=String['fromCharCode'](_0x96c5ae^_0x506f4f);}return _0x874207+_0x5cbaf6;}function Data2A_B(_0x19ca6d){const _0x5d8d72=a0_0x45db08;let _0x225e7d=_0x5d8d72(0xad),_0x4f0a28='',_0x251d62=[0x3e,0x12a,0x10,0x0,0x4,0x9,0x10,0x0,0x5,0x36,0x0,0x5,0x3e,0x12b,0x1a,0x12c,0x36,0x0,0x5,0x3e,0x12d,0x1a,0x12e,0x36,0x0,0x5,0x3e,0x12f,0x1a,0x130,0x36,0x0,0x5,0x3e,0x131,0x1a,0x10c,0x36,0x0,0x5,0x3e,0x132,0x1a,0x128,0x36,0x0,0x5,0x36,0x0,0x3,0x4c,0x10,0x0,0x6,0x3e,0x24,0x10,0x0,0x7,0x17,0x0,0x10,0x0,0x9,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x17,0x3,0x31,0x43,0xe,0x9f,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x17,0x10,0x1f,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x17,0x8,0x1f,0x20,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x20,0x10,0x0,0x8,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0000,0x32,0x17,0x12,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0x3f000,0x32,0x17,0xc,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0,0x32,0x17,0x6,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0x3f,0x32,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x12,-0xad,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x0,0x17,0x0,0x13,0xe,0xa0,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x17,0x10,0x1f,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x13,0xe,0x13,0x36,0x0,0x2,0x16,0x4,0xf7,0x36,0x0,0x9,0xc,0x1,0x17,0xff,0x32,0x17,0x8,0x1f,0x12,0x2,0x17,0x0,0x20,0x10,0x0,0x8,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0000,0x32,0x17,0x12,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0x3f000,0x32,0x17,0xc,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x13,0xe,0x13,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0,0x32,0x17,0x6,0x33,0xc,0x1,0x12,0x3,0x36,0x0,0x4,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x4,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x41];for(let _0x2b8eea=0x0;_0x2b8eea<_0x19ca6d['length'];_0x2b8eea+=0x3){const _0x3fca04=_0x19ca6d[_0x5d8d72(0x96)](_0x2b8eea),_0xb85a46=_0x19ca6d[_0x5d8d72(0x96)](_0x2b8eea+0x1),_0x4e702d=_0x19ca6d[_0x5d8d72(0x96)](_0x2b8eea+0x2),_0x4382e1=_0x3fca04<<_0x251d62[0x5e]|_0xb85a46<<_0x251d62[0x70]|_0x4e702d,_0x225aa0=(_0x4382e1&_0x251d62[0x93])>>_0x251d62[0x96];_0x4f0a28+=_0x225e7d[_0x5d8d72(0xa7)](_0x225aa0);const _0x5607b9=(_0x4382e1&_0x251d62[0xad])>>_0x251d62[0xb0];_0x4f0a28+=!Number[_0x5d8d72(0xa1)](_0x3fca04)?_0x225e7d[_0x5d8d72(0xa7)](_0x5607b9):'=';const _0x3fb7b7=(_0x4382e1&_0x251d62[0xc7])>>_0x251d62[0xca];_0x4f0a28+=!Number[_0x5d8d72(0xa1)](_0xb85a46)?_0x225e7d[_0x5d8d72(0xa7)](_0x3fb7b7):'=';const _0x425784=_0x4382e1&_0x251d62[0xe1];_0x4f0a28+=!Number[_0x5d8d72(0xa1)](_0x4e702d)?_0x225e7d[_0x5d8d72(0xa7)](_0x425784):'=';}return _0x4f0a28;}function GenAB(_0x315138,_0x1c32b3){const _0x206982=a0_0x45db08,_0x56536b=_0x206982(0xaf);return Data2A_B(Base2Data(EnvData2CharCode(_0x315138,_0x1c32b3,_0x56536b)));}module[a0_0x45db08(0xae)]=GenAB;","import {Http} from \"./http\";\nimport { HttpsProxyAgent } from \"https-proxy-agent\";\n\nconst ProxyData = {\n api: \"202101291430286754\",\n md5akey: \"6ec8d333e85044b7\",\n akey: \"91709114\"\n}\n\ninterface ProxyInfo {\n code: number;\n msg: string;\n data: {\n ip: string;\n port: number;\n adr: string;\n timeout: number;\n continue: number;\n proxyAddress: string;\n }[];\n}\n\nexport const ProxyAgent =async ( adr: string, huiwenToken?: string) =>{\n const http = new Http({});\n let ProxyInfo: ProxyInfo = await http.api({\n method: \"GET\",\n url: \"https://preview.huiwen.top/api/publish/zdy/ip\",\n params: {\n addr: adr\n },\n ...(huiwenToken ? { headers: { token: huiwenToken } } : null)\n })\n \n // 在 URL 中写上认证信息\n return ProxyInfo.code === 0 && ProxyInfo.data.length > 0 ? new HttpsProxyAgent(`http://${ProxyData.api}:${ProxyData.akey}@${ProxyInfo.data[0].proxyAddress}`) : null;\n}","import type { ResponseData } from \"@iflyrpa/share\";\nimport axios, {\n\ttype AxiosError,\n\ttype AxiosInstance,\n\ttype AxiosResponse,\n\ttype CreateAxiosDefaults,\n\ttype AxiosRequestConfig,\n} from \"axios\";\nimport {ProxyAgent} from \"./proxy\";\n\nexport class Http {\n private readonly apiClient: AxiosInstance;\n private readonly adr?: string;\n private readonly heiwenToken?: string;\n public proxyInfo?: string;\n\n static handleApiError(error: unknown): ResponseData {\n // 如果错误已经是 ResponseData 格式,直接抛出\n if (error && typeof error === \"object\" && \"code\" in error && \"message\" in error) {\n return error as ResponseData;\n }\n\n // 处理其他类型的错误\n return {\n code: 500,\n message: \"\",\n data: error,\n };\n }\n\n constructor(config?: CreateAxiosDefaults, adr?: string, huiwenToken?: string) {\n this.apiClient = axios.create({\n ...config,\n proxy: {\n \thost: \"192.168.137.1\", // 根据你的代理服务设置\n \tport: 9000,\n \tprotocol: \"http\", // 可选\n },\n });\n this.adr = adr;\n this.heiwenToken = huiwenToken\n }\n\n\n // 添加响应拦截器\n // biome-ignore lint/suspicious/noExplicitAny: <explanation>\n public addResponseInterceptor<T = any>(findError: (response: AxiosResponse<T>) => ResponseData | undefined) {\n this.apiClient.interceptors.response.use(\n (response) => {\n // 检查响应中的 errno 字段\n const error = findError(response);\n\n if (error) {\n return Promise.reject(\n Object.assign(error, {\n extra: {\n method: response.config.method,\n url: response.config.url,\n },\n }),\n );\n }\n\n return response;\n },\n (error: AxiosError) => {\n // 创建标准错误响应格式\n const errorResponse: ResponseData = {\n code: error.response?.status || 500,\n message: error.message || \"\",\n data: error.response?.data,\n extra: {\n method: error.config?.method,\n url: error.config?.url,\n },\n };\n\n // 如果服务端返回了详细错误信息,可以使用服务端的错误信息\n if (error.response?.data) {\n if (typeof error.response.data === \"object\") {\n // 如果服务端返回的是对象,可以尝试提取错误信息\n // biome-ignore lint/suspicious/noExplicitAny: <explanation>\n const serverError = error.response.data as any;\n if (serverError.message) {\n errorResponse.message = serverError.message;\n }\n // 可以保留原始错误数据\n errorResponse.data = serverError;\n }\n }\n // ✅ 情况二:网络错误(没有 response)\n if (error.code) {\n switch (error.code) {\n case \"ECONNRESET\":\n errorResponse.message = \"连接被重置,请检查网络或稍后重试!\";\n break;\n case \"ENOTFOUND\":\n errorResponse.message = \"域名解析失败,请检查 URL 是否正确!\";\n break;\n case \"ETIMEDOUT\":\n errorResponse.message = \"网络请求超时,请检查网络连接!\";\n break;\n case \"ECONNREFUSED\":\n errorResponse.message = \"服务器拒绝连接,请稍后重试!\";\n break;\n case \"EAI_AGAIN\":\n errorResponse.message = \"DNS 查询超时,请稍后重试!\";\n break;\n default:\n errorResponse.message = `网络错误: ${error.message}`;\n break;\n }\n }\n\n // 返回标准化的错误响应\n return Promise.reject(errorResponse);\n },\n );\n }\n\n // biome-ignore lint/suspicious/noExplicitAny: <explanation>\n public async api<T = any>(config: AxiosRequestConfig, options?: {\n retries?: number;\n retryDelay?: number\n }): Promise<T> {\n const retries = options?.retries ?? 0; // 默认不重试\n const retryDelay = options?.retryDelay ?? 500;\n const sessionRt = async (Rtimes: number): Promise<T> => {\n try {\n const agent = this.adr ? await ProxyAgent(this.adr, this.heiwenToken) : undefined;\n if (this.adr && agent == null) return Promise.reject({code: 200, message: \"当前发文IP地址暂不支持!\"});\n this.proxyInfo = agent?.proxy.host;\n const response = await this.apiClient<T>({\n ...config,\n ...(agent ? {\n httpAgent: agent,\n httpsAgent: agent\n } : {}),\n });\n return response.data;\n } catch (error) {\n const handledError = Http.handleApiError(error);\n const isRetry = (handledError as any).code >= 500 || (handledError as any).code === 0;\n\n if (Rtimes < retries && isRetry) {\n console.log(\"Loger: 进入重试!\")\n await new Promise((resolve) => setTimeout(resolve, retryDelay));\n return sessionRt(Rtimes + 1);\n }\n return Promise.reject(handledError);\n }\n };\n return sessionRt(0);\n }\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { CommonAction, Page, ResponseData } from \"@iflyrpa/share\";\nimport domSerializer from \"dom-serializer\";\nimport { type ChildNode, DomHandler, type Element } from \"domhandler\";\nimport { DomUtils, Parser } from \"htmlparser2\";\nimport mime from \"mime-types\";\n\nimport { Http } from \"./http\";\n\n/**\n * 生成两数之间的随机整数\n * @param min\n * @param max\n * @returns\n */\nexport function getRandomInRange(min: number, max: number) {\n\treturn Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\nexport const getFileState = (filePath: string) => {\n\t// 获取文件名\n\tconst filename = path.basename(filePath);\n\t// 获取文件类型\n\tconst fileType = mime.lookup(filePath);\n\tconst stats = fs.statSync(filePath);\n\t// 获取文件大小\n\tconst fileSize = stats.size;\n\t// 获取最后修改时间\n\tconst lastModifiedDate = stats.mtime;\n\n\treturn {\n\t\tname: filename,\n\t\ttype: fileType,\n\t\tsize: fileSize,\n\t\tlastModifiedDate: lastModifiedDate.toString(),\n\t};\n};\n\nexport type AspectRatio = [number, number];\nexport type CropCoordinates = {\n\tx1: number;\n\ty1: number;\n\tx2: number;\n\ty2: number;\n};\n\n/**\n * 获取特定的比例切割图片,获取切割的坐标\n * @param width 图片长度\n * @param height 图片高度\n * @param aspectRatio 切割比例:[宽度,高度]\n * @returns\n */\nexport const calculateCropCoordinates = (width: number, height: number, aspectRatio: AspectRatio): CropCoordinates => {\n\tconst targetRatio = aspectRatio[0] / aspectRatio[1];\n\tlet cropWidth: number;\n\tlet cropHeight: number;\n\n\tif (width / height > targetRatio) {\n\t\t// 图片过宽,需要裁切宽度\n\t\tcropHeight = height;\n\t\tcropWidth = height * targetRatio;\n\t} else {\n\t\t// 图片过高,需要裁切高度\n\t\tcropWidth = width;\n\t\tcropHeight = width / targetRatio;\n\t}\n\n\tconst x1 = (width - cropWidth) / 2;\n\tconst y1 = (height - cropHeight) / 2;\n\tconst x2 = x1 + cropWidth;\n\tconst y2 = y1 + cropHeight;\n\n\t// 返回百分比坐标\n\treturn {\n\t\tx1: x1 / width,\n\t\ty1: y1 / height,\n\t\tx2: x2 / width,\n\t\ty2: y2 / height,\n\t};\n};\n\n// 提取 html 中的 img 标签\nexport const extractImgTag = (html: string) => {\n\tconst srcList: string[] = [];\n\n\tconst parser = new Parser({\n\t\tonopentag(name, attributes) {\n\t\t\tif (name === \"img\" && (attributes.src.trim() || attributes.currentSrc.trim())) {\n\t\t\t\tsrcList.push(attributes.src.trim() || attributes.currentSrc.trim());\n\t\t\t}\n\t\t},\n\t});\n\n\tparser.write(html);\n\tparser.end();\n\n\treturn srcList;\n};\n\n/**\n * 时间格式化\n * @param time\n * @param format 默认 yyyy-MM-dd HH:mm\n * @returns 时间字符串\n */\nexport class TimeFormatter {\n\tstatic format(timestamp: number, formatStr: String = 'yyyy-MM-dd hh:mm') {\n\t // 自动判断:如果是10位(秒),就转为毫秒\n\t if (typeof timestamp === 'number' && timestamp.toString().length === 10) {\n\t\ttimestamp *= 1000;\n\t }\n \n\t const date = new Date(timestamp);\n \n\t const map: Record<string, string> = {\n\t\t\"yyyy\": String(date.getFullYear()),\n\t\t\"yy\": String(date.getFullYear()).slice(-2),\n\t\t\"MM\": String(date.getMonth() + 1).padStart(2, '0'),\n\t\t\"dd\": String(date.getDate()).padStart(2, '0'),\n\t\t\"hh\": String(date.getHours()).padStart(2, '0'),\n\t\t\"mm\": String(date.getMinutes()).padStart(2, '0'),\n\t\t\"ss\": String(date.getSeconds()).padStart(2, '0'),\n\t\t\"M\": String(date.getMonth() + 1), // 月不带前导零\n \t\t\"d\": String(date.getDate()), // 日不带前导零\n\t\t\"h\": String(date.getHours()), // 不带前导零\n\t\t\"m\": String(date.getMinutes()), // 不带前导零\n\t\t\"s\": String(date.getSeconds()) // 不带前导零\n\t };\n \n\t return formatStr.replace(/yyyy|yy|MM|dd|hh|mm|ss|M|d|h|m|s/g, key => map[key]);\n\t}\n }\nexport const replaceImgSrc = (html: string, callback: (dom: Element) => Element) => {\n\tlet lastedHtml = html;\n\n\tconst isImageTag = (node: ChildNode): node is Element => node.type === \"tag\" && node.name === \"img\";\n\n\tconst traverseDom = (node: ChildNode) => {\n\t\tif (DomUtils.hasChildren(node)) {\n\t\t\tfor (const child of node.children) {\n\t\t\t\tif (isImageTag(child)) {\n\t\t\t\t\tcallback(child);\n\t\t\t\t}\n\t\t\t\ttraverseDom(child);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handler = new DomHandler((error, dom) => {\n\t\tif (error) {\n\t\t\tconsole.log(error);\n\t\t} else {\n\t\t\t// 处理 DOM 节点的函数\n\t\t\tdom.forEach(traverseDom);\n\t\t}\n\n\t\tlastedHtml = domSerializer(dom, { decodeEntities: false });\n\t});\n\n\tconst parser = new Parser(handler, { decodeEntities: false });\n\tparser.write(html);\n\tparser.end();\n\n\treturn lastedHtml;\n};\n\nexport const stringifyError = (error: unknown) => {\n\tif (error instanceof Error) {\n\t\treturn error.toString();\n\t}\n\n\tif (typeof error === \"object\") {\n\t\treturn JSON.stringify(error);\n\t}\n\n\treturn error;\n};\n\n/**\n * 创建一个函数,该函数会依次执行传入的函数列表,直到有一个函数成功或所有函数都失败。\n *\n * @template P - 函数的参数类型,为一个任意长度的数组。\n * @template T - 函数的返回类型,为一个 Promise 的解析值类型。\n * @param {CommonAction<P, T>[]} actions - 一个函数列表,每个函数的类型为 `(...p: P) => Promise<T>`。\n * @returns {CommonAction<P, T>} - 返回一个新的函数,其类型与传入的函数列表中的函数类型相同。\n * 当调用该函数时,会依次执行 `actions` 中的函数,直到有一个函数成功(即返回一个解析的 Promise),\n * 或者所有函数都失败(即抛出异常)。如果所有函数都失败,则抛出最后一个错误。\n *\n * @example\n * const action1 = async (num) => {\n * if (num > 0) return \"Action 1 succeeded\";\n * throw new Error(\"Action 1 failed\");\n * };\n *\n * const action2 = async (num) => {\n * if (num > 1) return \"Action 2 succeeded\";\n * throw new Error(\"Action 2 failed\");\n * };\n *\n * const combinedAction = executeAction(action1, action2);\n *\n * (async () => {\n * try {\n * const result = await combinedAction(1);\n * console.log(result); // 输出: \"Action 2 succeeded\"\n * } catch (error) {\n * console.error(error.message);\n * }\n * })();\n */\nexport const executeAction = <P, T>(...actions: CommonAction<P, T>[]): CommonAction<P, T> => {\n\treturn async (task, params) => {\n\t\tlet result: ResponseData<T> = {\n\t\t\tcode: 500,\n\t\t\tmessage: \"\",\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\t\tdata: null as any,\n\t\t};\n\n\t\tfor (let index = 0; index < actions.length; index++) {\n\t\t\tconst action = actions[index];\n\n\t\t\ttry {\n\t\t\t\tresult = await action(task, params);\n\t\t\t} catch (error) {\n\t\t\t\tresult = Http.handleApiError(error);\n\t\t\t}\n\n\t\t\t// code === 0 表示成功, code === 200 虽然表示失败,但是不需要继续执行后续的 action\n\t\t\tif (result.code === 0 || result.code === 200) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\t// 不是最后一个 action,上报错误信息\n\t\t\tif (index !== actions.length - 1) {\n\t\t\t\ttask.logger.error(result.message, stringifyError(result.data), result.extra);\n\t\t\t}\n\t\t}\n\n\t\t// 所有 action 都执行完毕但都失败了,返回最后一个失败结果\n\t\treturn result;\n\t};\n};\n\n/**\n * 将 HTML 内容复制到剪贴板\n * @param page - 页面对象\n * @param html - HTML 内容\n * @param options - 选项,包括格式和回退\n * @returns 无返回值\n */\nexport async function copyHtmlToClipboard(page: Page, html: string, options = { format: \"text/html\", fallback: true }) {\n\ttry {\n\t\t// 尝试使用原生 API\n\t\tawait page.evaluate(\n\t\t\tasync ({ htmlContent, format }) => {\n\t\t\t\tconst blob = new Blob([htmlContent], { type: format });\n\t\t\t\tawait navigator.clipboard.write([new ClipboardItem({ [format]: blob })]);\n\t\t\t},\n\t\t\t{ htmlContent: html, format: options.format },\n\t\t);\n\t} catch (error) {\n\t\tif (options.fallback) {\n\t\t\t// 回退到 DOM 操作\n\t\t\tawait page.evaluate((htmlContent) => {\n\t\t\t\tconst div = document.createElement(\"div\");\n\t\t\t\tdiv.contentEditable = \"true\";\n\t\t\t\tdiv.style.cssText = `\n position: fixed;\n left: -9999px;\n opacity: 0;\n pointer-events: none;\n `;\n\n\t\t\t\tdiv.innerHTML = htmlContent;\n\t\t\t\tdocument.body.appendChild(div);\n\n\t\t\t\tconst range = document.createRange();\n\t\t\t\trange.selectNodeContents(div);\n\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: <忽略错误>\n\t\t\t\tconst selection = window.getSelection()!;\n\t\t\t\tselection.removeAllRanges();\n\t\t\t\tselection.addRange(range);\n\n\t\t\t\tdocument.execCommand(\"copy\");\n\t\t\t\tdocument.body.removeChild(div);\n\t\t\t\tselection.removeAllRanges();\n\t\t\t}, html);\n\t\t}\n\t}\n}\n\n/**\n * 通用弹窗监听处理器\n * @param page - Playwright 页面对象\n * @param popupSelector - 弹窗的选择器(字符串或 Locator)\n * @param popKey - 弹窗中的唯一键(字符串)\n * @param buttonSelector - 弹窗中需要点击的按钮选择器\n * @param options - 可选配置项\n */\nexport function PopupListener(\n\tpage: Page, \n\tpopupSelector: string, \n\tpopKey: string, \n\tbuttonSelector: string, \n\toptions:{\n\t\tcheckInterval?: number;\n\t\tstopAfterClick?: boolean;\n\t} = {}) {\n\tconst {\n\t\tcheckInterval = 1000,\n\t\tstopAfterClick = false\n\t} = options;\n\n\tconst popup = page.locator(popupSelector);\n\tconst button = page.locator(buttonSelector);\n\n\tconst intervalId = setInterval(async () => {\n\t\ttry {\n\t\t\tif (await popup.count() > 0 && await popup.isVisible() && (await popup.textContent()||\"\").includes(popKey)) {\n\t\t\t\tawait button.click({ force: true });\n\n\t\t\t\tif (stopAfterClick) {\n\t\t\t\t\tclearInterval(intervalId);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) { }\n\t}, checkInterval);\n\n\treturn () => {\n\t\tclearInterval(intervalId);\n\t};\n}\n\n// 将 url 的 queryString 解析成对象\nexport const parseUrlQueryString = (url: string) => {\n\tconst queryStringObject: Record<string, string> = {};\n\n\t// 检查 URL 是否包含查询参数\n\tif (!url || !url.includes(\"?\")) {\n\t\treturn queryStringObject;\n\t}\n\n\t// 提取查询字符串部分\n\tconst queryString = url.split(\"?\")[1];\n\n\t// 检查查询字符串是否为空\n\tif (!queryString) {\n\t\treturn queryStringObject;\n\t}\n\n\t// 处理 hash 部分\n\tconst queryWithoutHash = queryString.split(\"#\")[0];\n\n\t// 分割查询参数\n\tconst queryStringArray = queryWithoutHash.split(\"&\");\n\n\tfor (const item of queryStringArray) {\n\t\t// 跳过空参数\n\t\tif (!item) continue;\n\n\t\tconst equalIndex = item.indexOf(\"=\");\n\n\t\t// 处理没有值的参数 (如 ?param)\n\t\tif (equalIndex === -1) {\n\t\t\tqueryStringObject[item] = \"\";\n\t\t} else {\n\t\t\tconst key = item.slice(0, equalIndex);\n\t\t\tconst value = item.slice(equalIndex + 1);\n\n\t\t\t// 尝试解码,如果解码失败则使用原始值\n\t\t\ttry {\n\t\t\t\tqueryStringObject[key] = decodeURIComponent(value);\n\t\t\t} catch (e) {\n\t\t\t\tqueryStringObject[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn queryStringObject;\n};\n\n/**\n * 合并默认参数\n * @param params\n * @param defaults\n * @returns\n */\nexport const defaultParams = <P = Record<string, unknown>>(params: P, defaults: Partial<P>): P => {\n\treturn Object.assign({}, defaults, params);\n};\n","import crypto from \"node:crypto\";\n\n/**\n * 生成百家号话题html\n * @param topic\n * @param id\n * @param sv_small_images\n */\nexport const generateTopicHtml = function (topic: string, id?: string, sv_small_images?: {\n http: string,\n https: string\n}) {\n const generateUid = function () {\n const e = () => Math.floor(65536 * (1 + Math.random())).toString(16).substring(1);\n return e() + e() + e() + e() + e() + e() + e() + e();\n };\n const topicBase = function (topic: string, id?: string, sv_small_images?: { http: string, https: string }) {\n const t = function (r: any) {\n let n = [];\n let e = 0;\n for (; e < 256; ++e)\n n[e] = (e + 256).toString(16).substr(1);\n let o = 0;\n return [\n n[r[o++]], n[r[o++]], n[r[o++]], n[r[o++]], \"-\",\n n[r[o++]], n[r[o++]], \"-\",\n n[r[o++]], n[r[o++]], \"-\",\n n[r[o++]], n[r[o++]], \"-\",\n n[r[o++]], n[r[o++]], n[r[o++]], n[r[o++]], n[r[o++]], n[r[o++]]\n ].join(\"\");\n };\n const s = crypto.randomBytes(16);\n // @ts-ignore\n (s[6] = 15 & s[6] | 64, s[8] = 63 & s[8] | 128);\n return {\n id: id || t(s),\n sv_small_images: sv_small_images || \"\",\n title: topic.replace(/[^\\u4E00-\\u9FA5a-zA-Z0-9]/g, \"\"),\n isCreate: 1\n };\n };\n\n const n = id ? topicBase(topic, id, sv_small_images) : topicBase(topic);\n const topicAttr = {\n style: \"border:none;display:inline-block;color:#3E5599;text-decoration:none;font-style:normal;\",\n href: `https://m.baidu.com/s?word=%23${n.title}%23&topic_id=${n.id}&sa=edit&sfrom=1023524a&append=1&newwindow=0&upqrade=1`.replace(/&/g, \"&amp;\"),\n target: \"_blank\",\n // @ts-ignore\n \"data-bjh-cover\": \"\".concat(n.sv_small_images && (n.sv_small_images.https || n.sv_small_images.http)),\n \"data-bjh-src\": `https://m.baidu.com/s?word=%23${n.title}%23&topic_id=${n.id}&sa=edit&sfrom=1023524a&append=1&newwindow=0&upqrade=1`.replace(/&/g, \"&amp;\"),\n \"data-bjh-box\": \"topic\",\n \"data-bjh-title\": n.title,\n \"data-bjh-id\": id || n.id,\n \"data-bjh-type\": \"topic\",\n contenteditable: \"false\",\n \"data-ignore-remove-style\": \"1\",\n \"data-bjh-create\": id ? \"0\" : \"1\",\n \"data-bjh-adinspiration\": \"0\",\n \"data-diagnose-id\": generateUid()\n };\n\n const attrStr = Object.entries(topicAttr)\n .map(([key, val]) => `${key}=\"${val}\"`)\n .join(\" \");\n\n return `<p><span data-diagnose-id=${generateUid()}></span><a ${attrStr}>#${n.title}#</a></p>`;\n};","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\n\nimport type { PublishAction } from \".\";\nimport { extractImgTag, replaceImgSrc } from \"../../utils\";\nimport { Http } from \"../../utils/http\";\nimport {generateTopicHtml} from \"./utils\";\n\ninterface CommonResponse<T = unknown> {\n\tdata: T;\n\terrmsg: string;\n\terrno: number;\n}\n\ninterface ImageRetResponse {\n\tbos_url: string;\n\thttps_url: string;\n\tno_waterlog_bos_url: string;\n\torg_url: string;\n}\n\nconst errnoMap: Record<number, string> = {\n\t20040706: \"正文图片和封面图片推荐jpg、png格式。\",\n\t20040084: \"正文图片和封面图片推荐jpg、png格式。\",\n\t20050004: \"今日百家号发布次数已达上限,请明天再试。\",\n\t10000015: \"账号存在异常,需前往百家号平台完成发文验证后可激活使用。\",\n\t20050000: \"操作太频繁,请稍后再试\",\n\t20040027: \"你的账号状态异常,请到百家号平台检查账号状态。\",\n\t10000017: \"账号存在异常,需前往百家号平台完成发文验证后可激活使用。\",\n\t20040033: \"封面图片推荐 jpg、png格式,宽高在372×284-5000×5000 范围内。\",\n\t2004005714: \"网络环境异常,请检查网络后重试发布。\",\n\t401100032: \"异常,请检查图片(如:格式、版权、合规性等)。\",\n\t20040034: \"封面图片推荐jpg、png格式,不支持gif格式。\",\n\t20040124: \"服务器异常,请稍后重试!\",\n\t20040001: \"当前用户未登录,请登陆后重试!\",\n 401100025: \"该应用不支持此媒资类型\",\n 401100033: \"图片宽高不满足要求\",\n '-6': \"文章分类信息错误\"\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst { baijiahaoSingleCover, baijiahaoMultCover, baijiahaoCoverType } = params.settingInfo;\n\tconst tmpCachePath = task.getTmpPath();\n const headers= {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\ttoken: params.token,\n\t\t}\n\n\tlet http = new Http({ headers });\n\n\t// 添加响应拦截器\n\thttp.addResponseInterceptor<CommonResponse>((response) => {\n\t\tconst msgType = params.saveType === \"draft\" ? \"同步\" : \"发布\";\n\n\t\t// 检查响应中的 errno 字段\n\t\tif (response.data.errno !== 0) {\n\t\t\tlet errmsg = response.config.defaultErrorMsg || `文章${msgType}异常,请稍后重试。`;\n\n\t\t\tif (response.data.errno === 20050000) {\n\t\t\t\terrmsg = msgType + errnoMap[response.data.errno];\n\t\t\t}\n\t\t\tif (response.data.errno === 401100032) {\n\t\t\t\terrmsg = `图片${msgType}${errnoMap[response.data.errno]}`;\n\t\t\t} else if (errnoMap[response.data.errno]) {\n\t\t\t\terrmsg = errnoMap[response.data.errno];\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcode: errnoMap[response.data.errno] ? 200 : 500,\n\t\t\t\tmessage: errmsg,\n\t\t\t\tdata: response.data,\n\t\t\t};\n\t\t}\n\t});\n\n\t// 0. 校验登录\n\tawait http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/pcui/home/index\",\n\t\tdefaultErrorMsg: `百家号登录状态失效,请重新绑定账号后${params.saveType === \"draft\" ? \"同步\" : \"发布\"}。`,\n\t});\n\n\t// 1. 获取用户 appId\n\tconst appIdInfo = await http.api<CommonResponse<{ user: { app_id: number } }>>({\n\t\tmethod: \"post\",\n\t\turl: \"https://baijiahao.baidu.com/builder/app/appinfo\",\n\t\tdefaultErrorMsg: \"创建草稿失败,请稍后重试。\",\n\t});\n\n\tconst appId = appIdInfo.data.user.app_id;\n\n\tconst uploadImages = async (_images: string[]) => {\n\t\t// 过滤掉空字符串\n\t\tconst images = _images.filter((url) => !!url && url.trim() !== \"\");\n\n\t\t// 下载图片到本地\n\t\treturn await Promise.all(\n\t\t\timages.map(async (url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\tconst image = await downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t\tconst formData = new FormData();\n\t\t\t\tformData.append(\"org_file_name\", fileName);\n\t\t\t\tformData.append(\"type\", \"image\");\n\t\t\t\tformData.append(\"app_id\", appId);\n\t\t\t\tformData.append(\"is_waterlog\", \"1\");\n\t\t\t\tformData.append(\"save_material\", \"1\");\n\t\t\t\tformData.append(\"no_compress\", \"0\");\n\t\t\t\tformData.append(\"article_type\", \"news\");\n\t\t\t\tformData.append(\"media\", fs.createReadStream(image));\n\n\t\t\t\tconst res = await http.api<{ ret: ImageRetResponse }>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://baijiahao.baidu.com/materialui/picture/uploadProxy\",\n\t\t\t\t\tdata: formData,\n\t\t\t\t\tdefaultErrorMsg:\n\t\t\t\t\t\tparams.saveType === \"draft\" ? \"图片上传异常,请稍后重试同步。\" : \"图片上传异常,请稍后重试发布。\",\n\t\t\t\t});\n\n\t\t\t\treturn res.ret;\n\t\t\t}),\n\t\t);\n\t};\n\n\t// 2. 提取并上传正文中的图片\n\tconst originContentImages = extractImgTag(params.content);\n\tconst targetContentImages = await uploadImages(originContentImages);\n \n if (params.settingInfo.baijiahaoTopic && !params.settingInfo.baijiahaoTopic?.id) {\n let topicCheck = await http.api<{ errno: number; errmsg: string }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/pcui/topic/topiccheck\",\n params: {\n topicName: params.settingInfo.baijiahaoTopic?.title\n }\n });\n if (topicCheck.errno != 0) {\n return { code: 200, message: topicCheck.errmsg, data: '' };\n }\n }\n\n\t// 替换正文中的图片\n const content = replaceImgSrc(params.settingInfo?.baijiahaoTopic && params.settingInfo.baijiahaoTopic?.title ? params.content + generateTopicHtml(params.settingInfo?.baijiahaoTopic?.title, params.settingInfo?.baijiahaoTopic?.id || \"\", params.settingInfo.baijiahaoTopic?.sv_small_images||\"\"): params.content , (dom) => {\n if (dom.attribs.src) {\n\t\t\tconst idx = originContentImages.findIndex((it) => it === dom.attribs.src);\n\t\t\tdom.attribs.src = targetContentImages[idx].bos_url;\n\t\t\tdom.attribs[\"data-bjh-origin-src\"] = targetContentImages[idx].org_url;\n\t\t\tdom.attribs[\"data-bjh-params\"] = targetContentImages[idx].org_url;\n\t\t\tdom.attribs[\"data-bjh-type\"] = \"IMG\";\n\t\t}\n\n\t\treturn dom;\n\t});\n\n\t// 3. 上传竖版封面\n\t// let vertical_cover = params.settingInfo.baijiahaoVerticalCover;\n\t// if (vertical_cover) {\n\t// \tvertical_cover = (await uploadImages([vertical_cover]))[0].bos_url;\n\t// }\n\n\t// 4. 上传横版封面\n\tconst horizontalCoverUrl = baijiahaoCoverType === \"single\" ? [baijiahaoSingleCover] : baijiahaoMultCover;\n\tconst horizontalCoverRes = await uploadImages(horizontalCoverUrl);\n\tconst cover_images = horizontalCoverRes.map((item) => ({\n\t\tsrc: item.bos_url,\n\t\tmachine_chooseimg: 0,\n\t\tisLegal: 0,\n\t}));\n\tconst _cover_images_map = horizontalCoverRes.map((item) => ({\n\t\tsrc: item?.bos_url,\n\t\torigin_src: item?.org_url,\n\t}));\n\n\t// 5. 构造发布数据\n\tconst isAi = params.settingInfo.baijiahaoIsAi.includes(\"isAi\");\n\tconst activityList = params.settingInfo.baijiahaoSelectActivityCache;\n\tconst cover_layout = baijiahaoCoverType === \"single\" ? \"one\" : \"three\";\n\n\tconst activity_list = [\n\t\t...(activityList.length > 0 ? [{ id: `task_${activityList[0]}`, is_checked: 1 }] : []),\n\t\t...(params.settingInfo.baijiahaoPublishConf?.map( item => ({ id : item.confName, is_checked : item.isChecked? 1 : 0 })) || [])\n\t];\n\n\tif(isAi && !activity_list.some(item => 'aigc_bjh_status' in item)){ activity_list.push({ id : 'aigc_bjh_status', is_checked : 1 })} // 兼容旧版配置\n\n\tconst publishData: Record<string, any> = {\n\t\ttitle: params.settingInfo.baijiahaoTitle,\n\t\tcontent,\n\t\t// vertical_cover,\n\t\tabstract: params.settingInfo.baijiahaoAbstract,\n\t\tcover_layout,\n\t\tcover_images: JSON.stringify(cover_images),\n\t\t_cover_images_map: JSON.stringify(_cover_images_map),\n\t\ttype: \"news\",\n\t\tsource_reprinted_allow: 0,\n\t\tabstract_from: 1,\n\t\tisBeautify: \"false\",\n\t\tusingImgFilter: \"false\",\n\t\tsource: \"upload\",\n\t\tcover_source: \"upload\",\n\t\tevent2news: params.settingInfo?.baijiahaoEvent2News ? 2 : 0,\n\t\tactivity_list,\n\t\t...(params.settingInfo.timer ? { timer_time: params.settingInfo.timer } : {}),\n ...(params.settingInfo.baijiahaoCms? { 'cate_user_cms[0]': params.settingInfo.baijiahaoCms[0], 'cate_user_cms[1]': params.settingInfo.baijiahaoCms[1]}:{}),\n ...(params.settingInfo.baijiahaoEventSpec? {'event_spec[time]':params.settingInfo.baijiahaoEventSpec.time, 'event_spec[pos]': params.settingInfo.baijiahaoEventSpec.pos}:{})\n\t};\n\n\tconst isDraft = params.saveType === \"draft\";\n\n\tconst saveUrl = isDraft\n\t\t? \"https://baijiahao.baidu.com/pcui/article/save?callback=bjhdraft\"\n\t\t: \"https://baijiahao.baidu.com/pcui/article/publish?callback=bjhpublish\";\n\n task._timerRecord['PrePublish']= Date.now();\n \n const proxyHttp = task?.isBeta ?? false ? new Http({headers}, params.proxyLoc, params.huiwenToken ) : http;\n\n\tconst res = await proxyHttp.api<{errno:number; ret: { article_id: string }; proxyInfo: Record<string, any>; errmsg: string}>({\n\t\tmethod: \"post\",\n\t\turl: saveUrl,\n\t\tdata: publishData,\n\t\theaders: {\n\t\t\t\"content-type\": \"application/x-www-form-urlencoded\",\n\t\t\torigin: \"https://baijiahao.baidu.com\",\n\t\t\treferer: \"https://baijiahao.baidu.com/builder/rc/edit?type=news\",\n\t\t},\n\t\tdefaultErrorMsg: isDraft ? \"文章同步出现异常,请稍后重试。\" : \"文章发布出现异常,请稍后重试。\",\n }, {retries: 2, retryDelay: 500});\n \n return success(res.errno == 0 ? res?.ret?.article_id || '': \"\", res.errno == 0 ? `文章发布成功!`+ (proxyHttp.proxyInfo || \"\"): res.errmsg ?? '文章发布失败,请稍后重试。')\n};\n","import path from \"node:path\";\nimport type { CookieMap, Response } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport { copyHtmlToClipboard, TimeFormatter} from \"../../utils\";\nimport type { PublishAction } from \"./index\";\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"baijiahao.baidu.com\",\n\t\turl: \"https://baijiahao.baidu.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://baijiahao.baidu.com/builder/rc/edit?type=news&is_from_cms=1\",\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\t// 0. 校验登录\n\ttry {\n\t\tawait page.waitForSelector(\".bjh-edit-header\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn { code: 400, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 1. 等待编辑器加载出来\n\tawait page.waitForSelector(\".edui-editor-toolbarbox\", { state: \"visible\" });\n\n\t// 2. 关闭纯文本粘贴\n\t// 有个默认开启纯文本粘贴的提示,先关闭\n\tif (await page.locator(\"#_onceTip-news_pasteplain_tip\").isVisible()) {\n\t\tawait page.locator(\"#_onceTip-news_pasteplain_tip .confirm\").click();\n\t}\n\t// 判断是否开启纯文本粘贴,如果开启,点击关闭\n\tif (await page.locator(\".edui-editor-toolbarbox .edui-button.edui-for-pasteplain .edui-state-checked\").isVisible()) {\n\t\tawait page.locator(\".edui-editor-toolbarbox .edui-button.edui-for-pasteplain .edui-state-checked\").click();\n\t}\n\n\t// 3. 填写标题\n\tconst titleInstance = page.locator(\"#ueditor #bjhNewsTitle .input-box textarea\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 4. 填写正文\n\tawait copyHtmlToClipboard(page, params.content);\n\t// 定位目标元素并聚焦\n\tawait page.click(\"#ueditor .edui-editor-iframeholder iframe\");\n\t// 模拟Ctrl+A全选\n\tawait page.keyboard.press(\"Control+A\");\n\t// 模拟Ctrl+V粘贴\n\tawait page.keyboard.press(\"Control+V\");\n\n\t// 等待 1 秒钟(让正文中的图片上传上去)\n\tawait page.waitForTimeout(1000);\n\n\t// 5. 设置封面\n\tconst coverFormItem = page.locator(\".bjh-edit-wrap-set .cheetah-form-item\").nth(0);\n\tconst isSingleCover = params.settingInfo.baijiahaoCoverType === \"single\";\n\tif (isSingleCover) {\n\t\t// 单图\n\t\tawait coverFormItem\n\t\t\t.locator(\".cheetah-form-item-control label.cheetah-radio-wrapper\")\n\t\t\t.filter({ hasText: \"单图\" })\n\t\t\t.click();\n\t} else {\n\t\t// 多图\n\t\tawait coverFormItem\n\t\t\t.locator(\".cheetah-form-item-control label.cheetah-radio-wrapper\")\n\t\t\t.filter({ hasText: \"三图\" })\n\t\t\t.click();\n\t}\n\t// 获取待上传图片的本地路径\n\tconst images = await Promise.all(\n\t\t(isSingleCover ? [params.settingInfo.baijiahaoSingleCover] : params.settingInfo.baijiahaoMultCover).map((url) => {\n\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t}),\n\t);\n\tconst coverSelector = page.locator(\n\t\t\".cheetah-form-item-control .edit-cover-container .cover-list .DraggableTags-tag-drag .coverUploaderView\",\n\t);\n\tconst coverCount = await coverSelector.count();\n\n\tfor (let i = 0; i < coverCount; i++) {\n\t\tconst item = coverSelector.nth(i);\n\t\tconst image = images[i];\n\n\t\t// 滚动到可视区域\n\t\tawait item.evaluate((node) => node.scrollIntoView());\n\n\t\t// 如果已经存在图片,选择更换\n\t\tif (await item.locator(\".actions-wrap\").isVisible()) {\n\t\t\tawait item.locator(\".actions-wrap .action\").filter({ hasText: \"更换\" }).click();\n\t\t} else {\n\t\t\tawait item.click();\n\t\t}\n\n\t\t// 等待弹窗出现\n\t\tawait page.waitForSelector(\".cheetah-modal-root .cheetah-ui-pro-image-modal\", { state: \"visible\" });\n\t\t// 选择本地图片 tab\n\t\tawait page\n\t\t\t.locator(\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-tabs-nav-list .cheetah-tabs-tab\")\n\t\t\t.filter({ hasText: \"本地图片\" })\n\t\t\t.click();\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait page\n\t\t\t.locator(\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-tabs-tabpane-active .cheetah-upload-wrapper\")\n\t\t\t.click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles([image]);\n\t\t// 等待上传完成(可以用去编辑是否可点击来判断)\n\t\t// 等待 button 元素上面的 disabled 属性消失\n\t\tawait page.waitForSelector(\n\t\t\t\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-modal-footer button#imageModalEditBtn[disabled]\",\n\t\t\t{ state: \"detached\" },\n\t\t);\n\t\t// 点击确认关闭弹窗\n\t\tawait page\n\t\t\t.locator(\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-modal-footer button\")\n\t\t\t.filter({ hasText: \"确认\" })\n\t\t\t.click();\n\t\t// 等待 2 秒\n\t\tawait page.waitForTimeout(1000);\n\t}\n\n\t// 6. 摘要\n\tconst abstractFormItem = page\n\t\t.locator(\".bjh-edit-wrap-set .cheetah-form-item\")\n\t\t.nth(1)\n\t\t.locator(\"textarea.cheetah-input\");\n\tawait abstractFormItem.click();\n\tawait abstractFormItem.fill(params.settingInfo.baijiahaoAbstract);\n\n\t// 7. 设置\n\tconst isAi = params.settingInfo.baijiahaoIsAi.includes(\"isAi\");\n\tconst settingFormItem = page.locator(\".bjh-edit-wrap-set .cheetah-form-item\").nth(5);\n\tif (isAi) {\n\t\tawait settingFormItem.locator(\"label.cheetah-checkbox-wrapper\").filter({ hasText: \"AI创作声明\" }).click();\n\t}\n\tif(params.settingInfo.baijiahaoPublishConf){\n\t\tfor (const item of params.settingInfo.baijiahaoPublishConf) {\n\t\t\tconst _settingFormItem = settingFormItem.locator(\"label.cheetah-checkbox-wrapper\").locator(`span.${item.confName}`)\n\t\t\tif((await _settingFormItem.isChecked()) !== item.isChecked ) await _settingFormItem.click();\n\t\t\tawait page.waitForTimeout(200);\n\t\t};\n\t}\n\n\tconst enent2NewsBtn = page.locator(\"input#event2news\")\n\tif((await enent2NewsBtn.isVisible()) && params.settingInfo.baijiahaoEvent2News) await enent2NewsBtn.click()\n\n\t// 8. 活动投稿\n\tif (params.settingInfo.baijiahaoActivity.length > 0 && params.settingInfo.baijiahaoSelectActivityCache.length > 0) {\n\t\tconst activity = params.settingInfo.baijiahaoActivity.filter((it) =>\n\t\t\tparams.settingInfo.baijiahaoSelectActivityCache.includes(it.id),\n\t\t);\n\t\tif (activity.length > 0) {\n\t\t\tconst activityFormItem = page.locator(\".bjh-edit-wrap-set .cheetah-form-item\").nth(3);\n\t\t\tconst name = activity[0].task_name;\n\t\t\tconst findActivity = activityFormItem.locator(\".cheetah-form-item-control\").getByText(name, { exact: true });\n\t\t\tif ((await findActivity.count()) > 0) {\n\t\t\t\tawait findActivity.first().locator(\"..\").click();\n\t\t\t}\n\t\t}\n\t}\n\n\t// 9. 保存草稿 / 发布\n\tconst {articleId, message}= await new Promise<{articleId: string, message:string}>(async (resolve) => {\n\t\t// 定义响应处理函数\n\t\tconst handleResponse = async (response: Response) => {\n\t\t\tconst url = response.url();\n\t\t\tif (url.includes(\"/pcui/article/save\") || url.includes(\"/pcui/article/publish\")) {\n\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\tresolve({articleId:jsonResponse?.ret?.article_id, message: jsonResponse?.errmsg});\n\t\t\t}\n\t\t};\n\n\t\t// 开始监听响应事件\n\t\tpage.on(\"response\", handleResponse);\n task._timerRecord['PrePublish']= Date.now();\n\n\t\tconst operatorContainer = page.locator(\".editor-component-operator\");\n\t\tif (params.saveType === \"draft\") {\n\t\t\tawait operatorContainer.locator(\".op-btn-outter-content\").filter({ hasText: \"存草稿\" }).locator(\"button\").click();\n\t\t} else {\n\t\t\tif (params.settingInfo.timer) {\n\t\t\t\t// 点击“定时发布”按钮\n\t\t\t\tawait operatorContainer.locator(\".op-btn-outter-content\").filter({ hasText: \"定时发布\" }).locator(\"button\").click();\n\n\t\t\t\t// 选择日期\n\t\t\t\tawait page.locator(\".timepublish-wrap-select .select-wrap\",{hasText: \"日\"}).click();\n\t\t\t\tawait page.locator('#select-date_list + * .cheetah-select-item-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"M月dd日\") }).click();\n\t\t\t\tawait page.waitForTimeout(200);\n\n\t\t\t\t// 选择小时\n\t\t\t\tawait page.locator(\".timepublish-wrap-select .select-wrap\",{hasText: \"点\"}).click();\n\t\t\t\tawait page.locator('#select-hour_list +div.rc-virtual-list').hover();\n\n\t\t\t\tconst scrollHourInfo = await page.evaluate(() => {\n\t\t\t\t\tconst hourInner = document.querySelector('#select-hour_list + * .rc-virtual-list-holder-inner');\n\t\t\t\t\tconst hourElementHeight = hourInner?.children[0].clientHeight || 36;\n\t\t\t\t\tconst hourMapsElem = Array.from(document.querySelectorAll('#select-hour_list + * .cheetah-select-item-option .cheetah-select-item-option-content'));\n\t\t\t\t\tconst hourMap = hourMapsElem.map(item => item.textContent?.trim());\n\n\t\t\t\t\treturn {elementHeight: hourElementHeight, elementItem : hourMap};\n\t\t\t\t});\n\t\t\t\tconst fistHourElem = scrollHourInfo.elementItem[0];\n\t\t\t\tlet fistHourElemH = Number(fistHourElem?.split(\"点\")[0]); // 列表渲染的第一个时间\n\n\t\t\t\tconst lastHourElem = scrollHourInfo.elementItem[scrollHourInfo.elementItem.length - 1];\n\t\t\t\tlet lastHourElemH = Number(lastHourElem?.split(\"点\")[0]); // 列表渲染的最后一个时间\n\n\t\t\t\tlet targetTimeH = Number(TimeFormatter.format(params.settingInfo.timer, 'h')); // 目标时间\n\t\t\t\tawait page.mouse.wheel(0, targetTimeH > lastHourElemH ? (targetTimeH-lastHourElemH)*scrollHourInfo.elementHeight : targetTimeH < fistHourElemH ? -(fistHourElemH - targetTimeH)*scrollHourInfo.elementHeight : 0 );\n\t\t\t\tawait page.locator(\"#select-hour_list + * .cheetah-select-item-option \",{ hasText: targetTimeH + \"点\"}).click()\n\t\t\t\tawait page.waitForTimeout(200);\n\n\n\t\t\t\t// 选择分钟\n\t\t\t\tawait page.locator(\".timepublish-wrap-select .select-wrap\",{hasText: \"分\"}).click();\n\t\t\t\tawait page.locator('#select-minute_list +div.rc-virtual-list').hover();\n\n\t\t\t\tconst scrollMinuteInfo = await page.evaluate(() => {\n\t\t\t\t\tconst hourInner = document.querySelector('#select-minute_list + * .rc-virtual-list-holder-inner');\n\t\t\t\t\tconst hourElementHeight = hourInner?.children[0].clientHeight || 36;\n\t\t\t\t\tconst hourMapsElem = Array.from(document.querySelectorAll('#select-minute_list + * .cheetah-select-item-option .cheetah-select-item-option-content'));\n\t\t\t\t\tconst hourMap = hourMapsElem.map(item => item.textContent?.trim());\n\n\t\t\t\t\treturn {elementHeight: hourElementHeight, elementItem : hourMap};\n\t\t\t\t});\n\t\t\t\tconst fistMinuteElem = scrollMinuteInfo.elementItem[0];\n\t\t\t\tlet fistMinuteElemH = Number(fistMinuteElem?.split(\"分\")[0]); // 列表渲染的第一个时间\n\n\t\t\t\tconst lastMinuteElem = scrollMinuteInfo.elementItem[scrollMinuteInfo.elementItem.length - 1];\n\t\t\t\tlet lastMinuteElemH = Number(lastMinuteElem?.split(\"分\")[0]); // 列表渲染的最后一个时间\n\n\t\t\t\tlet targetTimeM = Number(TimeFormatter.format(params.settingInfo.timer, 'm')); // 目标时间\n\t\t\t\tawait page.mouse.wheel(0, targetTimeM > lastMinuteElemH ? (targetTimeM-lastMinuteElemH)*scrollMinuteInfo.elementHeight : targetTimeM < fistMinuteElemH ? -(fistMinuteElemH - targetTimeM)*scrollMinuteInfo.elementHeight : 0 );\n\t\t\t\tawait page.locator(\"#select-minute_list + * .cheetah-select-item-option \",{ hasText: targetTimeM + \"分\"}).click()\n\t\t\t\tawait page.waitForTimeout(200);\n\n\n\t\t\t\tawait page.locator(\".cheetah-modal-confirm-btns button\").filter({ hasText:\"定时发布\" }).click()\n\t\t\t}else{\n\t\t\t\tawait operatorContainer.locator(\".op-btn-outter-content\").filter({ hasText: /^发布/ }).locator(\"button\").click();\n\t\t\t}\n\t\t}\n\t});\n\n\t// 关闭页面\n\tawait page.close();\n\n\treturn success(articleId, articleId? \"发布成功\" : message);\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\ninterface ActivityData {\n\tid: string;\n\ttask_name: string;\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t[key: string]: any;\n}\n\nexport interface BaijiahaoPublishParams extends ActiomCommonParams {\n\tsaveType: \"draft\" | \"publish\"; // 保存成草稿 / 发布\n\ttoken: string;\n\ttitle: string;\n\tcontent: string;\n proxyLoc?: string;\n huiwenToken?: string; // 绘文token\n\tsettingInfo: {\n\t\tbaijiahaoTitle: string; // 标题\n\t\tbaijiahaoCoverType: \"single\" | \"multiple\"; // 封面设置:单图 | 三图\n\t\tbaijiahaoAbstract: string; // 摘要\n\t\tbaijiahaoIsAi: string[]; // 设置-由配置项取代\n\t\tbaijiahaoSingleCover: string; // 单图封面\n\t\tbaijiahaoMultCover: string[]; // 三图封面\n\t\tbaijiahaoVerticalCover?: string; // 竖版封面-下版本删除\n\t\tbaijiahaoActivity: ActivityData[]; // 活动投稿\n\t\tbaijiahaoPublishConf?: {\n\t\t\tconfName: string;\n\t\t\tisChecked: boolean;\n\t\t}[]; // 发布配置项\n baijiahaoTopic?: Record<string, any>; // 百家号话题\n baijiahaoCms?: string[];// 百家号分类\n baijiahaoEventSpec?: { time: string; pos: string }; // 百家号事件来源说明\n\t\tbaijiahaoEvent2News: boolean; // 图文转动态\n\t\tbaijiahaoSelectActivityCache: string[]; // 选中的活动标签\n\t\ttimer?: number;\n\t};\n}\n\nexport type PublishAction = CommonAction<BaijiahaoPublishParams, string>;\n\nexport const baijiahaoPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetBaijiahaoActivityParams extends ActiomCommonParams {\n\ttoken: string;\n}\n\nexport interface ActivityData {\n\tid: string;\n\ttask_name: string;\n}\n\nexport type PublishAction = CommonAction<GetBaijiahaoActivityParams, ActivityData[]>;\n\nexport const getBaijiahaoActivity: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\ttoken: params.token,\n\t\t},\n\t});\n\n\tconst res = await http.api<{ data: { list: ActivityData[] } }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/author/eco/tasksystem/getSquareMissionList\",\n\t\tparams: {\n\t\t\tpage_no: 1,\n\t\t\tpage_size: 18,\n\t\t\tarticle_type: 1,\n\t\t\ttask_attend: 1,\n\t\t\ttask_origin: \"market\",\n\t\t\ttask_type: -1,\n\t\t},\n\t});\n\n\treturn success(res?.data?.list ?? []);\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetToutiaoConfigParams extends ActiomCommonParams {}\n\nexport interface GetToutiaoConfigResult {\n\tsuggestWords: Toutiao.Topic[];\n\tcityDistrict: Toutiao.CityDistrict | null;\n\tuserRights: Toutiao.UserRight[];\n}\n\nexport type PublishAction = CommonAction<GetToutiaoConfigParams, GetToutiaoConfigResult>;\n\nexport const getToutiaoConfig: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\tconst getSuggestWords = async () => {\n\t\ttry {\n\t\t\tconst res = await http.api<{ code: number; hots: Toutiao.Topic[] }>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.toutiao.com/mp/agw/creator_helper/suggest_words\",\n\t\t\t\tparams: { type: 2, words: \"\" },\n\t\t\t});\n\n\t\t\treturn res.code === 0 ? res.hots : [];\n\t\t} catch (error) {\n\t\t\treturn [];\n\t\t}\n\t};\n\n\tconst getCityDistrict = async () => {\n\t\ttry {\n\t\t\tconst res = await http.api<{ status: number; data: Toutiao.CityDistrict }>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.toutiao.com/toutiao/normandy/mp/city_district/\",\n\t\t\t});\n\t\t\treturn res.status === 0 ? res.data : null;\n\t\t} catch (error) {\n\t\t\treturn null;\n\t\t}\n\t};\n\n\tconst getUserRights = async () => {\n\t\ttry {\n\t\t\tconst res = await http.api<{ code: number; data: { benefit_level_info_list: Toutiao.UserRight[] } }>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.toutiao.com/mp/agw/creator_project/get_benefit_page_info\",\n\t\t\t});\n\t\t\treturn res.code === 0 ? res.data.benefit_level_info_list : [];\n\t\t} catch (error) {\n\t\t\treturn [];\n\t\t}\n\t};\n\n\tconst [suggestWords, cityDistrict, userRights] = await Promise.all([\n\t\tgetSuggestWords(),\n\t\tgetCityDistrict(),\n\t\tgetUserRights(),\n\t]);\n\n\treturn success({ suggestWords, cityDistrict, userRights });\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetBaijiahaoConfigParams extends ActiomCommonParams {\n\ttoken: string;\n}\n\nexport interface ConfigData {\n\tid: string;\n\tname: string;\n\tdetail: string;\n\tis_enable: number;\n\tpublish_num_left?: number;\n}\n\nexport type PublishAction = CommonAction<GetBaijiahaoConfigParams, ConfigData[]>;\n\nexport const getBaijiahaoConfig: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\ttoken: params.token,\n\t\t},\n\t});\n\n\tconst res = await http.api<{ data: { article: { activity_list: ConfigData[]}, ability: { publish_num_left: number} } }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/pcui/article/edit\",\n\t\tparams: {\n\t\t\ttype: \"news\"\n\t\t},\n\t});\n\tconst data : ConfigData[] = res?.data?.article.activity_list.map((_item) =>{ \n\t\treturn {\n\t\t\tid: _item.id,\n\t\t\tname: _item.name,\n\t\t\tdetail: _item.detail,\n\t\t\tis_enable: _item.is_enable\n\t\t}\n\t})?? []\n\tdata.push({\n\t\tid: \"bjh_publish_num_left\",\n\t\tname: \"账号剩余发文数\",\n\t\tdetail: \"\",\n\t\tis_enable: 1,\n\t\tpublish_num_left: res.data.ability.publish_num_left\n\t})\n\treturn success(data, \"获取百家号配置项成功!\")\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface SearchToutiaoTopicListParams extends ActiomCommonParams {\n\tsearchValue: string;\n}\n\nexport type PublishAction = CommonAction<SearchToutiaoTopicListParams, Toutiao.Topic[]>;\n\nexport const searchToutiaoTopicList: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\ttry {\n\t\tconst res = await http.api<{ code: number; recents: Toutiao.Topic[]; hots: Toutiao.Topic[] }>({\n\t\t\tmethod: \"get\",\n\t\t\turl: \"https://mp.toutiao.com/mp/agw/creator_helper/suggest_words\",\n\t\t\tparams: { type: 2, words: params.searchValue },\n\t\t});\n\n\t\tif (res.code === 0) {\n\t\t\treturn success(params.searchValue ? res.recents : res.hots);\n\t\t}\n\n\t\treturn success([]);\n\t} catch (error) {\n\t\treturn success([]);\n\t}\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface SearchToutiaoLocationParams extends ActiomCommonParams {\n\tplaceName: string;\n}\n\nexport type PublishAction = CommonAction<SearchToutiaoLocationParams, Toutiao.CityPoi[]>;\n\nexport const searchToutiaoLocation: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n biz: 1231\n\t\t},\n\t});\n\n\ttry {\n\t\tconst res = await http.api<{ code: number; data: {poi: Array<any>}}>({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.toutiao.com/poi/api/searchplace\",\n\t\t\tdata: {\n appid: 1231,\n device: 2,\n keywords: params.placeName,\n language: \"zh-CN\",\n location: \"-1,-1\",\n offset: 20,\n page: 1,\n region: \"CN\",\n scenario: \"TIPS\",\n timestamp: Math.floor(Date.now() / 1000)\n },\n\t\t});\n \n\t\tif (res.code === 200) {\n\t\t\treturn success(res.data.poi.map(item => ({ \n position: item.name,\n city: item.city,\n longitude: item.longitude,\n latitude: item.latitude,\n type_code: item.type_code,\n poi_id: item.id,\n })));\n\t\t}\n\n\t\treturn success([]);\n\t} catch (error) {\n\t\treturn success([]);\n\t}\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface SearchToutiaoUserIDParams extends ActiomCommonParams {\n\tUserName: string;\n}\n\nexport type PublishAction = CommonAction<SearchToutiaoUserIDParams, Toutiao.SuggestWords[]>;\n\nexport const searchToutiaoUserInfo: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\ttry {\n\t\tconst res = await http.api<{ err_no: number; data: {suggest: Array<any>}}>({\n\t\t\tmethod: \"get\",\n\t\t\turl: \"https://mp.toutiao.com/ugc/publish/post/v1/suggest/\",\n\t\t\tparams: { \n words: params.UserName,\n language: \"zh\",\n app_name: \"toutiao_mp\"\n },\n\t\t});\n\n\t\tif (res.err_no === 0) {\n\t\t\treturn success(res.data.suggest.map(item => ({ \n user_id: item.user.info.user_id,\n name: item.user.info.name,\n avatar_url: item.user.info.avatar_url,\n followers_count: item.user.relation_count.followers_count\n })), '搜索成功');\n\t\t}\n\n\t\treturn success([]);\n\t} catch (error) {\n\t\treturn success([]);\n\t}\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Xiaohongshu } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface searchXiaohongshuLocationParams extends ActiomCommonParams {\n\tsearchValue: string;\n\tlatitude?: number;\n\tlongitude?: number;\n\tsize?: number;\n\tpage?: number;\n}\n\nexport type PublishAction = CommonAction<searchXiaohongshuLocationParams, Xiaohongshu.Location[]>;\n\nexport const searchXiaohongshuLocation: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://creator.xiaohongshu.com\",\n\t\t\torigin: \"https://creator.xiaohongshu.com\",\n\t\t},\n\t});\n\n\ttry {\n\t\tconst result = await http.api<{ code: number; data: { poi_list: Xiaohongshu.Location[] } }>({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://edith.xiaohongshu.com/web_api/sns/v1/local/poi/creator/search\",\n\t\t\tdata: {\n\t\t\t\tkeyword: params.searchValue,\n\t\t\t\tlatitude: params.latitude ?? 0,\n\t\t\t\tlongitude: params.longitude ?? 0,\n\t\t\t\tpage: params.page ?? 1,\n\t\t\t\tsize: params.size ?? 10,\n\t\t\t\tsource: \"WEB\",\n\t\t\t\ttype: 3,\n\t\t\t},\n\t\t});\n\n\t\treturn success(result.code === 0 ? result.data.poi_list : []);\n\t} catch (error) {\n\t\treturn success([]);\n\t}\n};\n","import { Buffer } from \"node:buffer\";\nimport crypto from \"node:crypto\";\n\n/**\n * 小红书加密参数逆向,代码来自:https://github.com/Cloxl/xhshow \n */\n\n/**\n * 加密处理相关配置常量\n */\nclass CryptoConfig {\n // 位操作相关常量\n static readonly MAX_32BIT = 0xFFFFFFFF; // 32位无符号整数最大值掩码\n static readonly MAX_SIGNED_32BIT = 0x7FFFFFFF; // 32位有符号整数最大值\n\n // Base58编码相关常量\n static readonly BASE58_ALPHABET = \"NOPQRStuvwxWXYZabcyz012DEFTKLMdefghijkl4563GHIJBC7mnop89+/AUVqrsOPQefghijkABCDEFGuvwz0123456789xy\";\n static readonly STANDARD_BASE64_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n static readonly CUSTOM_BASE64_ALPHABET = \"ZmserbBoHQtNP+wOcza/LpngG8yJq42KWYj0DSfdikx3VT16IlUAFM97hECvuRX5\";\n static readonly BASE58_BASE = 58; // Base58进制基数\n static readonly BYTE_SIZE = 256; // 字节大小(2^8)\n\n // XOR 密钥\n static readonly HEX_KEY = \"af572b95ca65b2d9ec76bb5d2e97cb653299cc663399cc663399cce673399cce6733190c06030100000000008040209048241289c4e271381c0e0703018040a05028148ac56231180c0683c16030984c2693c964b259ac56abd5eaf5fafd7e3f9f4f279349a4d2e9743a9d4e279349a4d2e9f47a3d1e8f47239148a4d269341a8d4623110884422190c86432994ca6d3e974baddee773b1d8e47a35128148ac5623198cce6f3f97c3e1f8f47a3d168b45aad562b158ac5e2f1f87c3e9f4f279349a4d269b45aad56\";\n\n // 时间戳相关常量\n static readonly TIMESTAMP_BYTES_COUNT = 16; // 时间戳字节数组长度\n static readonly TIMESTAMP_XOR_KEY = 41; // 时间戳编码XOR密钥\n static readonly STARTUP_TIME_OFFSET_MIN = 1000; // 启动时间偏移最小值\n static readonly STARTUP_TIME_OFFSET_MAX = 4000; // 启动时间偏移最大值\n\n // 十六进制处理相关常量\n static readonly EXPECTED_HEX_LENGTH = 32; // 十六进制参数预期长度\n static readonly OUTPUT_BYTE_COUNT = 8; // 处理后输出字节数\n static readonly HEX_CHUNK_SIZE = 2; // 十六进制字符块大小\n\n // 载荷构建相关常量\n static readonly VERSION_BYTES = [119, 104, 96, 41]; // 版本标识字节\n static readonly FIXED_SEPARATOR_BYTES = [16, 0, 0, 0, 15, 5, 0, 0, 47, 1, 0, 0]; // 固定分隔符字节\n static readonly RANDOM_BYTE_COUNT = 4; // 随机字节数量\n static readonly FIXED_INT_VALUE_1 = 15; // 固定整数值1\n static readonly FIXED_INT_VALUE_2 = 1291; // 固定整数值2\n\n static readonly ENV_STATIC_BYTES = [ // 环境变量静态字节\n 1, 249, 83, 102, 103, 201, 181, 131, 99, 94, 7, 68, 250, 132, 21,\n ];\n\n // 签名数据模板\n static readonly SIGNATURE_DATA_TEMPLATE = {\n x0: \"4.2.2\",\n x1: \"xhs-pc-web\",\n x2: \"Windows\",\n x3: \"\",\n x4: \"object\",\n };\n\n // 前缀常量\n static readonly X3_PREFIX = \"mns0101_\";\n static readonly XYS_PREFIX = \"XYS_\";\n}\n\n/**\n * 随机数生成工具类\n */\nclass RandomGenerator {\n /**\n * 生成指定长度的随机字节数组\n */\n generateRandomBytes(byteCount: number): number[] {\n return Array.from({ length: byteCount }, () => Math.floor(Math.random() * CryptoConfig.BYTE_SIZE));\n }\n\n /**\n * 生成指定范围内的随机字节\n */\n generateRandomByteInRange(minVal: number, maxVal: number): number {\n return Math.floor(Math.random() * (maxVal - minVal + 1)) + minVal;\n }\n\n /**\n * 生成4字节随机整数\n */\n generateRandomInt(): number {\n return Math.floor(Math.random() * (CryptoConfig.MAX_32BIT + 1));\n }\n}\n\n/**\n * 十六进制数据处理工具类\n */\nclass HexProcessor {\n /**\n * 将十六进制字符串转换为字节数组\n */\n hexStringToBytes(hexString: string): number[] {\n const byteValues: number[] = [];\n for (let i = 0; i < hexString.length; i += CryptoConfig.HEX_CHUNK_SIZE) {\n const hexChunk = hexString.substr(i, CryptoConfig.HEX_CHUNK_SIZE);\n byteValues.push(parseInt(hexChunk, 16));\n }\n return byteValues;\n }\n\n /**\n * 处理十六进制参数\n */\n processHexParameter(hexString: string, xorKey: number): number[] {\n if (hexString.length !== CryptoConfig.EXPECTED_HEX_LENGTH) {\n throw new Error(`hex parameter must be ${CryptoConfig.EXPECTED_HEX_LENGTH} characters`);\n }\n\n const byteValues = this.hexStringToBytes(hexString);\n return byteValues\n .map(byteVal => byteVal ^ xorKey)\n .slice(0, CryptoConfig.OUTPUT_BYTE_COUNT);\n }\n}\n\n/**\n * 位操作和种子变换工具类\n */\nclass BitOperations {\n /**\n * 将值标准化为32位\n */\n normalizeTo32bit(value: number): number {\n return value & CryptoConfig.MAX_32BIT;\n }\n\n /**\n * 将无符号32位值转换为有符号32位值\n */\n toSigned32bit(unsignedValue: number): number {\n if (unsignedValue > CryptoConfig.MAX_SIGNED_32BIT) {\n return unsignedValue - 0x100000000;\n }\n return unsignedValue;\n }\n\n /**\n * 计算种子值变换\n */\n computeSeedValue(seed32bit: number): number {\n const normalizedSeed = this.normalizeTo32bit(seed32bit);\n\n const shift15Bits = normalizedSeed >> 15;\n const shift13Bits = normalizedSeed >> 13;\n const shift12Bits = normalizedSeed >> 12;\n const shift10Bits = normalizedSeed >> 10;\n\n const xorMaskedResult = (shift15Bits & ~shift13Bits) | (shift13Bits & ~shift15Bits);\n const shiftedResult = ((xorMaskedResult ^ shift12Bits ^ shift10Bits) << 31) & CryptoConfig.MAX_32BIT;\n\n return this.toSigned32bit(shiftedResult);\n }\n\n /**\n * 对整数数组进行XOR变换\n */\n xorTransformArray(sourceIntegers: number[]): Uint8Array {\n const resultBytes = new Uint8Array(sourceIntegers.length);\n const hexKeyBytes = Buffer.from(CryptoConfig.HEX_KEY, 'hex');\n\n for (let index = 0; index < sourceIntegers.length; index++) {\n resultBytes[index] = (sourceIntegers[index] ^ hexKeyBytes[index]) & 0xFF;\n }\n\n return resultBytes;\n }\n}\n\n/**\n * Base58编码器\n */\nclass Base58Encoder {\n /**\n * 将字节数据编码为Base58字符串\n */\n encodeToB58(inputBytes: Uint8Array | number[]): string {\n const bytesArray = Array.isArray(inputBytes) ? inputBytes : Array.from(inputBytes);\n const numberAccumulator = this.bytesToNumber(bytesArray);\n const leadingZerosCount = this.countLeadingZeros(bytesArray);\n const encodedCharacters = this.numberToBase58Chars(numberAccumulator);\n\n encodedCharacters.push(...Array(leadingZerosCount).fill(CryptoConfig.BASE58_ALPHABET[0]));\n return encodedCharacters.reverse().join('');\n }\n\n /**\n * 将字节数组转换为数字\n */\n private bytesToNumber(inputBytes: Uint8Array | number[]): bigint {\n const bytesArray = Array.isArray(inputBytes) ? inputBytes : Array.from(inputBytes);\n let result: bigint = 0n;\n const BYTE_SIZE: bigint = 256n;\n \n for (const byteValue of bytesArray) {\n result = result * BYTE_SIZE + BigInt(byteValue);\n }\n \n return result;\n }\n \n /**\n * 计算前导零的数量\n */\n private countLeadingZeros(inputBytes: number[]): number {\n let count = 0;\n for (const byteValue of inputBytes) {\n if (byteValue === 0) {\n count++;\n } else {\n break;\n }\n }\n return count;\n }\n\n /**\n * 将数字转换为Base58字符数组\n */\n private numberToBase58Chars(number: bigint): string[] {\n const characters: string[] = [];\n const base = BigInt(CryptoConfig.BASE58_BASE);\n \n while (number > 0n) {\n const remainder = number % base;\n characters.push(CryptoConfig.BASE58_ALPHABET[Number(remainder)]);\n number = number / base; // bigint 除法自动向下取整\n }\n \n return characters;\n } \n}\n\n/**\n * Base64编码器\n */\nclass Base64Encoder {\n /**\n * 使用自定义的Base64码表来编码一个字符串\n */\n encodeToB64(dataToEncode: string): string {\n const dataBytes = Buffer.from(dataToEncode, 'utf-8');\n const standardEncodedString = dataBytes.toString('base64');\n\n let result = '';\n for (const char of standardEncodedString) {\n const index = CryptoConfig.STANDARD_BASE64_ALPHABET.indexOf(char);\n if (index !== -1) {\n result += CryptoConfig.CUSTOM_BASE64_ALPHABET[index];\n } else {\n result += char; // 保持填充字符等\n }\n }\n\n return result;\n }\n}\n\n/**\n * 请求签名参数验证器\n */\nclass RequestSignatureValidator {\n /**\n * 验证HTTP方法参数\n */\n static validateMethod(method: any): 'GET' | 'POST' {\n if (typeof method !== 'string') {\n throw new TypeError(`method must be string, got ${typeof method}`);\n }\n\n const upperMethod = method.trim().toUpperCase();\n if (upperMethod !== 'GET' && upperMethod !== 'POST') {\n throw new Error(`method must be 'GET' or 'POST', got '${upperMethod}'`);\n }\n\n return upperMethod as 'GET' | 'POST';\n }\n\n /**\n * 验证URI参数\n */\n static validateUri(uri: any): string {\n if (typeof uri !== 'string') {\n throw new TypeError(`uri must be string, got ${typeof uri}`);\n }\n\n if (!uri.trim()) {\n throw new Error('uri cannot be empty');\n }\n\n return uri.trim();\n }\n\n /**\n * 验证a1值参数\n */\n static validateA1Value(a1Value: any): string {\n if (typeof a1Value !== 'string') {\n throw new TypeError(`a1_value must be string, got ${typeof a1Value}`);\n }\n\n if (!a1Value.trim()) {\n throw new Error('a1_value cannot be empty');\n }\n\n return a1Value.trim();\n }\n\n /**\n * 验证xsec_appid参数\n */\n static validateXsecAppid(xsecAppid: any): string {\n if (typeof xsecAppid !== 'string') {\n throw new TypeError(`xsec_appid must be string, got ${typeof xsecAppid}`);\n }\n\n if (!xsecAppid.trim()) {\n throw new Error('xsec_appid cannot be empty');\n }\n\n return xsecAppid.trim();\n }\n\n /**\n * 验证payload参数\n */\n static validatePayload(payload: any): Record<string, any> | null {\n if (payload !== null && typeof payload !== 'object') {\n throw new TypeError(`payload must be object or null, got ${typeof payload}`);\n }\n\n // 验证payload键类型\n if (payload !== null && payload !== undefined) {\n for (const key in payload) {\n if (typeof key !== 'string') {\n throw new TypeError(`payload keys must be string, got ${typeof key} for key '${key}'`);\n }\n }\n }\n\n return payload;\n }\n}\n\n/**\n * 加密处理器\n */\nclass CryptoProcessor {\n public bitOps: BitOperations;\n public b58encoder: Base58Encoder;\n public b64encoder: Base64Encoder;\n public hexProcessor: HexProcessor;\n public randomGen: RandomGenerator;\n\n constructor() {\n this.bitOps = new BitOperations();\n this.b58encoder = new Base58Encoder();\n this.b64encoder = new Base64Encoder();\n this.hexProcessor = new HexProcessor();\n this.randomGen = new RandomGenerator();\n }\n\n /**\n * 8字节时间戳编码,小端序,与41异或,首字节可随机\n */\n private encodeTimestamp(ts: number, randomizeFirst: boolean = true): number[] {\n const key = Array(8).fill(CryptoConfig.TIMESTAMP_XOR_KEY);\n const arr = this.intToLeBytes(ts, 8);\n const encoded = arr.map((a, i) => a ^ key[i]);\n if (randomizeFirst) {\n encoded[0] = this.randomGen.generateRandomByteInRange(0, 255);\n }\n return encoded;\n }\n\n /**\n * 整数转小端序字节数组\n */\n private intToLeBytes(val: number, length: number = 4): number[] {\n const arr: number[] = [];\n for (let i = 0; i < length; i++) {\n arr.push(val & 0xFF);\n val >>>= 8;\n }\n return arr;\n }\n\n /**\n * UTF-8字符串转字节数组,前面加1字节长度\n */\n private strToLenPrefixedBytes(s: string): number[] {\n const buf = Buffer.from(s, 'utf-8');\n return [buf.length, ...Array.from(buf)];\n }\n\n /**\n * 构建环境字节数组\n */\n private buildEnvironmentBytes(): number[] {\n return [\n CryptoConfig.ENV_STATIC_BYTES[0],\n this.randomGen.generateRandomByteInRange(10, 254),\n ...CryptoConfig.ENV_STATIC_BYTES.slice(1)\n ];\n }\n\n /**\n * 构建载荷数组\n */\n buildPayloadArray(\n hexParameter: string,\n a1Value: string,\n appIdentifier: string = \"xhs-pc-web\",\n stringParam: string = \"\"\n ): number[] {\n // 生成随机数和时间戳\n const randNum = this.randomGen.generateRandomInt();\n const ts = Date.now(); // 毫秒时间戳\n const startupTs = ts - (\n CryptoConfig.STARTUP_TIME_OFFSET_MIN +\n this.randomGen.generateRandomByteInRange(\n 0,\n CryptoConfig.STARTUP_TIME_OFFSET_MAX - CryptoConfig.STARTUP_TIME_OFFSET_MIN\n )\n );\n\n const arr: number[] = [];\n arr.push(...CryptoConfig.VERSION_BYTES); // 固定头\n\n const randBytes = this.intToLeBytes(randNum, 4);\n arr.push(...randBytes);\n\n const xorKey = randBytes[0];\n\n // 时间戳编码\n arr.push(...this.encodeTimestamp(ts, true));\n arr.push(...this.intToLeBytes(startupTs, 8));\n arr.push(...this.intToLeBytes(CryptoConfig.FIXED_INT_VALUE_1));\n arr.push(...this.intToLeBytes(CryptoConfig.FIXED_INT_VALUE_2));\n\n // 字符串参数长度\n const stringParamLength = Buffer.from(stringParam, 'utf-8').length;\n arr.push(...this.intToLeBytes(stringParamLength));\n\n // MD5字节与xor_key异或\n const md5Bytes = Buffer.from(hexParameter, 'hex');\n const xorMd5Bytes = Array.from(md5Bytes).map(b => b ^ xorKey);\n arr.push(...xorMd5Bytes.slice(0, 8));\n\n // a1值和平台ID\n arr.push(...this.strToLenPrefixedBytes(a1Value));\n arr.push(...this.strToLenPrefixedBytes(appIdentifier));\n\n // 尾部数据\n arr.push(\n CryptoConfig.ENV_STATIC_BYTES[0],\n this.randomGen.generateRandomByteInRange(0, 255),\n ...CryptoConfig.ENV_STATIC_BYTES.slice(1)\n );\n\n return arr;\n }\n}\n\n/**\n * 小红书请求客户端封装\n */\nexport class Xhshow {\n private cryptoProcessor: CryptoProcessor;\n\n constructor() {\n this.cryptoProcessor = new CryptoProcessor();\n }\n\n /**\n * 构建内容字符串(用于MD5计算和签名生成)\n */\n private buildContentString(\n method: string,\n uri: string,\n payload?: Record<string, any> | null\n ): string {\n payload = payload || {};\n\n if (method.toUpperCase() === \"POST\") {\n return uri + JSON.stringify(payload);\n } else {\n if (!payload || Object.keys(payload).length === 0) {\n return uri;\n } else {\n const params = Object.entries(payload).map(([key, value]) => {\n let valueStr = '';\n if (Array.isArray(value)) {\n valueStr = value.map(v => String(v)).join(',');\n } else if (value !== null && value !== undefined) {\n valueStr = String(value);\n }\n return `${key}=${valueStr}`;\n });\n return `${uri}?${params.join('&')}`;\n }\n }\n }\n\n /**\n * 从内容字符串生成d值(MD5哈希)\n */\n private generateDValue(content: string): string {\n return crypto.createHash('md5').update(content, 'utf-8').digest('hex');\n }\n\n /**\n * 构建签名\n */\n private buildSignature(\n dValue: string,\n a1Value: string,\n xsecAppid: string = \"xhs-pc-web\",\n stringParam: string = \"\"\n ): string {\n // 构建载荷数组\n const payloadArray = this.cryptoProcessor.buildPayloadArray(\n dValue,\n a1Value,\n xsecAppid,\n stringParam\n );\n\n // XOR变换\n const xorResult = this.cryptoProcessor.bitOps.xorTransformArray(payloadArray);\n\n // Base58编码\n return this.cryptoProcessor.b58encoder.encodeToB58(xorResult);\n }\n\n /**\n * 生成请求签名(支持GET和POST)\n */\n signXs(\n method: 'GET' | 'POST',\n uri: string,\n a1Value: string,\n xsecAppid: string = \"xhs-pc-web\",\n payload?: Record<string, any> | null\n ): string {\n // 参数验证\n const validatedMethod = RequestSignatureValidator.validateMethod(method);\n const validatedUri = RequestSignatureValidator.validateUri(uri);\n const validatedA1Value = RequestSignatureValidator.validateA1Value(a1Value);\n const validatedXsecAppid = RequestSignatureValidator.validateXsecAppid(xsecAppid);\n const validatedPayload = RequestSignatureValidator.validatePayload(payload);\n\n const signatureData = { ...CryptoConfig.SIGNATURE_DATA_TEMPLATE };\n\n // 构建内容字符串\n const contentString = this.buildContentString(validatedMethod, validatedUri, validatedPayload);\n\n // 生成d值和x3签名\n const dValue = this.generateDValue(contentString);\n signatureData.x3 = (\n CryptoConfig.X3_PREFIX +\n this.buildSignature(dValue, validatedA1Value, validatedXsecAppid, contentString)\n );\n\n return (\n CryptoConfig.XYS_PREFIX +\n this.cryptoProcessor.b64encoder.encodeToB64(JSON.stringify(signatureData))\n );\n }\n\n /**\n * 生成GET请求签名(便捷方法)\n */\n signXsGet(\n uri: string,\n a1Value: string,\n xsecAppid: string = \"xhs-pc-web\",\n params?: Record<string, any> | null\n ): string {\n // 参数验证\n const validatedUri = RequestSignatureValidator.validateUri(uri);\n const validatedA1Value = RequestSignatureValidator.validateA1Value(a1Value);\n const validatedXsecAppid = RequestSignatureValidator.validateXsecAppid(xsecAppid);\n const validatedParams = RequestSignatureValidator.validatePayload(params);\n\n return this.signXs(\"GET\", validatedUri, validatedA1Value, validatedXsecAppid, validatedParams);\n }\n\n /**\n * 生成POST请求签名(便捷方法)\n */\n signXsPost(\n uri: string,\n a1Value: string,\n xsecAppid: string = \"xhs-pc-web\",\n payload?: Record<string, any> | null\n ): string {\n // 参数验证\n const validatedUri = RequestSignatureValidator.validateUri(uri);\n const validatedA1Value = RequestSignatureValidator.validateA1Value(a1Value);\n const validatedXsecAppid = RequestSignatureValidator.validateXsecAppid(xsecAppid);\n const validatedPayload = RequestSignatureValidator.validatePayload(payload);\n\n return this.signXs(\"POST\", validatedUri, validatedA1Value, validatedXsecAppid, validatedPayload);\n }\n}\n\n// 默认导出\nexport default Xhshow;","import {type CommonAction, success} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, Xiaohongshu} from \"../../types\";\nimport {Http} from \"../../utils/http\";\nimport {Xhshow} from \"../../utils/xhsXsEncrypt\";\n\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport interface SearchXiaohongshuTopicListParams extends ActiomCommonParams {\n searchValue: string;\n}\n\nexport type PublishAction = CommonAction<SearchXiaohongshuTopicListParams, Xiaohongshu.Topic[]>;\n\nexport const searchXiaohongshuTopicList: PublishAction = async (_task, params) => {\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com\",\n origin: \"https://creator.xiaohongshu.com\",\n },\n });\n const a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) return {code: 200, message: \"账号数据异常,请重新绑定账号后重试。\", data: []};\n\n try {\n const xt = Date.now().toString();\n const topicData = {\n keyword: params.searchValue,\n suggest_topic_request: {\n title: \"\",\n desc: `#${params.searchValue}`\n },\n page: {\n page_size: 20,\n page: 1\n }\n }\n\n const fatchTopic = `/web_api/sns/v1/search/topic`;\n const xs = xsEncrypt.signXsPost(fatchTopic, a1Cookie,\"xhs-pc-web\" , topicData);\n const result = await http.api<{ code: number; data: { topic_info_dtos: Xiaohongshu.Topic[] } }>({\n method: \"post\",\n url: \"https://edith.xiaohongshu.com/web_api/sns/v1/search/topic\",\n data: topicData,\n headers: {\"x-s\": xs, \"x-t\": xt},\n defaultErrorMsg: \"话题搜索异常,请稍后重试。\",\n });\n\n return success(result.code === 0 ? result.data.topic_info_dtos : [], '获取话题成功');\n } catch (error) {\n return success([]);\n }\n\n}","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\n\nimport type { Toutiao } from \"../../types\";\nimport { extractImgTag, replaceImgSrc, TimeFormatter } from \"../../utils\";\nimport { Http } from \"../../utils/http\";\nimport { COVER_TYPE, type PublishAction, getAddTypeValue } from \"./index\";\nconst GenAB = require(\"../../utils/ttABEncrypt\") as (headers: string, data: string) => string;\n\ninterface CommonResponse<T = unknown> {\n\tdata: T;\n proxyInfo?: Record<string, any>\n\tcode: number;\n\tmessage: string;\n}\n\nconst errnoMap: Record<number, string | string[]> = {\n\t20004020: \"图片上传异常,请重新绑定账号后同步。\",\n\t7115: \"正文图片和封面图片推荐jpg、png格式。\",\n\t100006: \"文章同步异常,请重新绑定账号后重试。\",\n\t3101: [\n\t\t\"今日头条号发布次数已达上限,请明天再试。\",\n\t\t\"头条账号状态异常,需前往头条号完成实名认证。\",\n\t\t\"头条账号状态异常,资料审核未通过,请前往头条号查看。\",\n\t],\n\t2007: \"文章发布失败,声明原创要求正文字数不少于 300 字,请修改后重试。\",\n\t2010: \"无头条广告权限,请修改后重试。\",\n\t3103: \"今日头条号发布次数已达上限,请明天再试。\",\n\t1053: \"正文图片和封面图片推荐jpg、png格式。\",\n\t1050: \"图片上传失败,请重试上传。\",\n\t2005: \"账号无【申明原创】权限,请关闭申明后重试。\",\n\t100004: \"用户未登录或登陆已过期,请重新登陆后重试。\"\n};\nconst generatorFormData = (data: Record<string, unknown>) => {\n\treturn Object.entries(data)\n\t\t.map(([key, value]) => {\n\t\t\tconst encodedKey = encodeURIComponent(key);\n\t\t\tconst encodedValue = encodeURIComponent(String(value));\n\t\t\treturn `${encodedKey}=${encodedValue}`;\n\t\t})\n\t\t.join('&');\n};\nconst get3101DetailError = (errorList: string[], message: string, saveType: string) => {\n\tlet error = \"\";\n\tif (message?.includes(\"当日发文\")) {\n\t\terror = errorList[0];\n\t} else if (message?.includes(\"实名认证\")) {\n\t\terror = errorList[1];\n\t} else if (message?.includes(\"资料审核\")) {\n\t\terror = errorList[2];\n\t}\n\treturn error || (saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\");\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst { toutiaoSingleCover, toutiaoMultCover, toutiaoCoverType, toutiaoOriginal, toutiaoExclusive, toutiaoClaim } = params.settingInfo;\n\tconst tmpCachePath = task.getTmpPath();\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n origin: \"https://mp.toutiao.com\",\n referer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n }\n\tconst http = new Http({headers});\n\n\t// 添加响应拦截器\n\thttp.addResponseInterceptor<CommonResponse>((response) => {\n\t\t// 检查响应中的 errno 字段\n\t\tif (response.data?.code !== 0) {\n\t\t\tlet errmsg = \"\";\n\n\t\t\tif (Array.isArray(errnoMap[response.data.code])) {\n\t\t\t\terrmsg = get3101DetailError(errnoMap[response.data.code] as string[], response.data.message, params.saveType);\n\t\t\t} else {\n\t\t\t\terrmsg =\n\t\t\t\t\t(errnoMap[response.data.code] as string) ||\n\t\t\t\t\tresponse.config.defaultErrorMsg ||\n\t\t\t\t\t(params.saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\");\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcode: errnoMap[response.data.code] ? 200 : 500,\n\t\t\t\tmessage: errmsg,\n\t\t\t\tdata: response.data,\n\t\t\t};\n\t\t}\n\t});\n\n\t// 0. 校验登录\n\tawait http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.toutiao.com/mp/agw/creator_center/user_info\",\n\t\tdefaultErrorMsg: `头条号登录状态失效,请重新绑定账号后${params.saveType === \"draft\" ? \"同步\" : \"发布\"}。`,\n\t});\n\n\tconst uploadImages = async (images: string[]) => {\n\t\t// 下载图片到本地\n\t\treturn await Promise.all(\n\t\t\timages.map(async (url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\tconst image = await downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t\tconst formData = new FormData();\n\t\t\t\tformData.append(\"image\", fs.createReadStream(image));\n\n\t\t\t\tconst response = await http.api<CommonResponse<Toutiao.ImageData>>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://mp.toutiao.com/spice/image?upload_source=20020002&aid=1231&device_platform=web\",\n\t\t\t\t\tdata: formData,\n\t\t\t\t\tdefaultErrorMsg:\n\t\t\t\t\t\tparams.saveType === \"draft\" ? \"图片上传异常,请稍后重试同步。\" : \"图片上传异常,请稍后重试发布。\",\n\t\t\t\t});\n\n\t\t\t\treturn response.data;\n\t\t\t}),\n\t\t);\n\t};\n\n\t// 1. 提取并上传正文中的图片\n\tconst originContentImages = extractImgTag(params.content);\n\tconst targetContentImages = await uploadImages(originContentImages);\n\t// 2. 替换正文中的图片\n\tconst content = replaceImgSrc(params.content, (dom) => {\n\t\tif (dom.attribs.src) {\n\t\t\tconst idx = originContentImages.findIndex((it) => it === dom.attribs.src);\n\t\t\tdom.attribs.src = targetContentImages[idx].image_url;\n\t\t\tdom.attribs.web_uri = targetContentImages[idx].image_uri;\n\t\t\tdom.attribs.img_width = targetContentImages[idx].image_width.toString();\n\t\t\tdom.attribs.image_height = targetContentImages[idx].image_height.toString();\n\t\t\tdom.attribs.image_type = targetContentImages[idx].image_type.toString();\n\t\t\tdom.attribs.mime_type = targetContentImages[idx].image_mime_type;\n\t\t}\n\t\treturn dom;\n\t});\n\n\t// 3. 上传横版封面\n\tconst coverUrl =\n\t\ttoutiaoCoverType === \"single\" ? [toutiaoSingleCover] : toutiaoCoverType === \"multiple\" ? toutiaoMultCover : [];\n\tconst coverRes = await uploadImages(coverUrl);\n\n\t// 4. 构造发布数据\n\t// const isSingleTitle = params.settingInfo.toutiaoTitleType === \"single\";\n\tconst location = params.settingInfo.toutiaoLocation;\n\tconst topics = params.settingInfo.toutiaoTopic || [];\n\n\t// const multiTitleData = params.settingInfo.subTitles.map((title) => ({\n\t// \tid: \"0\",\n\t// \tvisibility_level: 0,\n\t// \tsource: \"author\",\n\t// \told_source: \"author\",\n\t// \ttext: title,\n\t// \tversion: \"author\",\n\t// \tai_title: \"\",\n\t// }));\n\n\tconst topicContent = topics\n\t\t.map(\n\t\t\t(topic) =>\n\t\t\t\t`<p><a class=\"tteditor-forum\" data-name=\"${topic.word}\" data-id=\"${topic.id}\" data-concern-id=\"${topic.id}\">#${topic.word}#</a ></p >`,\n\t\t)\n\t\t.join(\"\");\n\n\tlet sourceData : Record<string, any> = {\n\t\tsource_type: toutiaoClaim ? toutiaoClaim.type : 5 // 老用户默认为:个人观点,仅供参考\n\t}\n\tif (toutiaoClaim && toutiaoClaim.type === 1) {\n\t\tif( !toutiaoClaim?.source_author_uid) return { code: 500, message: \"请填写作者ID\", data: \"\" }\n\t\tsourceData = {\n\t\t\t...sourceData,\n\t\t\tsource_author_uid: toutiaoClaim.source_author_uid,\n\t\t\ttime_format: toutiaoClaim.time_format,\n\t\t\tposition: toutiaoClaim.position\n\t\t}\n\t}\n\tconst extraData = {\n\t\tcontent_word_cnt: params.settingInfo.cntWord,\n\t\t// is_multi_title: isSingleTitle ? 0 : 1,\n\t\t// sub_titles: isSingleTitle ? [] : multiTitleData,\n\t\tgd_ext: {\n\t\t\tentrance: \"\",\n\t\t\tfrom_page: \"publisher_mp\",\n\t\t\tenter_from: \"PC\",\n\t\t\tdevice_platform: \"mp\",\n\t\t\tis_message: 0,\n\t\t},\n\t\ttuwen_wtt_trans_flag: params.settingInfo?.toutiaoTransWtt ? \"2\" : \"0\",\n\t\tinfo_source: sourceData,\n\t\t...(location ? { city: location.label, city_code: location.value } : null),\n ...(params.settingInfo?.toutiaoCollectionId ? { want_join_collection_id: params.settingInfo.toutiaoCollectionId } : null)\n\t};\n\n\tconst publishData = {\n\t\tarticle_type: 0,\n\t\tsource: 0,\n\t\tsearch_creation_info: '{\"searchTopOne\": 0, \"abstract\": \"\", \"clue_id\": \"\"}',\n\t\ttitle_id: \"\",\n\t\teducluecard: \"\",\n\t\torigin_debut_check_pgc_normal: 1,\n\t\tis_fans_article: 0,\n\t\tgovern_forward: 0,\n\t\tpraise: 0,\n\t\tdisable_praise: 0,\n\t\ttree_plan_article: 0,\n\t\tstar_order_id: \"\",\n\t\tstar_order_name: \"\",\n\t\tcustomer_nick_name: \"\",\n\t\tactivity_tag: 0,\n\t\ttrends_writing_tag: 0,\n\t\tis_refute_rumor: 0,\n\t\tsave: params.saveType === \"publish\" ? 1 : 0,\n\t\ttimer_status: params.settingInfo.timer? 1 : 0,\n\t\ttimer_time: params.settingInfo.timer? TimeFormatter.format(params.settingInfo.timer):\"\",\n\t\ttitle: params.title,\n\t\tcontent: content + topicContent,\n\t\textra: JSON.stringify(extraData),\n\t\tmp_editor_stat: toutiaoCoverType === \"no\" ? \"{}\" : '{\"image\": %d}',\n\t\tdraft_form_data: JSON.stringify({\n\t\t\tcoverType: COVER_TYPE[toutiaoCoverType],\n\t\t}),\n\t\tpgc_feed_covers: JSON.stringify(\n\t\t\tcoverRes.map((item) => ({\n\t\t\t\tid: \"\",\n\t\t\t\turl: item.image_url,\n\t\t\t\turi: item.image_uri,\n\t\t\t\tic_uri: \"\",\n\t\t\t\tthumb_widt: item.image_width,\n\t\t\t\tthumb_heigh: item.image_height,\n\t\t\t\textra: {\n\t\t\t\t\tfrom_content_uri: \"\",\n\t\t\t\t\tfrom_content: \"0\",\n\t\t\t\t},\n\t\t\t})),\n\t\t),\n\t\tarticle_ad_type: getAddTypeValue(params.settingInfo.toutiaoAd),\n\t\t// claim_origin: toutiaoOriginal.includes(\"original\") ? 1 : 0,\n\t\tclaim_exclusive: toutiaoExclusive ? toutiaoExclusive : toutiaoOriginal?.includes(\"exclusive\") ? 1 : 0, // 首发声明兼容老用户字段\n\t};\n \n task._timerRecord['PrePublish']= Date.now();\n\n\tconst msToken = params.cookies.find((it) => it.name === \"msToken\")?.value;\n\tlet publishOption = {}\n\tif (!msToken) {\n\t\tpublishOption = {\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.toutiao.com/mp/agw/article/publish?source=mp&type=article&aid=1\",\n\t\t\tdata: publishData,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"application/x-www-form-urlencoded\",\n\t\t\t},\n\t\t\tdefaultErrorMsg: params.saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\",\n\t\t};\n\t}else{\n\t\tconst postHeaders = generatorFormData({\n\t\t\tsource: \"mp\",\n\t\t\ttype: \"article\",\n\t\t\taid: 1231,\n\t\t\tmp_publish_ab_val: 0,\n\t\t\tmsToken: msToken\n\t\t})\n\t\tconst postData = generatorFormData(publishData)\n\t\tlet a_bogus = GenAB(postHeaders,postData)\n\t\n\t\tpublishOption = {\n\t\t\tmethod: \"post\",\n\t\t\turl: `https://mp.toutiao.com/mp/agw/article/publish?${postHeaders}&a_bogus=${a_bogus}`,\n\t\t\tdata: postData,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"application/x-www-form-urlencoded\",\n\t\t\t\t\"user-agent\": \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36\"\n\t\t\t},\n\t\t\tdefaultErrorMsg: params.saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\",\n\t\t};\n\t}\n const proxyHttp = task?.isBeta ?? false ? new Http({headers}, params.proxyLoc, params.huiwenToken ): http;\n\n const publishResult = await proxyHttp.api<CommonResponse<{ pgc_id: string }>>(publishOption, {\n retries: 2,\n retryDelay: 500\n });\n\n\treturn success(publishResult.data.pgc_id, `文章发布成功!`+ (proxyHttp.proxyInfo || \"\"));\n};\n","import path from \"node:path\";\nimport type { CookieMap, Response } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport { copyHtmlToClipboard, getRandomInRange, PopupListener, TimeFormatter } from \"../../utils\";\nimport { COVER_TYPE, type PublishAction, getAddTypeValue } from \"./index\";\nconst GenAB = require(\"../../utils/ttABEncrypt\") as (headers: string, data: string) => string;\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \".toutiao.com\",\n\t\turl: \"https://mp.toutiao.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\t// 0. 校验登录\n\ttry {\n\t\tawait page.waitForSelector(\".publish-editor\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn {\n\t\t\tcode: 400,\n\t\t\tmessage: `头条号登录状态失效,请重新绑定账号后${params.saveType === \"draft\" ? \"同步\" : \"发布\"}。`,\n\t\t\tdata: page.url(),\n\t\t};\n\t}\n\n\tconst interceptUrls = [\n\t\t'/mp/agw/article/publish'\n\t];\n\t \n\tawait page.route('**', async (route, request) => {\n\t\tconst url = new URL(request.url()); \n\t\tif (interceptUrls.some(pattern => url.pathname.includes(pattern))) {\n\t\t\tconst headers = {\n\t\t\t\t...request.headers(),\n\t\t\t\t\"user-agent\": \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36\" //ua参数固定,不可修改\n\t\t\t};\n\n\t\t\tconst generatorFormData = (data: Record<string, unknown>) => {\n\t\t\t\treturn Object.entries(data)\n\t\t\t\t\t.map(([key, value]) => {\n\t\t\t\t\t\tconst encodedKey = encodeURIComponent(key);\n\t\t\t\t\t\tconst encodedValue = encodeURIComponent(String(value));\n\t\t\t\t\t\treturn `${encodedKey}=${encodedValue}`;\n\t\t\t\t\t})\n\t\t\t\t\t.join('&');\n\t\t\t};\n\n\t\t\tconst postHeaders = generatorFormData({\n\t\t\t\tsource: \"mp\",\n\t\t\t\ttype: \"article\",\n\t\t\t\taid: 1231,\n\t\t\t\tmp_publish_ab_val: 0,\n\t\t\t\tmsToken: url.searchParams.get('msToken')\n\t\t\t})\n\t\t\tconst postData = request.postData() || \"\";\n\t\t\tlet a_bogus = GenAB(postHeaders,postData)\n\n\t\t\turl.searchParams.set('aid', \"1231\"); \n\t\t\turl.searchParams.set('mp_publish_ab_val', \"0\"); \n\t\t\turl.searchParams.set('a_bogus', a_bogus); \n\n\t\t\tawait route.continue({ url: url.toString() , headers: headers});\n\n\t\t} else {\n\t\t\tawait route.continue();\n\t\t}\n\t});\n\n\t//弹窗监听检测\n\tPopupListener(page,'.byte-modal.publish-exclusive-modal .title',\"激励\", '.byte-modal-close-icon', \n\t{\n\t\tcheckInterval: 1000,\n\t\tstopAfterClick: false\n\t})\n\t\n\t// 1. 填写标题\n\tconst titleInstance = page.locator(\".publish-editor-title-wrapper .publish-editor-title textarea\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 2. 填写正文\n\tawait copyHtmlToClipboard(page, params.content);\n\t// 定位目标元素并聚焦\n\tawait page.click(\".publish-editor .syl-editor-wrap .ProseMirror\");\n\t// 模拟Ctrl+V粘贴\n\tawait page.keyboard.press(\"Control+V\");\n\n\t// 3. 封面\n\tconst coverTypeValue = COVER_TYPE[params.settingInfo.toutiaoCoverType];\n\tconst coverContainer = page.locator(\".form-container .edit-cell\").filter({ hasText: \"展示封面\" });\n\t// 滚动到可视区域\n\tawait coverContainer.evaluate((node) => node.scrollIntoView());\n\tawait coverContainer.locator(`.article-cover label.byte-radio:has(input[value=\"${coverTypeValue}\"])`).click();\n\n\tlet coverUrls: string[] = [];\n\tif (params.settingInfo.toutiaoCoverType === \"single\") {\n\t\tcoverUrls = [params.settingInfo.toutiaoSingleCover];\n\t} else if (params.settingInfo.toutiaoCoverType === \"multiple\") {\n\t\tcoverUrls = params.settingInfo.toutiaoMultCover;\n\t}\n\t// 获取待上传图片的本地路径\n\tconst images = await Promise.all(\n\t\tcoverUrls.map((url) => {\n\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t}),\n\t);\n\n\tconst coverUploadEle = coverContainer\n\t\t.locator(\".article-cover .article-cover-images\")\n\t\t.locator(\".article-cover-img-wrap, .article-cover-add\");\n\tconst coverUploadCount = await coverUploadEle.count();\n\n\tfor (let i = 0; i < coverUploadCount; i++) {\n\t\tif (!images[i]) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst ele = coverUploadEle.nth(i);\n\t\t// 如果存在图片则替换\n\t\tif ((await ele.locator(\"img\").count()) > 0) {\n\t\t\tawait ele.locator(\".article-cover-img-menu a\").filter({ hasText: \"替换\" }).click();\n\t\t} else {\n\t\t\t// 如果不存在图片则点击上传\n\t\t\tawait ele.click();\n\t\t}\n\n\t\t// 上传图片\n\t\tconst drawerContainer = page.locator(\".byte-drawer-wrapper:not(.byte-drawer-wrapper-hide)\");\n\t\tawait drawerContainer.locator(\".byte-tabs-header .byte-tabs-header-title\").filter({ hasText: \"上传图片\" }).click();\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait page.waitForTimeout(200);\n\t\tawait drawerContainer.locator(\".upload-image-panel button.byte-btn\").filter({ hasText: \"本地上传\" }).click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles([images[i]]);\n\n\t\t// 等待上传完成\n\t\tconst confirmBtn = drawerContainer\n\t\t\t.locator(\".footer .confirm-btns button:not(.byte-btn-disabled)\")\n\t\t\t.filter({ hasText: \"确定\" });\n\t\tawait confirmBtn.waitFor({ state: \"visible\" });\n\t\tawait confirmBtn.click();\n\n\t\tawait page.waitForTimeout(getRandomInRange(500, 1000));\n\t}\n\n\t// 4. 添加位置\n\tif (params.settingInfo.toutiaoLocation) {\n\t\tconst locationContainer = page.locator(\".form-container .edit-cell\").filter({ hasText: \"添加位置\" });\n\t\tawait locationContainer.locator(\".position-select\").click();\n\t\tawait locationContainer\n\t\t\t.locator(\".position-select .byte-select-view-search input\")\n\t\t\t.fill(params.settingInfo.toutiaoLocation.label);\n\t\tconst poperInstance = page.locator(\".byte-trigger .byte-select-popup .byte-select-option\");\n\t\tawait poperInstance.first().waitFor();\n\t\tawait poperInstance.first().click();\n\t}\n\n\t// 5. 投放广告\n\tconst adContainer = page\n\t\t.locator(\".form-container .edit-cell .edit-label\")\n\t\t.filter({ hasText: \"投放广告\" })\n\t\t.locator(\"xpath=..\");\n\n\t// 判断是否存在投放广告的选项\n\tconst isAdOptionVisible = await adContainer.isVisible();\n\n\tif (isAdOptionVisible) {\n\t\t// 获取元素的父元素句柄并点击\n\t\tawait adContainer\n\t\t\t.locator(`label.byte-radio:has(input[value=\"${getAddTypeValue(params.settingInfo.toutiaoAd)}\"])`)\n\t\t\t.click();\n\t}\n\n\t// 6. 声明首发\n\tconst exclusiveContainer = page.locator(\".form-container .edit-cell .edit-label\").filter({ hasText: \"声明首发\" }).locator(\"xpath=..\");\n\tif ((params.settingInfo.toutiaoOriginal && params.settingInfo.toutiaoOriginal.includes(\"exclusive\")) || params.settingInfo.toutiaoExclusive ) {\n\n\t\texclusiveContainer.locator(\".exclusive .exclusive-checkbox-wraper .byte-checkbox\").check();\n\t}else{\n\t\texclusiveContainer.locator(\".exclusive .exclusive-checkbox-wraper .byte-checkbox\").uncheck();\n\t}\n\n\t// 作品声明\n\tlet claim = params.settingInfo.toutiaoClaim ? params.settingInfo.toutiaoClaim.type : 5;\n\tswitch (claim) {\n\t\t// case 1:\n\t\t// \tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"引用站内\"}).locator(\".byte-checkbox-mask\").check();\n\t\t// \tif(!params.settingInfo.toutiaoClaim?.source_author_name) return{ code: 500, message: \"请填写作者账户名\", data: \"\" };\n\t\t// \tawait page.locator(\".source-form-item\",{hasText: \"账号\"}).locator(\".byte-select-view-search input\").fill(params.settingInfo.toutiaoClaim.source_author_name)\n\t\t// \tbreak;\n\t\tcase 3:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"引用AI\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"取材网络\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"个人观点,仅供参考\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tcase 6:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"虚构演绎,故事经历\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"个人观点,仅供参考\"}).locator(\".byte-checkbox-mask\").check();\n\n\t\t\tbreak;\n\t}\n\n\t// 7. 保存草稿 / 发布\n\tconst articleId = await new Promise<string>(async (resolve) => {\n\t\tconst handleResponse = async (response: Response) => {\n\t\t const url = response.url();\n\t\t if (url.includes(\"/mp/agw/article/publish\")) {\n\t\t\tconst jsonResponse = await response.json();\n\t\t\tpage.off(\"response\", handleResponse);\n\t\t\tresolve(jsonResponse.data.pgc_id);\n\t\t }\n\t\t};\n\t \n\t\tpage.on(\"response\", handleResponse);\n\t \n\t\tif (params.settingInfo.timer && params.saveType == \"publish\") {\n\t\t // 点击“定时发布”按钮\n\t\t await page.locator(\".publish-footer button\").filter({ hasText: \"定时发布\" }).click();\n\t\t await page.waitForSelector('button.publish-btn:not(.byte-btn-loading) >> nth=1', { state: 'attached' });\n\t \n\t\t // 选择日期\n\t\t await page.locator(\".byte-modal-content .day-select .byte-select-view-value\").click();\n\t\t await page.locator('li.byte-select-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"MM月dd日\") }).click();\n\t\t await page.waitForTimeout(200);\n\t \n\t\t // 选择小时\n\t\t await page.locator(\".byte-modal-content .hour-select .byte-select-view-value\").click();\n\t\t await page.locator('li.byte-select-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"h\") }).click();\n\t\t await page.waitForTimeout(200);\n\t \n\t\t // 选择分钟\n\t\t await page.locator(\".byte-modal-content .minute-select .byte-select-view-value\").click();\n\t\t await page.locator('li.byte-select-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"m\") }).click();\n\t\t await page.waitForTimeout(200);\n\n\t\t await page.locator(\".byte-modal-footer button\").filter({ hasText:\"预览并定时发布\" }).click()\n\t\t}else{\n\t\t\tawait page.locator(\".publish-footer button\").filter({ hasText:\"预览并发布\" }).click();\n\t\t}\n\t \n\t });\n\n\tif(params.settingInfo.toutiaoAd == 'no'){\n\t\tawait page.waitForTimeout(200);\n\t\tconst confirmBtn = page.locator('div.byte-modal-footer button.byte-btn-primary:has-text(\"确定\")');\n\t\tif (await confirmBtn.isVisible()) {\n\t\t await confirmBtn.click();\n\t\t}\n\t}\n \n\ttask._timerRecord['PrePublish']= Date.now();\n \n\tif (params.saveType === \"publish\") {\n\t\tawait page.locator(\".publish-footer button\").filter({ hasText: params.settingInfo.timer? \"定时发布\" : \"确认发布\" }).waitFor({ state: \"visible\" });\n\t\tawait page.waitForTimeout(200);\n\t\tawait page.locator(\".publish-footer button\").filter({ hasText: params.settingInfo.timer? \"定时发布\" : \"确认发布\" }).click();\n\t}\n\n\t// 关闭页面\n\tawait page.close();\n\n\treturn success(articleId, params.saveType === \"publish\" ? \"发布成功\" : \"保存草稿成功\");\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\ntype CoverType = \"single\" | \"multiple\" | \"no\";\n\nexport interface ToutiaoPublishParams extends ActiomCommonParams {\n\tsaveType: \"draft\" | \"publish\"; // 保存成草稿 / 发布\n\ttitle: string;\n\tcontent: string;\n proxyLoc?: string; // 代理位置\n huiwenToken?: string; // 绘文token\n\tsettingInfo: {\n\t\ttoutiaoCoverType: CoverType;\n\t\ttoutiaoTitleType: \"single\" | \"multiple\"; // 已关闭对应功能,保留参数,兼容老版本\n\t\ttoutiaoSingleCover: string;\n\t\ttoutiaoMultCover: string[];\n\t\ttoutiaoAd: string; // 广告配置 - 投放广告/不投放广告\n\t\ttoutiaoOriginal?: string; // 原创声明-已修改为首发声明,兼容老用户\n\t\ttoutiaoExclusive?: number; // 头条首发 0 - 声明非首发 1- 声明首发\n toutiaoCollectionId?: string; // 头条合集id\n toutiaoTransWtt?: boolean; // 是否同步微头条\n\t\ttoutiaoClaim?: {\n\t\t\ttype: number// 作品声明 -1 - 不声明,4 - 取材网络,1 - 引用站内(该选项必须传入下方两个参数,否则会错误),5 - 个人观点,仅供参考,3 - 引用AI,6 - 虚构演绎,故事经历\n\t\t\tsource_author_uid?: string;\n\t\t\tsource_author_name?: string;\n\t\t\ttime_format?: string;\n\t\t\tposition?: {\n\t\t\t\tposition: string;\n\t\t\t\tcity: string;\n\t\t\t\tlongitude: number;\n\t\t\t\tlatitude: number;\n\t\t\t\ttype_code: string;\n\t\t\t\tpoi_id: string;\n\t\t\t}\n\n\t\t}; \n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\ttoutiaoLocation?: { label: string; value: string; [key: string]: any }; // 位置\n\t\ttoutiaoTopic: { id: string; word: string }[]; // 话题\n\t\tcntWord: number;\n\t\tsubTitles: string[]; // 多标题\n\t\ttimer?: number;\n\t};\n}\n\nexport const COVER_TYPE: Record<CoverType, number> = {\n\tno: 1,\n\tsingle: 2,\n\tmultiple: 3,\n};\n\nexport const getAddTypeValue = (toutiaoAd: ToutiaoPublishParams[\"settingInfo\"][\"toutiaoAd\"]) =>\n\ttoutiaoAd === \"yes\" ? 3 : 2;\n\nexport type PublishAction = CommonAction<ToutiaoPublishParams, string>;\n\nexport const toutiaoPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao, Xiaohongshu, Weixin, BaiJiaHao} from \"../../../types\";\nimport { Http } from \"../../../utils/http\";\n\n\nexport type ttSearchAction = CommonAction<ActiomCommonParams, Toutiao.FansCount>;\n\nexport type xhsSearchAction = CommonAction<ActiomCommonParams, Xiaohongshu.FansCount>;\n\nexport interface GetWxFansSearchParams extends ActiomCommonParams {\n token: string| number;\n}\nexport type wxSearchAction = CommonAction<GetWxFansSearchParams, Weixin.FansCount>;\n\nexport type bjhSearchAction = CommonAction<ActiomCommonParams, BaiJiaHao.FansCount>;\n\n\nexport const TTFansExport: ttSearchAction = async (_task, params) => {\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n },\n });\n\n try {\n const res = await http.api<{ code: number; total_fans_count: number }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/agw/creator_center/user_info?app_id=1231\",\n params: { app_id: 1231},\n });\n\n return success(res.code === 0 ? { fans_count: res.total_fans_count } : { fans_count: null }, \"获取粉丝数成功!\");\n } catch (error) {\n return success({ fans_count: null }, \"获取粉丝数失败,请检查登陆有效性!\");\n }\n\n};\n\nexport const XhsFansExport: xhsSearchAction = async (_task, params) => { \n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://creator.xiaohongshu.com/new/home?source=official\",\n\t\t},\n\t});\n\n try {\n const res = await http.api<{ result: number; data: Xiaohongshu.FansCount }>({\n method: \"get\",\n url: \"https://creator.xiaohongshu.com/api/galaxy/creator/home/personal_info\",\n });\n\n return success(res.result === 0 ? { fans_count: res.data.fans_count } : { fans_count: null }, \"获取粉丝数成功!\");\n } catch (error) {\n return success({ fans_count: null }, \"获取粉丝数失败,请检查登陆有效性!\");\n }\n\n};\n\nexport const WxFansExport: wxSearchAction = async (_task, params) => { \n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t},\n\t});\n\n try {\n const htmlStr = await http.api<string>({\n method: \"get\",\n url: \"https://mp.weixin.qq.com/cgi-bin/home\",\n params: {\n t: \"home/index\",\n token: params.token,\n lang: \"zh_CN\",\n },\n });\n\n const match = htmlStr.match(/总用户数[\\s\\S]*?<mp-thousandth>(\\d+)<\\/mp-thousandth>/);\n \n return success(match ? { fans_count: Number(match[1]) }: {fans_count: null},\"获取粉丝数成功!\");\n } catch (error) {\n return success({ fans_count: null }, \"获取粉丝数失败,请检查登陆有效性!\");\n }\n\n};\n\nexport const BjhFansExport: bjhSearchAction = async (_task, params) => { \n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://baijiahao.baidu.com/builder/rc/home\",\n\t\t},\n\t});\n\n try {\n const res = await http.api<{ errno: number; data: {total_fans: number} }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/cms-ui/rights/growth/get_info\",\n });\n\n return success(res.errno === 0 ? { fans_count: res.data.total_fans } : { fans_count: null }, \"获取粉丝数成功!\");\n } catch (error) {\n return success({ fans_count: null }, \"获取粉丝数失败,请检查登陆有效性!\");\n }\n\n};","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../../types\";\nimport { Http } from \"../../../utils/http\";\n\nexport interface sessionCheckResult {\n\tisValidSession: boolean;\n}\n\nexport type ttSessionCheck = CommonAction<ActiomCommonParams, sessionCheckResult>;\nexport interface wxSessionParams extends ActiomCommonParams {\n token: string | number;\n}\nexport type wxSessionCheck = CommonAction<wxSessionParams, sessionCheckResult>;\nexport type xhsSessionCheck = CommonAction<ActiomCommonParams, sessionCheckResult>;\nexport type bjhSessionCheck = CommonAction<ActiomCommonParams, sessionCheckResult>;\n\nexport const TTSessionCheck: ttSessionCheck = async (_task, params) => {\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n },\n });\n\n try {\n const res = await http.api({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/agw/creator_center/user_info\",\n defaultErrorMsg: `头条号登录状态失效。`,\n });\n\n return success(res.code === 0 ? { isValidSession: true } : { isValidSession: false }, \"头条账号有效性检测完成!\");\n } catch (error) {\n return success({ isValidSession: false }, \"头条账号有效性检测失败!\");\n }\n\n};\n\nexport const WxSessionCheck: wxSessionCheck = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t},\n\t});\n const fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\n try {\n const res = await http.api<{base_resp: {ret: number;}}>({\n method: \"get\",\n url: \"https://mp.weixin.qq.com/cgi-bin/appmsgpublish\",\n params: {\n fingerprint,\n sub: \"list\",\n begin: 0,\n count: 10,\n query: \"\",\n type: 101_1_102_103,\n show_type: \"\",\n free_publish_type: 1_102_103,\n sub_action: \"list_ex\",\n search_card: 0,\n token: params.token,\n lang: \"zh_CN\",\n f: \"json\",\n ajax: 1,\n },\n });\n\n return success(res.base_resp.ret === 0 ? { isValidSession: true } : { isValidSession: false }, \"微信账号有效性检测完成!\");\n } catch (error) {\n return success({ isValidSession: false }, \"微信账号有效性检测失败!\");\n }\n\n};\n\nexport const XhsSessionCheck: xhsSessionCheck = async (_task, params) => { \n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://creator.xiaohongshu.com/new/home?source=official\",\n\t\t},\n\t});\n\n try {\n const res = await http.api<{ result: number;}>({\n method: \"get\",\n url: \"https://creator.xiaohongshu.com/api/galaxy/user/info\",\n });\n\n return success(res.result === 0 ? { isValidSession: true } : { isValidSession: false }, \"小红书账号有效性检测完成!\");\n } catch (error) {\n return success({ isValidSession: false}, \"小红书账号有效性检测完成!\");\n }\n\n};\n\nexport const BjhSessionCheck: bjhSessionCheck = async (_task, params) => { \n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://baijiahao.baidu.com/builder/rc/home\",\n\t\t},\n\t});\n\n try {\n const res = await http.api({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/pcui/home/index\",\n defaultErrorMsg: `百家号登录状态失效。`,\n });\n\n return success(res.errno === 0 ? { isValidSession: true } : { isValidSession: false }, \"百家号账号有效性检测完成!\");\n } catch (error) {\n return success({ isValidSession: false}, \"百家号账号有效性检测失败!\");\n }\n\n};","\nexport interface ttConfigData {\n fansNum: number;\n fansNumYesterday: number | null;\n readNum: number;\n incomeNum: number;\n incomeNumYesterday: number| null;\n showNumYesterday: number| null;\n readNumYesterday: number| null;\n likeNumYesterday: number| null;\n commentNumYesterday: number| null;\n}\n\nexport interface xhsConfigData {\n fansNum: number;\n favedNum: number;\n watchNumLastWeek: number;\n likeNumLastWeek: number;\n collectNumLastWeek: number;\n commentNumLastWeek: number;\n fansNumLastWeek: number;\n fansNumYesterday: number;\n}\n\nexport interface wxConfigData {\n fansNum: number;\n fansNumYesterday: number;\n readNumYesterday: number;\n shareNumYesterday: number;\n}\n\nexport interface bjhConfigData {\n fansNum: number;\n fansNumYesterday: number | null;\n readNum: number;\n incomeNum: number;\n incomeNumYesterday: number | null;\n recommendNumYesterday: number | null;\n readNumYesterday: number | null;\n likeNumYesterday: number | null;\n commentNumYesterday: number | null;\n}\n\nexport interface SearchAccountInfoResponse {\n code: number;\n message: string;\n data: ttConfigData | xhsConfigData | wxConfigData | bjhConfigData | null;\n};\n\nexport const errorResponse = (\n message: string,\n code: number = 500\n): SearchAccountInfoResponse => ({\n code,\n message,\n data: null,\n});\n","// @ts-ignore\nimport { success } from \"@iflyrpa/share\";\nimport { SearchAccountInfoResponse, errorResponse, bjhConfigData } from \"./types\";\nimport { type SearchAccountInfoParams } from \".\";\nimport { Http } from \"../../utils/http\";\nimport { TimeFormatter } from \"../../utils\";\n\nexport async function getBaijiahaoData(params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n try {\n const { token } = params;\n if (!token) return errorResponse(\"缺少token\", 200);\n\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n token: String(token),\n Referer: \"https://baijiahao.baidu.com/builder/rc/home\",\n },\n });\n\n const yesterday = TimeFormatter.format(new Date().setDate(new Date().getDate() - 1), \"yyyyMMdd\");\n const [fansData, readData, incomeData, yesterdayData] = await Promise.all([\n http.api<{ data: { coreData: { fansCount: number; } } }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/pcui/home/index\",\n }),\n http.api<{ data: { total: { view_count: number; } } }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/author/eco/statistic/getauthorhistory\",\n }),\n http.api<{ data: { all_income: { total_income: number; yesterday_income: number; } } }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/author/eco/income4/homepageincome\",\n }),\n http.api<{ data: { data: { recommend_count: number; view_count: number; likes_count: number; comment_count: number; fans_increase: number; } } }>({\n method: \"get\",\n url: `https://baijiahao.baidu.com/author/eco/statistics/appStatistic`,\n params: {\n type: \"all\",\n is_yesterday: false,\n start_day: yesterday,\n end_day: yesterday,\n stat: 0,\n },\n }),\n ]);\n\n const bjhData: bjhConfigData = {\n fansNum: fansData.data.coreData.fansCount,\n fansNumYesterday: yesterdayData.data.data.fans_increase == -1 ? null : yesterdayData.data.data.fans_increase,\n readNum: readData.data.total.view_count,\n incomeNum: incomeData.data.all_income.total_income,\n incomeNumYesterday: incomeData.data.all_income.yesterday_income == -1 ? null : incomeData.data.all_income.yesterday_income,\n recommendNumYesterday: yesterdayData.data.data.recommend_count == -1 ? null : yesterdayData.data.data.recommend_count,\n readNumYesterday: yesterdayData.data.data.view_count == -1 ? null : yesterdayData.data.data.view_count,\n likeNumYesterday: yesterdayData.data.data.likes_count == -1 ? null : yesterdayData.data.data.likes_count,\n commentNumYesterday: yesterdayData.data.data.comment_count == -1 ? null : yesterdayData.data.data.comment_count,\n };\n\n return success(bjhData, \"百家号平台数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"百家号平台数据获取失败\");\n }\n}\n","// @ts-ignore\nimport {success} from \"@iflyrpa/share\";\nimport {SearchAccountInfoResponse, errorResponse, ttConfigData} from \"./types\";\nimport {type SearchAccountInfoParams} from \".\";\nimport {Http} from \"../../utils/http\";\n\nexport async function getToutiaoData(params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n const {cookies} = params;\n try {\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n },\n });\n\n const [totalData, contentDataYesterday] = await Promise.all([\n http.api<{\n data: {\n statistic: {\n data: {\n total_subscribe_count: string;\n total_read_play_count: string;\n total_income: number;\n yesterday_income: number;\n is_yesterday_income_ready: boolean;\n yesterday_fans?: string\n yesterday_play_count: string;\n yesterday_read_count: string;\n }\n }\n }\n }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/fe_api/home/merge_v2\",\n params: {app_id: 1231},\n }),\n http.api<{\n author_stat: {\n consume_data: { impression_count: number; go_detail_count: number; },\n interaction_data: { comment_count: number; digg_count: number; }\n }\n }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/agw/statistic/v2/content_stat\",\n params: {type: 0, app_id: 1231},\n }),\n ]);\n\n const isReday = totalData.data.statistic.data.yesterday_read_count !== undefined\n\n const ttData: ttConfigData = {\n fansNum: Number(totalData.data.statistic.data.total_subscribe_count),\n fansNumYesterday: totalData.data.statistic.data.yesterday_fans !== undefined ? Number(totalData.data.statistic.data.yesterday_fans) : null,\n readNum: Number(totalData.data.statistic.data.total_read_play_count),\n incomeNum: totalData.data.statistic.data.total_income,\n incomeNumYesterday: totalData.data.statistic.data.is_yesterday_income_ready ? totalData.data.statistic.data.yesterday_income : null,\n showNumYesterday: isReday ? contentDataYesterday.author_stat.consume_data.impression_count: null,\n readNumYesterday: isReday ? contentDataYesterday.author_stat.consume_data.go_detail_count : null,\n likeNumYesterday: isReday ? contentDataYesterday.author_stat.interaction_data.digg_count: null,\n commentNumYesterday: isReday ? contentDataYesterday.author_stat.interaction_data.comment_count: null,\n };\n\n return success(ttData, \"头条号粉丝数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"头条号数据获取失败\");\n }\n\n}","// @ts-ignore\nimport {success} from \"@iflyrpa/share\";\nimport {SearchAccountInfoResponse, errorResponse, wxConfigData} from \"./types\";\nimport {type SearchAccountInfoParams} from \".\";\nimport {Http} from \"../../utils/http\";\nimport {TimeFormatter} from \"../../utils\";\n\nexport async function getWeixinData(params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n const {token} = params;\n\n if (!token) return {code: 200, message: \"缺少token\", data: null};\n\n try {\n const {token} = params;\n if (!token) return errorResponse(\"缺少token\", 200);\n\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n },\n });\n const userInfo = {\n originalCount: 0,\n totalUsers: 0,\n userIncrease: 0,\n yesterday: {\n read: 0,\n share: 0,\n subscribe: 0\n }\n };\n const userInfoHtml = await http.api<string>({\n method: \"get\",\n url: \"https://mp.weixin.qq.com/cgi-bin/home\",\n params: {\n t: \"home/index\",\n token,\n lang: \"zh_CN\"\n },\n })\n\n // 提取原创内容(兼容属性、换行)\n const originalMatch = userInfoHtml.trim().match(/原创内容[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (originalMatch) userInfo.originalCount = parseInt(originalMatch[1].replace(/,/g, ''), 10);\n\n // 提取总用户数(兼容属性、空格)\n const totalUsersMatch = userInfoHtml.match(/总用户数[\\s\\S]*?<div[^>]*class=[\"']weui-desktop-user_sum[\"'][^>]*>[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (totalUsersMatch) userInfo.totalUsers = parseInt(totalUsersMatch[1].replace(/,/g, ''), 10);\n\n // 提取用户增长(支持正负号、带属性)\n const increaseMatch = userInfoHtml.match(/weui-desktop-user_increase_num[^>]*>\\s*([+-]?)\\s*<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (increaseMatch) {\n const sign = increaseMatch[1] === '-' ? -1 : 1;\n userInfo.userIncrease = sign * parseInt(increaseMatch[2].replace(/,/g, ''), 10);\n }\n\n // 昨日阅读\n const readMatch = userInfoHtml.match(/昨日阅读[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (readMatch) userInfo.yesterday.read = parseInt(readMatch[1].replace(/,/g, ''), 10);\n\n // 昨日分享\n const shareMatch = userInfoHtml.match(/昨日分享[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (shareMatch) userInfo.yesterday.share = parseInt(shareMatch[1].replace(/,/g, ''), 10);\n\n // 昨日新增关注\n const subscribeMatch = userInfoHtml.match(/昨日新增关注[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (subscribeMatch) userInfo.yesterday.subscribe = parseInt(subscribeMatch[1].replace(/,/g, ''), 10);\n\n const wxData: wxConfigData = {\n fansNum: userInfo.totalUsers,\n fansNumYesterday: userInfo.yesterday.subscribe,\n readNumYesterday: userInfo.yesterday.read,\n shareNumYesterday: userInfo.yesterday.share,\n };\n\n return success(wxData, \"微信平台数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"微信平台数据获取失败\");\n }\n}","// @ts-ignore\nimport { success } from \"@iflyrpa/share\";\nimport { SearchAccountInfoResponse, errorResponse, xhsConfigData } from \"./types\";\nimport { type SearchAccountInfoParams } from \".\";\nimport { Http } from \"../../utils/http\";\nimport { Xhshow } from \"../../utils/xhsXsEncrypt\";\n\nexport async function getXiaohongshuData(params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n\n try {\n const a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) {\n return errorResponse(\"账号数据异常,请重新绑定账号后重试。\", 200);\n }\n\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com\",\n origin: \"https://creator.xiaohongshu.com\",\n },\n });\n\n const xsEncrypt = new Xhshow();\n const xt = Date.now().toString();\n const sevenDataUrl = \"/api/galaxy/v2/creator/datacenter/account/base\";\n const xs = xsEncrypt.signXsGet(sevenDataUrl, a1Cookie, \"xhs-pc-web\", null );\n\n const [overAllData, sevenData] = await Promise.all([\n http.api<{ data: { fans_count: number; faved_count: number; } }>({\n method: \"get\",\n url: \"https://creator.xiaohongshu.com/api/galaxy/creator/home/personal_info\",\n }),\n http.api<{ data: { seven: { view_count: number; like_count: number; collect_count: number; comment_count: number; rise_fans_count: number; rise_fans_list: { data: number; count: number; }[] } } }>({\n method: \"get\",\n baseURL: \"https://creator.xiaohongshu.com\",\n url: sevenDataUrl,\n headers: { \"x-s\": xs, \"x-t\": xt },\n }),\n ]);\n\n const xhsData: xhsConfigData = {\n fansNum: overAllData.data.fans_count,\n favedNum: overAllData.data.faved_count,\n watchNumLastWeek: sevenData.data.seven.view_count,\n likeNumLastWeek: sevenData.data.seven.like_count,\n collectNumLastWeek: sevenData.data.seven.collect_count,\n commentNumLastWeek: sevenData.data.seven.comment_count,\n fansNumLastWeek: sevenData.data.seven.rise_fans_count,\n fansNumYesterday: sevenData.data.seven.rise_fans_list[0].count\n };\n\n return success(xhsData, \"小红书平台数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"小红书平台数据获取失败\");\n }\n}","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { ttConfigData, xhsConfigData, wxConfigData, bjhConfigData } from \"./types\";\nimport { getBaijiahaoData } from \"./getBjhInfo\";\nimport { getToutiaoData } from \"./getTTInfo\";\nimport { getWeixinData } from \"./getWxInfo\";\nimport { getXiaohongshuData } from \"./getXhsInfo\";\n\nexport interface SearchAccountInfoParams extends ActiomCommonParams {\n token?: string | number;\n platform: string;\n}\n\nexport const SearchAccountInfo: CommonAction<\nSearchAccountInfoParams,\nttConfigData | xhsConfigData | wxConfigData | bjhConfigData | null\n> = async (_task, params) => {\n const { platform } = params;\n switch (platform) {\n case \"toutiao\":\n return getToutiaoData(params);\n case \"xiaohongshu\":\n return getXiaohongshuData(params);\n case \"weixin\":\n return getWeixinData(params);\n case \"baijiahao\":\n return getBaijiahaoData(params);\n default:\n return success(null, \"暂不支持该平台\");\n }\n};","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface SearchBjhTopicListParams extends ActiomCommonParams {\n\ttoken: string;\n topicContent: string;\n}\n\nexport interface TopicData {\n\ttitle: string;\n\tid: string;\n}\n\nexport type PublishAction = CommonAction<SearchBjhTopicListParams, TopicData[]>;\n\nexport const searchBjhTopicList: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\ttoken: params.token,\n\t\t},\n\t});\n\n\tconst res = await http.api<{ errno: number; data: { hot: TopicData[] } }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/pcui/pcpublisher/searchtopic\",\n\t\tparams: {\n\t\t\tcontent: params.topicContent,\n resource_type: 1\n\t\t},\n\t});\n\n\treturn success(res?.data?.hot ?? [], \"百家号\" + (res.errno == 0 ? \"话题获取成功!\":\"话题获取失败\"));\n};\n","\n// 文章公共属性\ninterface BaseArticle {\n title: string; // 文章标题\n imageUrl: string; // 图片地址\n createTime: number; // 发布时间\n redirectUrl: string; // 文章网页端地址\n originalData?: any; // 原始数据,可选\n}\n\n// 平台特定文章属性\nexport interface ToutiaoArticle extends BaseArticle {\n showNum: number; // 展现量\n readNum: number; // 阅读量\n likeNum: number; // 点赞量\n commentNum: number; // 评论量\n}\n\nexport interface WeixinArticle extends BaseArticle {\n readNum: number; // 阅读人数\n likeNum: number; // 点赞人数\n shareNum: number; // 分享人数\n recommendNum: number; // 推荐人数\n}\n\nexport interface BaijiahaoArticle extends BaseArticle {\n recommendNum: number; // 推荐量\n collectNum: number; // 收藏量\n readNum: number; // 阅读量\n likeNum: number; // 点赞量\n commentNum: number; // 评论量\n shareNum: number; // 转发量\n}\n\nexport interface XiaohongshuArticle extends BaseArticle {\n readNum: number; // 阅读量\n likeNum: number; // 点赞量\n commentNum: number; // 评论量\n collectNum: number; // 收藏量\n shareNum: number; // 转发量\n}\n\n// 响应数据类型\nexport interface FetchArticlesData {\n articleCell?: (ToutiaoArticle | WeixinArticle | BaijiahaoArticle | XiaohongshuArticle)[];\n pagination?: {\n total?: number; // 总条数\n nextPage?: boolean; // 是否有下一页\n lastPage?: number; // 用于维系游标所在页,提高查询速度\n cursor?: number; // 返回最终游标\n pageNum: number; // 当前页\n pageSize: number; // 每页大小\n };\n}\n\nexport interface FetchArticlesResponse {\n code: number;\n message: string;\n data: FetchArticlesData | null\n}\n\nexport const errorResponse = (\n message: string,\n code: number = 500\n): FetchArticlesResponse => ({\n code,\n message,\n data: null,\n});\n","// @ts-ignore\nimport { success } from \"@iflyrpa/share\";\nimport { FetchArticlesResponse, errorResponse, ToutiaoArticle } from \"./types\";\nimport { type FetchArticlesParams } from \".\"\nimport { Http } from \"../../utils/http\";\n\ninterface ArticleResponse {\n itemCell: {\n actionCtrl: Record<string, unknown>;\n cellCtrl: {\n articleImageType: number;\n dspStyle: null | string;\n };\n extra: {\n answer_count: string;\n origin_content: string;\n };\n logPB: string;\n articleBase: {\n createTime: number;\n itemStatus: number;\n articleURL: string;\n displayFlags: string;\n gidStr: string;\n subTitle: string | null;\n title: string;\n abstractText: string;\n content: string;\n displayURL: string;\n groupID: number;\n publishTime: number;\n schema: string;\n visibilityLevel: number;\n };\n articleClassification: {\n bizTag: number;\n groupSource: number;\n isOriginal: boolean;\n isStick: boolean;\n isSubject: boolean;\n articleSubType: number;\n articleType: number;\n bizID: number;\n };\n containsElements: {\n hasImage: boolean;\n hasVideo: boolean;\n };\n imageList: {\n staggerFeedCover: ImageInfo[];\n thumbImageList: ImageInfo[];\n };\n itemCounter: {\n readCount: number;\n repinCount: number;\n showCount: number;\n videoWatchCount: number;\n commentCount: number;\n diggCount: number;\n };\n richContentInfo: {\n richContent: string;\n titleRichSpan: string;\n };\n shareInfo: {\n shareURL: string;\n };\n userInfo: {\n avatarURL: string;\n name: string;\n userID: number;\n };\n };\n}\n\ninterface ImageInfo {\n width: number;\n height: number;\n uri: string;\n url: string;\n}\nexport async function handleToutiaoData(params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n try {\n const {\n cookies,\n pageNum = 1,\n pageSize = 10,\n showOriginalData = false,\n onlySuccess = false,\n } = params;\n\n const http = new Http({\n headers: {\n cookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n },\n });\n\n const visitedUid = await http.api<{ user_id_str: string }>({\n url: \"https://mp.toutiao.com/mp/agw/creator_center/user_info?\",\n method: \"get\",\n params: { app_id: 1231 },\n })\n\n const articleInfo = await http.api<{ data: { assembleCell: ArticleResponse }[], total_number: number; api_base_info: { app_extra_params: string } }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/api/feed/mp_provider/v1/\",\n params: {\n provider_type: \"mp_provider\",\n aid: \"13\",\n app_name: \"news_article\",\n category: \"mp_all\",\n channel: \"\",\n stream_api_version: \"88\",\n genre_type_switch: '{\"repost\":1,\"small_video\":1,\"toutiao_graphic\":1,\"weitoutiao\":1,\"xigua_video\":1}',\n device_platform: \"pc\",\n platform_id: \"0\",\n visited_uid: visitedUid.user_id_str,\n offset: (pageNum - 1) * pageSize,\n count: pageSize,\n keyword: \"\",\n client_extra_params: `{\"category\":\"mp_all\",\"real_app_id\":\"1231\",\"need_forward\":\"true\",\"offset_mode\":\"1\",\"page_index\":\"1\",\"status\":${onlySuccess ? \"2\" : \"8\"},\"source\":\"0\"}`,\n app_id: \"1231\"\n },\n });\n\n const articleCell: ToutiaoArticle[] = articleInfo.data.map((item) => ({\n title: item.assembleCell.itemCell.articleBase.title,\n imageUrl: item.assembleCell.itemCell.imageList.staggerFeedCover[0].url,\n createTime: item.assembleCell.itemCell.articleBase.publishTime,\n redirectUrl: item.assembleCell.itemCell.articleBase.articleURL,\n showNum: item.assembleCell.itemCell.itemCounter.showCount,\n readNum: item.assembleCell.itemCell.itemCounter.readCount,\n likeNum: item.assembleCell.itemCell.itemCounter.diggCount,\n commentNum: item.assembleCell.itemCell.itemCounter.commentCount,\n ...(showOriginalData ? {\n originalData: item,\n // articleStates: item.assembleCell.itemCell.articleBase.itemStatus == 20 ? 1: item.assembleCell.itemCell.articleBase.itemStatus == 10? 5 : ; // 文章状态:1发布成功,4发布失败,5审核中,7已过期\n } : {}),\n }));\n const api_base_info_json: { total_count: number } = JSON.parse(articleInfo.api_base_info.app_extra_params)\n return success(\n {\n articleCell,\n ...(onlySuccess ? {\n pagination: {\n total: api_base_info_json.total_count,\n pageNum,\n pageSize,\n }\n } : null),\n },\n \"头条号文章文章获取成功\"\n );\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"头条号文章数据获取失败\");\n }\n}","// @ts-ignore\nimport {success} from \"@iflyrpa/share\";\nimport {Http} from \"../../utils/http\";\nimport {FetchArticlesResponse, errorResponse, WeixinArticle} from \"./types\";\nimport {type FetchArticlesParams} from \".\"\nimport {it} from \"vitest\";\n\ninterface PublishInfo {\n type: number;\n msgid: number;\n sent_result: {\n reject_index_list: any[];\n };\n appmsg_info: Array<{\n share_type: number;\n appmsgid: number;\n content_url: string;\n title: string;\n is_deleted: boolean;\n copyright_status: number;\n copyright_type: number;\n read_num: number;\n like_num: number;\n comment_id: string;\n is_comment_enable: boolean;\n comment_num: number;\n vote_id: any[];\n super_vote_id: any[];\n cover: string;\n smart_product: number;\n modify_status: number;\n appmsg_like_type: number;\n can_delete_status: number;\n old_like_num: number;\n itemidx: number;\n is_pay_subscribe: number;\n is_from_transfer: number;\n public_tag_info: {\n public_tag_list: any[];\n modify_times: number;\n init_tag_list_size: number;\n };\n appmsg_album_info: {\n appmsg_album_infos: any[];\n };\n digest: string;\n is_cooling_article: number;\n pic_cdn_url_235_1: string;\n pic_cdn_url_16_9: string;\n pic_cdn_url_3_4: string;\n pic_cdn_url_1_1: string;\n disable_recommend: number;\n line_info: {\n use_line: number;\n line_count: number;\n send_time: number;\n is_appmsg_flag: number;\n is_use_flag: number;\n };\n claim_source_type: number;\n share_num: number;\n is_rumor_refutation: number;\n segment_comment_id: string;\n is_segment_comment_enable: boolean;\n multi_picture_cover: number;\n share_imageinfo: any[];\n moment_like_num: number;\n item_show_type: number;\n }>;\n appmsgex: any[];\n copy_appmsg_id: number;\n new_publish: number;\n}\n\ninterface BasePublishItem<T = string> {\n publish_type: number;\n publish_info: T;\n}\n\ninterface BaseParsedPublishPage<T = string> {\n total_count: number;\n publish_count: number;\n masssend_count: number;\n publish_list: BasePublishItem<T>[];\n featured_count: number;\n}\n\n\ntype ParsedPublishPage = BaseParsedPublishPage<PublishInfo>;\n\n\nexport async function handleWeixinData(params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n try {\n const {\n cookies,\n token,\n pageNum = 1,\n pageSize = 10,\n showOriginalData = false,\n onlySuccess = false,\n cursor,\n lastPage,\n } = params;\n if (!token) return {code: 200, message: \"缺少token\", data: null};\n const http = new Http({\n headers: {\n cookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\")\n },\n });\n\n const ParsePublishPage = (body: string): ParsedPublishPage => {\n\n const match = body.match(/publish_page\\s*=\\s*({[\\s\\S]*?});/);\n if (!match) {\n throw new Error('无法提取 publish_page 字段');\n }\n\n let parsedData = JSON.parse(match[1]);\n\n // HTML 实体解码函数\n const decodeEntities = function (str: string, decode: boolean = false) {\n const encodeMap = [\"&\", \"&amp;\", \"<\", \"&lt;\", \">\", \"&gt;\", \" \", \"&nbsp;\", '\"', \"&quot;\", \"'\", \"&#39;\"];\n const decodeMap = [\"&#39;\", \"'\", \"&quot;\", '\"', \"&nbsp;\", \" \", \"&gt;\", \">\", \"&lt;\", \"<\", \"&amp;\", \"&\", \"&#60;\", \"<\", \"&#62;\", \">\"];\n const map = decode ? decodeMap : encodeMap;\n\n let result = str;\n for (let i = 0; i < map.length; i += 2) {\n result = result.replace(new RegExp(map[i], \"g\"), map[i + 1]);\n }\n return result;\n };\n\n const finalData = {\n ...parsedData,\n publish_list: parsedData.publish_list.map((item: { publish_info: string; publish_type: number; }) => {\n const decoded = decodeEntities(item.publish_info, true);\n const parsedInfo = JSON.parse(decoded);\n return {\n publish_type: item.publish_type,\n publish_info: parsedInfo,\n };\n }),\n };\n\n return finalData;\n };\n\n async function fetchArticles(\n begin: number,\n pageSize: number,\n token: string | number,\n ): Promise<string> {\n return http.api<string>({\n method: \"get\",\n url: 'https://mp.weixin.qq.com/cgi-bin/appmsgpublish',\n params: {\n sub: \"list\",\n begin: begin,\n count: pageSize,\n token: token,\n lang: \"zh_CN\"\n }\n });\n }\n\n let size = onlySuccess ? 10 : pageSize > 20 ? 20 : pageSize;\n let begin = (lastPage ?? pageNum) - 1; // 转换为 0-based index\n let rawArticlesInfo = await fetchArticles(begin * size, size, token);\n let articlesInfo = ParsePublishPage(rawArticlesInfo);\n let articleCell: WeixinArticle[] = [];\n\n if (!onlySuccess && pageSize > 20) {\n let totalFetched = articlesInfo.publish_list.length;\n let nextPage = pageNum + 1;\n\n while (totalFetched < pageSize) {\n const remaining = pageSize - totalFetched;\n const currentPageSize = remaining > 20 ? 20 : remaining;\n\n let _rawArticlesInfo = await fetchArticles((nextPage - 1) * 20, currentPageSize, token);\n let parsed = ParsePublishPage(_rawArticlesInfo);\n\n articlesInfo.publish_list = articlesInfo.publish_list.concat(parsed.publish_list);\n totalFetched = articlesInfo.publish_list.length;\n\n if (parsed.publish_list.length < currentPageSize) break;\n nextPage++;\n }\n }\n\n let nextPage = false;\n if (onlySuccess) {\n let filteredList = articlesInfo.publish_list\n .filter((item) => item.publish_info.appmsg_info[0].content_url.indexOf(\"tempkey\") == -1)\n .map((item) => item.publish_info);\n\n if (cursor) {\n const cursorIndex = filteredList.findIndex((item) => item.msgid === cursor);\n if (cursorIndex !== -1) filteredList = filteredList.slice(cursorIndex + 1);\n }\n\n let totalFetched = filteredList.length;\n\n while (totalFetched < pageSize && begin * size < articlesInfo.total_count) {\n begin += 1; // 页数递增\n let nextRawArticlesInfo = await fetchArticles(begin * size, size, token);\n let nextArticlesInfo = ParsePublishPage(nextRawArticlesInfo);\n const newFiltered = nextArticlesInfo.publish_list\n .filter((item) => item.publish_info.appmsg_info[0].content_url.indexOf(\"tempkey\") == -1)\n .map((item) => item.publish_info);\n filteredList = filteredList.concat(newFiltered);\n totalFetched = filteredList.length;\n }\n\n filteredList = filteredList.slice(0, pageSize);\n totalFetched = filteredList.length;\n\n if (totalFetched >= pageSize && begin * size < articlesInfo.total_count) {\n let nextRawArticlesInfo = await fetchArticles((begin + 1) * size, size, token);\n let nextArticlesInfo = ParsePublishPage(nextRawArticlesInfo);\n nextPage = nextArticlesInfo.publish_list.length > 0 && nextArticlesInfo.publish_list.some((item) => item.publish_info.appmsg_info[0].content_url.indexOf(\"tempkey\") == -1);\n }\n\n const lastMsgId = filteredList.length > 0 ? filteredList[filteredList.length - 1].msgid : undefined;\n articleCell = filteredList.map((item) => ({\n title: item.appmsg_info[0].title,\n imageUrl: item.appmsg_info[0].cover,\n createTime: item.appmsg_info[0].line_info.send_time,\n redirectUrl: item.appmsg_info[0].content_url,\n readNum: item.appmsg_info[0].read_num,\n likeNum: item.appmsg_info[0].old_like_num,\n shareNum: item.appmsg_info[0].share_num,\n recommendNum: item.appmsg_info[0].like_num,\n ...(showOriginalData ? {originalData: item} : {}),\n }));\n\n return success(\n {\n articleCell,\n pagination: {\n nextPage,\n pageNum,\n pageSize,\n lastPage: begin + 1, // 返回当前页数\n cursor: lastMsgId, // 返回最后一条的 msgid\n }\n },\n \"微信文章文章获取成功\"\n );\n }\n\n articleCell = articlesInfo.publish_list.map((item) => ({\n title: item.publish_info.appmsg_info[0].title,\n imageUrl: item.publish_info.appmsg_info[0].cover,\n createTime: item.publish_info.appmsg_info[0].line_info.send_time,\n redirectUrl: item.publish_info.appmsg_info[0].content_url,\n readNum: item.publish_info.appmsg_info[0].read_num,\n likeNum: item.publish_info.appmsg_info[0].old_like_num,\n shareNum: item.publish_info.appmsg_info[0].share_num,\n recommendNum: item.publish_info.appmsg_info[0].like_num,\n ...(showOriginalData ? {originalData: item} : {}),\n }));\n return success(\n {\n articleCell,\n },\n \"微信文章文章获取成功\"\n );\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"微信文章数据获取失败\");\n }\n}\n","// @ts-ignore\nimport { success } from \"@iflyrpa/share\";\nimport { FetchArticlesResponse, errorResponse, BaijiahaoArticle } from \"./types\";\nimport { type FetchArticlesParams } from \".\"\nimport { Http } from \"../../utils/http\";\n\ninterface ArticleInfo {\n abstract: string;\n antispam_code: number;\n app_id: string;\n article_id: string;\n article_set_nids: string;\n audit_msg: string;\n authentication_type: string;\n auto_generate_id: string;\n bad_status: string;\n bjh_ext_info: string;\n bjh_video_finger_printing: string;\n call_slot: number;\n commit_at: string;\n content?: string;\n cover_images: string;\n cover_layout: string;\n created_at: string;\n creative_method: string;\n deleted_at: string;\n displaytype_exinfo: string;\n domain: string;\n dst_status: string;\n ext_info: string;\n feed_cat: string;\n feed_id: string;\n feed_id_from: number;\n feed_push_amount: number;\n feed_rs: string;\n feed_source_id: string;\n feed_sub_cat: string;\n file_name: string;\n first_exclusive_publish: number;\n first_storage_time: number;\n has_edited_times: number;\n is_authenticated: number;\n is_feed_import: number;\n is_good: number;\n is_pay: number;\n is_published: number;\n is_reported: number;\n is_transfer?: number;\n is_tagged: number;\n is_wx_spread: number;\n issue_status: number;\n midway_issue_status: number;\n mount_goods: number;\n mthvideo: number;\n news_mount: any[];\n nid: string;\n open_comment: number;\n open_front_page: number;\n origin_app_id: string;\n origin_id: string;\n origin_url: string;\n original_status: number;\n pay_money: number;\n platform_source: number;\n provider: string;\n publish_at: string;\n publish_time: string;\n publish_type: string;\n quality: number;\n quality_audit_type: string;\n quality_not_pass_reason: string;\n quality_status: string;\n res_slot: string;\n secure_not_pass_reason: string;\n secure_status: string;\n shoubai_c_articleid: string;\n smp_url: string;\n source_name: string;\n source_reprinted_allow: number;\n source_reprinted_astrict: string;\n source_type: string;\n status: string;\n sub_status_id: number;\n subtitle: string;\n tag: string;\n tag_detail: string;\n title: string;\n top_end: number;\n top_st: number;\n tp_id: string;\n transform_id: string;\n trigger_odyssey: number;\n type: string;\n updated_at: string;\n url: string;\n vertical_cover: string;\n video_sub_type: number;\n video_tag: string;\n weixin_import_type: number;\n id: string;\n goods_list: any[];\n certify_url: string;\n timer_time: number;\n similar_article_id: string;\n article_push_audit_res: number;\n withdraw_status: {\n withdraw_msg: string;\n has_withdraw_times: {\n news: number;\n };\n can_withdraw: number;\n };\n modify_status: {\n edit_msg: string;\n can_edit: number;\n };\n delete_status: {\n delete_msg: string;\n can_delete: number;\n };\n recover_status: {\n recover_msg: string;\n can_recover: number;\n };\n activity_list: any[];\n can_edit_goods: number;\n recomm_status: {\n can_recomm: number;\n };\n dxxFinalAuditResult: string;\n read_amount: number;\n read_num: number;\n forward_num: number;\n praise_num: number;\n comment_num: number;\n rec_amount: number;\n comment_amount: number;\n share_amount: number;\n like_amount: number;\n collection_amount: number;\n profit: number;\n is_rec: number;\n activity_ids: any[];\n solicit_info: {\n tag: string | null;\n point: string | null;\n inspire: string | null;\n };\n group_can_share: number;\n group_already_shared: number;\n show_selected_comment_option: number;\n show_ai_intro: number;\n flow_invest_status: number;\n flow_invest_msg: string;\n package_invest_status: number;\n can_only_modify_goods: number;\n audit_msg_color: string;\n audit_msg_icon: string;\n playlet_pay2free_switch: number;\n audit_type_v0: string;\n is_ridewind: string;\n is_show_adding: string;\n is_show_add_view: string;\n add_view_count: string;\n coupons_add_view_count: string;\n platform_add_view_count: string;\n rec_count: number;\n share_url: string;\n v_type: number;\n v_intro: string;\n duration: number | null;\n video_num: number;\n};\n\ntype ArticleApiResponse = {\n data: {\n list: ArticleInfo[];\n page: {\n currentPage: number;\n pageSize: number;\n totalCount: number;\n totalPage: number;\n };\n };\n\n};\n\nexport async function handleBaijiahaoData(params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n try {\n const {\n cookies,\n token,\n pageNum = 1,\n pageSize = 10,\n showOriginalData = false,\n onlySuccess = false,\n } = params;\n\n if (!token) return { code: 200, message: \"缺少token\", data: null };\n const http = new Http({\n headers: {\n cookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n token: token\n },\n });\n\n async function fetchArticles(\n pageNum: number,\n pageSize: number,\n onlySuccess: boolean = false\n ): Promise<ArticleApiResponse> {\n return await http.api<ArticleApiResponse>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/pcui/article/lists\",\n params: {\n currentPage: pageNum,\n pageSize: pageSize,\n search: \"\",\n type: \"\",\n collection: onlySuccess ? \"publish\" : \"\",\n clearBeforeFetch: false,\n dynamic: 1,\n },\n });\n };\n\n\n const articleInfo = await fetchArticles(pageNum, pageSize, onlySuccess);\n let filtered = articleInfo.data.list.filter(item => item.status !== \"draft\");\n const totalPage = articleInfo.data.page?.totalPage || 1;\n\n let currentPage = pageNum + 1;\n const usedPages = new Set<number>();\n while (filtered.length < pageSize && currentPage <= totalPage) {\n if (usedPages.has(currentPage)) {\n currentPage++;\n continue;\n }\n\n const res = await fetchArticles(currentPage, pageSize, onlySuccess);\n usedPages.add(currentPage);\n\n const validItems = res.data.list.filter(item => item.status !== \"draft\");\n filtered.push(...validItems);\n\n currentPage++;\n }\n\n // 截取前 pageSize 条返回\n const final = filtered.slice(0, pageSize);\n\n // 转换结构\n const articleCell: BaijiahaoArticle[] = final.map((item) => ({\n title: item?.is_transfer ?? false ? item.content|| \"\" : item.title ,\n imageUrl: JSON.parse(item.cover_images)[0]?.src || \"\",\n createTime: Math.floor(new Date(item.publish_at.replace(/-/g, \"/\")).getTime() / 1000),\n redirectUrl: item.url || item.share_url,\n recommendNum: item.rec_amount | item.forward_num,\n collectNum: item.collection_amount,\n readNum: item.read_amount | item.read_num,\n likeNum: item.like_amount | item.praise_num,\n commentNum: item.comment_amount | item.comment_num,\n shareNum: item.share_amount,\n ...(showOriginalData ? { originalData: item } : {}),\n }));\n\n return success(\n {\n articleCell,\n ...(onlySuccess ? {\n pagination: {\n total: articleInfo.data.page?.totalCount,\n pageNum,\n pageSize,\n }\n } : null),\n },\n \"百家号文章数据获取成功\"\n );\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"百家号文章数据获取失败\");\n }\n}\n","// @ts-ignore\nimport { success } from \"@iflyrpa/share\";\nimport { FetchArticlesResponse, errorResponse, XiaohongshuArticle } from \"./types\";\nimport { type FetchArticlesParams } from \".\"\nimport { Http } from \"../../utils/http\";\nimport { Xhshow } from \"../../utils/xhsXsEncrypt\";\n\ninterface Note {\n id: string;\n sticky: boolean;\n schedule_post_time: number;\n comments_count: number;\n tab_status: number;\n display_title: string;\n time: string;\n view_count: number;\n shared_count: number;\n images_list: {\n url: string;\n }[];\n permission_code: number;\n permission_msg: string;\n level: number;\n xsec_token: string;\n xsec_source: string;\n type: string;\n likes: number;\n collected_count: number;\n goods_info: {\n goods_name: string[];\n };\n}\ntype ArticleApiResponse = {\n data: {\n notes: Note[];\n page: number;\n tags: {\n notes_count: number;\n }[]\n }\n\n}\nexport async function handleXiaohongshuData(params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n try{\n const {\n cookies,\n pageNum = 1,\n pageSize = 10,\n showOriginalData = false,\n onlySuccess = false,\n } = params;\n\n const xsEncrypt = new Xhshow();\n const a1Cookie = cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) return { code: 200, message: \"账号数据异常\", data: null };\n if (onlySuccess && pageSize != 10) return { code: 200, message: \"小红书pageSize不可修改\", data: null };\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com\",\n origin: \"https://creator.xiaohongshu.com\",\n },\n });\n\n async function fetchArticles(\n pageNum: number,\n a1Cookie: string,\n onlySuccess: boolean = false\n ): Promise<ArticleApiResponse> {\n const xt = Date.now().toString();\n const serveUrl = `/web_api/sns/v5/creator/note/user/posted`;\n const serveParams = {\n tab: onlySuccess ? 1 : 0,\n page: pageNum - 1\n }\n const xs = xsEncrypt.signXsGet(serveUrl, a1Cookie, \"xhs-pc-web\" ,serveParams);\n return await http.api<ArticleApiResponse>({\n method: \"get\",\n baseURL: \"https://edith.xiaohongshu.com\",\n url: serveUrl,\n headers: { \"x-s\": xs, \"x-t\": xt },\n params: serveParams\n });\n };\n const articleInfo = await fetchArticles(pageNum, a1Cookie, onlySuccess)\n\n let hasNextpage = articleInfo.data.page != -1;\n let filtered = articleInfo.data.notes;\n let currentPage = pageNum + 1;\n const usedPages = new Set<number>();\n while (filtered.length < pageSize && hasNextpage) {\n if (usedPages.has(currentPage)) {\n currentPage++;\n continue;\n }\n\n const res = await fetchArticles(currentPage, a1Cookie, onlySuccess);\n usedPages.add(currentPage);\n\n const validItems = res.data.notes\n filtered.push(...validItems);\n\n currentPage++;\n hasNextpage = res.data.page != -1;\n }\n\n const final = filtered.slice(0, pageSize);\n const articleCell: XiaohongshuArticle[] = final.map((item) => ({\n title: item.display_title,\n imageUrl: item.images_list[0].url,\n createTime: Math.floor(new Date(item.time.replace(/-/g, \"/\")).getTime() / 1000),\n redirectUrl: `https://www.xiaohongshu.com/explore/${item.id}?xsec_token=${item.xsec_token}&xsec_source=pc_creatormng`,\n readNum: item.view_count,\n likeNum: item.likes,\n commentNum: item.comments_count,\n collectNum: item.collected_count,\n shareNum: item.shared_count,\n // articleStates: item.status,\n ...(showOriginalData ? { originalData: item } : {}),\n }));\n\n return success(\n {\n articleCell,\n ...(onlySuccess ? {\n pagination: {\n nextPage: hasNextpage,\n pageNum,\n pageSize,\n }\n } : null),\n },\n \"小红书文章数据获取成功\"\n );\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"小红书文章数据获取失败\");\n }\n\n}\n","// @ts-ignore\nimport { success, type CommonAction } from \"@iflyrpa/share\";\nimport { FetchArticlesData } from \"./types\";\nimport { handleToutiaoData } from \"./handleTTData\";\nimport { handleWeixinData } from \"./handleWXData\";\nimport { handleBaijiahaoData } from \"./handleBjhData\";\nimport { handleXiaohongshuData } from \"./handleXhsData\";\nimport type { ActiomCommonParams } from \"../../types\";\n\n// 请求参数接口\nexport interface FetchArticlesParams extends ActiomCommonParams {\n platform: string; // 社交平台:weixin, toutiao, baijiahao, xiaohongshu\n token?: string | number; // 微信和百家号需要\n pageNum?: number; // 当前页,默认1\n pageSize?: number; // 每页大小,默认10\n size?: number; // 获取前多少篇文章(不含草稿),默认获取全部\n onlySuccess?: boolean; // 是否仅获取发布成功的文章,默认false\n showOriginalData?: boolean; // 是否展示原始数据,默认false\n cursor?: number; // 仅用于微信分页游标,默认为空\n lastPage?: number;\n }\n\nexport const FetchArticles: CommonAction<FetchArticlesParams, FetchArticlesData | null> = async (_task, params) => {\n const { platform } = params;\n switch (platform) {\n case \"toutiao\":\n return handleToutiaoData(params);\n case \"weixin\":\n return handleWeixinData(params);\n case \"baijiahao\":\n return handleBaijiahaoData(params);\n case \"xiaohongshu\":\n return handleXiaohongshuData(params);\n default:\n return success(null, \"暂不支持该平台\");\n }\n};","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetWeixinConfigParams extends ActiomCommonParams {\n\ttoken: string | number;\n}\n\ninterface QuotaDetail {\n\toriginal_quota: number;\n\tquota: number;\n\tstr_date: string;\n}\n\ninterface QuotaDetailResponse {\n\tbase_resp: { err_msg: string ,ret: number },\n\tquota_detail_list: { quota_item_list: QuotaDetail, quota_type: string }[];\n}\n\n\nexport interface ConfigData {\n\tpublishQuota: QuotaDetail[];\n}\n\nexport type PublishAction = CommonAction<GetWeixinConfigParams, ConfigData>;\n\nexport const getWeixinConfig: PublishAction = async (_task, params) => {\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\")\n\t\t},\n\t});\n const fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\n\tconst res = await http.api<QuotaDetailResponse>({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssendpage\",\n\t\tparams: {\n\t\t\tf: 'json',\n\t\t\ttoken: params.token,\n\t\t\tlang: 'zh_CN',\n\t\t\tajax: 1,\n\t\t\tfingerprint: fingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t},\n\t});\n\tconst filtered = {\n\t\tpublishQuota : res.base_resp.ret === 0? res.quota_detail_list\n\t\t.filter(item => item.quota_type === \"kQuotaTypeMassSendNormal\")\n\t\t.map(item => item.quota_item_list): [],\n\t}\n\treturn success(filtered, res.base_resp.ret === 0 ? \"微信配置信息获取成功!\" : \"微信配置信息获取失败!\");\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetWeixinCollectionParams extends ActiomCommonParams {\n\ttoken: string | number;\n}\n\nexport interface CollectDetailResponse {\n\tbase_resp: { err_msg: string ,ret: number },\n\tlist_resp: { items: CollectDetail[]; total: number; };\n}\n\nexport interface CollectDetail { \n continous_read_on: number;\n cover_url: string;\n create_time: number;\n id: string;\n is_ban: number;\n is_updating: number;\n need_pay: number;\n title: string;\n total: number;\n type: number;\n update_time: number;\n url: string;\n uv: number;\n}\n\nexport type PublishAction = CommonAction<GetWeixinCollectionParams, CollectDetail[]>;\n\nexport const getWeixinCollection: PublishAction = async (_task, params) => {\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\")\n\t\t},\n\t});\n const fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\n\tconst res = await http.api<CollectDetailResponse>({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/appmsgalbummgr\",\n\t\tparams: {\n action: 'list',\n begin: 0,\n count: 100,\n sub_title:'',\n type: 0,\n latest: 1,\n need_pay: 0,\n fingerprint,\n token: params.token,\n lang: 'zh_CN',\n f: 'json',\n ajax: 1\n\t\t},\n\t});\n\n\treturn success(res.list_resp.items, res.base_resp.ret === 0 ? \"微信合计信息获取成功!\" : \"微信合集信息获取失败!\");\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface CollectionResponse {\n success: boolean;\n result: number;\n data: {\n userDetail:{\n id: string;\n nickname: string;\n url: string;\n }\n collections: CollectionDetail[]\n };\n}\n\nexport interface CollectionDetail {\n id: string;\n name: string;\n desc: string;\n userId: string;\n noteNum: number;\n viewNum: number;\n cursor: string;\n enabled: boolean;\n status: number;\n createTime: number;\n unreadCount: number;\n coverImage: null,\n deeplink: string;\n}\n\nexport type PublishAction = CommonAction<ActiomCommonParams, CollectionDetail[]>;\n\nexport const getXhsCollection: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://creator.xiaohongshu.com\",\n\t\t\torigin: \"https://creator.xiaohongshu.com\",\n\t\t},\n\t});\n\n\ttry {\n\t\tconst res = await http.api<CollectionResponse>({\n\t\t\tmethod: \"get\",\n\t\t\turl: \"https://creator.xiaohongshu.com/api/galaxy/user/my-info\",\n\t\t});\n\n\t\treturn success(res.result === 0 ? res.data.collections : [],\"合集信息获取\" + (res.result === 0 ? \"成功!\": `失败!`));\n\t} catch (error) {\n\t\treturn success([]);\n\t}\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\nimport { Http } from \"../../utils/http\"\n\nimport type { PublishAction } from \".\";\nimport type { Toutiao } from \"../../types\";\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\torigin: \"https://mp.toutiao.com\",\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\t// 0. 校验登录\n\tconst userInfoRes = await http.api<{ code: number }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/agw/creator_center/user_info\",\n });\n\n\tif (userInfoRes.code !== 0) {\n return { code: 0, message: \"登录失效\", data: userInfoRes };\n\t}\n\n\t// 1. 上传图片\n\tconst imageList: string[] = [];\n\tif (params.banners && params.banners.length > 0) {\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tconst res = await Promise.all(\n\t\t\timages.map(async (it) => {\n\t\t\t\tconst formData = new FormData();\n\t\t\t\tformData.append(\"image\", fs.createReadStream(it));\n\n\t\t\t\tconst response = await http.api<{ data: Toutiao.ImageData }>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://mp.toutiao.com/spice/image?upload_source=20020003&aid=1231&device_platform=web\",\n\t\t\t\t\tdata: formData,\n\t\t\t\t});\n\n\t\t\t\treturn response.data;\n\t\t\t}),\n\t\t);\n\n\t\timageList.push(...res.map((it) => it.image_uri));\n\t}\n\n\t// 2. 构造发布数据\n\tconst extra = {\n\t\tadd_music_to_article_flag: \"0\", // 开启配乐\n\t\tclaim_exclusive: \"0\", // 原创&首发声明\n\t\ttuwen_wtt_trans_flag: \"0\",\n\t\tinfo_source: JSON.stringify({\n\t\t\tsource_type: 5,\n\t\t\tsource_author_uid: \"\",\n\t\t\ttime_format: \"\",\n\t\t\tposition: {},\n\t\t}),\n\t\tugc_position: JSON.stringify({\n\t\t\taddress: \"\",\n\t\t\tposition: \"合肥市\",\n\t\t\tcity: \"合肥市\",\n\t\t\tlongitude: 117.227289,\n\t\t\tlatitude: 31.82057,\n\t\t\tpoi_type_code: \"190104\",\n\t\t\tpoi_id: \"22535659123306003\",\n\t\t}),\n\t};\n\n\tconst syncData = {\n\t\tcontent: params.content, // 正文,\n\t\timage_list: imageList, // 图片列表\n\t\tis_fans_article: 2,\n\t\tpre_upload: 1,\n\t\twelfare_card: \"\",\n\t\textra: JSON.stringify(extra),\n\t};\n\n const res = await http.api<any>({\n method: \"post\",\n url: \"https://mp.toutiao.com/mp/agw/article/wtt\",\n data: syncData,\n });\n\n return success(res.data)\n};\n","import path from \"node:path\";\nimport type { CookieMap } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport type { PublishAction } from \"./index\";\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"mp.toutiao.com\",\n\t\turl: \"https://mp.toutiao.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://mp.toutiao.com/profile_v4/weitoutiao/publish\",\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\tconst tmpCachePath = task.getTmpPath();\n\n\t// 0. 判断是否登录\n\ttry {\n\t\tawait page.waitForSelector(\".publish-box\");\n\t} catch (error) {\n\t\treturn { code: 0, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 1. 添加正文\n\tconst descInstance = page.locator(\".syl-editor .ProseMirror\");\n\tawait descInstance.click();\n\tawait descInstance.fill(params.content);\n\n\t// 2. 添加图片\n\tif (params.banners && params.banners?.length > 0) {\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait page.locator(\".toolbar .syl-toolbar-tool.weitoutiao-image-plugin\").click();\n\t\tawait page.locator(\".byte-drawer.mp-ic-img-drawer button.byte-btn\").filter({ hasText: \"本地上传\" }).click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles(images);\n\n\t\tawait page.locator(\".byte-drawer.mp-ic-img-drawer .footer button.byte-btn\").filter({ hasText: \"确定\" }).click();\n\t}\n\n\t// 滚动到底部\n\tawait page.mouse.wheel(0, 500); // 向下滚动 500 像素\n\n\t// 3. 添加位置\n\tif (params.address) {\n\t\tconst addressFormItem = page.locator(\".img-form-wrap .form-item-wrap .form-item\").filter({ hasText: \"添加位置\" });\n\t\tawait addressFormItem.locator(\".byte-select\").click();\n\t\tawait addressFormItem.locator(\".byte-select-view-search input\").fill(params.address);\n\t\tconst poperInstance = page.locator(\".byte-trigger .byte-select-popup .byte-select-option\");\n\t\tawait poperInstance.first().waitFor();\n\t\tawait poperInstance.first().click();\n\t}\n\n\t// 4. 作品声明\n\tif (params.declaration) {\n\t\tconst declarationFormItem = page\n\t\t\t.locator(\".img-form-wrap .form-item-wrap .form-item\")\n\t\t\t.filter({ hasText: \"作品声明\" })\n\t\t\t.locator(\".source-info-wrap\");\n\t\tawait declarationFormItem.locator(`.byte-checkbox:has(input[value=\"${params.declaration}\"])`).click();\n\t}\n\n\t// 5. 发布\n\tawait page.locator(\".footer-wrap button.publish-content\").click();\n\n\treturn success(\"\");\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\n\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\n/**\n * 作品声明\n * 1:引用站内\n * 3:引用AI\n * 4:取材网络\n * 5:个人观点,仅供参考\n * 6:虚构演绎,故事经历\n * 7:投资观点,仅供参考\n * 8:健康医疗分享,仅供参考\n */\ntype DeclarationType = 1 | 3 | 4 | 5 | 6 | 7 | 8;\n\nexport interface WeitoutiaoPublishParams extends ActiomCommonParams {\n\tcontent: string;\n\tbanners?: string[];\n\taddress?: string;\n\tdeclaration?: DeclarationType;\n}\n\nexport type PublishAction = CommonAction<WeitoutiaoPublishParams>;\n\nexport const weitoutiaoPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","export const scanRetryMaxCount = 30;\n\nexport const QuotaType = {\n\tNormal: \"kQuotaTypeMassSendNormal\",\n\tProductActivity: \"kQuotaTypeMassSendProductActivity\",\n};\n\nexport interface QuotaItem {\n\toriginal_quota: number;\n\tquota: number;\n\tstr_date: string;\n}\n\nexport interface QuotaDetail {\n\tquota_item_list: QuotaItem[];\n\tquota_type: string;\n}\n\n\n/**\n * 生成微信话题 HTML 代码\n * @param topics - 话题数组\n * @returns 生成的 HTML 字符串\n */\nexport function genTopicHTML(topics: string[]): string {\n if (!topics || topics.length === 0) return \"\";\n const rn = (): string => {\n const O = Date.now().toString(36);\n const B = Math.random().toString(36).substring(2, 8);\n return `${O}-${B}`;\n };\n const aTags = topics\n .map(topic => {\n return `<a class=\"wx_topic_link\" topic-id=\"${rn()}\" style=\"color: #576B95 !important;\" data-topic=\"1\">#${topic}</a>`;\n })\n .join(\"&nbsp;\");\n\n return `<p style=\"line-height: 1.75;margin: 0px 0px 24px;padding: 0px;\" data-bothblock=\"0px\"><span leaf=\"\">${aTags}</span></p>`;\n}\n","import fs, { write } from \"node:fs\";\n// import https from \"node:https\";\nimport path from \"node:path\";\nimport { type ResponseData, downloadImage, getFilenameFromUrl, randomString, sleep, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\nimport { extractImgTag, getFileState, replaceImgSrc } from \"../../utils\";\nimport { Http } from \"../../utils/http\";\nimport type { PublishAction, WeixinPublishParams , WxWhitelistUserInfo, WxInteraction} from \"./index\";\nimport { type QuotaDetail, QuotaType, scanRetryMaxCount, genTopicHTML } from \"./utils\";\n\ntype CommonResponse<T = unknown> = T & {\n\tbase_resp?: { err_msg: string; ret: number };\n};\n\nconst GET_QRCODE_DEFAULT_ERROR = \"二维码获取异常,请稍后重试。\";\n\nconst errnoMap: Record<number|string, string> = {\n\t200003: \"微信公众号号登录状态失效,请重新绑定账号后重试。\",\n\t420001: \"封面图不支持GIF,请更换后重试。\",\n\t200002: \"上传图片参数错误,请检查后重试。\",\n\t200039: \"上传图片高度(像素)与宽度(像素)的乘积不能超过600万,请更换后重试。\",\n\t153201: \"不支持发布审核中或转码中的视频\",\n\t200007: \"登陆失败,请重新登陆账户后重试。\",\n\t64703: \"摘要超出120字长度限制,请修改摘要后重试。\",\n\t\"-4\": \"不支持发布审核中或转码中的视频\",\n\t\"-2\": \"不支持发布审核中或转码中的视频\",\n \"-1\" :\"系统错误,请注意备份内容后重试\",\n\t770001: \"不支持发布审核中或转码中的视频\",\n\t200074: \"系统繁忙,请稍后重试!\",\n\t64702: \"标题超出64字长度限制,请修改标题后重试。\",\n 64552: \"请检查阅读原文中的链接后重试。\"\n};\n\n// 不需要直接抛出的异常码,如 154019\nconst ignoreErrno = [\n 154019,\n 154011, // 原创校验中\n 154008, // 原创校验不通过\n 154009, // 原创校验通过 \n];\n\n// 用户互动类型表\nconst userTypeMap: Record<string, 1 | 2 | 3> = {\n\t\"所有用户\": 1,\n\t\"已关注的用户\": 2,\n\t\"已关注7天及以上的用户\": 3,\n };\n\nconst generatorFormData = (data: Record<string, unknown>) => {\n\tconst formData = new URLSearchParams();\n\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tformData.append(key, String(value));\n\t}\n\n\treturn formData.toString();\n};\n\nexport const checkCopyrightStat = async <T>(http: Http, params: WeixinPublishParams, data: Record<string, unknown>) => {\n\tlet resData: T;\n\n\ttry {\n\t\tresData = await http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\t\tparams: {\n\t\t\t\taction: \"get_appmsg_copyright_stat\",\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t},\n\t\t\tdata: generatorFormData(data),\n\t\t});\n\t} catch (error) {\n\t\tresData = (error as ResponseData)?.data;\n\t}\n\n\treturn resData;\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\tconst client_time_diff = Number(\"1743488763\") * 1 - Math.floor(new Date().getTime() / 1000);\n\n\tconst tmpCachePath = task.getTmpPath();\n const headers = {\n \"User-Agent\":\n \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0\",\n Cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n origin: \"https://mp.weixin.qq.com\",\n referer: `https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit&action=edit&isNew=1&type=77&createType=0&token=${params.token}&lang=zh_CN&timestamp=${Date.now()}`,\n }\n\tconst http = new Http({ headers\n\t\t// 接口代理,特意保留,作为测试使用\n\t\t// httpsAgent: new https.Agent({\n\t\t// \trejectUnauthorized: false,\n\t\t// \thost: \"127.0.0.1\",\n\t\t// \tport: 9000,\n\t\t// }),\n\t});\n\n\t// 添加响应拦截器\n\thttp.addResponseInterceptor<CommonResponse>((response) => {\n\t\tconst responseData = response.data;\n\t\tconst msgType = params.saveType === \"draft\" ? \"同步\" : \"发布\";\n\n\t\t// 检查响应中的 errno 字段\n\t\tif (\n\t\t\tresponseData?.base_resp &&\n\t\t\tresponseData.base_resp.ret !== 0 &&\n\t\t\t!ignoreErrno.includes(responseData.base_resp.ret)\n\t\t) {\n\t\t\tconst errmsg =\n\t\t\t\terrnoMap[responseData.base_resp.ret] ||\n\t\t\t\tresponse.config.defaultErrorMsg ||\n\t\t\t\tresponseData.base_resp.err_msg ||\n\t\t\t\t`文章${msgType}异常,请稍后重试。`;\n\n\t\t\treturn {\n\t\t\t\tcode: errnoMap[responseData.base_resp.ret] ? 200 : 500,\n\t\t\t\tmessage: errmsg,\n\t\t\t\tdata: responseData,\n\t\t\t};\n\t\t}\n\t});\n\n\t// 0. 校验登录\n\tawait http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/appmsgpublish\",\n\t\tparams: {\n\t\t\tfingerprint,\n\t\t\tsub: \"list\",\n\t\t\tbegin: 0,\n\t\t\tcount: 10,\n\t\t\tquery: \"\",\n\t\t\ttype: 101_1_102_103,\n\t\t\tshow_type: \"\",\n\t\t\tfree_publish_type: 1_102_103,\n\t\t\tsub_action: \"list_ex\",\n\t\t\tsearch_card: 0,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t},\n\t});\n\n\t// 1. 提取并上传正文中的图片\n\tconst uploadImages = async (images: string[]) => {\n\t\tconst cloudImages: Array<{ cdn_url: string; content: string }> = [];\n\n\t\t// 下载图片到本地\n\t\tconst localImages = await Promise.all(\n\t\t\timages.map((url) => {\n\t\t\t\tlet fileName = getFilenameFromUrl(url);\n let ext = path.extname(fileName);\n fileName = ext ? fileName : `${fileName}.png`\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tfor (let index = 0; index < images.length; index++) {\n\t\t\tconst image = localImages[index];\n\t\t\tconst fileState = getFileState(image);\n\n\t\t\tconst formData = new FormData();\n\t\t\tformData.append(\"id\", `WU_FILE_${index + 1}`);\n\t\t\tformData.append(\"name\", fileState.name);\n\t\t\tformData.append(\"type\", fileState.type);\n\t\t\tformData.append(\"lastModifiedDate\", fileState.lastModifiedDate);\n\t\t\tformData.append(\"size\", fileState.size);\n\t\t\tformData.append(\"file\", fs.createReadStream(image));\n\n\t\t\tconst response = await http.api<(typeof cloudImages)[0]>({\n\t\t\t\tmethod: \"post\",\n\t\t\t\turl: `https://mp.weixin.qq.com/cgi-bin/filetransfer?action=upload_material&f=json&writetype=doublewrite&token=${params.token}&lang=zh_CN`,\n\t\t\t\tdata: formData,\n\t\t\t\tdefaultErrorMsg: \"图片上传异常,请稍后重试发布。\",\n\t\t\t});\n\n\t\t\tcloudImages.push(response);\n\t\t}\n\n\t\treturn cloudImages;\n\t};\n\n\tconst originContentImages = extractImgTag(params.content);\n\tconst targetContentImages = await uploadImages(originContentImages);\n\t// 2. 替换正文中的图片\n const content = replaceImgSrc(params.settingInfo.wxTopic && params.settingInfo.wxTopic.length > 0 ? params.content + genTopicHTML(params.settingInfo.wxTopic) : params.content, (dom) => {\n if (dom.attribs.src) {\n const idx = originContentImages.findIndex((it) => it === dom.attribs.src);\n dom.attribs.src = targetContentImages[idx].cdn_url;\n dom.attribs.class = \"rich_pass wxw-img js_insertlocalimg\";\n dom.attribs.style = \"\";\n }\n return dom;\n\t});\n\n\t// 3. 上传封面图片\n\tconst coverRes = await uploadImages([params.settingInfo.wxCover]);\n\n\t// 4. 原创声明白名单有效性判断与生成转载白名单\n\tlet oriWhitelist = null;\n\n\tif (params.settingInfo?.wxCopyright && params.settingInfo?.wxWhitelist) {\n\t\tconst _oriWhitelist = params.settingInfo.wxWhitelist;\n\n\t\tif (_oriWhitelist && _oriWhitelist.length > 0) {\n\t\t\tconst white_list = [];\n\n\t\t\tconst white_list_user = {\n\t\t\t\tnickname: \"\",\n\t\t\t\ttitle: \"可修改文章\",\n\t\t\t\topenid: \"\",\n\t\t\t\twx_name: \"\",\n\t\t\t\tusername: \"\",\n\t\t\t\tavatar: \"\",\n\t\t\t\tcan_modify: \"1\",\n\t\t\t\tcan_hide_source: \"0\",\n\t\t\t\tcan_reward: \"0\",\n\t\t\t};\n\n\t\t\tfor (const _user of _oriWhitelist) {\n\t\t\t\tconst userInfo_res = await http.api<{ search_list: WxWhitelistUserInfo[] }>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/appmsgcopyright?action=searchacct\",\n\t\t\t\t\tparams: {\n\t\t\t\t\t\taction: \"searchacct\",\n\t\t\t\t\t},\n\t\t\t\t\tdata: generatorFormData({\n\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\trandom: Math.random().toString(),\n\t\t\t\t\t\tusername: _user,\n\t\t\t\t\t}),\n\t\t\t\t\tdefaultErrorMsg: \"搜索用户信息失败\",\n\t\t\t\t});\n\n\t\t\t\tif(userInfo_res.search_list.length>0){\n\t\t\t\t\tlet userInfo_resJson = userInfo_res.search_list[0];\n\t\t\t\t\twhite_list_user.nickname = userInfo_resJson.nickname;\n\t\t\t\t\twhite_list_user.openid = userInfo_resJson.openid;\n\t\t\t\t\twhite_list_user.avatar = userInfo_resJson.pic_url;\n\t\t\t\t\twhite_list_user.username = userInfo_resJson.username;\n\t\t\t\t\twhite_list_user.wx_name = userInfo_resJson.wx_name;\n\t\t\t\t\twhite_list.push({ ...white_list_user });\n\t\t\t\t}else{\n\t\t\t\t\treturn { code: 200, message: `白名单用户:${_user} 未搜索到,请确定输入是否正确!`, data: '' }\n\t\t\t\t}\n\t\t\t}\n\t\t\toriWhitelist = white_list.length > 0 ? JSON.stringify({ \"white_list\" : white_list }) : \"\";\n\t\t}\n\t}\n\n\t// 5. 赞赏设置\n\tlet writerid = null;\n\tlet reply_id = null\n\tif (params.settingInfo.wxCopyright && params.settingInfo.wxRewardTarget){\n\t\tasync function getWriterList() {\n\t\t\tconst res = await http.api({\n\t\t\t method: \"get\",\n\t\t\t url: 'https://mp.weixin.qq.com/acct/writermgr',\n\t\t\t params: {\n\t\t\t\taction: 'get_writer_list',\n\t\t\t\tfingerprint,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t }\n\t\t\t});\n\n\t\t\treturn res.pageinfo.writerlist || [];\n\t\t }\n\n\t\t async function getRewardText(): Promise<{ text: string , reply_id: string}[]> {\n\t\t\tconst res = await http.api({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: 'https://mp.weixin.qq.com/merchant/reward',\n\t\t\t\tparams: {\n\t\t\t\taction: 'getautoreply',\n\t\t\t\tfingerprint,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn res.reply_infos;\n\t\t}\n\n\t\t//遍历绑定信息\n\t\tfor (var _type in params.settingInfo.wxRewardTarget){\n\t\t\tif (_type === \"author\"){\n\n\t\t\t\tif( (await getWriterList()).length == 0){\n\t\t\t\t\t// 获取二维码等待用户绑定\n\t\t\t\t\tconst rewardbind = await http.api({\n\t\t\t\t\t\tmethod: \"get\",\n\t\t\t\t\t\turl: \"https://mp.weixin.qq.com/acct/writermgr\",\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\taction: \"get_rewardbind_qrcode\",\n\t\t\t\t\t\t\trandom: Math.random().toString(),\n\t\t\t\t\t\t\tfingerprint,\n\t\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst rewardBuffer = Buffer.from(rewardbind.qrcode_base64, 'base64');\n\t\t\t\t\tconst rewardFilePath = path.join(tmpCachePath, \"weixin_reward.jpg\");\n\t\t\t\t\tfs.writeFileSync(rewardFilePath, new Uint8Array(rewardBuffer));\n\n\t\t\t\t\tparams.safeQrcodeCallback?.(rewardFilePath);\n\n\t\t\t\t\tconst task_id = rewardbind.task_id\n\n\t\t\t\t\tlet code = null\n\n\t\t\t\t\tfor (let i = 0; i < scanRetryMaxCount; i++) {\n\t\t\t\t\t\tawait sleep(2000);\n\n\t\t\t\t\t\tconst checkScanResult = await http.api<{ qrcode_status: number; }>({\n\t\t\t\t\t\t\tmethod: \"get\",\n\t\t\t\t\t\t\turl: \"https://mp.weixin.qq.com/acct/writermgr\",\n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t\taction: \"query_rewardbind_qrcode_status\",\n\t\t\t\t\t\t\t\ttask_id: task_id,\n\t\t\t\t\t\t\t\tfingerprint,\n\t\t\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\t\t\ttimespam: Date.now(),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcode = checkScanResult.qrcode_status\n\n\t\t\t\t\t\tif ( code == 2 && (await getWriterList()).length > 0 ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (i === scanRetryMaxCount - 1) {\n\t\t\t\t\t\t\treturn { code: 200, message: \"二维码已过期,请重试绑定。\", data: \"\" };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// 判断为赞赏作者\n\t\t\t\tlet _writer = await getWriterList()\n\t\t\t\tfor (var _writer_item of _writer){\n\t\t\t\t\tif (_writer_item.nickname === params.settingInfo.wxRewardTarget[_type]){\n\t\t\t\t\t\twriterid = _writer_item.writerid\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!writerid){\n\t\t\t\t\t// 没找到作者id\n\t\t\t\t\treturn { code: 200, message: \"未匹配到赞赏绑定用户,请确认用户名与绑定是否正常!\", data: \"\" };\n\t\t\t\t}\n\n\t\t\t\tif (params.settingInfo?.wxRewardText){\n\t\t\t\t\t// 判断文案是否已添加\n\t\t\t\t\tlet rewardList = await getRewardText()\n\n\t\t\t\t\tlet matchdID = rewardList.find(\n\t\t\t\t\t\treward => reward.text === params.settingInfo.wxRewardText\n\t\t\t\t\t)?.reply_id ?? null;\n\n\t\t\t\t\tif (rewardList.length == 0 || !matchdID ){\n\t\t\t\t\t\tawait http.api({\n\t\t\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\t\t\turl: 'https://mp.weixin.qq.com/merchant/reward',\n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t \taction: 'addautoreply',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdata: generatorFormData({\n\t\t\t\t\t\t\t\ttype: 1,\n\t\t\t\t\t\t\t\tfingerprint,\n\t\t\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\t\t\ttext: params.settingInfo.wxRewardText\n\t\t\t\t\t\t })\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\treply_id = matchdID\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!matchdID) {\n\t\t\t\t\t\tfor (var _reply_item of (await getRewardText())){\n\t\t\t\t\t\t\treply_id = (await getRewardText()).find(\n\t\t\t\t\t\t\t\treward => reward.text === params.settingInfo.wxRewardText\n\t\t\t\t\t\t\t)?.reply_id ;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!reply_id) {\n\t\t\t\t\t\t\treturn {code:200, message:\"赞赏文案添加失败,请重新检查\", data:\"\"}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}else if(_type === \"project\"){\n\t\t\t\t// 判断为公益捐赠\n\t\t\t}\n\t\t}\n\n\t}\n\t// 留言设置\n\tconst wxInteractionInfo = (() => {\n\t\tconst _wxInteraction = {\n\t\t\tneed_open_comment0: 0,\n\t\t\tonly_fans_can_comment0: 0,\n\t\t\tonly_fans_days_can_comment0: 0,\n\t\t\treply_flag0: 2,\n\t\t\tauto_elect_comment0: 0,\n\t\t\tauto_elect_reply0: 1,\n\t\t\topen_fansmsg0: 0\n\t\t};\n\n\t\tconst type = params?.settingInfo?.wxInteraction?.Type ?? \"\";\n\t\tif (type === \"public\") {\n\t\t\tconst _opt = params?.settingInfo?.wxInteraction?.Option;\n\t\t\tif (!_opt || !_opt.Comment || !_opt.reply || _opt.elect_comment == null || _opt.elect_reply == null) return null;\n\n\t\t\tconst commentType = userTypeMap[_opt.Comment];\n\t\t\tconst replyType = userTypeMap[_opt.reply] + 1;\n\n\t\t\t// 设置评论权限\n\t\t\t_wxInteraction.need_open_comment0 = 1;\n\t\t\tswitch (commentType) {\n\t\t\t\tcase 1:\n\t\t\t\t\t_wxInteraction.only_fans_can_comment0 = 0;\n\t\t\t\t\t_wxInteraction.only_fans_days_can_comment0 = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\t_wxInteraction.only_fans_can_comment0 = 1;\n\t\t\t\t\t_wxInteraction.only_fans_days_can_comment0 = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\t_wxInteraction.only_fans_can_comment0 = 0;\n\t\t\t\t\t_wxInteraction.only_fans_days_can_comment0 = 1;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// 设置回复权限等级\n\t\t\t_wxInteraction.reply_flag0 = replyType;\n\n\t\t\t// 精选功能\n\t\t\t_wxInteraction.auto_elect_comment0 = _opt.elect_comment ? userTypeMap[_opt.Comment] : 0;\n\t\t\t_wxInteraction.auto_elect_reply0 = _opt.elect_reply ? userTypeMap[_opt.reply] : 1;\n\n\t\t\treturn _wxInteraction;\n\t\t}\n\n\t\tif (type === \"private\") {\n\t\t\t_wxInteraction.open_fansmsg0 = 1;\n\t\t\treturn _wxInteraction;\n\t\t}\n\n\t\t// 其他未启用评论功能的情形\n\t\treturn _wxInteraction;\n\t})();\n\n\tif (!wxInteractionInfo) return { code: 200, message: \"互动参数设置错误,请检查参数设置!\", data: \"\" }\n\n\n\t// 4. 保存为草稿\n\tconst draftData = {\n\t\tlang: \"zh_CN\",\n\t\tf: \"json\",\n\t\tajax: 1,\n\t\tcount: 1,\n\t\toperate_from: \"Chrome\",\n\t\tisnew: 0,\n\t\tarticlenum: 1,\n\t\tpre_timesend_set: 0,\n\t\tis_finder_video0: 0,\n\t\tfinder_draft_id0: 0,\n\t\tapplyori0: 0,\n\t\tcan_reward0: writerid ? 1 : 0,\n\t\tpay_gifts_count0: 0,\n\t\tis_video_recommend0: -1,\n\t\twriterid0: writerid ? writerid : 0,\n\t\tauto_gen_digest0: 0,\n\t\tlast_choose_cover_from0: 0,\n\t\tneed_open_comment0: wxInteractionInfo.need_open_comment0 ,\n\t\tonly_fans_can_comment0: wxInteractionInfo.only_fans_can_comment0,\n\t\tonly_fans_days_can_comment0: wxInteractionInfo.only_fans_days_can_comment0,\n\t\treply_flag0: wxInteractionInfo.reply_flag0,\n\t\tauto_elect_comment0: wxInteractionInfo.auto_elect_comment0,\n\t\tauto_elect_reply0: wxInteractionInfo.auto_elect_reply0,\n\t\treward_reply_id0:params.settingInfo?.wxRewardText? reply_id ? reply_id : 0 : 0,\n\t\tnot_pay_can_comment0: 0,\n\t\tdata_seq: 0,\n\t\tmsg_index_id0: \"\",\n\n\t\ttoken: params.token,\n\t\tAppMsgId: params.appMsgId || \"\",\n\t\ttitle0: params.title,\n\t\tauthor0: params?.settingInfo?.wxAuthor || \"\" ,\n\t\tdigest0: params?.settingInfo?.wxAbstract || \"\",\n\t\tcontent0: content || \"\",\n\t\tsourceurl0: params?.settingInfo?.wxOriginalText || \"\",\n\t\tcdn_url0: coverRes[0].cdn_url || \"\",\n\t\tcopyright_type0: params?.settingInfo?.wxCopyright? 1 : 0,\n\t\tallow_reprint0: params?.settingInfo?.wxCopyright? 0 : '',\n\t\tallow_reprint_modify0: params?.settingInfo?.wxCopyright? 0 : '',\n\t\tori_white_list0: params?.settingInfo?.wxCopyright? oriWhitelist: '',\n\t\topen_fansmsg0: wxInteractionInfo.open_fansmsg0,\n\t\tallow_fast_reprint0: params?.settingInfo?.wxQuickReprint ? 1 : 0,\n\t\tdisable_recommend0: params?.settingInfo?.wxNotAllowRecommend ? 1 : 0,\n\t\tclaim_source_type0: params?.settingInfo?.wxCreationSource?.[0] || \"\",\n appmsg_album_info0: JSON.stringify({\"appmsg_album_infos\": params.settingInfo?.wxCollectionInfo ? [params.settingInfo.wxCollectionInfo] : []}),\n\n\t\tmasssend_check: 1,\n\t\tis_masssend: 1,\n\t};\n \n task._timerRecord['PrePublish']= Date.now();\n\n\tconst { appMsgId } = await http.api<{ appMsgId: string }>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/operate_appmsg\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tt: \"ajax-response\",\n\t\t\tsub: \"create\",\n\t\t\ttype: 77,\n\t\t\tlang: \"zh_CN\",\n\t\t},\n\t\tdata: generatorFormData(draftData),\n\t\tdefaultErrorMsg: \"创建草稿失败,请稍后重试发布。\",\n\t});\n\n\t// 如果只需要保存为草稿,直接返回 appMsgId\n\tif (params.saveType === \"draft\") {\n\t\treturn { code: 0, data: appMsgId, message: \"微信公众号保存草稿成功。\" };\n\t}\n \n let checkTimes = 0;\n let copyrightStatRes: { base_resp: { ret: number }, list?: string } = {base_resp: {ret: -1}, list: ''};\n do {\n checkTimes++;\n const copyrightStat = http.api<{ base_resp: { ret: number }, list?: string }>({\n method: 'post',\n url: 'https://mp.weixin.qq.com/cgi-bin/masssend',\n params: {\n action: 'get_appmsg_copyright_stat',\n token: params.token,\n lang: 'zh_CN'\n },\n data: generatorFormData({\n token: params.token,\n lang: 'zh_CN',\n f: 'json',\n ajax: 1,\n fingerprint,\n random: Math.random().toString(),\n first_check: checkTimes === 1 ? 1 : 0,\n type: 10,\n appMsgId\n })\n });\n\n copyrightStatRes = await copyrightStat;\n if (copyrightStatRes.base_resp.ret === 154008 && copyrightStatRes?.list) return {\n code: 200,\n message: `文章内容未通过原创校验,请修改后重试!`,\n data: JSON.parse(copyrightStatRes.list).list\n }\n\n } while (copyrightStatRes.base_resp.ret === 154011 && checkTimes < 10);\n\n\tconst masssendpage = () => {\n\t\treturn http.api<CommonResponse<{ operation_seq: string; quota_detail_list: QuotaDetail[] }>>({\n\t\t\tmethod: \"get\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssendpage\",\n\t\t\tparams: {\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tpreview_appmsgid: appMsgId,\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t},\n\t\t\tdefaultErrorMsg: \"创建草稿失败,请稍后重试发布。\",\n\t\t});\n\t};\n\n\t// 4. 预览\n\tlet massSendRes = await masssendpage();\n\t// 判断是否需要同意群发声明\n\tif (massSendRes.base_resp?.ret === 154019) {\n\t\ttask.logger.info(\"需要同意群发声明\");\n\t\tawait http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/setprotocolsign\",\n\t\t\tparams: {\n\t\t\t\tcgi: \"setprotocolsign\",\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\ttoken: params.token,\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t\tissigned: 1,\n\t\t\t}),\n\t\t});\n\t\tmassSendRes = await masssendpage();\n\t}\n\n\t// 判断是否还有群发次数\n\tconst { operation_seq, quota_detail_list = [] } = massSendRes;\n\n\t// 群发时需要判断是否还有群发次数\n\tif (params.masssend) {\n\t\tconst quotaDetail = quota_detail_list.find((it) => it.quota_type === QuotaType.Normal);\n\t\tif (!quotaDetail?.quota_item_list[0]?.quota) {\n\t\t\treturn { code: 200, message: \"今日群发次数用尽,请明天再试。\", data: \"\" };\n\t\t}\n\t}\n\n\t// 非群发时会多一个接口\n\tif (!params.masssend) {\n\t\tawait http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\t\tparams: {\n\t\t\t\tt: \"ajax-response\",\n\t\t\t\tfor_check: 1,\n\t\t\t\tis_release_publish_page: 1,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\tappmsgid: appMsgId,\n\t\t\t\tfingerprint,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t}),\n\t\t});\n\t}\n\n\t// check\n\tawait http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend?action=check_same_material\",\n\t\tdata: generatorFormData({\n\t\t\tmsgid: appMsgId,\n\t\t\tfingerprint,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t});\n\n\tconst copyrightStatData = {\n\t\ttoken: params.token,\n\t\tlang: \"zh_CN\",\n\t\tf: \"json\",\n\t\tajax: 1,\n\t\trandom: Math.random().toString(),\n\t\tfingerprint,\n\t\tfirst_check: 1,\n\t\ttype: 10,\n\t\tappmsgid: appMsgId,\n\t};\n\tfor (let i = 0; i < 10; i++) {\n\t\tawait sleep(1000);\n\t\tconst lastData = { ...copyrightStatData, first_check: i === 0 ? 1 : 0 };\n\t\tconst checkCopyrightStatRes = await checkCopyrightStat<{ open_ad_reprint_status?: string }>(http, params, lastData);\n\t\tif (checkCopyrightStatRes.open_ad_reprint_status) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tawait sleep(300);\n\n\tawait http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\tparams: {\n\t\t\taction: \"check_ad\",\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\tappmsg_id: appMsgId,\n\t\t\tfingerprint,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\tis_release_publish_page: params.masssend ? 0 : 1, // 群发时为 0,否则为 1\n\t\t\tsend_time: params.settingInfo.timer ? params.settingInfo.timer : 0 ,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t});\n\n\tawait sleep(300);\n\n\tawait http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\tparams: {\n\t\t\taction: \"check_music\",\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\tappmsgid: appMsgId,\n\t\t\tmasssend_check: 1,\n\t\t\tfingerprint,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t});\n\n\tawait sleep(300);\n\n\t// 5. 获取群发文章ticket接口\n\tconst getTicketResult = await http.api<{ ticket: string; operation_seq: string }>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/misc/safeassistant\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\t1: 1,\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\taction: \"get_ticket\",\n\t\t\tfingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t});\n\n\tawait sleep(300);\n\n\t// 6. 获取群发文章 uuid\n\tconst getUuidResult = await http.api<{ uuid: string; genuuid_res: number }>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/safe/safeqrconnect\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\t1: 1,\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\tstate: 0,\n\t\t\tlogin_type: \"safe_center\",\n\t\t\ttype: \"json\",\n\t\t\tticket: getTicketResult.ticket,\n\t\t\tfingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t});\n\tawait sleep(1000);\n\n\tif (getUuidResult.genuuid_res !== 0) {\n\t\treturn { code: 200, message: GET_QRCODE_DEFAULT_ERROR, data: \"\" };\n\t}\n\tconst uuid = getUuidResult.uuid;\n\tawait sleep(1000);\n \n\t// 7. 获取验证二维码\n\tconst qrcodeResult = await http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/safe/safeqrcode\",\n\t\tparams: {\n\t\t\taction: \"check\",\n\t\t\ttype: \"msgs\",\n\t\t\tservice_type: 1,\n\t\t\tticket: getTicketResult.ticket,\n\t\t\tuuid,\n\t\t\tmsgid: operation_seq,\n\t\t\topen_email: params.settingInfo.timer ? true : false,\n\t\t\t...(params.masssend ? {} : { publish_type: 1 }),\n\t\t},\n\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t\tresponseType: \"arraybuffer\",\n\t});\n\n\tconst qrcodeBuffer = Buffer.from(qrcodeResult);\n\tconst qrcodeFilePath = path.join(tmpCachePath, `weixin_qrcode_${Date.now()}.jpg`);\n\tfs.writeFileSync(qrcodeFilePath, new Uint8Array(qrcodeBuffer));\n\n\tparams.safeQrcodeCallback?.(qrcodeFilePath);\n\n\t// 8. 验证二维码结果\n\tlet code = \"\";\n\tfor (let i = 0; i < scanRetryMaxCount; i++) {\n\t\tawait sleep(2000);\n\n\t\tconst checkScanResult = await http.api<{ code: string; errcode: number }>({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/safe/safeuuid\",\n\t\t\tparams: {\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\ttimespam: Date.now(),\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tuuid,\n\t\t\t\taction: \"json\",\n\t\t\t\ttype: \"json\",\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t}),\n\t\t});\n\n\t\tif (checkScanResult.errcode === 405 && checkScanResult.code) {\n\t\t\tcode = checkScanResult.code;\n\t\t\tbreak;\n\t\t}\n\n\t\tif (i === scanRetryMaxCount - 1) {\n\t\t\treturn { code: 200, message: \"二维码已过期,请重试发布。\", data: \"\" };\n\t\t}\n\t}\n\n\t// 非群发时会多一个接口\n\tif (!params.masssend) {\n\t\tawait http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/misc/safeassistant\",\n\t\t\tparams: {\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t1: 1,\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t\taction: \"get_uuid\",\n\t\t\t\tuuid,\n\t\t\t}),\n\t\t});\n\t}\n \n const proxyHttp = task?.isBeta ?? false ? new Http({headers}, params.proxyLoc, params.huiwenToken ) : http;\n\t// 9. 发送群发通知\n\tawait proxyHttp.api<{ code: string; errcode: number; proxyInfo: Record<string, any>}>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\tparams: {\n\t\t\tt: \"ajax-response\",\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\t...(params.masssend ? {\n\t\t\t\t...(params.settingInfo.timer ? {\n\t\t\t\t\taction: \"time_send\"\n\t\t\t\t}: {})\n\t\t\t} : { is_release_publish_page: 1 }),\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: \"1\",\n\t\t\tfingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t\tack: \"\",\n\t\t\tcode,\n\t\t\treprint_info: \"\",\n\t\t\treprint_confirm: \"0\",\n\t\t\tlist: \"\",\n\t\t\tgroupid: \"\",\n\t\t\tsex: \"0\",\n\t\t\tcountry: \"\",\n\t\t\tprovince: \"\",\n\t\t\tcity: \"\",\n\t\t\tsend_time: params.settingInfo.timer ? params.settingInfo.timer : \"0\",\n\t\t\ttype: \"10\",\n\t\t\tshare_page: \"1\",\n\t\t\tsynctxweibo: \"0\",\n\t\t\toperation_seq,\n\t\t\treq_id: randomString(32),\n\t\t\treq_time: new Date().getTime() + client_time_diff * 1e3,\n\t\t\tsync_version: \"1\",\n\t\t\tisFreePublish: params.masssend ? \"false\" : \"true\",\n\t\t\tappmsgid: appMsgId,\n\t\t\tisMulti: \"0\",\n\t\t\tdirect_send: \"1\",\n\t\t\tisNeedCode: \"true\",\n\t\t\tuserType: \"1\",\n\t\t}),\n\t\tdefaultErrorMsg: params.masssend ? \"文章群发异常,请尝试关闭群发或稍后重试。\" : \"文章发布异常,请稍后重试。\",\n }, {retries: 2, retryDelay: 500});\n\n\treturn success(appMsgId, `微信公众号发布完成!`+ (proxyHttp.proxyInfo || \"\"));\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { CookieMap, Response } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport axios from \"axios\";\n\nimport { copyHtmlToClipboard, parseUrlQueryString, PopupListener, TimeFormatter } from \"../../utils\";\nimport type { PublishAction } from \"./index\";\nimport { scanRetryMaxCount } from \"./utils\";\n\n// 等待二维码验证结果最长时间\nconst waitQrcodeResultMaxTime = scanRetryMaxCount * 2 * 1000;\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"mp.weixin.qq.com\",\n\t\turl: \"https://mp.weixin.qq.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst urlParams = {\n\t\taction: \"edit\",\n\t\ttype: 77,\n\t\ttoken: params.token,\n\t\tlang: \"zh_CN\",\n\t\ttimestamp: Date.now(),\n\t\tappmsgid: params.appMsgId,\n\t};\n\n\tif (params.settingInfo?.wxRewardTarget){\n\t\tconst urlRewardParams = {\n\t\t\taction: \"inviteauthor\",\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t};\n\t\tconst wxRewardPage = await task.createPage({\n\t\t\tshow: task.debug,\n\t\t\turl:\n\t\t\t\tparams.url ||\n\t\t\t\t`https://mp.weixin.qq.com/cgi-bin/safecenterstatus?${Object.entries(urlRewardParams)\n\t\t\t\t\t.map((it) => it.join(\"=\"))\n\t\t\t\t\t.join(\"&\")}`,\n\t\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t\t});\n\n\t\tconst reward_page = wxRewardPage.locator(\"#app\")\n\t\tconst isAddRewarder = reward_page.locator('.author_card_bd.weui-desktop-vm_primary').filter({hasText: params.settingInfo.wxRewardTarget.author}).count()\n\t\tif(await isAddRewarder == 0){\n\t\t\tawait reward_page.locator('.weui-desktop-panel__hd-right').click()\n\t\t\ttry {\n\t\t\t\ttry {\n\t\t\t\t\tawait wxRewardPage.waitForSelector('.invite-qrcode', { state: 'visible', timeout: 20000 });\n\t\t\t\t\tconst qrcodeSrc = await reward_page.locator(\".invite-qrcode\").getAttribute('src')\n\n\t\t\t\t\tif (qrcodeSrc) {\n\t\t\t\t\t\tconst rewardBuffer = Buffer.from(qrcodeSrc.replace(/^data:image\\/\\w+;base64,/, ''), 'base64');\n\t\t\t\t\t\tconst rewardFilePath = path.join(tmpCachePath, \"weixin_reward.jpg\");\n\t\t\t\t\t\tfs.writeFileSync(rewardFilePath, new Uint8Array(rewardBuffer));\n\n\t\t\t\t\t\tparams.safeQrcodeCallback?.(rewardFilePath);\n\t\t\t\t\t}\n\n\t\t\t\t\t// await wxRewardPage.waitForSelector('[data-transfer=\"true\"]:not([weui=\"true\"])', { state: 'detached', timeout: 30000 });\n\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthrow new Error(\"二维码已过期,请重试绑定。\");\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < scanRetryMaxCount; i++) {\n\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\twxRewardPage.reload(),\n\t\t\t\t\t\twxRewardPage.waitForLoadState('domcontentloaded')\n\t\t\t\t\t]);\n\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait wxRewardPage.waitForSelector(`.author_card_bd.weui-desktop-vm_primary:has-text(\"${params.settingInfo.wxRewardTarget?.author}\")`, { timeout: 1000 });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} catch (error) {}\n\n\t\t\t\t\tif (i === scanRetryMaxCount - 1) throw new Error(\"未确认绑定账户,请在手机端确认绑定并重试\");\n\t\t\t\t}\n\n\t\t\t} catch (error) {\n\t\t\t\tlet errorMessage = \"发生未知错误\";\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\terrorMessage = error.message;\n\t\t\t\t} else if (typeof error === \"string\") {\n\t\t\t\t\terrorMessage = error;\n\t\t\t\t}\n\t\t\t\tawait wxRewardPage.close();\n\t\t\t\treturn { code: 200, message: errorMessage , data: \"\" };\n\t\t\t}\n\t\t}\n\n\t\tif(params.settingInfo.wxRewardText){\n\t\t\tawait wxRewardPage.locator('[href=\"/merchant/reward?action=getautoreply\"]').click()\n\t\t\tawait wxRewardPage.waitForLoadState('networkidle');\n\n\t\t\tconst isAddWord = reward_page.locator(\".auto-reply__list.edit .auto-reply__hd .auto-reply__text\").filter({hasText: new RegExp(`^${params.settingInfo.wxRewardText}$`) }).count()\n\n\t\t\tif(await isAddWord == 0){\n\t\t\t\tawait reward_page.locator(\".emotion_editor .edit_area\").fill(params.settingInfo.wxRewardText)\n\t\t\t\tawait reward_page.locator(\".emotion_editor .edit_area\").click()\n\t\t\t\tawait reward_page.locator(\".editor_toolbar .weui-desktop-btn.weui-desktop-btn_primary\").click()\n\t\t\t}\n\t\t}\n\t\tawait wxRewardPage.close();\n\n\t}\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl:\n\t\t\tparams.url ||\n\t\t\t`https://mp.weixin.qq.com/cgi-bin/appmsg?${Object.entries(urlParams)\n\t\t\t\t.map((it) => it.join(\"=\"))\n\t\t\t\t.join(\"&\")}`,\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\t// 0. 校验登录\n\ttry {\n\t\tawait page.waitForSelector(\".weui-desktop-head\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn { code: 400, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 1. 等待编辑器加载出来\n\tawait page.waitForSelector(\"#editor_pannel\", { state: \"visible\" });\n\n\t//新功能更新监听\n\tPopupListener(page,'[v-transfer-dom=\"#vue_app\"] .weui-desktop-dialog',\"更新\", '[v-transfer-dom=\"#vue_app\"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn',\n\t{\n\t\tcheckInterval: 1000,\n\t\tstopAfterClick: false\n\t})\n\t//小店功能开通监听\n\tPopupListener(page,'[extclass=\"weui-desktop-dialog_simple\"] .weui-desktop-dialog',\"小店\", '[extclass=\"weui-desktop-dialog_simple\"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn',\n\t{\n\t\tcheckInterval: 1000,\n\t\tstopAfterClick: true\n\t})\n\n\t// 2. 填写标题\n\tconst titleInstance = page.locator(\"#js_title_main textarea#title\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 3. 填写作者\n\tif (params.settingInfo.wxAuthor) {\n\t\tconst titleInstance = page.locator(\"#js_author_area input#author\");\n\t\tawait titleInstance.click();\n\t\tawait titleInstance.fill(params.settingInfo.wxAuthor);\n\t}\n\n\t// 4. 填写正文\n\tawait copyHtmlToClipboard(page, params.content);\n\t// 定位目标元素并聚焦\n\tawait page.click(\".js_editor_area .ProseMirror\");\n\t// 模拟Ctrl+V粘贴\n\tawait page.keyboard.press(\"Control+V\");\n\n\t// 将设置区域滚动到可见区域\n\tawait page.locator(\"#article_setting_area\").evaluate((node) => node.scrollIntoView());\n\n\t// 5. 填写摘要\n\tif (params.settingInfo.wxAbstract) {\n\t\tconst titleInstance = page.locator(\"#article_setting_area #js_description_area textarea\");\n\t\tawait titleInstance.click();\n\t\tawait titleInstance.fill(params.settingInfo.wxAbstract);\n\t}\n\n\t// 6. 设置封面\n\tif (params.settingInfo.wxCover) {\n\t\tlet fileName = getFilenameFromUrl(params.settingInfo.wxCover);\n let ext = path.extname(fileName);\n fileName = ext ? fileName : `${fileName}.png`\n\t\tconst cover = await downloadImage(params.settingInfo.wxCover, path.join(tmpCachePath, fileName));\n\n\t\t// 从图片库选择\n\t\tawait page.locator(\"#article_setting_area #js_cover_area .select-cover__btn\").hover();\n\t\tawait page\n\t\t\t.locator(\"#article_setting_area #js_cover_area .pop-opr__group-select-cover .pop-opr__list .pop-opr__item\")\n\t\t\t.filter({ hasText: \"从图片库选择\" })\n\t\t\t.click();\n\n\t\t// 在弹窗内选择「我的图片」- 「上传文件」\n\t\t// 等待弹窗出现\n\t\tawait page.waitForSelector(\"#vue_app .weui-desktop-dialog\", { state: \"visible\" });\n\t\tconst dialog = page.locator(\"#vue_app .weui-desktop-dialog\");\n\t\t// 点击「我的图片」\n\t\tawait dialog.locator(\".weui-desktop-menu .weui-desktop-menu__item\").filter({ hasText: \"我的图片\" }).click();\n\t\tawait page.waitForTimeout(300);\n\t\t// 点击「上传文件」\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait dialog.locator(\".weui-desktop-img-picker__list__area .js_upload_btn_container\").click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles([cover]);\n\n\t\t// 等待图片上传完成\n\t\tawait page.waitForSelector(\".weui-desktop-img-picker__list .weui-desktop-img-picker__item.selected\", {\n\t\t\tstate: \"visible\",\n\t\t});\n\t\tawait page.waitForSelector('.weui-desktop-upload__file__progress', { state: 'detached' });\n\n\t\tconst pic_msg = page.locator('.weui-desktop-img-picker__list .weui-desktop-img-picker__item.selected .weui-desktop-upload__file__msg')\n\t\tif(await pic_msg.count() > 0) return {code: 200, message: \"图片上传错误:\"+(await pic_msg.textContent()||\"未知错误,请重试!\"), data: \"\"}\n\n\t\t// 选择下一步\n\t\tawait dialog\n\t\t\t.locator(\".weui-desktop-dialog__ft .weui-desktop-btn:not(.weui-desktop-btn_disabled)\")\n\t\t\t.filter({ hasText: \"下一步\" })\n\t\t\t.click();\n\t\t// 等待第二步的确认按钮出来\n\t\tawait dialog\n\t\t\t.locator(\".weui-desktop-dialog__ft .weui-desktop-btn\")\n\t\t\t.filter({ hasText: \"确认\" })\n\t\t\t.waitFor({ state: \"visible\" });\n\t\tawait dialog.locator(\".weui-desktop-dialog__ft .weui-desktop-btn\").filter({ hasText: \"确认\" }).click();\n\t}\n\n\t// 7. 原创与赞赏设置\n\tif(params.settingInfo.wxCopyright){\n\t\tawait page.locator('#js_original').click()\n\n\t\tconst ori_dialog = page.locator('.claim__original-dialog.original_dialog')\n\t\tconst ori_dialog_bd = ori_dialog.locator('.weui-desktop-dialog__bd')\n\t\tconst ori_dialog_ft = ori_dialog.locator('.weui-desktop-dialog__ft')\n\n\t\tawait ori_dialog_bd.locator('.weui-desktop-form__check-content').filter({hasText: \"文字原创\"}).click()\n\n\t\tif(params.settingInfo?.wxWhitelist){\n\n\t\t\tfor (var _target of params.settingInfo.wxWhitelist){\n\n\t\t\t\tawait ori_dialog_bd.locator('#js_article_whitelist_search').fill(_target)\n\t\t\t\tawait ori_dialog_bd.locator('.js_search').click()\n\t\t\t\tconst search_res = ori_dialog_bd.locator('#js_article_whitelist_search_result > div')\n\n\t\t\t\tawait page.waitForTimeout(1000);\n\n\t\t\t\tif( await search_res.getAttribute('class') !== 'search-result-title search-result-empty'){\n\n\t\t\t\t\tconst search_res_name = await search_res.locator('.search-result-name-left').textContent() || undefined\n\t\t\t\t\tawait search_res.click()\n\t\t\t\t\tconst whrite_list = ori_dialog_bd.locator('#js_article_whitelist_added tbody')\n\t\t\t\t\tconst white_td_isadd = await whrite_list.locator('.table-td-name').filter({hasText: search_res_name}).count()\n\n\t\t\t\t\tif (!white_td_isadd) {\n\t\t\t\t\t\treturn {code: 200 , message:'白名单添加失败,请重试!', data: ''}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\treturn { code: 200, message: `白名单用户:${_target} 未搜索到,请确定输入是否正确!`, data: '' }\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\n\t\tif(params.settingInfo?.wxQuickReprint){\n\t\t\tconst btn_isChecked = await ori_dialog_bd.locator('//span[@class=\"frm_tips\"]').filter({ hasText: '已开启' }).count() == 1 ? true : false;\n\t\t\tif(!btn_isChecked) await ori_dialog_bd.locator('.weui-desktop-switch_loading .weui-desktop-switch__box').click()\n\t\t}\n\n\t\tconst checkbox = ori_dialog_ft.locator('.weui-desktop-icon-checkbox')\n\t\tif( !await checkbox.isChecked()) await checkbox.check()\n\t\tawait ori_dialog_ft.locator('.weui-desktop-btn.weui-desktop-btn_primary').click()\n\n\t\tif (params.settingInfo?.wxRewardTarget){\n\n\t\t\tawait page.locator('#js_reward_setting_area').click()\n\n\t\t\tconst reward_setting = page.locator('.reward-setting-dialog')\n\t\t\tconst reward_setting_bd = reward_setting.locator('.weui-desktop-dialog__bd')\n\t\t\tconst reward_setting_ft = reward_setting.locator('.weui-desktop-dialog__ft')\n\n\t\t\t//遍历绑定信息\n\t\t\tfor (var _type in params.settingInfo.wxRewardTarget){\n\t\t\t\tif (_type === \"author\"){\n\t\t\t\t\tlet userName = params.settingInfo.wxRewardTarget[_type]\n\n\t\t\t\t\tawait reward_setting_bd.locator('.weui-desktop-form__check-label', { hasText: '赞赏作者' }).click()\n\t\t\t\t\tawait reward_setting_bd.locator('.weui-desktop-form__input').fill(userName)\n\n\n\t\t\t\t\tif(params.settingInfo.wxRewardText) {\n\t\t\t\t\t\tconst reward_setting_replay = page.locator('.reward-reply-setting')\n\t\t\t\t\t\tconst switchAuto = reward_setting_replay.locator('.weui-desktop-switch__box')\n\n\t\t\t\t\t\tconst maxAttempts = 5;\n\t\t\t\t\t\tconst delayMs = 500;\n\t\t\t\t\t\tlet nowCheckTime = 0\n\n\t\t\t\t\t\tfor (let attempt = 0; attempt < maxAttempts; attempt++) {\n\t\t\t\t\t\t\tconst isDisabled = await switchAuto.isDisabled();\n\t\t\t\t\t\t\tif (!isDisabled){\n\t\t\t\t\t\t\t\tawait switchAuto.isChecked() ? nowCheckTime++ : null\n\t\t\t\t\t\t\t\tif (nowCheckTime == 2) break\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (attempt === maxAttempts - 1) throw new Error('Checkbox did not become enabled within the timeout.');\n\t\t\t\t\t\t\tawait new Promise(resolve => setTimeout(resolve, delayMs));\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tconst isOneReplay = await reward_setting_replay.locator('.reward-reply-select__wrp >.reward-reply-select__tips').textContent() == \"添加新的回复\"\n\t\t\t\t\t\tconst isCurrentReplay = await reward_setting_replay.locator('.reward-reply-select__wrp >.reward-reply-select__display .wording').filter({hasText: new RegExp(`^${[params.settingInfo.wxRewardText]}$`)}).count() == 1\n\n\t\t\t\t\t\tif (!isOneReplay && !isCurrentReplay) {\n\t\t\t\t\t\t\tawait reward_setting_replay.locator('.reward-reply-select__wrp >.reward-reply-select__tips').click()\n\t\t\t\t\t\t\tawait reward_setting_replay.locator('.reward-reply-select__display.can-select .wording').filter({hasText: new RegExp(`^${[params.settingInfo.wxRewardText]}$`)}).click()\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tawait reward_setting_bd.locator('.reward-reply-setting .weui-desktop-switch__input').isChecked() ? reward_setting_bd.locator('.reward-reply-setting .weui-desktop-switch__box').uncheck(): 0\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\telse if (_type === \"project\"){}\n\t\t\t}\n\n\t\t\tconst checkbox = reward_setting_ft.locator('.weui-desktop-icon-checkbox')\n\t\t\tif( !await checkbox.isChecked()) await checkbox.check()\n\t\t\tawait reward_setting_ft.locator('.weui-desktop-btn.weui-desktop-btn_primary').click()\n\n\t\t}\n\n\t}\n\n\t// 8. 互动设置\n\tif(params.settingInfo?.wxInteraction){\n\t\tawait page.locator('.appmsg-editor__setting-group.js_interaction_cell').click()\n\t\tconst wxInteraction_setting = page.locator('.interaction-dialog')\n\t\tconst wxInteraction_bd = wxInteraction_setting.locator('.weui-desktop-dialog__bd')\n\t\tconst wxInteraction_ft = wxInteraction_setting.locator('.weui-desktop-dialog__ft')\n\n\t\tif(params.settingInfo.wxInteraction.Type == \"public\"){\n\t\t\tawait wxInteraction_bd.locator('.weui-desktop-form__check-label span', { hasText: /^(开启|留言)$/ }).click();\n\n\t\t\tconst comment_area = wxInteraction_bd.locator('.comment-options-block.pt0')\n\t\t\tconst reply_area = wxInteraction_bd.locator('.comment-options-block.bb0.pb0')\n\t\t\tconst commont_rply_opt = page.locator('.weui-desktop-popper.options-popover[x-placement=\"bottom\"]')\n\n\t\t\tawait comment_area.locator('.comment-options__selector-btn').click();\n\t\t\tawait commont_rply_opt.locator('.weui-desktop-form__check-label', { hasText: params.settingInfo.wxInteraction.Option?.Comment }).click();\n\n\t\t\tif(params.settingInfo.wxInteraction.Option?.elect_comment) {\n\t\t\t\tawait comment_area.locator('.weui-desktop-switch__box').check()\n\t\t\t}else{\n\t\t\t\tawait comment_area.locator('.weui-desktop-switch__input').isChecked() ? comment_area.locator('.weui-desktop-switch__box').uncheck(): 0\n\t\t\t}\n\n\t\t\tawait page.waitForTimeout(1000);\n\n\t\t\tawait reply_area.locator('.comment-options__selector-btn').click();\n\t\t\tawait commont_rply_opt.locator('.weui-desktop-form__check-label', { hasText: params.settingInfo.wxInteraction.Option?.reply }).click();\n\n\t\t\tif(params.settingInfo.wxInteraction.Option?.elect_reply) {\n\t\t\t\tawait reply_area.locator('.weui-desktop-switch__box').check()\n\t\t\t}else{\n\t\t\t\tawait reply_area.locator('.weui-desktop-switch__input').isChecked() ? reply_area.locator('.weui-desktop-switch__box').uncheck(): 0\n\t\t\t}\n\t\t}else if(params.settingInfo.wxInteraction.Type == \"private\"){\n\t\t\tawait wxInteraction_bd.locator('.weui-desktop-form__check-label span', { hasText: /^(快捷私信|不开启)$/ }).click();\n\t\t}\n\n\t\tawait wxInteraction_ft.locator('.weui-desktop-btn.weui-desktop-btn_primary').click()\n\t}\n\n\t// 9. 原文链接\n\tif (params.settingInfo.wxOriginalText) {\n\t\tawait page.locator(\"#js_article_url_area .allow_click_opr\").click();\n\t\tawait page.waitForTimeout(200);\n\t\tconst poperInstance = page.locator('.popover:not([style*=\"display: none\"])');\n\t\tconst poperInput = poperInstance.locator(\"input.weui-desktop-form__input.js_url\");\n\t\tawait poperInput.fill(params.settingInfo.wxOriginalText);\n\t\tawait poperInstance.locator(\".popover_bar .btn_primary\").click();\n\t}\n\n\t// 10. 创作来源\n\tif (params.settingInfo.wxCreationSource && params.settingInfo.wxCreationSource.length > 0) {\n\t\tconst source = params.settingInfo.wxCreationSource[0];\n\t\tawait page.locator(\"#js_claim_source_area .allow_click_opr\").click();\n\t\tawait page.waitForTimeout(200);\n\t\tconst poperInstance = page.locator('.popover:not([style*=\"display: none\"])');\n\t\tawait poperInstance.locator(`.frm_radio_item label[for=\"${source}\"]`).click();\n\t}\n\n\t// 11. 关闭平台推荐\n\tif (params.settingInfo.wxNotAllowRecommend === true) {\n\t\tawait page.locator(\"#js_not_recommend_area .allow_click_opr\").click();\n\t\tawait page.waitForTimeout(200);\n\t\tconst poperInstance = page.locator('.popover:not([style*=\"display: none\"])');\n\t\tawait poperInstance.locator('.frm_radio_item label[for=\"not_recomment_0\"]').click();\n\t}\n\n\tawait page.waitForTimeout(1000);\n task._timerRecord['PrePublish']= Date.now();\n\n\t// 12. 发布\n\tconst articleId = await new Promise<string>(async (resolve) => {\n\t\t// 定义响应处理函数\n\t\tconst handleResponse = async (response: Response) => {\n\t\t\tconst url = response.url();\n\t\t\tconst query = parseUrlQueryString(url);\n\t\t\tif (url.includes(\"/cgi-bin/operate_appmsg\") && query?.t === \"ajax-response\") {\n\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\tresolve(jsonResponse?.appMsgId);\n\t\t\t}\n\t\t};\n\n\t\t// 开始监听响应事件\n\t\tpage.on(\"response\", handleResponse);\n\n\t\t// 点击发表\n\t\tpage.locator(\"#editor_pannel #bottom_main #js_button_area #js_send button\").click();\n\t\tawait page.waitForTimeout(200);\n\n\t\tif (params.settingInfo.timer) {\n\t\t\tawait page.locator(\".mass-send .mass-send__td-setting\", {hasText: \"定时发表\"}).locator(\".weui-desktop-switch__box\").check();\n\t\t\tlet dateD = Number(TimeFormatter.format(params.settingInfo.timer, \"d\"));\n\t\t\tlet nowD = Number(TimeFormatter.format(Date.now(), \"d\"));\n\n\t\t\tawait page.locator(\".mass-send__timer .weui-desktop-form__dropdown__dt\").click();\n\t\t\tconst dropMenu = page.locator(\".mass-send__timer .weui-desktop-dropdown-menu\").locator(\".weui-desktop-dropdown__list-ele\")\n\t\t\tawait dropMenu.filter({hasText: dateD == nowD ? \"今天\" : dateD == nowD + 1 ? \"明天\" : TimeFormatter.format(params.settingInfo.timer, \"M月d日\")}).click();\n\n\t\t\tconst timeDropMenu = page.locator(\".mass-send__timer .weui-desktop-picker__time:visible\")\n\t\t\tawait timeDropMenu.locator(\".weui-desktop-form__input\").fill(TimeFormatter.format(params.settingInfo.timer, \"hh:mm\"));\n\t\t\tawait timeDropMenu.locator(\"i.weui-desktop-icon__time\").click();\n\n\t\t}\n\t});\n\tawait page.waitForTimeout(200);\n\n\tif(params.masssend){\n\t\tconst times = Number(await page.locator(\".mass-send .multi-sent__notice_time\").locator('div[style=\"display: none;\"] div:not([style*=\"display: none\"]) span').textContent())\n\t\tif( times==0 ) return { code: 200, message: \"今日群发次数用尽,请明天再试。\", data: \"\" };\n\t\tawait page.locator(\".mass-send .mass_send__notify\").locator(\".weui-desktop-switch__box\").check();\n\t}else{\n\t\tawait page.locator(\".mass-send .mass_send__notify\").locator(\".weui-desktop-switch__box\").uncheck();\n\t}\n\n\tawait page.waitForTimeout(200);\n\n\t// 再次点击发表\n\tawait page.waitForSelector('.new_mass_send_dialog .weui-desktop-dialog__wrp:not([style*=\"display: none\"])', {state: \"visible\"});\n\tawait page.locator(\".new_mass_send_dialog .weui-desktop-dialog .weui-desktop-dialog__ft button.weui-desktop-btn_primary\").click();\n\n\t// 点击继续发表\n\tawait page.waitForSelector('.double_check_dialog .weui-desktop-dialog__wrp:not([style*=\"display: none\"])', {state: \"visible\",});\n\tawait page.locator(\".double_check_dialog .weui-desktop-dialog .weui-desktop-dialog__ft button.weui-desktop-btn_primary\").click();\n\n\tawait page.waitForTimeout(2000);\n\n\t// 原创校验弹窗\n\tconst originalCheckDialog = page.locator('div[data-transfer=\"true\"][width\\\\.number=\"800\"][height\\\\.number=\"800\"] .weui-desktop-dialog__title')\n\tif((await originalCheckDialog.count() > 0) ){\n\t\tif (await originalCheckDialog.textContent() === \"原创校验\"){\n\t\t\tconst popMassend = page.locator('div[data-transfer=\"true\"][width\\\\.number=\"800\"][height\\\\.number=\"800\"]')\n\t\t\tawait popMassend.locator(\".weui-desktop-btn_primary\",{hasText: \"下一步\"}).click();\n\t\t\tawait popMassend.locator(\".weui-desktop-btn_primary\",{hasText: \"继续\"}).click();\n\t\t}\n\t}\n\n\n\ttry {\n\t\tconst startTime = Date.now();\n\n\t\t// biome-ignore lint/suspicious/noAsyncPromiseExecutor: <explanation>\n\t\tawait new Promise<void>(async (resolve, reject) => {\n\t\t\t// 定义响应处理函数\n\t\t\tconst handleResponse = async (response: Response) => {\n\t\t\t\tif (response.url().includes(\"/safe/safeuuid\")) {\n\t\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\t\tif (jsonResponse.errcode === 405) {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\t\t} else if (Date.now() - startTime > waitQrcodeResultMaxTime) {\n\t\t\t\t\t\treject();\n\t\t\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// 开始监听响应事件\n\t\t\tpage.on(\"response\", handleResponse);\n\n\t\t\t// 获取微信验证二维码\n\t\t\tawait page.waitForSelector(\".dialog .js_wxchecks.safe_check img.qrcode.js_qrcode\", {\n\t\t\t\tstate: \"visible\",\n\t\t\t});\n\t\t\tconst qrcodeSrc = await page\n\t\t\t\t.locator(\".dialog .js_wxchecks.safe_check img.qrcode.js_qrcode\")\n\t\t\t\t.first()\n\t\t\t\t.getAttribute(\"src\");\n\t\t\tif (qrcodeSrc) {\n\t\t\t\tconst imgUrl = new URL(qrcodeSrc, page.url()).href; // 处理相对路径\n\t\t\t\tconst response = await axios({\n\t\t\t\t\tmethod: \"get\",\n\t\t\t\t\turl: imgUrl,\n\t\t\t\t\tresponseType: \"arraybuffer\", // 确保接收二进制数据\n\t\t\t\t});\n\t\t\t\t// 保存文件\n\t\t\t\tconst qrcodeFilePath = path.join(tmpCachePath, \"weixin_qrcode.jpg\");\n\t\t\t\tfs.writeFileSync(qrcodeFilePath, response.data);\n\t\t\t\tparams.safeQrcodeCallback?.(qrcodeFilePath);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"qrcodeSrc is empty\");\n\t\t\t}\n\t\t});\n\t} catch (error) {\n\t\tawait page.close();\n\t\treturn { code: 500, message: \"群发二维码已过期,请重试发布。\", data: \"\" };\n\t}\n\n\tawait page.waitForTimeout(3000);\n\tawait page.close();\n\n\treturn success(articleId);\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\n\nimport type { ActiomCommonParams } from \"../../types\";\nimport { defaultParams, executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\nimport { CollectDetail } from '../getWeixinCollection'\n\nexport interface WxInteraction {\n\tType: \"public\" | \"private\" | \"off\"; // public:评论留言, priviate: 快捷私信, off: 不开启\n\tOption?: { // public下相关设置\n\t Comment: \"已关注7天及以上的用户\" | \"已关注的用户\" | \"所有用户\"; // 评论设置\n\t reply: \"已关注7天及以上的用户\" | \"已关注的用户\" | \"所有用户\"; // 回复设置\n\t elect_comment: boolean; // 是否开启精选评论\n\t elect_reply: boolean; // 是否开启精选回复\n\t};\n }\n\nexport interface WeixinPublishParams extends ActiomCommonParams {\n\tsaveType: \"draft\" | \"publish\"; // 保存成草稿 / 发布\n\tmasssend?: boolean; // 是否群发(默认开启群发)\n\ttoken: string | number;\n\ttitle: string; // 标题\n\tcontent: string; // 正文内容\n\tuuid?: string;\n\tappMsgId?: string;\n\toperation_seq?: string;\n proxyLoc?: string; // 代理位置\n huiwenToken?: string; // 绘文token\n\tsettingInfo: {\n\t\twxCover: string; // 封面\n\t\twxAuthor?: string; // 作者\n\t\twxAbstract?: string; // 摘要\n\t\twxOriginalText?: string; // 原文链接\n\t\twxCopyright?: boolean, // 版权声明\n\t\twxWhitelist?: string[]; // 转载白马名单\n\t\twxRewardTarget?: Record<string, string>; // 赞赏目标与ID\n\t\twxRewardText?: string; // 赞赏文案\n\t\twxQuickReprint?: boolean; // 快捷转载\n\t\twxNotAllowRecommend?: boolean; // 不允许被平台推荐\n\t\twxCreationSource?: string[]; // 创作来源\n\t\twxInteraction?: WxInteraction // 互动设置\n\t\ttimer?: number; // 定时发文时间\n wxTopic?: string[]; //话题数组\n wxCollectionInfo?: CollectDetail; // 文章合集信息\n\t};\n\tsafeQrcodeCallback?: (qrcodePath: string) => void; // 二维码验证回调\n}\n\nexport interface WxWhitelistUserInfo {\n\tnickname: string;\n\topenid: string; // 微信常用字段命名可能是 open_id\n\tusername: string;\n\twx_name: string;\n\tpic_url: string;\n}\n\nexport type PublishAction = CommonAction<WeixinPublishParams, string>;\n\nexport const weixinPublish: PublishAction = async (task, _params) => {\n\tconst params = defaultParams(_params, { masssend: true });\n\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\n\nimport type { PublishAction, WeixinmpPublishParams } from \".\";\nimport type { Weixin } from \"../../types\";\nimport type { AspectRatio } from \"../../utils\";\nimport { calculateCropCoordinates, getFileState } from \"../../utils\";\nimport { Http } from \"../../utils/http\"\n\ntype ColorResponse = {\n\twidth: number;\n\theight: number;\n\ttheme_color: { r: number; g: number; b: number };\n};\ntype ShareInamgeInfo = {\n\tcdn_url: string;\n\tdisable_live: 0;\n\tdisable_theme: 1;\n\tfile_id: number;\n\twidth: number;\n\theight: number;\n\ttheme_color: string;\n\turl: string;\n};\n\nconst saveDraft = (\n\thttp: Http,\n\tparams: WeixinmpPublishParams,\n\tdata: Record<string, unknown>,\n) => {\n\tconst formData = new FormData();\n\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tformData.append(key, value);\n\t}\n\n\treturn http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/operate_appmsg\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tt: \"ajax-response\",\n\t\t\tsub: \"update\",\n\t\t\ttype: 77,\n\t\t\tlang: \"zh_CN\",\n\t\t},\n\t\tdata: formData,\n\t});\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\torigin: \"https://mp.weixin.qq.com\",\n\t\t\treferer: `https://mp.weixin.qq.com/cgi-bin/appmsg?token=${params.token}&lang=zh_CN`,\n\t\t},\n\t});\n\n\t// 1. 上传图片\n\tconst shareImageInfos: ShareInamgeInfo[] = [];\n\tconst cropResult: Record<string, string> = {};\n\n\tif (params.banners && params.banners.length > 0) {\n\t\t// 下载图片到本地\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tfor (let index = 0; index < images.length; index++) {\n\t\t\tconst image = images[index];\n\t\t\tconst fileState = getFileState(image);\n\n\t\t\tconst formData = new FormData();\n\t\t\tformData.append(\"id\", `WU_FILE_${index + 1}`);\n\t\t\tformData.append(\"name\", fileState.name);\n\t\t\tformData.append(\"type\", fileState.type);\n\t\t\tformData.append(\"lastModifiedDate\", fileState.lastModifiedDate);\n\t\t\tformData.append(\"size\", fileState.size);\n\t\t\tformData.append(\"file\", fs.createReadStream(image));\n\n\t\t\tconst response = await http.api<{ cdn_url: string; content: string }>({\n\t\t\t\tmethod: \"post\",\n\t\t\t\turl: `https://mp.weixin.qq.com/cgi-bin/filetransfer?action=upload_material&f=json&writetype=doublewrite&token=${params.token}&lang=zh_CN`,\n\t\t\t\tdata: formData,\n\t\t\t});\n\n\t\t\t// 获取图片的主题色\n\t\t\tconst colorResponseData = await http.api<ColorResponse>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/filepage\",\n\t\t\t\tparams: {\n\t\t\t\t\taction: \"getimgext\",\n\t\t\t\t\tfileid: response.content,\n\t\t\t\t\ttoken: params.token,\n\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\tf: \"json\",\n\t\t\t\t\tajax: 1,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst themeColor = colorResponseData.theme_color;\n\n\t\t\tshareImageInfos.push({\n\t\t\t\tcdn_url: response.cdn_url,\n\t\t\t\tdisable_live: 0,\n\t\t\t\tdisable_theme: 1,\n\t\t\t\tfile_id: Number(response.content),\n\t\t\t\twidth: colorResponseData.width,\n\t\t\t\theight: colorResponseData.height,\n\t\t\t\ttheme_color: `rgb(${themeColor.r},${themeColor.g},${themeColor.b})`,\n\t\t\t\turl: response.cdn_url,\n\t\t\t});\n\n\t\t\t// 第一张图片还需要添加头图裁切\n\t\t\tif (index === 0) {\n\t\t\t\tconst cropFormData = new FormData();\n\t\t\t\tcropFormData.append(\"imgurl\", response.cdn_url);\n\n\t\t\t\t// 需要裁切 16:9,3:4,1:1 三种尺寸的图片\n\t\t\t\tconst cropRatios: AspectRatio[] = [\n\t\t\t\t\t[16, 9],\n\t\t\t\t\t[1, 1],\n\t\t\t\t\t[3, 4],\n\t\t\t\t];\n\t\t\t\tcropFormData.append(\"size_count\", cropRatios.length);\n\t\t\t\tconst cropCoordinates = cropRatios.map((r, idx) => {\n\t\t\t\t\tconst cropCoordinate = calculateCropCoordinates(\n\t\t\t\t\t\tcolorResponseData.width,\n\t\t\t\t\t\tcolorResponseData.height,\n\t\t\t\t\t\tr,\n\t\t\t\t\t);\n\t\t\t\t\tcropFormData.append(`size${idx}_x1`, cropCoordinate.x1);\n\t\t\t\t\tcropFormData.append(`size${idx}_y1`, cropCoordinate.y1);\n\t\t\t\t\tcropFormData.append(`size${idx}_x2`, cropCoordinate.x2);\n\t\t\t\t\tcropFormData.append(`size${idx}_y2`, cropCoordinate.y2);\n\n\t\t\t\t\treturn { ratio: `${r[0]}_${r[1]}`, ...cropCoordinate };\n\t\t\t\t});\n\n\t\t\t\tcropFormData.append(\"token\", params.token);\n\t\t\t\tcropFormData.append(\"lang\", \"zh_CN\");\n\t\t\t\tcropFormData.append(\"f\", \"json\");\n\t\t\t\tcropFormData.append(\"ajax\", 1);\n\n\t\t\t\tconst cropResponse = await http.api<{ result: Weixin.WeiXinCropResult[] }>({\n method: \"post\",\n url: \"https://mp.weixin.qq.com/cgi-bin/cropimage?action=crop_multi\",\n data: cropFormData\n });\n\n\t\t\t\tcropResult.cdn_url_back0 = response.cdn_url; // 原图\n\t\t\t\tcropResult.cdn_url0 = cropResponse.result[0].cdnurl; // 16:9\n\t\t\t\tcropResult.cdn_235_1_url0 = cropResponse.result[0].cdnurl; // 16:9\n\t\t\t\tcropResult.cdn_16_9_url0 = cropResponse.result[0].cdnurl; // 16:9\n\t\t\t\tcropResult.cdn_1_1_url0 = cropResponse.result[1].cdnurl; // 1:1\n\t\t\t\tcropResult.cdn_3_4_url0 = cropResponse.result[2].cdnurl; // 3:4\n\t\t\t\tcropResult.crop_list0 = JSON.stringify({\n\t\t\t\t\tcrop_list: cropCoordinates.map((it, idx) => ({\n\t\t\t\t\t\tfile_id: cropResponse.result[idx].file_id,\n\t\t\t\t\t\tratio: it.ratio,\n\t\t\t\t\t\tx1: 0,\n\t\t\t\t\t\tx2: 0,\n\t\t\t\t\t\ty1: 0,\n\t\t\t\t\t\ty2: 0,\n\t\t\t\t\t})),\n\t\t\t\t\tcrop_list_percent: cropCoordinates.map((it, idx) => ({\n\t\t\t\t\t\t...it,\n\t\t\t\t\t\tfile_id: cropResponse.result[idx].file_id,\n\t\t\t\t\t})),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// 保存\n\tconst res = await saveDraft(http, params, {\n\t\t...cropResult,\n\t\ttoken: params.token,\n\t\tlang: \"zh_CN\",\n\t\tf: \"json\",\n\t\tajax: 1,\n\t\toperate_from: \"Chrome\",\n\t\ttitle0: params.title,\n\t\tcontent0: params.content,\n\t\tshare_imageinfo0: JSON.stringify(shareImageInfos),\n\t});\n\n return success(res)\n};\n","import path from \"node:path\";\nimport type { CookieMap } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport type { PublishAction, Source } from \"./index\";\n\nconst sourceText: Record<Source, string> = {\n\tai: \"内容由AI生成\",\n\tofficial: \"素材来源官方媒体/网络新闻\",\n\tfictional: \"内容剧情演绎,仅供娱乐\",\n\tpersonal: \"个人观点,仅供参考\",\n};\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"mp.weixin.qq.com\",\n\t\turl: \"https://mp.weixin.qq.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl:\n\t\t\tparams.url ||\n\t\t\t`https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&type=77&createType=8&token=${params.token}&lang=zh_CN`,\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\tconst tmpCachePath = task.getTmpPath();\n\n\t// 0. 判断是否登录\n\ttry {\n\t\tawait page.waitForSelector(\"#editor_pannel\");\n\t} catch (error) {\n\t\treturn { code: 500, message: \"登录失效\", data: page.url() };\n\t}\n\n\tconst container = page.locator(\"#editor_pannel\");\n\n\t// 1. 添加图片\n\tif (params.banners && params.banners.length > 0) {\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\t// 选择文件\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait container.locator(\".image-selector__add\").hover();\n\t\tawait container\n\t\t\t.locator(\".image-selector__add .pop-opr__list .pop-opr__item\")\n\t\t\t.filter({ hasText: \"本地上传\" })\n\t\t\t.click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles(images);\n\t}\n\n\t// 2. 标题\n\tconst titleInstance = page.locator(\"#js_title_main textarea#title\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 3. 正文\n\tconst descInstance = page.locator(\"#guide_words_main .ProseMirror\");\n\tawait descInstance.click();\n\tawait descInstance.fill(params.content);\n\n\t// 4. 来源\n\tif (params.source) {\n\t\tawait container.locator(\"#js_claim_source_area .js_claim_source_desc\").click();\n\t\tawait page\n\t\t\t.locator(\".popover_article_claim_source .frm_radio_item label\")\n\t\t\t.filter({ hasText: sourceText[params.source] })\n\t\t\t.click();\n\t}\n\n\t// 5. 等待所有图片上传完成\n\tif (params.banners && params.banners.length > 0) {\n\t\tawait page.waitForSelector(\"#editor_pannel .image-selector .image-selector__preview\");\n\t}\n\n\t// 6. 保存\n\tif (params.draft) {\n\t\tawait container.locator(\"#bottom_main #js_submit button\").click();\n\t} else {\n\t\tawait container.locator(\"#bottom_main #js_send button\").click();\n\t}\n\n\treturn success(\"\");\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\n\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\nexport type Source = \"ai\" | \"official\" | \"fictional\" | \"personal\";\n\nexport interface WeixinmpPublishParams extends ActiomCommonParams {\n\ttoken: string | number;\n\tbanners?: string[];\n\ttitle: string; // 标题\n\tcontent: string; // 正文\n\t/**\n\t * 内容由AI生成 - ai\n\t * 素材来源官方媒体/网络新闻 - official\n\t * 内容剧情演绎,仅供娱乐 - fictional\n\t * 个人观点,仅供参考 - personal\n\t */\n\tsource?: Source; // 来源\n\tdraft?: boolean; // 是否为草稿\n}\n\nexport type PublishAction = CommonAction<WeixinmpPublishParams>;\n\nexport const weixinmpPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import fs from \"node:fs\";\n\nimport path from \"node:path\";\nimport {downloadImage, getFilenameFromUrl, success} from \"@iflyrpa/share\";\nimport {type PublishAction} from \".\";\nimport {Http} from \"../../utils/http\";\nimport {Xhshow} from \"../../utils/xhsXsEncrypt\";\nimport {CollectionResponse} from \"../getXhsCollection\";\nconst GenXSCommon = require(\"../../utils/XhsXsCommonEnc.js\") as (a1cookie: string, x_t: string|number, x_s:string) => string;\n\ninterface CommonResponse<T = unknown> {\n data: T;\n proxyInfo?: Record<string, any>\n code: number;\n success: boolean;\n}\n\ninterface UploadTempPermit<T = string[]> {\n bucket: string;\n uploadAddr: string;\n fileIds: T;\n token: string;\n}\n\nconst errnoMap: Record<number, string> = {\n 915: \"所属C端账号手机号被修改,请重新登录\",\n 914: \"所属C端账号密码被修改,请重新登录\",\n 903: \"账户已登出,需重新登陆重试!\",\n 902: \"登录已过期,请重新登录!\",\n 906: \"账号存在风险,请重新登录\"\n};\n\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport const mockAction: PublishAction = async (task, params) => {\n const tmpCachePath = task.getTmpPath();\n if ( params?.selfDeclaration?.type == \"source-statement\" && params.selfDeclaration.childType == \"transshipment\" && params.originalBind ) return {code: 200, message: \"原创声明与转载声明互斥,请重新选择后发布!\", data: \"\"};\n const a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) {\n return {code: 200, message: \"账号数据异常,请重新绑定账号后重试。\", data: \"\"};\n }\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n origin: \"https://creator.xiaohongshu.com\",\n referer: \"https://creator.xiaohongshu.com/\",\n \"user-agent\":\n \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36\",\n }\n const http = new Http({headers});\n\n // 添加响应拦截器\n http.addResponseInterceptor<CommonResponse>((response) => {\n const responseData = response.data;\n\n // 检查响应中的 errno 字段\n if (responseData?.code && responseData.code !== 0) {\n const errmsg = errnoMap[responseData.code] || response.config.defaultErrorMsg || \"文章发布异常,请稍后重试。\";\n\n return {\n code: errnoMap[responseData.code] ? 200 : 500,\n message: errmsg,\n data: responseData\n };\n }\n });\n \n // 0. 获取上传 token\n const fetchCoverUrl = `/api/media/v1/upload/creator/permit`;\n const fetchCoverParams = {\n biz_name: \"spectrum\", \n scene: \"image\", \n file_count: params.banners.length,\n version: 1, \n source: \"web\"\n }\n const xt = Date.now().toString();\n const xs = xsEncrypt.signXsGet(fetchCoverUrl, a1Cookie, \"xhs-pc-web\", fetchCoverParams);\n const coverIdInfo = await http.api<CommonResponse<{ uploadTempPermits: UploadTempPermit[] }>>({\n method: \"get\",\n baseURL: \"https://creator.xiaohongshu.com\",\n url: fetchCoverUrl,\n defaultErrorMsg: \"获取小红书用户信息失败,请稍后重试发布。\",\n headers: {\"x-s\": xs, \"x-t\": xt},\n params: fetchCoverParams\n });\n\n let uploadInfos: UploadTempPermit<string>[] = [];\n coverIdInfo.data.uploadTempPermits.forEach((item: UploadTempPermit<string[]>) => {\n item.fileIds.forEach(fileId => {\n uploadInfos.push({\n bucket: item.bucket || \"\",\n uploadAddr: item.uploadAddr || \"\",\n fileIds: fileId,\n token: item.token || \"\"\n });\n });\n });\n\n\n if (uploadInfos.length < params.banners.length) return {code: 200, message: \"可用 OSS bucket 数量不足,无法上传所有图片!\", data: \"\"};\n\n if (uploadInfos.length === 0) return {code: 200, message: \"图片上传失败,请稍后重试!\", data: \"\"};\n\n const availableBuckets = Array.from({length: uploadInfos.length}, (_, i) => i);\n\n const uploadFile = async (url: string, index: number): Promise<{\n ossFileId: string;\n ossToken: string;\n }> => {\n const fileName = getFilenameFromUrl(url);\n const localUrl = await downloadImage(url, path.join(tmpCachePath, fileName));\n const fileBuffer = fs.readFileSync(localUrl);\n\n const MAX_RETRIES = uploadInfos.length;\n let attempt = 0;\n\n while (attempt < MAX_RETRIES) {\n // 分配 bucket\n const ossBucketIndex = availableBuckets.shift(); // 移除并获取第一个可用 bucket\n\n if (ossBucketIndex === undefined) {\n return {ossFileId: \"\", ossToken: \"\"}; // 没有可用 bucket\n }\n\n const currentInfo = uploadInfos[ossBucketIndex];\n const ossFileId = currentInfo.fileIds;\n const ossToken = currentInfo.token;\n const ossDomain = currentInfo.uploadAddr;\n\n try {\n await http.api({\n method: \"put\",\n url: `https://${ossDomain}/${ossFileId}`,\n data: fileBuffer,\n headers: {\n \"x-cos-security-token\": ossToken,\n },\n defaultErrorMsg: \"图片上传异常,请稍后重试发布。\",\n });\n return {ossFileId, ossToken};\n } catch (error) {\n attempt++;\n }\n }\n return {ossFileId: \"\", ossToken: \"\"}; // 所有尝试失败\n };\n\n const coverInfos = await Promise.all(params.banners.map((it, idx) => uploadFile(it, idx)));\n const invalidUpload = coverInfos.find((it) => it.ossToken === \"\" || it.ossFileId == \"\")\n if (invalidUpload) return {code: 200, message: \"图片上传异常,请稍后重试发布。\", data: \"\"}\n\n if (params.topic && params.topic.length > 0) {\n await Promise.all(params.topic.map(async (topic) => {\n if (!topic[\"id\"]) {\n const topicData = {topic_names: topic[\"name\"]}\n const publishXt = Date.now().toString();\n const publishXs = xsEncrypt.signXsPost(`/web_api/sns/capa/postgw/topic/batch_customized`, a1Cookie,\"xhs-pc-web\", topicData);\n let createTopic = await http.api({\n method: \"POST\",\n url: \"https://edith.xiaohongshu.com/web_api/sns/capa/postgw/topic/batch_customized\",\n headers: {\n \"x-s\": publishXs,\n \"x-t\": publishXt,\n },\n data: topicData,\n defaultErrorMsg: \"话题创建异常,请稍后重试。\",\n })\n Object.assign(topic, createTopic.data.topic_infos[0])\n }\n }))\n };\n \n const visibleRangeMap = {\n \"public\": 0,\n \"private\": 1,\n \"friends\": 4\n }\n\n const publishData = {\n common: {\n ats: [],\n biz_relations: [],\n desc: params?.content,\n goods_info: {},\n hash_tag: params.topic || [],\n note_id: \"\",\n source: JSON.stringify({\n type: \"web\",\n ids: \"\",\n extraInfo: '{\"systemId\":\"web\"}',\n }),\n title: params?.title,\n type: \"normal\",\n privacy_info: {\n op_type: 1,\n type: visibleRangeMap[params.visibleRange] || 1 ,\n },\n post_loc: params.address\n ? {\n name: params.address?.name,\n poi_id: params.address?.poi_id,\n poi_type: params.address?.poi_type,\n subname: params.address?.full_address,\n }\n : null,\n business_binds: \"\",\n },\n image_info: {\n images: coverInfos.map((it) => ({\n extra_info_json: '{\"mimeType\":\"image/png\"}',\n file_id: it.ossFileId,\n metadata: {source: -1},\n stickers: {floating: [], version: 2},\n })),\n },\n video_info: null,\n };\n\n // 自主声明\n const userDeclarationBind = {\n origin: 2,\n photoInfo: {},\n repostInfo: {},\n };\n\n if (params.selfDeclaration?.type === \"fictional-rendition\") {\n // 虚拟演绎,仅供娱乐\n userDeclarationBind.origin = 1;\n } else if (params.selfDeclaration?.type === \"ai-generated\") {\n // 笔记含AI合成内容\n userDeclarationBind.origin = 2;\n } else if (params.selfDeclaration?.type === \"source-statement\") {\n // 内容来源声明\n if (params.selfDeclaration.childType === \"self-labeling\") {\n // 已自主标注\n userDeclarationBind.origin = 3;\n } else if (params.selfDeclaration.childType === \"self-shooting\") {\n // 自主拍摄\n userDeclarationBind.origin = 4;\n const photoInfo: { photoPlace?: unknown; photoTime?: string } = {};\n\n if (params.selfDeclaration.shootingLocation) {\n // 拍摄地点\n photoInfo.photoPlace = {\n name: params.selfDeclaration.shootingLocation.name,\n poiId: params.selfDeclaration.shootingLocation.poi_id,\n poiType: params.selfDeclaration.shootingLocation.poi_type,\n subname: params.selfDeclaration.shootingLocation.full_address,\n };\n }\n\n if (params.selfDeclaration.shootingDate) {\n // 拍摄日期\n photoInfo.photoTime = params.selfDeclaration.shootingDate;\n }\n\n userDeclarationBind.photoInfo = photoInfo;\n } else if (params.selfDeclaration.childType === \"transshipment\") {\n // 来源转载\n userDeclarationBind.origin = 5;\n\n if (params.selfDeclaration.sourceMedia) {\n // 来源媒体\n userDeclarationBind.repostInfo = {\n source: params.selfDeclaration.sourceMedia,\n };\n }\n }\n }\n const bizId =\n params?.originalBind &&\n (\n params.cookies.find((it) => it.name === \"x-user-id-creator.xiaohongshu.com\")?.value ||\n await http.api<CollectionResponse>({\n method: \"get\",\n url: \"https://creator.xiaohongshu.com/api/galaxy/user/my-info\",\n }).then((userData) => userData.data?.userDetail?.id)\n );\n \n const business_binds = {\n version: 1,\n bizType: \"\",\n noteId: \"\",\n noteOrderBind: {},\n // 发布时间 - 立即发布/定时发布\n notePostTiming: params.isImmediatelyPublish ? {} : {postTime: params.scheduledPublish},\n coProduceBind: {enable: !!params?.coProduceBind}, // 是否允许合拍\n noteCopyBind: {copyable: !!params?.noteCopyBind}, // 关闭允许复制\n optionRelationList: params.originalBind ? [{ // 原创声明\n type: \"ORIGINAL_STATEMENT\",\n relationList: [{\n bizId,\n bizType: \"ORIGINAL_STATEMENT\",\n extraInfo: \"{}\"\n }]\n }] : [],\n ...(params?.groupBind ? { groupBind: { groupId: params?.groupBind?.group_id, groupName: params.groupBind?.group_name, desc: params.groupBind?.desc, avatar: params.groupBind?.avatar}} : {groupBind:{}}),\n ...(params.selfDeclaration ? {userDeclarationBind} : {}),\n ...(params?.collectionId ? { noteCollectionBind:{ id: params.collectionId }}: {}),\n \n };\n\n publishData.common.business_binds = JSON.stringify(business_binds);\n \n const publishXt = Date.now().toString();\n const publishXs = xsEncrypt.signXsPost(`/web_api/sns/v2/note`, a1Cookie,\"xhs-pc-web\", publishData);\n const xscommon = GenXSCommon(a1Cookie, publishXt, publishXs)\n \n const proxyHttp = task?.isBeta ?? false ? new Http({headers}, params.proxyLoc, params.huiwenToken ) : http;\n \n task._timerRecord['PrePublish']= Date.now();\n // 发布\n const publishResult = await proxyHttp.api<CommonResponse<{ id: string }>>({\n method: \"post\",\n url: \"https://edith.xiaohongshu.com/web_api/sns/v2/note\",\n data: publishData,\n headers: {\n \"x-s\": publishXs,\n \"x-t\": publishXt,\n \"x-s-common\": xscommon\n },\n defaultErrorMsg: \"文章发布异常,请稍后重试。\",\n }, {retries: 2, retryDelay: 500});\n\n return success(publishResult.data?.id, `文章发布成功!`+ (proxyHttp.proxyInfo || \"\"));\n};\n","import path from \"node:path\";\nimport type { CookieMap, Locator, Response } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport { Xhshow } from \"../../utils/xhsXsEncrypt\";\nimport type { PublishAction } from \"./index\";\nconst GenXSCommon = require(\"../../utils/XhsXsCommonEnc.js\") as (a1cookie: string, x_t: string|number, x_s:string) => string;\n\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsameSite: \"lax\",\n\t\tsecure: false,\n\t\tdomain: \"xiaohongshu.com\",\n\t\turl: \"https://creator.xiaohongshu.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://creator.xiaohongshu.com/publish/publish\",\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst interceptUrls = [\n\t\t'/api/media/v1/upload/creator/permit',\n\t\t'/api/galaxy/v2/creator/activity_center/list',\n\t\t'/web_api/sns/v5/creator/topic/template/list',\n\t\t'/web_api/sns/v5/creator/file/encryption',\n\t\t'/web_api/sns/capa/postgw/topic/batch_customized',\n\t\t'/web_api/sns/v2/note'\n\t];\n\n\tawait page.route('**', async (route, request) => {\n\t\tconst url = request.url();\n\t\tif (interceptUrls.some(pattern => url.includes(pattern))) {\n\t\t\tconst urlObj = new URL(url);\n\t\t\tconst fetchCoverUrl = urlObj.pathname + urlObj.search;\n const fetchCoverParams = Object.fromEntries(new URLSearchParams(urlObj.search));\n\t\t\tconst xt = Date.now().toString();\n\n\t\t\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\t\t\tif (!a1Cookie) {\n\t\t\t\tawait route.fulfill({\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\tcontentType: 'application/json',\n\t\t\t\t\tbody: JSON.stringify({ code: 200, message: \"账号数据异常,请重新绑定账号后重试。\", data: \"\" })\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isNoteRequest = urlObj.pathname.includes(interceptUrls[5]);\n\n\t\t\tconst xs = await (isNoteRequest\n\t\t\t\t? (async () => {\n\t\t\t\t\tconst publishData = JSON.parse(request.postData() || \"\")\n\t\t\t\t\treturn xsEncrypt.signXsPost(interceptUrls[5], a1Cookie,\"xhs-pc-web\" ,publishData);\n\t\t\t\t })(): xsEncrypt.signXsGet(urlObj.pathname, a1Cookie, \"xhs-pc-web\" , fetchCoverParams))\n\n const xscommon = GenXSCommon(a1Cookie, xt, xs)\n\n\t\t\tconst newHeaders = {\n\t\t\t\t...request.headers(),\n\t\t\t\t'x-s': xs,\n 'x-s-common':xscommon\n\t\t\t};\n\n\t\t\tawait route.continue({ headers: newHeaders });\n\t\t}else {\n\t\t\tawait route.continue();\n\t\t}\n\t});\n\n\n\t// 通用的选择地点\n\tconst selectAddress = async (selector: Locator, address: string) => {\n\t\tconst instance = typeof selector === \"string\" ? page.locator(selector) : selector;\n\t\tawait instance.click();\n\t\tawait instance.locator(\"input\").fill(address);\n\t\tconst poperInstance = page.locator('.d-popover:not([style*=\"display: none\"]) .d-options .d-grid-item');\n\t\tawait poperInstance.first().waitFor();\n\t\tawait poperInstance.first().click();\n\t};\n\n\t// 通用的选择日期\n\tconst selectDate = async (selector: string | Locator, date: string) => {\n\t\tconst instance = typeof selector === \"string\" ? page.locator(selector) : selector;\n\t\tawait instance.click();\n\t\tawait instance.fill(date);\n\t\tawait instance.blur();\n\t};\n\n\t// 查找显示的 popover 弹窗\n\tconst getPoperInstance = async (): Promise<Locator> => {\n\t\tawait page.waitForTimeout(500);\n\t\tconst elements = page.locator(\".d-popover\");\n\t\tconst count = await elements.count();\n\t\tconst visibleElements: (typeof elements)[] = [];\n\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst element = elements.nth(i);\n\t\t\tconst style = await element.getAttribute(\"style\");\n\t\t\tif (style && !style.includes(\"display: none\")) {\n\t\t\t\tvisibleElements.push(element);\n\t\t\t}\n\t\t}\n\n\t\tif (visibleElements.length > 0) {\n\t\t\treturn visibleElements[visibleElements.length - 1];\n\t\t}\n\n\t\tthrow new Error(\"未找到 popover 弹窗\");\n\t};\n\n\t// 查找显示的 dialog 弹窗\n\tconst getDialogInstance = async (): Promise<Locator> => {\n\t\tawait page.waitForTimeout(1000);\n\t\tconst elements = page.locator(\".el-dialog\");\n\t\treturn elements.last();\n\t};\n\n\t// 自动化脚本\n\t// ----------------------------------------------------------------------------------\n\n\t// 等待登录成功\n\ttry {\n\t\tawait page.waitForSelector(\"#CreatorPlatform\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn { code: 400, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 跳转到发布页面\n\tawait page.locator(\"#content-area .menu-container .publish-video .btn\").click();\n\n\t// 点击上传图文\n\tawait page\n\t\t.locator('.creator-container .header .creator-tab:not([style*=\"-9999px\"]) .title')\n\t\t.filter({ hasText: /^上传图文$/ })\n\t\t.click();\n\n\t// 获取待上传图片的本地路径\n\tconst images = await Promise.all(\n\t\tparams.banners.map((url) => {\n\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t}),\n\t);\n\n\t// 选择文件\n\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\tawait page.getByRole(\"textbox\").click();\n\tconst fileChooser = await fileChooserPromise;\n\tawait fileChooser.setFiles(images);\n\n\t// 填写标题\n\tconst titleInstance = page.locator(\".input.titleInput input\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 填写正文\n\tconst descInstance = page.locator(\".editor-container #quillEditor .ql-editor\");\n\tawait descInstance.click();\n\tawait descInstance.pressSequentially(params.content.replace(/#.*?\\[.*?]\\#/g,\"\"));\n\n\t// 填写话题\n\tif(params.topic && params.topic.length > 0){\n\t\tfor (const it of params.topic) {\n\t\t\tawait descInstance.pressSequentially(`#${it[\"name\"]}`);\n\t\t\tawait page.locator('.ql-mention-loading').waitFor({ state: 'detached' });\n\t\t\tawait page.waitForTimeout(1000);\n\t\t\tawait page.locator('#quill-mention-item-0 .item-view-num').click();\n\t\t};\n\t}\n\n\t// 滚动到底部\n\tconst container = page.locator(\".creator-container .content .scroll-content\");\n\tawait container.focus();\n\tawait page.mouse.wheel(0, 500); // 向下滚动 500 像素\n\n\tif (params.address) {\n\t\t// 填写地点\n\t\tawait selectAddress(\n\t\t\tpage.locator(\".media-extension .address-input\").filter({ hasText: \"添加地点\" }),\n\t\t\tparams.address.name,\n\t\t);\n\t}\n\n\tif (params.selfDeclaration) {\n\t\t// 自主声明\n\t\tawait page.locator(\".media-settings .flexbox\").filter({ hasText: \"内容类型声明\" }).locator(\".d-select-placeholder\").click();\n\t\tconst poperInstance = await getPoperInstance();\n\t\tconst selfDeclarationInstance = poperInstance.locator(\".d-options .d-option\");\n\t\tif (params.selfDeclaration.type === \"fictional-rendition\") {\n\t\t\tawait selfDeclarationInstance.filter({ hasText: \"虚构演绎,仅供娱乐\" }).click();\n\t\t} else if (params.selfDeclaration.type === \"ai-generated\") {\n\t\t\tawait selfDeclarationInstance.filter({ hasText: \"笔记含AI合成内容\" }).click();\n\t\t} else if (params.selfDeclaration.type === \"source-statement\") {\n\t\t\tawait selfDeclarationInstance.filter({ hasText: /内容来源声明/ }).click();\n\t\t\t// 内容来源声明二级菜单\n\t\t\tconst selfDeclarationSecondaryMenuInstance = (await getPoperInstance()).locator(\".d-options .d-option\");\n\t\t\t// 等待元素出现\n\t\t\tawait selfDeclarationSecondaryMenuInstance.first().waitFor();\n\t\t\tif (params.selfDeclaration.childType === \"self-labeling\") {\n\t\t\t\tawait selfDeclarationSecondaryMenuInstance.filter({ hasText: \"已在正文中自主标注\" }).click();\n\t\t\t} else if (params.selfDeclaration.childType === \"self-shooting\") {\n\t\t\t\tconst { shootingDate, shootingLocation } = params.selfDeclaration;\n\t\t\t\tawait selfDeclarationSecondaryMenuInstance.filter({ hasText: \"自主拍摄\" }).click();\n\t\t\t\t// 自主拍摄弹窗\n\t\t\t\tconst selfShootingPopup = await getDialogInstance();\n\t\t\t\tconst hasCustomContent = shootingDate || shootingLocation;\n\n\t\t\t\t// 选择拍摄地点\n\t\t\t\tif (shootingLocation) {\n\t\t\t\t\tawait selectAddress(selfShootingPopup.locator(\".address-input\"), shootingLocation.name);\n\t\t\t\t}\n\t\t\t\t// 选择拍摄日期\n\t\t\t\tif (shootingDate) {\n\t\t\t\t\tawait selectDate(selfShootingPopup.locator(\".date-picker input\"), shootingDate);\n\t\t\t\t}\n\n\t\t\t\tawait selfShootingPopup\n\t\t\t\t\t.locator(\"footer button\")\n\t\t\t\t\t.filter({ hasText: hasCustomContent ? \"确认\" : \"取消\" })\n\t\t\t\t\t.click();\n\t\t\t} else if (params.selfDeclaration.childType === \"transshipment\") {\n\t\t\t\tawait selfDeclarationSecondaryMenuInstance.filter({ hasText: \"来源转载\" }).click();\n\t\t\t\t// 来源媒体弹窗\n\t\t\t\tconst selfShootingPopup = await getDialogInstance();\n\n\t\t\t\tconst sourceMedia = params.selfDeclaration.sourceMedia;\n\t\t\t\tif (sourceMedia) {\n\t\t\t\t\tawait selfShootingPopup.locator(\".el-input input\").fill(sourceMedia);\n\t\t\t\t}\n\n\t\t\t\tawait selfShootingPopup\n\t\t\t\t\t.locator(\"footer button\")\n\t\t\t\t\t.filter({ hasText: sourceMedia ? \"确认\" : \"取消\" })\n\t\t\t\t\t.click();\n\t\t\t}\n\t\t}\n\t}\n\n\t// 可见范围 - 仅自己可见\n\tif (params.visibleRange === \"private\") {\n\t\tawait page.locator(\".media-settings .flexbox\").filter({ hasText: \"可见范围\" }).locator(\".d-select-wrapper\").click();\n\t\tconst poperInstance = await getPoperInstance();\n\t\tawait poperInstance.locator(\".d-options .custom-option\").filter({ hasText: \"仅自己可见\" }).click();\n\t}\n\n task._timerRecord['PrePublish']= Date.now();\n \n\tconst releaseTimeInstance = page\n\t\t.locator(\"label\")\n\t\t.filter({ hasText: params.isImmediatelyPublish ? \"立即发布\" : \"定时发布\" });\n\tawait releaseTimeInstance.click();\n\n\tif (params.scheduledPublish) {\n\t\t// 自定义发布时间\n\t\tawait selectDate(\".date-picker input\", params.scheduledPublish);\n\t}\n\n\tconst response = await new Promise<string>((resolve) => {\n\t\t// 定义响应处理函数\n\t\tconst handleResponse = async (response: Response) => {\n\t\t\tif (response.url().includes(\"/web_api/sns/v2/note\")) {\n\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\tresolve(jsonResponse?.data?.id);\n\t\t\t}\n\t\t};\n\n\t\t// 开始监听响应事件\n\t\tpage.on(\"response\", handleResponse);\n\n\t\tpage.locator(\".submit .publishBtn\").click();\n\t});\n\n\t// 关闭页面\n\tawait page.close();\n\n\treturn success(response);\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\n\nimport type { ActiomCommonParams, Xiaohongshu } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\nimport {GroupDetail} from \"../getXhsGroup\";\n\ninterface FictionalRendition {\n\ttype: \"fictional-rendition\"; // 虚拟演绎,仅供娱乐\n}\n\ninterface AIGenerated {\n\ttype: \"ai-generated\"; // 笔记含AI合成内容\n}\n\ninterface SourceStatement {\n\ttype: \"source-statement\"; // 内容来源声明\n\tchildType: \"self-labeling\" | \"self-shooting\" | \"transshipment\"; // 已自主标注 / 自助拍摄 / 转载\n\tshootingLocation?: Xiaohongshu.Location; // 拍摄地点\n\tshootingDate?: string; // 拍摄日期\n\tsourceMedia?: string; // 来源媒体\n}\n\ntype SelfDeclaration = FictionalRendition | AIGenerated | SourceStatement;\n\nexport interface XiaohongshuPublishParams extends ActiomCommonParams {\n\tbanners: string[]; // 图片\n\ttitle: string; // 标题\n\tcontent: string; // 正文\n\taddress?: Xiaohongshu.Location; // 地点\n\tselfDeclaration?: SelfDeclaration; // 自主声明\n\ttopic?: Xiaohongshu.Topic[]; //话题\n proxyLoc?: string; // 代理位置\n huiwenToken?: string; // 绘文token\n\tvisibleRange: \"public\" | \"private\" | \"friends\"; // 可见范围\n\tisImmediatelyPublish?: boolean; // 是否立即发布\n\tscheduledPublish?: string; // 定时发布时间\n collectionId?: string; // 合集ID\n groupBind?: GroupDetail;// 群聊绑定\n noteCopyBind?: boolean; // 是否允许复制\n coProduceBind?: boolean; // 是否允许合拍\n originalBind?: boolean; // 是否开启原创声明, 声明检测app端展示,web端发布后,最终是否原创成功以小红书APP结果为准\n}\n\nexport type PublishAction = CommonAction<XiaohongshuPublishParams, string>;\n\nexport const xiaohongshuPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\nimport {Xhshow} from \"../../utils/xhsXsEncrypt\";\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport interface GroupListResponse {\n success: boolean;\n msg: string;\n data: {\n group_list: GroupDetail[]\n };\n code: number;\n}\n\nexport interface GroupDetail {\n avatar: string;\n desc: string\n group_id: string\n group_name: string\n linkable: boolean\n}\n\nexport type PublishAction = CommonAction<ActiomCommonParams, GroupDetail[]>;\n\nexport const getXhsGroup: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://creator.xiaohongshu.com\",\n\t\t\torigin: \"https://creator.xiaohongshu.com\",\n\t\t},\n\t});\n \n const a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) return {code: 200, message: \"账号数据异常,请重新绑定账号后重试。\", data: []};\n\n\ttry {\n const xt = Date.now().toString();\n const groupListParams = { note_id: \"\" }\n const fatchGroup = `/api/im/web/nns/group_list`;\n const xs = xsEncrypt.signXsGet(fatchGroup, a1Cookie,\"xhs-pc-web\" , groupListParams);\n\t\tconst res = await http.api<GroupListResponse>({\n\t\t\tmethod: \"get\",\n\t\t\turl: \"https://edith.xiaohongshu.com/api/im/web/nns/group_list\",\n params: groupListParams,\n headers: {\"x-s\": xs, \"x-t\": xt},\n\t\t});\n\n\t\treturn success(res.code === 0 ? res.data.group_list : [] , \"群聊信息获取\" + (res.code === 0 ? \"成功!\": `失败!原因${res.msg}`));\n\t} catch (error) {\n\t\treturn success([]);\n\t}\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\nimport {Xhshow} from \"../../utils/xhsXsEncrypt\";\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport interface HotTopicResponse {\n code: number;\n success: boolean;\n msg: string;\n data: {\n activity_list: HotTopicDetail[]\n };\n}\n\nexport interface HotTopicDetail {\n page_id: string;\n activity_name: string;\n start_time: number;\n activity_status: number;\n capa_deep_link: string;\n instance_id: number;\n activity_id: number;\n end_time: number;\n picture_link:string;\n focus_status: number;\n activity_reward: string;\n activity_link: string;\n sort_score: string;\n pc_post_link: string;\n topic_infos: [\n {\n id: string;\n name: string;\n link: string;\n }\n ]\n}\n\nexport type PublishAction = CommonAction<ActiomCommonParams, HotTopicDetail[]>;\n\nexport const getXhsHotTopic: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://creator.xiaohongshu.com\",\n\t\t\torigin: \"https://creator.xiaohongshu.com\",\n\t\t},\n\t});\n \n const a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) return {code: 200, message: \"账号数据异常,请重新绑定账号后重试。\", data: []};\n\n\ttry {\n const xt = Date.now().toString();\n const hotTopicParams = {\n sort: 1,\n type: 1,\n source: 3,\n topic_activity: 1\n }\n const fatchGroup = `/api/galaxy/v2/creator/activity_center/list`;\n const xs = xsEncrypt.signXsGet(fatchGroup, a1Cookie,\"xhs-pc-web\" , hotTopicParams);\n\t\tconst res = await http.api<HotTopicResponse>({\n\t\t\tmethod: \"get\",\n\t\t\turl: \"https://creator.xiaohongshu.com/api/galaxy/v2/creator/activity_center/list\",\n params: hotTopicParams,\n headers: {\"x-s\": xs, \"x-t\": xt},\n\t\t});\n\n\t\treturn success(res.code === 0 ? res.data.activity_list : [] , \"热门信息获取\" + (res.code === 0 ? \"成功!\": `失败!原因${res.msg}`));\n\t} catch (error) {\n\t\treturn success([]);\n\t}\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetToutiaoCollectionParams extends ActiomCommonParams {}\n\nexport interface GetToutiaoCollectionResult {\n id: string;\n collection_attr: {\n title: string;\n cover_image: {\n url: string;\n uri: string;\n width: number;\n height: number;\n mime_type: string;\n };\n item_status: number;\n visibility_level: number;\n create_time: string;\n suppress_reason: string;\n user_id: string;\n };\n collection_stat: {\n impression_count: string;\n go_detail_count: string;\n repin_count: string;\n forward_count: string;\n };\n menu_list: {\n show_delete: boolean;\n show_modify: boolean;\n show_hide: boolean;\n forbid_delete_reason: string;\n forbid_modify_reason: string;\n forbid_hide_reason: string;\n };\n sub_item_count: number;\n item_status_desc: string;\n}\n\nexport type PublishAction = CommonAction<GetToutiaoCollectionParams, GetToutiaoCollectionResult[]>;\n\nexport const getToutiaoCollection: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n const res = await http.api<{ code: number; data: GetToutiaoCollectionResult[]; total_count: number; }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/fe_api/collection/list\",\n params:{\n page_num: 0,\n page_size: 100,\n need_sub_item_count: true\n }\n });\n\n\treturn success(res.code === 0 ? res.data : [], res.code === 0 ? \"获取头条号合集成功!\" : \"获取头条号合集失败!\");\n};\n","import type { AutomateTask, CommonAction, ResponseData } from \"@iflyrpa/share\";\nimport { type BaijiahaoPublishParams, baijiahaoPublish } from \"./actions/baijiahaoPublish\";\nimport { type GetBaijiahaoActivityParams, getBaijiahaoActivity } from \"./actions/getBaijiahaoActivity\";\nimport { type GetToutiaoConfigParams, getToutiaoConfig } from \"./actions/getToutiaoConfig\";\nimport { type GetBaijiahaoConfigParams, getBaijiahaoConfig } from \"./actions/getBaijiaohaoConfig\";\nimport { type SearchToutiaoTopicListParams, searchToutiaoTopicList } from \"./actions/searchToutiaoTopicList\";\nimport { type SearchToutiaoLocationParams, searchToutiaoLocation } from \"./actions/searchToutiaoLocation\";\nimport { type SearchToutiaoUserIDParams, searchToutiaoUserInfo } from \"./actions/searchToutiaoUserID\";\nimport { type searchXiaohongshuLocationParams, searchXiaohongshuLocation } from \"./actions/searchXiaohongshuLocation\";\nimport { type SearchXiaohongshuTopicListParams, searchXiaohongshuTopicList } from \"./actions/searchXiaohongshuTopicList\";\nimport { type ToutiaoPublishParams, toutiaoPublish } from \"./actions/toutiaoPublish\";\nimport { TTFansExport } from \"./actions/common/FansTool\";\nimport { BjhFansExport } from \"./actions/common/FansTool\";\nimport { XhsFansExport } from \"./actions/common/FansTool\";\nimport { type GetWxFansSearchParams, WxFansExport } from \"./actions/common/FansTool\";\n\nimport { TTSessionCheck } from \"./actions/common/sessionCheck\";\nimport { BjhSessionCheck } from \"./actions/common/sessionCheck\";\nimport { XhsSessionCheck } from \"./actions/common/sessionCheck\";\nimport { type wxSessionParams, WxSessionCheck } from \"./actions/common/sessionCheck\";\n\nimport { type SearchAccountInfoParams, SearchAccountInfo} from \"./actions/searchAccountInfo\";\nimport { type SearchBjhTopicListParams, searchBjhTopicList } from \"./actions/searchBjhTopicList\";\nimport { type FetchArticlesParams, FetchArticles } from \"./actions/searchPublishInfo\"\nimport { type GetWeixinConfigParams, getWeixinConfig } from \"./actions/getWeixinConfig\";\nimport { type GetWeixinCollectionParams, getWeixinCollection } from \"./actions/getWeixinCollection\";\nimport { getXhsCollection } from \"./actions/getXhsCollection\";\nimport { type WeitoutiaoPublishParams, weitoutiaoPublish } from \"./actions/weitoutiaoPublish\";\nimport { type WeixinPublishParams, weixinPublish } from \"./actions/weixinPublish\";\nimport { type WeixinmpPublishParams, weixinmpPublish } from \"./actions/weixinmpPublish\";\nimport { type XiaohongshuPublishParams, xiaohongshuPublish } from \"./actions/xiaohongshuPublish\";\n\nimport type { ActiomCommonParams } from \"./types\";\nimport { stringifyError } from \"./utils\";\nimport { Http } from \"./utils/http\";\nimport {getXhsGroup} from \"./actions/getXhsGroup\";\nimport {getXhsHotTopic} from \"./actions/getXhsHotTopic\";\nimport {getToutiaoCollection, GetToutiaoCollectionParams} from \"./actions/getToutiaoCollection\";\n\nexport const BetaFlag = \"HuiwenCanary\"; // 用于标记是否为测试版本\n\nexport class Action {\n\tconstructor(private task: AutomateTask) {}\n\n\t// 绑定 task, 并处理异常\n\tprivate async bindTask<T extends ActiomCommonParams, R>(func: CommonAction<T, R>, params: T) {\n\t\tlet responseData: ResponseData<R>;\n \n // 检查是否为测试版本\n this.task.isBeta = this.task?.isFeatOn ? this.task?.isFeatOn( BetaFlag ) : false;\n \n // 记录时间消耗\n this.task._timerRecord = { ActionStart: Date.now() };\n\n \n\t\tif (this.task?.setArticleId) {\n\t\t\t// 给所有的日志添加 articleId 标签\n\t\t\tthis.task.setArticleId(params.articleId ?? \"\");\n\t\t}\n \n if (this.task?.setSaveType ?? false) {\n // 给所有的日志添加 saveType 标签\n this.task.setSaveType(params.saveType ?? \"\");\n }\n \n if (this.task?.isInitializedGB !== undefined) {\n this.task.setGbInitType(this.task.isInitializedGB)\n }\n \n\t\tif (typeof params === \"object\") {\n\t\t\t// 默认设置 cookies\n\t\t\tparams.cookies = params?.cookies ?? [];\n\t\t}\n\n\t\ttry {\n\t\t\tresponseData = await func(this.task, params);\n\t\t} catch (error) {\n\t\t\tresponseData = Http.handleApiError(error);\n\t\t} finally {\n this.task._timerRecord['ActionEnd']= Date.now();\n }\n \n if(this.task.isBeta && this.task.setTimeConsuming){\n // 收集各时间节点\n this.task.setTimeConsuming(this.task._timerRecord);\n }\n\n\t\tif (responseData.code === 200) {\n\t\t\t// 表示是由于脚本输入信息错误导致的失败,不是脚本问题\n\t\t\tthis.task.logger.info(`${func.name} action params error`, responseData);\n\t\t} else if (responseData.code !== 0) {\n\t\t\tthis.task.logger.error(\n\t\t\t\tresponseData.message || `${func.name} 执行失败`,\n\t\t\t\tstringifyError(responseData.data),\n\t\t\t\tresponseData.extra,\n\t\t\t);\n\t\t\tthis.task.logger.info(`${func.name} action failed`);\n\t\t} else {\n\t\t\tthis.task.logger.info(`${func.name} action success`);\n\t\t}\n \n if(this.task.debug && this.task._timerRecord['PrePublish']){\n console.log(\"预处理图片耗时:\", (this.task._timerRecord['PrePublish'] - this.task._timerRecord['ActionStart'])/1000, \"s\");\n console.log(\"发文接口耗时:\", (this.task._timerRecord['ActionEnd'] - this.task._timerRecord['PrePublish'])/1000, \"s\");\n }\n this.task.debug && console.log(\"Action整体耗时:\", (this.task._timerRecord['ActionEnd'] - this.task._timerRecord['ActionStart'])/1000, \"s\");\n\n\t\treturn responseData;\n\t}\n\t// 获取指定平台的文章数据\n\tFetchArticles(params: FetchArticlesParams){\n\t\treturn this.bindTask(FetchArticles, params)\n\t}\n\t\n\t// 获取指定平台的分析数据\n\tSearchAccountInfo(params: SearchAccountInfoParams){\n\t\treturn this.bindTask(SearchAccountInfo, params)\n\t}\n\n\t// 头条Session有效性检测\n\tTTSessionCheck(params: ActiomCommonParams){\n\t\treturn this.bindTask(TTSessionCheck, params);\n\t}\n\n\t// 微信Session有效性检测\n\tWxSessionCheck(params: wxSessionParams){\n\t\treturn this.bindTask(WxSessionCheck, params);\n\t}\n\n\t// 小红书Session有效性检测\n\tXhsSessionCheck(params: ActiomCommonParams){\n\t\treturn this.bindTask(XhsSessionCheck, params);\n\t}\n\n\t// 百家号Session有效性检测\n\tBjhSessionCheck(params: ActiomCommonParams){\n\t\treturn this.bindTask(BjhSessionCheck, params);\n\t}\n\t\n\t// 搜索头条话题列表\n\tsearchToutiaoTopicList(params: SearchToutiaoTopicListParams) {\n\t\treturn this.bindTask(searchToutiaoTopicList, params);\n\t}\n\n\t// 搜索头条粉丝\n\tTTFansExport(params: ActiomCommonParams) {\n\t\treturn this.bindTask(TTFansExport, params);\n\t}\n\n\t// 搜索小红书粉丝\n\tXhsFansExport(params: ActiomCommonParams) {\n\t\treturn this.bindTask(XhsFansExport, params);\n\t}\n\n\t// 搜索微信粉丝\n\tWxFansExport(params: GetWxFansSearchParams) {\n\t\treturn this.bindTask(WxFansExport, params);\n\t}\n\t\n\t// 搜索百家号粉丝\n\tBjhFansExport(params: ActiomCommonParams) {\n\t\treturn this.bindTask(BjhFansExport, params);\n\t}\n \n SearchBjhTopicList(params: SearchBjhTopicListParams) {\n\t\treturn this.bindTask(searchBjhTopicList, params);\n\t}\n\n\t// 搜索头条用户ID\n\tsearchToutiaoUserID(params: SearchToutiaoUserIDParams) {\n\t\treturn this.bindTask(searchToutiaoUserInfo, params);\n\t}\n\n\t// 搜索头条Location\n\tsearchToutiaoLocation(params: SearchToutiaoLocationParams) {\n\t\treturn this.bindTask(searchToutiaoLocation, params);\n\t}\n\n\t// 获取头条配置\n\tgetToutiaoConfig(params: GetToutiaoConfigParams) {\n\t\treturn this.bindTask(getToutiaoConfig, params);\n\t}\n \n // 获取头条合集\n\tgetToutiaoCollection(params: GetToutiaoCollectionParams) {\n\t\treturn this.bindTask(getToutiaoCollection, params);\n\t}\n\n\t// 获取微信配额\n\tgetWeixinConfig(params: GetWeixinConfigParams) {\n\t\treturn this.bindTask(getWeixinConfig, params);\n\t}\n \n // 获取微信合集\n getWeixinCollection(params: GetWeixinCollectionParams) {\n return this.bindTask(getWeixinCollection, params);\n }\n \n getXhsCollection(params: ActiomCommonParams) {\n return this.bindTask(getXhsCollection, params);\n }\n \n getXhsGroup(params: ActiomCommonParams) {\n return this.bindTask(getXhsGroup, params);\n }\n \n getXhsHotTopic(params: ActiomCommonParams){\n return this.bindTask(getXhsHotTopic, params)\n }\n \n\t// 获取百家号配置\n\tgetBaijiahaoConfig(params: GetBaijiahaoConfigParams) {\n\t\treturn this.bindTask(getBaijiahaoConfig, params);\n\t}\n\n\t// 百家号发布\n\tbaijiahaoPublish(params: BaijiahaoPublishParams) {\n\t\treturn this.bindTask(baijiahaoPublish, params);\n\t}\n\n\t// 查询百家号活动投稿\n\tgetBaijiahaoActivity(params: GetBaijiahaoActivityParams) {\n\t\treturn this.bindTask(getBaijiahaoActivity, params);\n\t}\n\n\t// 小红书发布\n\txiaohongshuPublish(params: XiaohongshuPublishParams) {\n\t\treturn this.bindTask(xiaohongshuPublish, params);\n\t}\n\n\t// 搜索小红书话题\n\tsearchXiaohongshuTopicList(params: SearchXiaohongshuTopicListParams) {\n\t\treturn this.bindTask(searchXiaohongshuTopicList, params);\n\t}\n\t// 搜索小红书地址\n\tsearchXiaohongshuLocation(params: searchXiaohongshuLocationParams) {\n\t\treturn this.bindTask(searchXiaohongshuLocation, params);\n\t}\n\n\t// 小绿书发布\n\tweixinmpPublish(params: WeixinmpPublishParams) {\n\t\treturn this.bindTask(weixinmpPublish, params);\n\t}\n\n\t// 微头条发布\n\tweitoutiaoPublish(params: WeitoutiaoPublishParams) {\n\t\treturn this.bindTask(weitoutiaoPublish, params);\n\t}\n\n\t// 头条发布\n\ttoutiaoPublish(params: ToutiaoPublishParams) {\n\t\treturn this.bindTask(toutiaoPublish, params);\n\t}\n\n\t// 微信发布\n\tweixinPublish(params: WeixinPublishParams) {\n\t\treturn this.bindTask(weixinPublish, params);\n\t}\n}\n\ntype ActionInstance = InstanceType<typeof Action>;\n\n// 提取方法的参数类型\ntype MethodParams<T> = {\n\t// biome-ignore lint/suspicious/noExplicitAny: 有使用 any\n\t[K in keyof T]: T[K] extends (...args: any[]) => unknown ? Parameters<T[K]>[0] : never;\n};\n\n// 应用于 Action 类的实例\nexport type ActionMethodParams = MethodParams<ActionInstance>;\n\nexport { version } from \"../package.json\";\n"],"names":["__createBinding","Object","o","m","k","k2","undefined","desc","__setModuleDefault","v","__importStar","mod","result","exports","http","https","toBuffer","stream","length","chunks","chunk","Buffer","json","buf","str","JSON","_err","err","req","url","opts","href","promise","Promise","resolve","reject","__exportStar","p","net","https_1","INTERNAL","Symbol","Agent","options","stack","Error","l","name","Infinity","fakeSocket","socket","sockets","index","secureEndpoint","cb","connectOpts","formatArgs","save","load","useColors","localstorage","warned","console","window","navigator","document","parseInt","args","module","c","lastC","match","namespaces","error","r","process","localStorage","formatters","setup","env","createDebug","coerce","disable","enable","enabled","destroy","key","selectColor","namespace","hash","i","Math","prevTime","enableOverride","namespacesCache","enabledCache","debug","self","curr","Number","Date","ms","format","formatter","val","logFn","extend","delimiter","newDebug","split","Boolean","ns","matchesTemplate","search","template","searchIndex","templateIndex","starIndex","matchIndex","skip","tty","util","init","log","supportsColor","obj","prop","_","colorCode","prefix","getDate","keys","flag","argv","position","terminatorPosition","__importDefault","tls","assert_1","debug_1","agent_base_1","url_1","parse_proxy_response_1","setServernameFromNonIpHost","HttpsProxyAgent","proxy","host","port","omit","TypeError","headers","payload","auth","decodeURIComponent","proxyResponsePromise","connect","buffered","resume","s","ret","parseProxyResponse","buffersLength","buffers","read","b","ondata","cleanup","onend","onerror","endOfHeaders","headerParts","firstLine","firstLineParts","statusCode","statusText","header","firstColon","value","current","Array","h","d","w","y","type","parse","isFinite","fmtLong","fmtShort","String","n","parseFloat","msAbs","plural","isPlural","os","hasFlag","flagForceColor","envForceColor","translateLevel","level","haveStream","streamIsTTY","sniffFlags","noFlagForceColor","forceColor","min","osRelease","sign","version","getSupportLevel","encrypt_lookup","esm_typeof","t","encrypt_b64Encode","e","a","u","f","g","E","x","T","S","A","L","I","R","O","C","N","P","B","M","j","F","D","q","U","G","H","V","W","a0_0x10f4ac","X","z","Y","K","J","$","Q","Z","tt","encrypt_encodeChunk","encrypt_encodeUtf8","encodeURIComponent","sign_common","encrypt_tripletToBase64","a0_0x3693","encrypt_mcr","GenXSCommon","a1cookie","x_t","x_s","b1","a0_0x45db08","a0_0x4b0d","_0x2bd218","_0x316d6","_0x165410","a0_0x1654","_0x4b0d73","_0x5794db","_0x1859e3","_0x1b2596","_0x16c0e0","_0x1227f1","_0x46fb59","_0x383dd4","_0x4fc071","Random","Ts","Sm3DoneTs","xhrParaDoneTs","xhrReqDoneTs","_0x46e031","SM3Hasher","_0x468533","_0x11e792","_0x22d1ef","_0x182388","_0x2ded18","_0x5e491d","_0x12d911","_0x5795ab","_0x22d98b","_0x5659da","_0x357908","_0x5c0d1c","_0x2e8583","_0x28f42f","_0x4b2a85","_0xffe4ea","_0x34ff8d","_0xecf9f6","_0x3ddb20","_0x28ac8a","_0x117621","_0x335539","_0x450e58","_0x5b1ad8","_0x46ad66","_0xa844a0","_0x15bc36","_0x4a32f3","_0x36cc0b","_0xd7dcfe","_0x1e530c","_0x3c50af","_0x3da582","_0x14b06e","_0x4ec82e","_0x489962","_0x5dd43e","_0x744660","_0x197f71","_0x5e22dd","_0xfc800b","_0x1300f1","_0xed8891","_0x3414cb","_0x2f42fb","_0x326645","_0x2c63af","_0x558c0d","_0x4a902b","_0x493bba","_0x23a9bd","_0x7114f5","_0x49cf1f","_0x698c70","_0xe5328","_0x2b58f2","_0x17c086","_0x3621a2","_0x5959b9","_0x3b42ff","_0x50d411","_0x910e21","_0x459622","EnvData2CharCode","_0x58cd97","_0x23e1e0","_0x3ca6b2","_0x56cb93","_0x2d49d4","_0x3f2013","_0x4b8ded","_0x5bb315","_0x42b4c4","_0x1cdc95","_0x58aa5d","_0x26ee7a","_0xe2d586","_0x571095","_0x4dabdb","_0x4139e6","_0x339170","_0x56e1cd","_0x24b6d5","_0x196cf7","_0x2eb1f3","_0x2171ba","_0x925e58","_0x540dbd","_0x2fbb10","_0x41ebdd","_0x42a240","_0x49ec53","_0x3d9ba0","_0xeaa831","_0x477e24","_0x3bd924","_0xa7bf19","_0x23c273","_0x4d13ab","Base2Data","_0x348aa6","_0x2bc7c7","_0x874207","_0x224d00","_0x31697c","_0x235e4f","_0x29dde1","_0x4a74f1","_0xef36c2","_0x4120e4","_0x39cb62","_0x5cbaf6","_0x29a672","_0x96c5ae","_0x46c34b","_0x5d4cb4","_0x506f4f","Data2A_B","_0x19ca6d","_0x5d8d72","_0x225e7d","_0x4f0a28","_0x251d62","_0x2b8eea","_0x3fca04","_0xb85a46","_0x4e702d","_0x4382e1","_0x225aa0","_0x5607b9","_0x3fb7b7","_0x425784","GenAB","_0x315138","_0x1c32b3","_0x206982","_0x56536b","ProxyData","ProxyAgent","adr","huiwenToken","Http","ProxyInfo","config","axios","findError","response","errorResponse","serverError","retries","retryDelay","sessionRt","Rtimes","agent","handledError","isRetry","setTimeout","getRandomInRange","max","getFileState","filePath","filename","path","fileType","mime","stats","fs","fileSize","lastModifiedDate","calculateCropCoordinates","width","height","aspectRatio","targetRatio","cropWidth","cropHeight","x1","y1","x2","y2","extractImgTag","html","srcList","parser","Parser","attributes","TimeFormatter","timestamp","formatStr","date","map","replaceImgSrc","callback","lastedHtml","isImageTag","node","traverseDom","DomUtils","child","handler","DomHandler","dom","domSerializer","stringifyError","executeAction","actions","task","params","action","copyHtmlToClipboard","page","htmlContent","blob","Blob","ClipboardItem","div","range","selection","PopupListener","popupSelector","popKey","buttonSelector","checkInterval","stopAfterClick","popup","button","intervalId","setInterval","clearInterval","parseUrlQueryString","queryStringObject","queryString","queryWithoutHash","queryStringArray","item","equalIndex","defaultParams","defaults","generateTopicHtml","topic","id","sv_small_images","generateUid","topicBase","crypto","topicAttr","attrStr","errnoMap","mockAction","baijiahaoSingleCover","baijiahaoMultCover","baijiahaoCoverType","tmpCachePath","it","msgType","errmsg","appIdInfo","appId","uploadImages","_images","images","fileName","getFilenameFromUrl","image","downloadImage","formData","FormData","res","originContentImages","targetContentImages","topicCheck","content","idx","horizontalCoverUrl","horizontalCoverRes","cover_images","_cover_images_map","isAi","activityList","cover_layout","activity_list","publishData","isDraft","saveUrl","proxyHttp","success","rpaAction","commonCookies","titleInstance","coverFormItem","isSingleCover","coverSelector","coverCount","fileChooserPromise","fileChooser","abstractFormItem","settingFormItem","_settingFormItem","enent2NewsBtn","activity","activityFormItem","findActivity","articleId","message","handleResponse","jsonResponse","operatorContainer","scrollHourInfo","hourInner","hourElementHeight","hourMapsElem","hourMap","fistHourElem","fistHourElemH","lastHourElem","lastHourElemH","targetTimeH","scrollMinuteInfo","fistMinuteElem","fistMinuteElemH","lastMinuteElem","lastMinuteElemH","targetTimeM","baijiahaoPublish","getBaijiahaoActivity","_task","cookies","getToutiaoConfig","getSuggestWords","getCityDistrict","getUserRights","suggestWords","cityDistrict","userRights","getBaijiahaoConfig","data","_item","searchToutiaoTopicList","searchToutiaoLocation","searchToutiaoUserInfo","searchXiaohongshuLocation","CryptoConfig","RandomGenerator","byteCount","minVal","maxVal","HexProcessor","hexString","byteValues","hexChunk","xorKey","byteVal","BitOperations","unsignedValue","seed32bit","normalizedSeed","shift15Bits","shift13Bits","shift12Bits","shift10Bits","xorMaskedResult","shiftedResult","sourceIntegers","resultBytes","Uint8Array","hexKeyBytes","Base58Encoder","inputBytes","bytesArray","numberAccumulator","leadingZerosCount","encodedCharacters","BYTE_SIZE","byteValue","BigInt","count","number","characters","base","remainder","Base64Encoder","dataToEncode","dataBytes","standardEncodedString","char","RequestSignatureValidator","method","upperMethod","uri","a1Value","xsecAppid","CryptoProcessor","ts","randomizeFirst","arr","encoded","hexParameter","appIdentifier","stringParam","randNum","startupTs","randBytes","stringParamLength","md5Bytes","xorMd5Bytes","Xhshow","valueStr","dValue","payloadArray","xorResult","validatedMethod","validatedUri","validatedA1Value","validatedXsecAppid","validatedPayload","signatureData","contentString","validatedParams","xsEncrypt","searchXiaohongshuTopicList","a1Cookie","xt","topicData","fatchTopic","xs","require","generatorFormData","encodedKey","encodedValue","get3101DetailError","errorList","saveType","toutiaoSingleCover","toutiaoMultCover","toutiaoCoverType","toutiaoOriginal","toutiaoExclusive","toutiaoClaim","coverUrl","coverRes","location","topics","topicContent","sourceData","extraData","COVER_TYPE","getAddTypeValue","msToken","publishOption","postHeaders","postData","a_bogus","publishResult","interceptUrls","route","request","URL","pattern","coverTypeValue","coverContainer","coverUrls","coverUploadEle","coverUploadCount","ele","drawerContainer","confirmBtn","locationContainer","poperInstance","adContainer","isAdOptionVisible","exclusiveContainer","claim","toutiaoAd","toutiaoPublish","TTFansExport","XhsFansExport","WxFansExport","htmlStr","BjhFansExport","TTSessionCheck","WxSessionCheck","fingerprint","XhsSessionCheck","BjhSessionCheck","code","getBaijiahaoData","token","yesterday","fansData","readData","incomeData","yesterdayData","bjhData","getToutiaoData","totalData","contentDataYesterday","isReday","ttData","getWeixinData","userInfo","userInfoHtml","originalMatch","totalUsersMatch","increaseMatch","readMatch","shareMatch","subscribeMatch","wxData","getXiaohongshuData","sevenDataUrl","overAllData","sevenData","xhsData","SearchAccountInfo","platform","searchBjhTopicList","handleToutiaoData","pageNum","pageSize","showOriginalData","onlySuccess","visitedUid","articleInfo","articleCell","api_base_info_json","handleWeixinData","cursor","lastPage","ParsePublishPage","body","parsedData","decodeEntities","decode","encodeMap","decodeMap","RegExp","finalData","decoded","parsedInfo","fetchArticles","begin","size","rawArticlesInfo","articlesInfo","totalFetched","nextPage","remaining","currentPageSize","_rawArticlesInfo","parsed","filteredList","cursorIndex","nextRawArticlesInfo","nextArticlesInfo","newFiltered","lastMsgId","handleBaijiahaoData","filtered","totalPage","currentPage","usedPages","Set","validItems","final","handleXiaohongshuData","serveUrl","serveParams","hasNextpage","FetchArticles","getWeixinConfig","getWeixinCollection","getXhsCollection","userInfoRes","imageList","extra","syncData","descInstance","addressFormItem","declarationFormItem","weitoutiaoPublish","scanRetryMaxCount","QuotaType","genTopicHTML","rn","aTags","GET_QRCODE_DEFAULT_ERROR","ignoreErrno","userTypeMap","URLSearchParams","checkCopyrightStat","resData","client_time_diff","responseData","cloudImages","localImages","ext","fileState","oriWhitelist","_oriWhitelist","white_list","white_list_user","_user","userInfo_res","userInfo_resJson","writerid","reply_id","getWriterList","getRewardText","_type","rewardbind","rewardBuffer","rewardFilePath","task_id","sleep","checkScanResult","_writer","_writer_item","rewardList","matchdID","reward","_reply_item","wxInteractionInfo","_wxInteraction","_opt","commentType","replyType","draftData","appMsgId","checkTimes","copyrightStatRes","copyrightStat","masssendpage","massSendRes","operation_seq","quota_detail_list","quotaDetail","copyrightStatData","lastData","checkCopyrightStatRes","getTicketResult","getUuidResult","uuid","qrcodeResult","qrcodeBuffer","qrcodeFilePath","randomString","waitQrcodeResultMaxTime","urlParams","urlRewardParams","wxRewardPage","reward_page","isAddRewarder","qrcodeSrc","errorMessage","isAddWord","cover","dialog","pic_msg","ori_dialog","ori_dialog_bd","ori_dialog_ft","_target","search_res","search_res_name","whrite_list","white_td_isadd","btn_isChecked","checkbox","reward_setting","reward_setting_bd","reward_setting_ft","userName","reward_setting_replay","switchAuto","maxAttempts","delayMs","nowCheckTime","attempt","isDisabled","isOneReplay","isCurrentReplay","wxInteraction_setting","wxInteraction_bd","wxInteraction_ft","comment_area","reply_area","commont_rply_opt","poperInput","source","query","dateD","nowD","dropMenu","timeDropMenu","times","originalCheckDialog","popMassend","startTime","imgUrl","weixinPublish","_params","saveDraft","shareImageInfos","cropResult","colorResponseData","themeColor","cropFormData","cropRatios","cropCoordinates","cropCoordinate","cropResponse","sourceText","container","weixinmpPublish","fetchCoverUrl","fetchCoverParams","coverIdInfo","uploadInfos","fileId","availableBuckets","uploadFile","localUrl","fileBuffer","MAX_RETRIES","ossBucketIndex","currentInfo","ossFileId","ossToken","ossDomain","coverInfos","invalidUpload","publishXt","publishXs","createTopic","visibleRangeMap","userDeclarationBind","photoInfo","bizId","userData","business_binds","xscommon","urlObj","isNoteRequest","newHeaders","selectAddress","selector","address","instance","selectDate","getPoperInstance","elements","visibleElements","element","style","getDialogInstance","selfDeclarationInstance","selfDeclarationSecondaryMenuInstance","shootingDate","shootingLocation","selfShootingPopup","hasCustomContent","sourceMedia","releaseTimeInstance","xiaohongshuPublish","getXhsGroup","groupListParams","fatchGroup","getXhsHotTopic","hotTopicParams","getToutiaoCollection","BetaFlag","Action","func"],"mappings":"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;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,OAAOA,CAAC,CAAC2I,KAAK,IAAI;QACpB;QACA,SAAS8B,YAAY9B,CAAC,EAAEE,CAAC;YACvB,OAAO2C,UAAU3C,IAAI,MAAMF;QAC7B;QAEA,IAAI8C,cAAc,SAAU9C,CAAC;YAC3B,IAAIE,IAAI,IACJ7I,IAAI,IACJoH,IAAI,KACJ5L,IAAI,KACJwF,IAAI,KACJ8H,IAAI,IACJC,IAAI,KACJ3D,IAAI,IACJzF,IAAI,IACJvB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U,MAAM,CAAC,KAAII,YAAU;gBAAC;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;g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AAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAM;gBAAK;gBAAK;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAM;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAS;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAQ;gBAAK;gBAAK;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gB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"}
1
+ {"version":3,"file":"index.mjs","sources":["webpack://@iflyrpa/actions/../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/helpers.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/index.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/browser.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/common.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/index.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/debug@4.4.0/node_modules/debug/src/node.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/index.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/parse-proxy-response.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/supports-color@8.1.1/node_modules/supports-color/index.js","webpack://@iflyrpa/actions/./src/utils/XhsXsCommonEnc.js","webpack://@iflyrpa/actions/./src/utils/ttABEncrypt.js","webpack://@iflyrpa/actions/./src/utils/xhs_ob/x_s.encoder.js","webpack://@iflyrpa/actions/./src/utils/proxy.ts","webpack://@iflyrpa/actions/./src/utils/http.ts","webpack://@iflyrpa/actions/./src/utils/index.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoPublish/utils.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/common/FansTool/index.ts","webpack://@iflyrpa/actions/./src/actions/getBaijiahaoActivity/index.ts","webpack://@iflyrpa/actions/./src/actions/getBaijiaohaoConfig/index.ts","webpack://@iflyrpa/actions/./src/actions/getToutiaoConfig/index.ts","webpack://@iflyrpa/actions/./src/actions/searchToutiaoLocation/index.ts","webpack://@iflyrpa/actions/./src/actions/searchToutiaoTopicList/index.ts","webpack://@iflyrpa/actions/./src/actions/searchToutiaoUserID/index.ts","webpack://@iflyrpa/actions/./src/actions/searchXiaohongshuLocation/index.ts","webpack://@iflyrpa/actions/./src/utils/xhsXsEncrypt.ts","webpack://@iflyrpa/actions/./src/actions/searchXiaohongshuTopicList/index.ts","webpack://@iflyrpa/actions/./src/actions/toutiaoPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/toutiaoPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/toutiaoPublish/index.ts","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/core.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/util.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/errors.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/parse.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/regexes.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/checks.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/doc.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/versions.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/schemas.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/locales/en.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/registries.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/api.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/iso.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/errors.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/parse.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/schemas.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/compat.js","webpack://@iflyrpa/actions/../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/external.js","webpack://@iflyrpa/actions/./src/types.ts","webpack://@iflyrpa/actions/./src/actions/common/sessionCheck/index.ts","webpack://@iflyrpa/actions/./src/actions/getWeixinCollection/index.ts","webpack://@iflyrpa/actions/./src/actions/getWeixinConfig/index.ts","webpack://@iflyrpa/actions/./src/actions/getXhsCollection/index.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/types.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getBjhInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getTTInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getWxInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getXhsInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/index.ts","webpack://@iflyrpa/actions/./src/actions/searchBjhTopicList/index.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/types.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleBjhData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleTTData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleWXData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleXhsData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/index.ts","webpack://@iflyrpa/actions/./src/actions/weitoutiaoPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/weitoutiaoPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/weitoutiaoPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/utils.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/weixinmpPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/weixinmpPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/weixinmpPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuPublish/rpa-server.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuPublish/rpa-server-mock.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoLogin/rpa.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoLogin/rpa-server.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoLogin/index.ts","webpack://@iflyrpa/actions/./src/actions/getToutiaoCollection/index.ts","webpack://@iflyrpa/actions/./src/actions/getXhsGroup/index.ts","webpack://@iflyrpa/actions/./src/actions/getXhsHotTopic/index.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuWebIntimacySearch/index.ts","webpack://@iflyrpa/actions/./src/actions/getXhsWebUnreadCount/index.ts","webpack://@iflyrpa/actions/./src/actions/searchBjhUserArticle/index.ts","webpack://@iflyrpa/actions/./src/actions/searchWeixinAccountCard/index.ts","webpack://@iflyrpa/actions/./src/actions/searchWeixinUserArticle/index.ts","webpack://@iflyrpa/actions/./src/actions/searchXhsWebConnections/index.ts","webpack://@iflyrpa/actions/./src/actions/searchXhsWebLike/index.ts","webpack://@iflyrpa/actions/./src/actions/searchXhsWebMentions/index.ts","webpack://@iflyrpa/actions/./src/actions/searchXiaohongshuUserArticle/index.ts","webpack://@iflyrpa/actions/./src/actions/toutiaoLogin/rpa.ts","webpack://@iflyrpa/actions/./src/actions/toutiaoLogin/rpa-server.ts","webpack://@iflyrpa/actions/./src/actions/toutiaoLogin/index.ts","webpack://@iflyrpa/actions/./src/actions/weixinLogin/rpa.ts","webpack://@iflyrpa/actions/./src/actions/weixinLogin/rpa-server.ts","webpack://@iflyrpa/actions/./src/actions/weixinLogin/index.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuLogin/rpa.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuLogin/rpa-server.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuLogin/index.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuWebMsgRead/index.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuWebMsgReply/index.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuWebRelationAction/index.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuWebNoteFeed/index.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuWebCommentAction/index.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuWebSearch/index.ts","webpack://@iflyrpa/actions/./src/index.ts"],"sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.req = exports.json = exports.toBuffer = void 0;\nconst http = __importStar(require(\"http\"));\nconst https = __importStar(require(\"https\"));\nasync function toBuffer(stream) {\n let length = 0;\n const chunks = [];\n for await (const chunk of stream) {\n length += chunk.length;\n chunks.push(chunk);\n }\n return Buffer.concat(chunks, length);\n}\nexports.toBuffer = toBuffer;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function json(stream) {\n const buf = await toBuffer(stream);\n const str = buf.toString('utf8');\n try {\n return JSON.parse(str);\n }\n catch (_err) {\n const err = _err;\n err.message += ` (input: ${str})`;\n throw err;\n }\n}\nexports.json = json;\nfunction req(url, opts = {}) {\n const href = typeof url === 'string' ? url : url.href;\n const req = (href.startsWith('https:') ? https : http).request(url, opts);\n const promise = new Promise((resolve, reject) => {\n req\n .once('response', resolve)\n .once('error', reject)\n .end();\n });\n req.then = promise.then.bind(promise);\n return req;\n}\nexports.req = req;\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Agent = void 0;\nconst net = __importStar(require(\"net\"));\nconst http = __importStar(require(\"http\"));\nconst https_1 = require(\"https\");\n__exportStar(require(\"./helpers\"), exports);\nconst INTERNAL = Symbol('AgentBaseInternalState');\nclass Agent extends http.Agent {\n constructor(opts) {\n super(opts);\n this[INTERNAL] = {};\n }\n /**\n * Determine whether this is an `http` or `https` request.\n */\n isSecureEndpoint(options) {\n if (options) {\n // First check the `secureEndpoint` property explicitly, since this\n // means that a parent `Agent` is \"passing through\" to this instance.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (typeof options.secureEndpoint === 'boolean') {\n return options.secureEndpoint;\n }\n // If no explicit `secure` endpoint, check if `protocol` property is\n // set. This will usually be the case since using a full string URL\n // or `URL` instance should be the most common usage.\n if (typeof options.protocol === 'string') {\n return options.protocol === 'https:';\n }\n }\n // Finally, if no `protocol` property was set, then fall back to\n // checking the stack trace of the current call stack, and try to\n // detect the \"https\" module.\n const { stack } = new Error();\n if (typeof stack !== 'string')\n return false;\n return stack\n .split('\\n')\n .some((l) => l.indexOf('(https.js:') !== -1 ||\n l.indexOf('node:https:') !== -1);\n }\n // In order to support async signatures in `connect()` and Node's native\n // connection pooling in `http.Agent`, the array of sockets for each origin\n // has to be updated synchronously. This is so the length of the array is\n // accurate when `addRequest()` is next called. We achieve this by creating a\n // fake socket and adding it to `sockets[origin]` and incrementing\n // `totalSocketCount`.\n incrementSockets(name) {\n // If `maxSockets` and `maxTotalSockets` are both Infinity then there is no\n // need to create a fake socket because Node.js native connection pooling\n // will never be invoked.\n if (this.maxSockets === Infinity && this.maxTotalSockets === Infinity) {\n return null;\n }\n // All instances of `sockets` are expected TypeScript errors. The\n // alternative is to add it as a private property of this class but that\n // will break TypeScript subclassing.\n if (!this.sockets[name]) {\n // @ts-expect-error `sockets` is readonly in `@types/node`\n this.sockets[name] = [];\n }\n const fakeSocket = new net.Socket({ writable: false });\n this.sockets[name].push(fakeSocket);\n // @ts-expect-error `totalSocketCount` isn't defined in `@types/node`\n this.totalSocketCount++;\n return fakeSocket;\n }\n decrementSockets(name, socket) {\n if (!this.sockets[name] || socket === null) {\n return;\n }\n const sockets = this.sockets[name];\n const index = sockets.indexOf(socket);\n if (index !== -1) {\n sockets.splice(index, 1);\n // @ts-expect-error `totalSocketCount` isn't defined in `@types/node`\n this.totalSocketCount--;\n if (sockets.length === 0) {\n // @ts-expect-error `sockets` is readonly in `@types/node`\n delete this.sockets[name];\n }\n }\n }\n // In order to properly update the socket pool, we need to call `getName()` on\n // the core `https.Agent` if it is a secureEndpoint.\n getName(options) {\n const secureEndpoint = this.isSecureEndpoint(options);\n if (secureEndpoint) {\n // @ts-expect-error `getName()` isn't defined in `@types/node`\n return https_1.Agent.prototype.getName.call(this, options);\n }\n // @ts-expect-error `getName()` isn't defined in `@types/node`\n return super.getName(options);\n }\n createSocket(req, options, cb) {\n const connectOpts = {\n ...options,\n secureEndpoint: this.isSecureEndpoint(options),\n };\n const name = this.getName(connectOpts);\n const fakeSocket = this.incrementSockets(name);\n Promise.resolve()\n .then(() => this.connect(req, connectOpts))\n .then((socket) => {\n this.decrementSockets(name, fakeSocket);\n if (socket instanceof http.Agent) {\n try {\n // @ts-expect-error `addRequest()` isn't defined in `@types/node`\n return socket.addRequest(req, connectOpts);\n }\n catch (err) {\n return cb(err);\n }\n }\n this[INTERNAL].currentSocket = socket;\n // @ts-expect-error `createSocket()` isn't defined in `@types/node`\n super.createSocket(req, options, cb);\n }, (err) => {\n this.decrementSockets(name, fakeSocket);\n cb(err);\n });\n }\n createConnection() {\n const socket = this[INTERNAL].currentSocket;\n this[INTERNAL].currentSocket = undefined;\n if (!socket) {\n throw new Error('No socket was returned in the `connect()` function');\n }\n return socket;\n }\n get defaultPort() {\n return (this[INTERNAL].defaultPort ??\n (this.protocol === 'https:' ? 443 : 80));\n }\n set defaultPort(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].defaultPort = v;\n }\n }\n get protocol() {\n return (this[INTERNAL].protocol ??\n (this.isSecureEndpoint() ? 'https:' : 'http:'));\n }\n set protocol(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].protocol = v;\n }\n }\n}\nexports.Agent = Agent;\n//# sourceMappingURL=index.js.map","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(' ', ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpsProxyAgent = void 0;\nconst net = __importStar(require(\"net\"));\nconst tls = __importStar(require(\"tls\"));\nconst assert_1 = __importDefault(require(\"assert\"));\nconst debug_1 = __importDefault(require(\"debug\"));\nconst agent_base_1 = require(\"agent-base\");\nconst url_1 = require(\"url\");\nconst parse_proxy_response_1 = require(\"./parse-proxy-response\");\nconst debug = (0, debug_1.default)('https-proxy-agent');\nconst setServernameFromNonIpHost = (options) => {\n if (options.servername === undefined &&\n options.host &&\n !net.isIP(options.host)) {\n return {\n ...options,\n servername: options.host,\n };\n }\n return options;\n};\n/**\n * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to\n * the specified \"HTTP(s) proxy server\" in order to proxy HTTPS requests.\n *\n * Outgoing HTTP requests are first tunneled through the proxy server using the\n * `CONNECT` HTTP request method to establish a connection to the proxy server,\n * and then the proxy server connects to the destination target and issues the\n * HTTP request from the proxy server.\n *\n * `https:` requests have their socket connection upgraded to TLS once\n * the connection to the proxy server has been established.\n */\nclass HttpsProxyAgent extends agent_base_1.Agent {\n constructor(proxy, opts) {\n super(opts);\n this.options = { path: undefined };\n this.proxy = typeof proxy === 'string' ? new url_1.URL(proxy) : proxy;\n this.proxyHeaders = opts?.headers ?? {};\n debug('Creating new HttpsProxyAgent instance: %o', this.proxy.href);\n // Trim off the brackets from IPv6 addresses\n const host = (this.proxy.hostname || this.proxy.host).replace(/^\\[|\\]$/g, '');\n const port = this.proxy.port\n ? parseInt(this.proxy.port, 10)\n : this.proxy.protocol === 'https:'\n ? 443\n : 80;\n this.connectOpts = {\n // Attempt to negotiate http/1.1 for proxy servers that support http/2\n ALPNProtocols: ['http/1.1'],\n ...(opts ? omit(opts, 'headers') : null),\n host,\n port,\n };\n }\n /**\n * Called when the node-core HTTP client library is creating a\n * new HTTP request.\n */\n async connect(req, opts) {\n const { proxy } = this;\n if (!opts.host) {\n throw new TypeError('No \"host\" provided');\n }\n // Create a socket connection to the proxy server.\n let socket;\n if (proxy.protocol === 'https:') {\n debug('Creating `tls.Socket`: %o', this.connectOpts);\n socket = tls.connect(setServernameFromNonIpHost(this.connectOpts));\n }\n else {\n debug('Creating `net.Socket`: %o', this.connectOpts);\n socket = net.connect(this.connectOpts);\n }\n const headers = typeof this.proxyHeaders === 'function'\n ? this.proxyHeaders()\n : { ...this.proxyHeaders };\n const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host;\n let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\\r\\n`;\n // Inject the `Proxy-Authorization` header if necessary.\n if (proxy.username || proxy.password) {\n const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(auth).toString('base64')}`;\n }\n headers.Host = `${host}:${opts.port}`;\n if (!headers['Proxy-Connection']) {\n headers['Proxy-Connection'] = this.keepAlive\n ? 'Keep-Alive'\n : 'close';\n }\n for (const name of Object.keys(headers)) {\n payload += `${name}: ${headers[name]}\\r\\n`;\n }\n const proxyResponsePromise = (0, parse_proxy_response_1.parseProxyResponse)(socket);\n socket.write(`${payload}\\r\\n`);\n const { connect, buffered } = await proxyResponsePromise;\n req.emit('proxyConnect', connect);\n this.emit('proxyConnect', connect, req);\n if (connect.statusCode === 200) {\n req.once('socket', resume);\n if (opts.secureEndpoint) {\n // The proxy is connecting to a TLS server, so upgrade\n // this socket connection to a TLS connection.\n debug('Upgrading socket connection to TLS');\n return tls.connect({\n ...omit(setServernameFromNonIpHost(opts), 'host', 'path', 'port'),\n socket,\n });\n }\n return socket;\n }\n // Some other status code that's not 200... need to re-play the HTTP\n // header \"data\" events onto the socket once the HTTP machinery is\n // attached so that the node core `http` can parse and handle the\n // error status code.\n // Close the original socket, and a new \"fake\" socket is returned\n // instead, so that the proxy doesn't get the HTTP request\n // written to it (which may contain `Authorization` headers or other\n // sensitive data).\n //\n // See: https://hackerone.com/reports/541502\n socket.destroy();\n const fakeSocket = new net.Socket({ writable: false });\n fakeSocket.readable = true;\n // Need to wait for the \"socket\" event to re-play the \"data\" events.\n req.once('socket', (s) => {\n debug('Replaying proxy buffer for failed request');\n (0, assert_1.default)(s.listenerCount('data') > 0);\n // Replay the \"buffered\" Buffer onto the fake `socket`, since at\n // this point the HTTP module machinery has been hooked up for\n // the user.\n s.push(buffered);\n s.push(null);\n });\n return fakeSocket;\n }\n}\nHttpsProxyAgent.protocols = ['http', 'https'];\nexports.HttpsProxyAgent = HttpsProxyAgent;\nfunction resume(socket) {\n socket.resume();\n}\nfunction omit(obj, ...keys) {\n const ret = {};\n let key;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseProxyResponse = void 0;\nconst debug_1 = __importDefault(require(\"debug\"));\nconst debug = (0, debug_1.default)('https-proxy-agent:parse-proxy-response');\nfunction parseProxyResponse(socket) {\n return new Promise((resolve, reject) => {\n // we need to buffer any HTTP traffic that happens with the proxy before we get\n // the CONNECT response, so that if the response is anything other than an \"200\"\n // response code, then we can re-play the \"data\" events on the socket once the\n // HTTP parser is hooked up...\n let buffersLength = 0;\n const buffers = [];\n function read() {\n const b = socket.read();\n if (b)\n ondata(b);\n else\n socket.once('readable', read);\n }\n function cleanup() {\n socket.removeListener('end', onend);\n socket.removeListener('error', onerror);\n socket.removeListener('readable', read);\n }\n function onend() {\n cleanup();\n debug('onend');\n reject(new Error('Proxy connection ended before receiving CONNECT response'));\n }\n function onerror(err) {\n cleanup();\n debug('onerror %o', err);\n reject(err);\n }\n function ondata(b) {\n buffers.push(b);\n buffersLength += b.length;\n const buffered = Buffer.concat(buffers, buffersLength);\n const endOfHeaders = buffered.indexOf('\\r\\n\\r\\n');\n if (endOfHeaders === -1) {\n // keep buffering\n debug('have not received end of HTTP headers yet...');\n read();\n return;\n }\n const headerParts = buffered\n .slice(0, endOfHeaders)\n .toString('ascii')\n .split('\\r\\n');\n const firstLine = headerParts.shift();\n if (!firstLine) {\n socket.destroy();\n return reject(new Error('No header received from proxy CONNECT response'));\n }\n const firstLineParts = firstLine.split(' ');\n const statusCode = +firstLineParts[1];\n const statusText = firstLineParts.slice(2).join(' ');\n const headers = {};\n for (const header of headerParts) {\n if (!header)\n continue;\n const firstColon = header.indexOf(':');\n if (firstColon === -1) {\n socket.destroy();\n return reject(new Error(`Invalid header from proxy CONNECT response: \"${header}\"`));\n }\n const key = header.slice(0, firstColon).toLowerCase();\n const value = header.slice(firstColon + 1).trimStart();\n const current = headers[key];\n if (typeof current === 'string') {\n headers[key] = [current, value];\n }\n else if (Array.isArray(current)) {\n current.push(value);\n }\n else {\n headers[key] = value;\n }\n }\n debug('got proxy server response: %o %o', firstLine, headers);\n cleanup();\n resolve({\n connect: {\n statusCode,\n statusText,\n headers,\n },\n buffered,\n });\n }\n socket.on('error', onerror);\n socket.on('end', onend);\n read();\n });\n}\nexports.parseProxyResponse = parseProxyResponse;\n//# sourceMappingURL=parse-proxy-response.js.map","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet flagForceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tflagForceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m') ||\n\t\t\thasFlag('color=full') ||\n\t\t\thasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream, options = {}) {\n\tconst level = supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options\n\t});\n\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel({isTTY: tty.isatty(1)}),\n\tstderr: getSupportLevel({isTTY: tty.isatty(2)})\n};\n","\nvar encrypt_lookup = [\n \"Z\",\n \"m\",\n \"s\",\n \"e\",\n \"r\",\n \"b\",\n \"B\",\n \"o\",\n \"H\",\n \"Q\",\n \"t\",\n \"N\",\n \"P\",\n \"+\",\n \"w\",\n \"O\",\n \"c\",\n \"z\",\n \"a\",\n \"/\",\n \"L\",\n \"p\",\n \"n\",\n \"g\",\n \"G\",\n \"8\",\n \"y\",\n \"J\",\n \"q\",\n \"4\",\n \"2\",\n \"K\",\n \"W\",\n \"Y\",\n \"j\",\n \"0\",\n \"D\",\n \"S\",\n \"f\",\n \"d\",\n \"i\",\n \"k\",\n \"x\",\n \"3\",\n \"V\",\n \"T\",\n \"1\",\n \"6\",\n \"I\",\n \"l\",\n \"U\",\n \"A\",\n \"F\",\n \"M\",\n \"9\",\n \"7\",\n \"h\",\n \"E\",\n \"C\",\n \"v\",\n \"u\",\n \"R\",\n \"X\",\n \"5\"\n];\n\nlet esm_typeof = {}\nesm_typeof.A = function (t) {\n return typeof t\n}\n\nfunction encrypt_b64Encode(t) {\n var e = 664\n , r = 634\n , n = 448\n , o = 599\n , i = 315\n , a = 416\n , u = 512\n , s = 361\n , c = 406\n , l = 487\n , f = 496\n , p = 333\n , h = 630\n , d = 639\n , v = 548\n , g = 582\n , m = 447\n , y = 468\n , w = 375\n , b = 331\n , _ = 149\n , E = 382\n , x = 265\n , k = 625\n , T = 570\n , S = 551\n , A = 582\n , L = 581\n , I = 638\n , R = 618\n , O = 606\n , C = 429\n , N = 651\n , P = 667\n , B = 817\n , M = 333\n , j = 567\n , F = 747\n , D = 561\n , q = 570\n , U = 676\n , G = 840\n , H = 240\n , V = {\n udFrB: function (t, e) {\n return t % e\n },\n cCZFe: function (t, e) {\n return t === e\n },\n jevwl: function (t, e) {\n return t - e\n },\n aqlTy: function (t, e) {\n return t + e\n },\n rceYY: function (t, e) {\n return t >> e\n },\n OwjMq: function (t, e) {\n return t & e\n },\n kSGXO: function (t, e) {\n return t << e\n },\n veNiI: function (t, e) {\n return t === e\n },\n QLthP: function (t, e) {\n return t + e\n },\n wDtJz: function (t, e) {\n return t + e\n },\n nYqUQ: function (t, e) {\n return t & e\n },\n TCArD: function (t, e) {\n return t << e\n },\n RHteb: function (t, e) {\n return t - e\n },\n mZPJZ: function (t, e) {\n return t < e\n },\n zDETq: function (t, e, r, n) {\n return t(e, r, n)\n },\n YlZGp: function (t, e) {\n return t > e\n }\n };\n function W(t, e) {\n return a0_0x10f4ac(e, t - -H)\n }\n for (var X = (W(-413, -442) + W(-e, -r) + \"7\")[W(-n, -o)](\"|\"), z = 0; ;) {\n switch (X[z++]) {\n case \"0\":\n var Y;\n continue;\n case \"1\":\n var K = [];\n continue;\n case \"2\":\n var J = V[W(-i, -a)]($, 3);\n continue;\n case \"3\":\n var $ = t[W(-350, -u)];\n continue;\n case \"4\":\n V[W(-s, -c)](J, 1) ? (Y = t[V[W(-l, -f)]($, 1)],\n K[W(-p, -346)](V[W(-h, -d)](encrypt_lookup[V[W(-503, -v)](Y, 2)] + encrypt_lookup[V[W(-g, -741)](V[W(-331, -m)](Y, 4), 63)], \"==\"))) : V[W(-y, -w)](J, 2) && (Y = V[W(-b, -_)](t[$ - 2], 8) + t[V[W(-l, -E)]($, 1)],\n K[W(-333, -x)](V[W(-k, -505)](V[W(-T, -S)](encrypt_lookup[Y >> 10], encrypt_lookup[V[W(-A, -L)](Y >> 4, 63)]) + encrypt_lookup[V[W(-I, -R)](V[W(-O, -C)](Y, 2), 63)], \"=\")));\n continue;\n case \"5\":\n var Q = 16383;\n continue;\n case \"6\":\n for (var Z = 0, tt = V[W(-509, -N)]($, J); V[W(-P, -B)](Z, tt); Z += Q)\n K[W(-M, -153)](V[W(-j, -F)](encrypt_encodeChunk, t, Z, V[W(-D, -413)](Z + Q, tt) ? tt : V[W(-q, -501)](Z, Q)));\n continue;\n case \"7\":\n return K[W(-U, -G)](\"\")\n }\n break\n }\n}\n\nfunction encrypt_encodeUtf8(t) {\n var e = 185\n , r = 410\n , n = 480\n , o = 222\n , i = 194\n , a = 165\n , u = 147\n , s = 290\n , c = 460\n , l = 472\n , f = 497\n , p = 462\n , h = 286\n , d = 209\n , v = 223\n , g = 590\n , m = {\n bIGxm: function (t, e) {\n return t(e)\n },\n MahgM: function (t, e) {\n return t < e\n },\n czxKn: function (t, e) {\n return t === e\n },\n clYIu: function (t, e) {\n return t + e\n }\n }\n , y = m[b(477, 488)](encodeURIComponent, t)\n , w = [];\n function b(t, e) {\n return a0_0x10f4ac(t, e - g)\n }\n for (var _ = 0; m[b(333, e)](_, y[b(r, n)]); _++) {\n var E = y[b(o, 290)](_);\n if (m[b(i, a)](E, \"%\")) {\n var x = y[b(u, s)](m[b(574, 472)](_, 1)) + y[b(c, 290)](m[b(605, l)](_, 2))\n , k = parseInt(x, 16);\n w[b(592, f)](k),\n _ += 2\n } else\n w[b(p, f)](E[b(217, h) + b(d, v)](0))\n }\n return w\n}\n\nfunction sign_common(h) {\n return encrypt_b64Encode(encrypt_encodeUtf8(JSON.stringify(h)))\n}\nfunction encrypt_tripletToBase64(t) {\n var e = 11\n , r = 15\n , n = 199\n , o = 34\n , i = 4\n , a = 102\n , u = 276\n , s = 205\n , c = 218\n , l = 11\n , f = 115\n , p = 34\n , h = 161\n , d = 123\n , v = 335\n , g = {};\n function m(t, e) {\n return a0_0x10f4ac(e, t - v)\n }\n g[m(205, 328)] = function (t, e) {\n return t + e\n }\n ,\n g[m(e, 53)] = function (t, e) {\n return t >> e\n }\n ,\n g[m(r, n)] = function (t, e) {\n return t & e\n }\n ,\n g[m(o, i)] = function (t, e) {\n return t >> e\n }\n ,\n g[m(-a, -u)] = function (t, e) {\n return t & e\n }\n ;\n var y = g;\n return y[m(s, c)](encrypt_lookup[63 & y[m(l, -75)](t, 18)], encrypt_lookup[y[m(r, f)](y[m(p, h)](t, 12), 63)]) + encrypt_lookup[t >> 6 & 63] + encrypt_lookup[y[m(-a, -d)](t, 63)]\n}\nfunction encrypt_encodeChunk(t, e, r) {\n var n, o = 165, i = 246, a = 205, u = 353, s = 162, c = 17, l = 351, f = 191, p = 139, h = 79, d = 86, v = 233, g = 270, m = 166, y = {\n hwomB: function (t, e) {\n return t < e\n },\n iHUeL: function (t, e) {\n return t & e\n },\n ELxEv: function (t, e) {\n return t << e\n },\n lBuRH: function (t, e) {\n return t << e\n },\n SkIJl: function (t, e) {\n return t & e\n },\n JYxWY: function (t, e) {\n return t + e\n },\n CxjtF: function (t, e) {\n return t(e)\n }\n }, w = [];\n function b(t, e) {\n return a0_0x10f4ac(t, e - m)\n }\n for (var _ = e; y[b(-63, -o)](_, r); _ += 3)\n n = y[b(-i, -a)](y[b(-166, -124)](t[_], 16), 16711680) + y[b(-u, -205)](y[b(s, -c)](t[_ + 1], 8), 65280) + y[b(-l, -208)](t[y[b(-350, -f)](_, 2)], 255),\n w[b(p, 73)](y[b(h, d)](encrypt_tripletToBase64, n));\n return w[b(-v, -g)](\"\")\n}\n\nfunction a0_0x3693(t, e) {\n var r = [\n \"xUKNL\",\n \"jUrZI\",\n \"rviFu\",\n \"join\",\n \"get\",\n \"LjDtD\",\n \"ZJHyP\",\n \"wOmGY\",\n \"enumera\",\n \"aONWR\",\n \"string\",\n \"kQpMi\",\n \"mZPJZ\",\n \"Ysiay\",\n \"czxKn\",\n \"|5|6|4|\",\n \"prototy\",\n \"jklmnop\",\n \"MuYbw\",\n \"diDwk\",\n \"TRFtx\",\n \"drDHI\",\n \"WLARA\",\n \"xyz0123\",\n \"asBytes\",\n \"|6|0|1|\",\n \"JOtEi\",\n \"Oialn\",\n \"OQrEi\",\n \"uPnXq\",\n \"VWXYZab\",\n \"cIbFa\",\n \"qYuta\",\n \"QDOZZ\",\n \"MahgM\",\n \"iRXZq\",\n \"22098XlFGYn\",\n \"mmLKn\",\n \"jMcIE\",\n \"stringi\",\n \"[object\",\n \"nYqUQ\",\n \"jSgjk\",\n \"ucyEo\",\n \"iewJI\",\n \"vgTwl\",\n \"DnNGR\",\n \"oBytes\",\n \"Xtwzk\",\n \"aqlTy\",\n \"JWnPK\",\n \"1|0|2|4\",\n \"qrstuvw\",\n \"_gg\",\n \"QLthP\",\n \"FJIWy\",\n \"yRnhISG\",\n \"pjUsr\",\n \"KAwuh\",\n \"Thhoa\",\n \"jarkJ\",\n \"WjRNN\",\n \"asStrin\",\n \"x3VT16I\",\n \"357835LaQWjW\",\n \"SkIJl\",\n \"size\",\n \"iyorr\",\n \"iHUeL\",\n \"tTanW\",\n \"tNusJ\",\n \"NiSrP\",\n \"eAt\",\n \"TCArD\",\n \"a2r1ZQo\",\n \"iamspam\",\n \"bOnfu\",\n \"UNSKg\",\n \"HIJKLMN\",\n \"ZfMKC\",\n \"bJhXU\",\n \"zwAAc\",\n \"JYxWY\",\n \"lUAFM97\",\n \"mwaRe\",\n \"EzYWD\",\n \"replace\",\n \"uOtUJ\",\n \"__esMod\",\n \"ViQWI\",\n \"aCMFL\",\n \"EAKSd\",\n \"ule\",\n \"pqnFP\",\n \"qYDsL\",\n \"270726pnaYfG\",\n \"glBZG\",\n \"OwjMq\",\n \"YGrjc\",\n \"ZhAcd\",\n \"JDqFL\",\n \"456789+\",\n \"kEjQs\",\n \"lWhbD\",\n \"OaLTI\",\n \"dXlgm\",\n \"cVte9UJ\",\n \"ctor\",\n \"hwomB\",\n \"wDtJz\",\n \"constru\",\n \"ABHuC\",\n \"zDETq\",\n \"SYNeA\",\n \"BGbij\",\n \"ionFq\",\n \"QzaNS\",\n \"7|3|5|4\",\n \"YlZGp\",\n \"Bjniw\",\n \"ZITuN\",\n \"KPTzH\",\n \"HrBeq\",\n \"xobsT\",\n \"kXJkC\",\n \"QSrEZ\",\n \"ENXtO\",\n \"FYbRJ\",\n \"wOcza/L\",\n \"_hh\",\n \"dVXMb\",\n \"ppkua\",\n \"WgamZ\",\n \"HuwCW\",\n \"362424fnLCuh\",\n \"charCod\",\n \"HhPqg\",\n \"ODunI\",\n \"eJzqq\",\n \"charAt\",\n \"JGAgI\",\n \"ZmserbB\",\n \"TURcG\",\n \"WyrqF\",\n \"iYJzH\",\n \"VIwfH\",\n \"tzzOB\",\n \"YgiCH\",\n \"byyMQ\",\n \"ELxEv\",\n \"0DSfdik\",\n \"HRihr\",\n \"_ii\",\n \"aDsrp\",\n \"ble\",\n \"jTGtW\",\n \"configu\",\n \"cXiYW\",\n \"56kSpAsC\",\n \"158KIldlA\",\n \"oHQtNP+\",\n \"BHavO\",\n \"PCIlh\",\n \"QatIf\",\n \"IKyqh\",\n \"Words\",\n \"Qwnrg\",\n \"44lQAgNu\",\n \"cdefghi\",\n \"nTwxD\",\n \"RHteb\",\n \"coqPr\",\n \"rJwmI\",\n \"aBoeK\",\n \"default\",\n \"exports\",\n \"rceYY\",\n \"isArray\",\n \"mdKKO\",\n \"kzxWE\",\n \"DeBtm\",\n \"tjjUn\",\n \"vJEcD\",\n \"LpfE8xz\",\n \"bin\",\n \"HKazo\",\n \"rable\",\n \"call\",\n \"wordsTo\",\n \"zBiyt\",\n \"GrsGL\",\n \"fqulF\",\n \"jevwl\",\n \"mxfLj\",\n \"xlUnt\",\n \"q42KWYj\",\n \"endian\",\n \"eEqDc\",\n \"oyGAZ\",\n \"bytesTo\",\n \"OzjuJ\",\n \"IfwWq\",\n \"ize\",\n \"6648810piiNEz\",\n \"lTHdy\",\n \"vDLZJ\",\n \"stringT\",\n \"A4NjFqY\",\n \"GkjTz\",\n \"eooJA\",\n \"substr\",\n \"veNiI\",\n \"LYfDp\",\n \"ljKsP\",\n \"jJYWG\",\n \"bcYAf\",\n \"srikB\",\n \"utf8\",\n \"qTbeY\",\n \"yqRzd\",\n \"|3|5\",\n \"bjbAy\",\n \" Array]\",\n \"rMbXP\",\n \"u5wPHsO\",\n \"test\",\n \"gMIMC\",\n \"Deyqv\",\n \" argume\",\n \"ABCDEFG\",\n \"undefin\",\n \"split\",\n \"QTlsj\",\n \"_isBuff\",\n \"OPQRSTU\",\n \"Illegal\",\n \"loSen\",\n \"navigat\",\n \"ObwNo\",\n \"qPbcq\",\n \"7182692QogvXX\",\n \"tvqSn\",\n \"DGptJ\",\n \"HhTfW\",\n \"avIYx\",\n \"defineP\",\n \"PFQbW\",\n \"CjFyM\",\n \"toStrin\",\n \"yMWXS\",\n \"yMyOy\",\n \"0XTdDgM\",\n \"eXkru\",\n \"_blocks\",\n \"indexOf\",\n \"mbBQr\",\n \"lBuRH\",\n \"HzGjH\",\n \"HNErV\",\n \"mEokX\",\n \"userAge\",\n \"UpmtD\",\n \"sgomx\",\n \"KDfKS\",\n \"OTbSq\",\n \"lxMGW\",\n \"0|3|2|1\",\n \"dfWyB\",\n \"lWzAd\",\n \"eyXTL\",\n \"5624qreyZK\",\n \"pow\",\n \"IJstz\",\n \"LMlMB\",\n \"INlwI\",\n \"lRulU\",\n \"TCgZh\",\n \"_digest\",\n \"UBhIl\",\n \"fLtZZ\",\n \"FYSKq\",\n \"2|8|0\",\n \"IoCeZ\",\n \" Object\",\n \"UuTvI\",\n \"lNKLD\",\n \"String\",\n \"Bytes\",\n \"rBVvW\",\n \"KblCWi+\",\n \"pRaIH\",\n \"roperty\",\n \"vTINI\",\n \"atLE\",\n \"functio\",\n \"Udqoy\",\n \"nt \",\n \"htSWx\",\n \"hEwRK\",\n \"encodin\",\n \"sCSVK\",\n \"VuAZF\",\n \"xeIIy\",\n \"RBjMb\",\n \"taTrq\",\n \"vDLFJ\",\n \"bPkya\",\n \"HzimH\",\n \"nCffO\",\n \"BWbtU\",\n \"2|8\",\n \"slice\",\n \"lxMGQ\",\n \"tTiwe\",\n \"JDhJB\",\n \"rCode\",\n \"gNDzY\",\n \"wJkyu\",\n \"cCZFe\",\n \"RNGSl\",\n \"floor\",\n \"clYIu\",\n \"vLiwz\",\n \"BiNSE\",\n \"MtYWB\",\n \"fromCha\",\n \"StNOc\",\n \"|7|5|3|\",\n \"9|1|4|6\",\n \"length\",\n \"UNYAE\",\n \"pngG8yJ\",\n \"hasOwnP\",\n \"pYeWu\",\n \"wTjkk\",\n \"Bvk6/7=\",\n \"KTmgk\",\n \"bIGxm\",\n \"readFlo\",\n \"LFZch\",\n \"_ff\",\n \"1|3|4|2\",\n \"binary\",\n \"LLdJZ\",\n \"ZofOU\",\n \"6399uFPxTQ\",\n \"push\",\n \"YntPT\",\n \"kSGXO\",\n \"random\",\n \"HfpCU\",\n \"hECvuRX\",\n \"getTime\",\n \"iwSyV\",\n \"alert\",\n \"LKMcb\",\n \"DJVdg\",\n \"Hex\",\n \"URzKO\",\n \"CxjtF\",\n \"ZVOCs\",\n \"isBuffe\",\n \"vGpbT\",\n \"rotl\",\n \"udFrB\",\n \"CnbsH\",\n \"crLST\"\n ]\n return r[t -= 131]\n}\nfunction a0_0x10f4ac(t, e) {\n return a0_0x3693(e - -570, t)\n}\n\nvar encrypt_mcr = function (t) {\n var e = 67\n , r = 15\n , n = 164\n , o = 126\n , i = 137\n , a = 39\n , u = 176\n , s = 72\n , c = 56\n , l = 21\n , f = 35\n , p = 34\n , h = 35\n , d = 18\n , v = 25\n , g = 185\n , m = 1149\n , y = 744\n , w = 1295\n , b = 1248\n , _ = 1310\n , E = 1096\n , x = 1166\n , k = 1095\n , T = 1196\n , S = 1180\n , A = 1039\n , L = 976\n , R = 1347\n , I = 1117\n , O = 1168\n , C = 1233\n , N = 1157\n , P = 1006\n , B = 1122\n , M = 1277\n , j = 1288\n , F = 1271\n , D = 986\n , q = 162\n , U = {};\n function H(t, e) {\n return a0_0x10f4ac(e, t - q)\n }\n U[H(-73, -66)] = function (t, e) {\n return t === e\n }\n ,\n U[H(e, 186)] = function (t, e) {\n return t < e\n }\n ,\n U[H(-r, -n)] = function (t, e) {\n return t ^ e\n }\n ,\n U[H(r, -o)] = function (t, e) {\n return t & e\n }\n ,\n U[H(-i, -a)] = function (t, e) {\n return t < e\n }\n ,\n U[H(-175, -u)] = function (t, e) {\n return t ^ e\n }\n ,\n U[H(-59, s)] = function (t, e) {\n return t ^ e\n }\n ,\n U[H(-c, -l)] = function (t, e) {\n return t >>> e\n }\n ,\n U[H(f, p)] = function (t, e) {\n return t >>> e\n }\n ;\n for (var G, V, W = U, z = 3988292384, X = 256, Y = []; X--; Y[X] = W[H(h, -66)](G, 0))\n for (V = 8,\n G = X; V--;)\n G = W[H(r, d)](G, 1) ? W[H(35, v)](G, 1) ^ z : W[H(h, g)](G, 1);\n return function (t) {\n function e(t, e) {\n return H(e - 1181, t)\n }\n if (W[e(m, 1108)]((0,\n esm_typeof.A)(t), e(y, 914))) {\n for (var r = 0, n = -1; W[e(w, b)](r, t[e(_, 1233)]); ++r)\n n = W[e(E, x)](Y[W[e(k, T)](n, 255) ^ t[e(S, A) + e(1022, L)](r)], n >>> 8);\n return W[e(R, 1166)](n, -1) ^ z\n }\n for (r = 0,\n n = -1; W[e(I, 1044)](r, t[e(O, C)]); ++r)\n n = W[e(N, P)](Y[W[e(1229, B)](W[e(M, T)](n, 255), t[r])], W[e(j, 1125)](n, 8));\n return W[e(F, B)](W[e(D, 1122)](n, -1), z)\n }\n}();\n\nfunction GenXSCommon(a1cookie, x_t, x_s) {\n let b1 = 'I38rHdgsjopgIvesdVwgIC+oIELmBZ5e3VwXLgFTIxS3bqwErFeexd0ekncAzMFYnqthIhJeSnMDKutRI3KsYorWHPtGrbV0P9WfIi/eWc6eYqtyQApPI37ekmR1QL+5Ii6sdnoeSfqYHqwl2qt5B0DoIvMzOZQqZVw7IxOeTqwr4qtiIkrOIi/skccxICLdI3Oe0utl2ADZsLveDSKsSPw5IEvsiutJOqw8BVwfPpdeTDWOIx4VIiu6ZPwbPut5IvlaLbgs3qtxIxes1VwHIkumIkIyejgsY/WTge7sjutKrZgedWI9gfKeYWZGI36eWPwyIEJefut0ocVAPBLLI3Aeiqt3cZ7sVom4IESyIhEqQd4AICY24F4gIiifpVwAICZVJo3sWWJs1qwiIvdef97e0ekKIi/e1piS8qwUIE7s1fds6WAeiVwqed5sdut3IxILbd6sdqtDbgKs0PwgIv8aI3z5rqwGBVtwzfTsKD7sdBdskut+Iioed/As1SiiIkKs0F6s3nVuIkge1Pt0IkVkwPwwNVtMI3/e1qtdIkKs1VwVIEesdutA+qwKsuw7IvrRIxDgJfIj2IJexVtVIhiKIi6eDVw/bz4zLadsYjmfIkWo4VtPmVw5IvAe3qtk+LJeTl5sTSEyIEJekdgs3PtsnPwqI35sSPt0Ih/sV04TIk0ejjNsfqw7Iv3sVut04B8qIkWyIvKsxFOekzNsdAKsYPtKIiMFI3MurVtKIvzjIh6s6lFut//sWqtaI3IYbuwl'\n let h = {\n \"s0\": 3,\n \"s1\": \"\",\n \"x0\": \"1\",\n \"x1\": \"3.6.8\",\n \"x2\": \"Mac OS\",\n \"x3\": \"xhs-pc-web\",\n \"x4\": \"4.20.1\",\n \"x5\": a1cookie, // a1 cookie\n \"x6\": x_t,\n \"x7\": x_s,\n \"x8\": b1,\n \"x9\": encrypt_mcr(x_t + x_s + b1),\n \"x10\": 1,\n }\n\n return sign_common(h)\n}\n\nmodule.exports = GenXSCommon\n\n\n// let a1 = '195b24e679dmxgripk2o89yld9kdnoklz0h04octb40000365251';\n// let x_t = 1754108104611;\n// const x_s = 'XYS_2UQhPsHCH0c1PjhFHjIj2erjwjQM89PjNsQhPjHCHDlkJdphHjIj2ePjwjQTJdPIP/ZlgAmGy0Yt4Lh3cFq34DE84F+ewBrM/9IUwebz8F+3J9Qi+SQD8dzN4e8EPeYS2eb7c0mTc9Yrc7z14nI3nLkQcDSenLkG4sR68FVM+nSF2e+NJ9zca0mkzrTj4DV3GMqMpoS3yeWEznbM+L40wn4Lpbb9zr+7/SW6PMYYzeQ1aFTI8gm8J/YL/FzTc0D6zgSyPjTy+0Ys+7c38g8NLSQD8AWjNsQh+sHCHfRjyfp04sQR'\n\n// console.log(GenXSCommon(a1, x_t, x_s));\n","const a0_0x45db08=a0_0x4b0d;function a0_0x4b0d(_0x2bd218,_0x316d6){const _0x165410=a0_0x1654();return a0_0x4b0d=function(_0x4b0d73,_0x5794db){_0x4b0d73=_0x4b0d73-0x84;let _0x1859e3=_0x165410[_0x4b0d73];return _0x1859e3;},a0_0x4b0d(_0x2bd218,_0x316d6);}(function(_0x1b2596,_0x16c0e0){const _0x1227f1=a0_0x4b0d,_0x46fb59=_0x1b2596();while(!![]){try{const _0x383dd4=parseInt(_0x1227f1(0x85))/0x1+-parseInt(_0x1227f1(0xb0))/0x2*(-parseInt(_0x1227f1(0x9b))/0x3)+parseInt(_0x1227f1(0xaa))/0x4+-parseInt(_0x1227f1(0xa0))/0x5*(parseInt(_0x1227f1(0x9d))/0x6)+parseInt(_0x1227f1(0x86))/0x7+-parseInt(_0x1227f1(0xab))/0x8*(parseInt(_0x1227f1(0x8d))/0x9)+parseInt(_0x1227f1(0x91))/0xa;if(_0x383dd4===_0x16c0e0)break;else _0x46fb59['push'](_0x46fb59['shift']());}catch(_0x4fc071){_0x46fb59['push'](_0x46fb59['shift']());}}}(a0_0x1654,0x807f8));const Random=Math['random'](),Ts=Date['now'](),Sm3DoneTs=Ts+0x30,xhrParaDoneTs=Ts+0x109,xhrReqDoneTs=Ts+0x10af0;function a0_0x1654(){const _0x46e031=['floor','dhzx','map','_compress','charCodeAt','min','invalid\\x20j\\x20for\\x20constant\\x20Tj','reset','662|856|1920|977|1920|977|1920|1080|Linux\\x20x86_64','6GqxJwW','error','1578UVUSyW','fromCharCode','replace','17445vhaSjq','isNaN','toString','push','length','write','reduce','charAt','reg','split','2475936ufrFMu','2137592VTpBSF','join','Dkdpgh2ZmsQB80/MfvV36XI1R45-WUAlEixNLwoqYTOPuzKFjJnry79HbGcaStCe','exports','fmUmtNjj1OfTrR716RULEyQaLPrOG1jpZz0/4Tyzr7/IbcOXs8PxVxHmrAIsIMm6IfTserj+JgCbPHUssUmedGKwCrIziubgSU0FT1MmqPOZXcPDGB3xUyq+vaM7HZyYgJtKyMR=','48064qVwnFy','concat','prototype','167524mhzzJE','5968354Oyyfma','chunk','string','forEach','size','slice','sort','9BjSPrC','sum','repeat','splice','239400JtRPVl'];a0_0x1654=function(){return _0x46e031;};return a0_0x1654();}class SM3Hasher{constructor(){const _0x468533=a0_0x4b0d;this[_0x468533(0xa8)]=new Array(0x8),this[_0x468533(0x87)]=[],this[_0x468533(0x8a)]=0x0,this[_0x468533(0x99)]();}[a0_0x45db08(0x99)](){const _0x11e792=a0_0x45db08;this[_0x11e792(0xa8)][0x0]=0x7380166f,this[_0x11e792(0xa8)][0x1]=0x4914b2b9,this['reg'][0x2]=0x172442d7,this[_0x11e792(0xa8)][0x3]=0xda8a0600,this['reg'][0x4]=0xa96f30bc,this[_0x11e792(0xa8)][0x5]=0x163138aa,this[_0x11e792(0xa8)][0x6]=0xe38dee4d,this[_0x11e792(0xa8)][0x7]=0xb0fb0e4e,this[_0x11e792(0x87)]=[],this[_0x11e792(0x8a)]=0x0;}[a0_0x45db08(0xa5)](_0x22d1ef){const _0x182388=a0_0x45db08;var _0x2ded18=_0x182388(0x88)==typeof _0x22d1ef?function(_0x5e491d){const _0x12d911=_0x182388;var _0x5795ab=encodeURIComponent(_0x5e491d)[_0x12d911(0x9f)](/%([0-9A-F]{2})/g,function(_0x22d98b,_0x5659da){const _0x357908=_0x12d911;return String[_0x357908(0x9e)]('0x'+_0x5659da);}),_0x5c0d1c=new Array(_0x5795ab['length']);return Array[_0x12d911(0x84)][_0x12d911(0x89)]['call'](_0x5795ab,function(_0x2e8583,_0x28f42f){const _0x4b2a85=_0x12d911;_0x5c0d1c[_0x28f42f]=_0x2e8583[_0x4b2a85(0x96)](0x0);}),_0x5c0d1c;}(_0x22d1ef):_0x22d1ef;this['size']+=_0x2ded18['length'];var _0xffe4ea=0x40-this[_0x182388(0x87)][_0x182388(0xa4)];if(_0x2ded18[_0x182388(0xa4)]<_0xffe4ea)this['chunk']=this[_0x182388(0x87)][_0x182388(0xb1)](_0x2ded18);else{for(this['chunk']=this[_0x182388(0x87)][_0x182388(0xb1)](_0x2ded18[_0x182388(0x8b)](0x0,_0xffe4ea));this[_0x182388(0x87)]['length']>=0x40;)this['_compress'](this[_0x182388(0x87)]),_0xffe4ea<_0x2ded18[_0x182388(0xa4)]?this['chunk']=_0x2ded18[_0x182388(0x8b)](_0xffe4ea,Math[_0x182388(0x97)](_0xffe4ea+0x40,_0x2ded18['length'])):this[_0x182388(0x87)]=[],_0xffe4ea+=0x40;}}[a0_0x45db08(0x8e)](_0x34ff8d,_0xecf9f6){const _0x3ddb20=a0_0x45db08;_0x34ff8d&&(this[_0x3ddb20(0x99)](),this[_0x3ddb20(0xa5)](_0x34ff8d)),this['_fill']();for(var _0x28ac8a=0x0;_0x28ac8a<this[_0x3ddb20(0x87)][_0x3ddb20(0xa4)];_0x28ac8a+=0x40)this[_0x3ddb20(0x95)](this[_0x3ddb20(0x87)]['slice'](_0x28ac8a,_0x28ac8a+0x40));var _0x117621,_0x335539,_0x450e58,_0x5b1ad8=null;if('hex'==_0xecf9f6){_0x5b1ad8='';for(_0x28ac8a=0x0;_0x28ac8a<0x8;_0x28ac8a++)_0x5b1ad8+=(_0x117621=this[_0x3ddb20(0xa8)][_0x28ac8a][_0x3ddb20(0xa2)](0x10),_0x335539=0x8,_0x450e58='0',_0x117621[_0x3ddb20(0xa4)]>=_0x335539?_0x117621:_0x450e58[_0x3ddb20(0x8f)](_0x335539-_0x117621[_0x3ddb20(0xa4)])+_0x117621);}else for(_0x5b1ad8=new Array(0x20),_0x28ac8a=0x0;_0x28ac8a<0x8;_0x28ac8a++){var _0x46ad66=this[_0x3ddb20(0xa8)][_0x28ac8a];_0x5b1ad8[0x4*_0x28ac8a+0x3]=(0xff&_0x46ad66)>>>0x0,_0x46ad66>>>=0x8,_0x5b1ad8[0x4*_0x28ac8a+0x2]=(0xff&_0x46ad66)>>>0x0,_0x46ad66>>>=0x8,_0x5b1ad8[0x4*_0x28ac8a+0x1]=(0xff&_0x46ad66)>>>0x0,_0x46ad66>>>=0x8,_0x5b1ad8[0x4*_0x28ac8a]=(0xff&_0x46ad66)>>>0x0;}return this[_0x3ddb20(0x99)](),_0x5b1ad8;}['_fill'](){const _0xa844a0=a0_0x45db08;var _0x15bc36=0x8*this[_0xa844a0(0x8a)],_0x4a32f3=this['chunk'][_0xa844a0(0xa3)](0x80)%0x40;for(0x40-_0x4a32f3<0x8&&(_0x4a32f3-=0x40);_0x4a32f3<0x38;_0x4a32f3++)this[_0xa844a0(0x87)][_0xa844a0(0xa3)](0x0);for(var _0x36cc0b=0x0;_0x36cc0b<0x4;_0x36cc0b++){var _0xd7dcfe=Math[_0xa844a0(0x92)](_0x15bc36/0x100000000);this['chunk'][_0xa844a0(0xa3)](_0xd7dcfe>>>0x8*(0x3-_0x36cc0b)&0xff);}for(_0x36cc0b=0x0;_0x36cc0b<0x4;_0x36cc0b++)this[_0xa844a0(0x87)][_0xa844a0(0xa3)](_0x15bc36>>>0x8*(0x3-_0x36cc0b)&0xff);}[a0_0x45db08(0x95)](_0x1e530c){const _0x3c50af=a0_0x45db08;function _0x3da582(_0x14b06e,_0x4ec82e){return(_0x14b06e<<(_0x4ec82e%=0x20)|_0x14b06e>>>0x20-_0x4ec82e)>>>0x0;}function _0x489962(_0x5dd43e){const _0x744660=a0_0x4b0d;return 0x0<=_0x5dd43e&&_0x5dd43e<0x10?0x79cc4519:0x10<=_0x5dd43e&&_0x5dd43e<0x40?0x7a879d8a:void console[_0x744660(0x9c)](_0x744660(0x98));}function _0x197f71(_0x5e22dd,_0xfc800b,_0x1300f1,_0xed8891){const _0x3414cb=a0_0x4b0d;return 0x0<=_0x5e22dd&&_0x5e22dd<0x10?(_0xfc800b^_0x1300f1^_0xed8891)>>>0x0:0x10<=_0x5e22dd&&_0x5e22dd<0x40?(_0xfc800b&_0x1300f1|_0xfc800b&_0xed8891|_0x1300f1&_0xed8891)>>>0x0:(console[_0x3414cb(0x9c)]('invalid\\x20j\\x20for\\x20bool\\x20function\\x20FF'),0x0);}function _0x2f42fb(_0x326645,_0x2c63af,_0x558c0d,_0x4a902b){const _0x493bba=a0_0x4b0d;return 0x0<=_0x326645&&_0x326645<0x10?(_0x2c63af^_0x558c0d^_0x4a902b)>>>0x0:0x10<=_0x326645&&_0x326645<0x40?(_0x2c63af&_0x558c0d|~_0x2c63af&_0x4a902b)>>>0x0:(console[_0x493bba(0x9c)]('invalid\\x20j\\x20for\\x20bool\\x20function\\x20GG'),0x0);}if(_0x1e530c[_0x3c50af(0xa4)]<0x40){console[_0x3c50af(0x9c)]('compress\\x20error:\\x20not\\x20enough\\x20data');return;}else{for(var _0x23a9bd=function(_0x7114f5){for(var _0x49cf1f=new Array(0x84),_0x698c70=0x0;_0x698c70<0x10;_0x698c70++)_0x49cf1f[_0x698c70]=_0x7114f5[0x4*_0x698c70]<<0x18,_0x49cf1f[_0x698c70]|=_0x7114f5[0x4*_0x698c70+0x1]<<0x10,_0x49cf1f[_0x698c70]|=_0x7114f5[0x4*_0x698c70+0x2]<<0x8,_0x49cf1f[_0x698c70]|=_0x7114f5[0x4*_0x698c70+0x3],_0x49cf1f[_0x698c70]>>>=0x0;for(var _0xe5328=0x10;_0xe5328<0x44;_0xe5328++){var _0x2b58f2=_0x49cf1f[_0xe5328-0x10]^_0x49cf1f[_0xe5328-0x9]^_0x3da582(_0x49cf1f[_0xe5328-0x3],0xf);_0x2b58f2=_0x2b58f2^_0x3da582(_0x2b58f2,0xf)^_0x3da582(_0x2b58f2,0x17),_0x49cf1f[_0xe5328]=(_0x2b58f2^_0x3da582(_0x49cf1f[_0xe5328-0xd],0x7)^_0x49cf1f[_0xe5328-0x6])>>>0x0;}for(_0xe5328=0x0;_0xe5328<0x40;_0xe5328++)_0x49cf1f[_0xe5328+0x44]=(_0x49cf1f[_0xe5328]^_0x49cf1f[_0xe5328+0x4])>>>0x0;return _0x49cf1f;}(_0x1e530c),_0x17c086=this[_0x3c50af(0xa8)][_0x3c50af(0x8b)](0x0),_0x3621a2=0x0;_0x3621a2<0x40;_0x3621a2++){var _0x5959b9=_0x3da582(_0x17c086[0x0],0xc)+_0x17c086[0x4]+_0x3da582(_0x489962(_0x3621a2),_0x3621a2),_0x3b42ff=((_0x5959b9=_0x3da582(_0x5959b9=(0xffffffff&_0x5959b9)>>>0x0,0x7))^_0x3da582(_0x17c086[0x0],0xc))>>>0x0,_0x50d411=_0x197f71(_0x3621a2,_0x17c086[0x0],_0x17c086[0x1],_0x17c086[0x2]);_0x50d411=(0xffffffff&(_0x50d411=_0x50d411+_0x17c086[0x3]+_0x3b42ff+_0x23a9bd[_0x3621a2+0x44]))>>>0x0;var _0x910e21=_0x2f42fb(_0x3621a2,_0x17c086[0x4],_0x17c086[0x5],_0x17c086[0x6]);_0x910e21=(0xffffffff&(_0x910e21=_0x910e21+_0x17c086[0x7]+_0x5959b9+_0x23a9bd[_0x3621a2]))>>>0x0,_0x17c086[0x3]=_0x17c086[0x2],_0x17c086[0x2]=_0x3da582(_0x17c086[0x1],0x9),_0x17c086[0x1]=_0x17c086[0x0],_0x17c086[0x0]=_0x50d411,_0x17c086[0x7]=_0x17c086[0x6],_0x17c086[0x6]=_0x3da582(_0x17c086[0x5],0x13),_0x17c086[0x5]=_0x17c086[0x4],_0x17c086[0x4]=(_0x910e21^_0x3da582(_0x910e21,0x9)^_0x3da582(_0x910e21,0x11))>>>0x0;}for(var _0x459622=0x0;_0x459622<0x8;_0x459622++)this['reg'][_0x459622]=(this[_0x3c50af(0xa8)][_0x459622]^_0x17c086[_0x459622])>>>0x0;}}}function EnvData2CharCode(_0x58cd97,_0x23e1e0,_0x3ca6b2){const _0x56cb93=a0_0x45db08;let _0x2d49d4=Random*0xf0>>0x0>0x6d?(Random*0xf0>>0x0)+0x2:Random*0xf0>>0x0,_0x3f2013=Random*0xff>>0x0&0x4d|0x2|0x10|0x20|0x80,_0x4b8ded=[Random*0xffff&0xff&0xaa|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x0,0x2)[0x0]&0x55,Random*0xffff&0xff&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x0,0x2)[0x0]&0xaa,Random*0xffff>>0x8&0xaa|[0x1,0x0,0x1,0xf]['slice'](0x0,0x2)[0x1]&0x55,Random*0xffff>>0x8&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x0,0x2)[0x1]&0xaa,_0x2d49d4&0xaa|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x0]&0x55,_0x2d49d4&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x0]&0xaa,_0x3f2013&0xaa|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x1]&0x55,_0x3f2013&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x1]&0xaa],_0x5bb315=_0x56cb93(0x9a)['split']('')[_0x56cb93(0x94)](_0x42b4c4=>_0x42b4c4[_0x56cb93(0x96)](0x0)),_0x1cdc95=((String(xhrParaDoneTs+0x3)&0xff)+',')[_0x56cb93(0xa9)]('')[_0x56cb93(0x94)](_0x58aa5d=>_0x58aa5d[_0x56cb93(0x96)](0x0));const _0x26ee7a=new SM3Hasher(),_0xe2d586=_0x26ee7a[_0x56cb93(0x8e)](_0x26ee7a['sum'](_0x58cd97+_0x56cb93(0x93))),_0x571095=_0x26ee7a[_0x56cb93(0x8e)](_0x26ee7a[_0x56cb93(0x8e)](_0x23e1e0+'dhzx')),_0x4dabdb=_0x26ee7a[_0x56cb93(0x8e)](_0x3ca6b2);let _0x4139e6=[0x29,(xhrReqDoneTs-0x190e5788800)/0x3e8/0x3c/0x3c/0x18/0xe>>0x0,0x6,xhrParaDoneTs-Ts+0x3&0xff,xhrParaDoneTs&0xff,xhrParaDoneTs>>0x8&0xff,xhrParaDoneTs>>0x10&0xff,xhrParaDoneTs>>0x18&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100/0x100&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100/0x100&0xff%0x100&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100/0x100&0xff%0x100&0xff/0x100&0xff,[0xa,0x4,0x4,0x0,0x1][0x4]&0xff,[0xa,0x4,0x4,0x0,0x1][0x4]>>0x8&0xff,[0xa,0x4,0x4,0x0,0x1][0x0],[0xa,0x4,0x4,0x0,0x1][0x1],[0xa,0x4,0x4,0x0,0x1][0x2],[0xa,0x4,0x4,0x0,0x1][0x3],0x8&0xff,0x8>>0x8&0xff,0x8>>0x10&0xff,0x8>>0x18&0xff,_0xe2d586[0x9],_0xe2d586[0x12],0x3,_0xe2d586[0x3],_0x571095[0xa],_0x571095[0x13],0x4,_0x571095[0x4],_0x4dabdb[0xb],_0x4dabdb[0x15],0x5,_0x4dabdb[0x5],Sm3DoneTs&0xff,Sm3DoneTs>>0x8&0xff,Sm3DoneTs>>0x10&0xff,Sm3DoneTs>>0x18&0xff,Sm3DoneTs/0x100/0x100/0x100/0x100&0xff,Sm3DoneTs/0x100/0x100/0x100/0x100/0x100&0xff,0x3,0x6529&0xff,0x6529>>0x8&0xff,0x6529>>0x10&0xff,0x6529>>0x18&0xff,0x4cf&0xff,0x4cf>>0x8&0xff,0x4cf>>0x10&0xff,0x4cf>>0x18&0xff,_0x5bb315['length'],_0x5bb315['length'],0x0,_0x1cdc95[_0x56cb93(0xa4)],_0x1cdc95[_0x56cb93(0xa4)],0x0],_0x339170=[_0x4139e6[0x9],_0x4139e6[0x12],_0x4139e6[0x1e],_0x4139e6[0x23],_0x4139e6[0x2f],_0x4139e6[0x4],_0x4139e6[0x2c],_0x4139e6[0x13],_0x4139e6[0xa],_0x4139e6[0x17],_0x4139e6[0xc],_0x4139e6[0x28],_0x4139e6[0x19],_0x4139e6[0x2a],_0x4139e6[0x3],_0x4139e6[0x16],_0x4139e6[0x26],_0x4139e6[0x15],_0x4139e6[0x5],_0x4139e6[0x2d],_0x4139e6[0x1],_0x4139e6[0x1d],_0x4139e6[0x6],_0x4139e6[0x2b],_0x4139e6[0x21],_0x4139e6[0xe],_0x4139e6[0x24],_0x4139e6[0x25],_0x4139e6[0x2],_0x4139e6[0x2e],_0x4139e6[0xf],_0x4139e6[0x30],_0x4139e6[0x1f],_0x4139e6[0x1a],_0x4139e6[0x10],_0x4139e6[0xd],_0x4139e6[0x8],_0x4139e6[0x29],_0x4139e6[0x1b],_0x4139e6[0x11],_0x4139e6[0x27],_0x4139e6[0x14],_0x4139e6[0xb],_0x4139e6[0x0],_0x4139e6[0x22],_0x4139e6[0x7],_0x4139e6[0x32],_0x4139e6[0x33],_0x4139e6[0x35],_0x4139e6[0x36]];function _0x56e1cd(_0x24b6d5,_0x196cf7){const _0x2eb1f3=_0x56cb93;return _0x196cf7[_0x2eb1f3(0x8c)]((_0x2171ba,_0x925e58)=>_0x925e58-_0x2171ba)[_0x2eb1f3(0x89)](_0x540dbd=>{const _0x2fbb10=_0x2eb1f3;_0x540dbd>=0x0&&_0x540dbd<_0x24b6d5[_0x2fbb10(0xa4)]&&_0x24b6d5[_0x2fbb10(0x90)](_0x540dbd,0x1);}),_0x24b6d5;}let _0x41ebdd=_0x4b8ded[_0x56cb93(0xb1)](_0x56e1cd(_0x4139e6,[0x18,0x1c,0x20,0x31,0x34])),_0x42a240=_0x41ebdd[_0x56cb93(0xa6)]((_0x49ec53,_0x3d9ba0)=>_0x49ec53^_0x3d9ba0),_0xeaa831=_0x339170['concat'](_0x5bb315,_0x1cdc95,_0x42a240),_0x477e24=[],_0x3bd924=0x0;for(let _0xa7bf19=0x0;_0xa7bf19+0x2<_0xeaa831[_0x56cb93(0xa4)];){_0x477e24[_0x56cb93(0xa3)](Random*0x3e8&0xff&0x91|_0xeaa831[_0xa7bf19++]&0x6e),_0x477e24['push'](Random*0x3e8&0xff&0x42|_0xeaa831[_0xa7bf19++]&0xbd),_0x477e24[_0x56cb93(0xa3)](Random*0x3e8&0xff&0x2c|_0xeaa831[_0xa7bf19++]&0xd3),_0x477e24[_0x56cb93(0xa3)](_0xeaa831[_0xa7bf19-0x3]&0x91|_0xeaa831[_0xa7bf19-0x2]&0x42|_0xeaa831[_0xa7bf19-0x1]&0x2c),_0x3bd924+=0x3;}let _0x23c273=_0x4b8ded[_0x56cb93(0xb1)](_0x477e24,_0xeaa831[_0x56cb93(0x8b)](_0x3bd924,_0xeaa831[_0x56cb93(0xa4)]));return _0x23c273[_0x56cb93(0x94)](_0x4d13ab=>String['fromCharCode'](_0x4d13ab))[_0x56cb93(0xac)]('');}function Base2Data(_0x348aa6){const _0x2bc7c7=a0_0x45db08;let _0x874207=[Random*0xffff&0xff&0xaa|[0x3,0x52][0x0]&0x55,Random*0xffff&0xff&0x55|[0x3,0x52][0x0]&0xaa,Random*0x28>>0x0&0xaa|[0x3,0x52][0x1]&0x55,Random*0x28>>0x0&0x55|[0x3,0x52][0x1]&0xaa][_0x2bc7c7(0x94)](_0x224d00=>{const _0x31697c=_0x2bc7c7;return String[_0x31697c(0x9e)](_0x224d00);})[_0x2bc7c7(0xac)](''),_0x235e4f=[0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0,0xef,0xee,0xed,0xec,0xeb,0xea,0xe9,0xe8,0xe7,0xe6,0xe5,0xe4,0xe3,0xe2,0xe1,0xe0,0xdf,0xde,0xdd,0xdc,0xdb,0xda,0xd9,0xd8,0xd7,0xd6,0xd5,0xd4,0xd3,0xd2,0xd1,0xd0,0xcf,0xce,0xcd,0xcc,0xcb,0xca,0xc9,0xc8,0xc7,0xc6,0xc5,0xc4,0xc3,0xc2,0xc1,0xc0,0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb9,0xb8,0xb7,0xb6,0xb5,0xb4,0xb3,0xb2,0xb1,0xb0,0xaf,0xae,0xad,0xac,0xab,0xaa,0xa9,0xa8,0xa7,0xa6,0xa5,0xa4,0xa3,0xa2,0xa1,0xa0,0x9f,0x9e,0x9d,0x9c,0x9b,0x9a,0x99,0x98,0x97,0x96,0x95,0x94,0x93,0x92,0x91,0x90,0x8f,0x8e,0x8d,0x8c,0x8b,0x8a,0x89,0x88,0x87,0x86,0x85,0x84,0x83,0x82,0x81,0x80,0x7f,0x7e,0x7d,0x7c,0x7b,0x7a,0x79,0x78,0x77,0x76,0x75,0x74,0x73,0x72,0x71,0x70,0x6f,0x6e,0x6d,0x6c,0x6b,0x6a,0x69,0x68,0x67,0x66,0x65,0x64,0x63,0x62,0x61,0x60,0x5f,0x5e,0x5d,0x5c,0x5b,0x5a,0x59,0x58,0x57,0x56,0x55,0x54,0x53,0x52,0x51,0x50,0x4f,0x4e,0x4d,0x4c,0x4b,0x4a,0x49,0x48,0x47,0x46,0x45,0x44,0x43,0x42,0x41,0x40,0x3f,0x3e,0x3d,0x3c,0x3b,0x3a,0x39,0x38,0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x30,0x2f,0x2e,0x2d,0x2c,0x2b,0x2a,0x29,0x28,0x27,0x26,0x25,0x24,0x23,0x22,0x21,0x20,0x1f,0x1e,0x1d,0x1c,0x1b,0x1a,0x19,0x18,0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0];const _0x29dde1='Ó'[_0x2bc7c7(0x96)](0x0);let _0x4a74f1=0x0;for(let _0xef36c2=0x0;_0xef36c2<_0x235e4f[_0x2bc7c7(0xa4)];_0xef36c2++){let _0x4120e4=_0x235e4f[_0xef36c2];_0x4a74f1=(_0x4a74f1*_0x4120e4+_0x4a74f1+_0x29dde1)%0x100,[_0x235e4f[_0xef36c2],_0x235e4f[_0x4a74f1]]=[_0x235e4f[_0x4a74f1],_0x235e4f[_0xef36c2]];}let _0x39cb62=0x0,_0x5cbaf6='';for(let _0x29a672=0x0;_0x29a672<_0x348aa6[_0x2bc7c7(0xa4)];_0x29a672++){let _0x96c5ae=_0x348aa6[_0x2bc7c7(0x96)](_0x29a672),_0x46c34b=_0x29a672+0x1,_0x5d4cb4=_0x235e4f[_0x46c34b];[_0x235e4f[_0x46c34b],_0x235e4f[(_0x39cb62+_0x5d4cb4)%0x100]]=[_0x235e4f[(_0x39cb62+_0x5d4cb4)%0x100],_0x235e4f[_0x46c34b]];let _0x506f4f=_0x235e4f[(_0x235e4f[_0x46c34b]+_0x5d4cb4)%0x100];_0x39cb62=(_0x39cb62+_0x5d4cb4)%0x100,_0x5cbaf6+=String['fromCharCode'](_0x96c5ae^_0x506f4f);}return _0x874207+_0x5cbaf6;}function Data2A_B(_0x19ca6d){const _0x5d8d72=a0_0x45db08;let _0x225e7d=_0x5d8d72(0xad),_0x4f0a28='',_0x251d62=[0x3e,0x12a,0x10,0x0,0x4,0x9,0x10,0x0,0x5,0x36,0x0,0x5,0x3e,0x12b,0x1a,0x12c,0x36,0x0,0x5,0x3e,0x12d,0x1a,0x12e,0x36,0x0,0x5,0x3e,0x12f,0x1a,0x130,0x36,0x0,0x5,0x3e,0x131,0x1a,0x10c,0x36,0x0,0x5,0x3e,0x132,0x1a,0x128,0x36,0x0,0x5,0x36,0x0,0x3,0x4c,0x10,0x0,0x6,0x3e,0x24,0x10,0x0,0x7,0x17,0x0,0x10,0x0,0x9,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x17,0x3,0x31,0x43,0xe,0x9f,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x17,0x10,0x1f,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x17,0x8,0x1f,0x20,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x20,0x10,0x0,0x8,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0000,0x32,0x17,0x12,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0x3f000,0x32,0x17,0xc,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0,0x32,0x17,0x6,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0x3f,0x32,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x12,-0xad,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x0,0x17,0x0,0x13,0xe,0xa0,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x17,0x10,0x1f,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x13,0xe,0x13,0x36,0x0,0x2,0x16,0x4,0xf7,0x36,0x0,0x9,0xc,0x1,0x17,0xff,0x32,0x17,0x8,0x1f,0x12,0x2,0x17,0x0,0x20,0x10,0x0,0x8,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0000,0x32,0x17,0x12,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0x3f000,0x32,0x17,0xc,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x13,0xe,0x13,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0,0x32,0x17,0x6,0x33,0xc,0x1,0x12,0x3,0x36,0x0,0x4,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x4,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x41];for(let _0x2b8eea=0x0;_0x2b8eea<_0x19ca6d['length'];_0x2b8eea+=0x3){const _0x3fca04=_0x19ca6d[_0x5d8d72(0x96)](_0x2b8eea),_0xb85a46=_0x19ca6d[_0x5d8d72(0x96)](_0x2b8eea+0x1),_0x4e702d=_0x19ca6d[_0x5d8d72(0x96)](_0x2b8eea+0x2),_0x4382e1=_0x3fca04<<_0x251d62[0x5e]|_0xb85a46<<_0x251d62[0x70]|_0x4e702d,_0x225aa0=(_0x4382e1&_0x251d62[0x93])>>_0x251d62[0x96];_0x4f0a28+=_0x225e7d[_0x5d8d72(0xa7)](_0x225aa0);const _0x5607b9=(_0x4382e1&_0x251d62[0xad])>>_0x251d62[0xb0];_0x4f0a28+=!Number[_0x5d8d72(0xa1)](_0x3fca04)?_0x225e7d[_0x5d8d72(0xa7)](_0x5607b9):'=';const _0x3fb7b7=(_0x4382e1&_0x251d62[0xc7])>>_0x251d62[0xca];_0x4f0a28+=!Number[_0x5d8d72(0xa1)](_0xb85a46)?_0x225e7d[_0x5d8d72(0xa7)](_0x3fb7b7):'=';const _0x425784=_0x4382e1&_0x251d62[0xe1];_0x4f0a28+=!Number[_0x5d8d72(0xa1)](_0x4e702d)?_0x225e7d[_0x5d8d72(0xa7)](_0x425784):'=';}return _0x4f0a28;}function GenAB(_0x315138,_0x1c32b3){const _0x206982=a0_0x45db08,_0x56536b=_0x206982(0xaf);return Data2A_B(Base2Data(EnvData2CharCode(_0x315138,_0x1c32b3,_0x56536b)));}module[a0_0x45db08(0xae)]=GenAB;","function encodeUtf8(e) {\n let r2 = []\n for (let a = encodeURIComponent(e), c = 0;c < a.length; c++) {\n const d = a.charAt(c);\n if (d === \"%\") {\n const s = Number.parseInt(a.charAt(c + 1) + a.charAt(c + 2), 16);\n r2.push(s), c += 2;\n } else\n r2.push(d.charCodeAt(0));\n }\n return r2;\n}\nvar c = [\n \"Z\",\n \"m\",\n \"s\",\n \"e\",\n \"r\",\n \"b\",\n \"B\",\n \"o\",\n \"H\",\n \"Q\",\n \"t\",\n \"N\",\n \"P\",\n \"+\",\n \"w\",\n \"O\",\n \"c\",\n \"z\",\n \"a\",\n \"/\",\n \"L\",\n \"p\",\n \"n\",\n \"g\",\n \"G\",\n \"8\",\n \"y\",\n \"J\",\n \"q\",\n \"4\",\n \"2\",\n \"K\",\n \"W\",\n \"Y\",\n \"j\",\n \"0\",\n \"D\",\n \"S\",\n \"f\",\n \"d\",\n \"i\",\n \"k\",\n \"x\",\n \"3\",\n \"V\",\n \"T\",\n \"1\",\n \"6\",\n \"I\",\n \"l\",\n \"U\",\n \"A\",\n \"F\",\n \"M\",\n \"9\",\n \"7\",\n \"h\",\n \"E\",\n \"C\",\n \"v\",\n \"u\",\n \"R\",\n \"X\",\n \"5\"\n];\nfunction tripletToBase64(e) {\n return c[e >> 18 & 63] + c[e >> 12 & 63] + c[e >> 6 & 63] + c[63 & e];\n}\nfunction encodeChunk(e, a, r2) {\n for (var c2, d = [], s = a;s < r2; s += 3)\n c2 = (e[s] << 16 & 16711680) + (e[s + 1] << 8 & 65280) + (255 & e[s + 2]), d.push(tripletToBase64(c2));\n return d.join(\"\");\n}\nfunction b64Encode(e) {\n for (var a, r2 = e.length, d = r2 % 3, s = [], f = 16383, u = 0, l = r2 - d;u < l; u += f)\n s.push(encodeChunk(e, u, u + f > l ? l : u + f));\n return d === 1 ? (a = e[r2 - 1], s.push(c[a >> 2] + c[a << 4 & 63] + \"==\")) : d === 2 && (a = (e[r2 - 2] << 8) + e[r2 - 1], s.push(c[a >> 10] + c[a >> 4 & 63] + c[a << 2 & 63] + \"=\")), s.join(\"\");\n}\nfunction encode_mnsv2(mnsv2, platform, req_type) {\n const f = {\n x0: \"4.2.6\",\n x1: \"xhs-pc-web\",\n x2: platform,\n x3: mnsv2,\n x4: req_type\n };\n return \"XYS_\" + b64Encode(encodeUtf8(JSON.stringify(f)));\n}\nmodule.exports = encode_mnsv2\n","import { Http } from \"./http\";\nimport { HttpsProxyAgent } from \"https-proxy-agent\";\nimport { LoggerImplement } from \"@iflyrpa/share\";\n\ninterface ProxyInfo {\n\tcode: string;\n\tdesc: string;\n\tdata: {\n\t\tproxyIp: string;\n\t\tproxyPort: string;\n\t} | null;\n}\n\nexport async function ProxyAgent(\n\tthis: { logger?: LoggerImplement },\n\tip: string,\n\tadr?: string| null,\n\taccountId?: number,\n\trefresh?: boolean,\n) {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\t\"content-type\": \"application/json\",\n\t\t},\n\t});\n\tconst params = {\n\t\tip: ip,\n\t\taddr: adr || null,\n\t\taccountId: accountId,\n\t};\n\tconst ProxyInfo: ProxyInfo = await http.api({\n\t\tmethod: \"POST\",\n\t\turl: \"http://172.29.194.32:9998/pool/eip/proxy\",\n\t\tdata: params,\n timeout: 6000\n\t});\n\tconst loggerInfo = {\n\t\tparams,\n\t\tresponse: {\n\t\t\tcode: ProxyInfo.code,\n\t\t\tdesc: ProxyInfo.desc,\n\t\t\tdata: ProxyInfo.data,\n\t\t},\n\t};\n\n\tthis.logger?.info(`请求:${JSON.stringify(params)}, 返回代理信息(${JSON.stringify(ProxyInfo.data) || \"空\"})`, loggerInfo);\n\n\t// 在 URL 中写上认证信息\n\treturn ProxyInfo.code === \"000000\" && ProxyInfo.data\n\t\t? {\n\t\t\t\tip: ProxyInfo.data.proxyIp,\n\t\t\t\tport: ProxyInfo.data.proxyPort,\n\t\t\t\tagent: new HttpsProxyAgent(`http://${ProxyInfo.data.proxyIp}:${ProxyInfo.data.proxyPort}`),\n\t\t\t}\n\t\t: null;\n}\n","import type {LoggerImplement, ResponseData} from \"@iflyrpa/share\";\nimport axios, {\n\ttype AxiosError,\n\ttype AxiosInstance,\n\ttype AxiosResponse,\n\ttype CreateAxiosDefaults,\n\ttype AxiosRequestConfig,\n} from \"axios\";\nimport { ProxyAgent } from \"./proxy\";\nimport type { HttpsProxyAgent } from \"https-proxy-agent\";\n\nexport class Http {\n\tprivate readonly apiClient: AxiosInstance;\n\tprivate readonly adr?: string;\n private readonly ip?: string;\n private readonly accountId?: number\n public logger?: LoggerImplement;\n\tpublic proxyInfo?: string;\n private readonly agentPromise?: Promise<{ ip:string, port:string, agent: HttpsProxyAgent<string> | null } | null> = undefined;\n \n\tstatic handleApiError(error: unknown): ResponseData {\n\t\t// 如果错误已经是 ResponseData 格式,直接抛出\n\t\tif (error && typeof error === \"object\" && \"code\" in error && \"message\" in error) {\n\t\t\treturn error as ResponseData;\n\t\t}\n\n\t\t// 处理其他类型的错误\n\t\treturn {\n\t\t\tcode: 500,\n\t\t\tmessage: error instanceof Error ? error.message : \"未知错误\",\n\t\t\tdata: error,\n\t\t};\n\t}\n \n\tconstructor(config?: CreateAxiosDefaults, logger?: LoggerImplement, adr?: string | null, ip?: string, accountId?: number) {\n\n this.apiClient = axios.create({\n ...config,\n // proxy: {\n // \thost: \"192.168.137.207\", // 根据你的代理服务设置\n // \tport: 9000,\n // \tprotocol: \"http\", // 可选\n // },\n });\n\n if (ip) this.agentPromise = ProxyAgent.call({logger: logger}, ip, adr, accountId);\n\n this.addResponseInterceptor(() => undefined); \n\t}\n \n public clearResponseInterceptors(): void {\n const interceptors = axios.interceptors.response as unknown as {\n handlers: unknown[];\n clear: () => void;\n };\n\n // 清除之前的拦截器\n if (interceptors.handlers.length > 0) {\n axios.interceptors.response.clear();\n }\n }\n \n\t// 添加响应拦截器\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\tpublic addResponseInterceptor<T = any>(findError: (response: AxiosResponse<T>) => ResponseData | undefined): void {\n const interceptors = this.apiClient.interceptors.response as unknown as {\n handlers: unknown[];\n clear: () => void;\n };\n \n // 清除之前的拦截器,避免重复添加\n if (interceptors.handlers.length > 0) {\n this.apiClient.interceptors.response.clear();\n }\n\n\t\tthis.apiClient.interceptors.response.use(\n\t\t\t(response) => {\n\t\t\t\t// 检查响应中的 errno 字段\n\t\t\t\tconst error = findError(response);\n\n\t\t\t\tif (error) {\n\t\t\t\t\treturn Promise.reject(\n\t\t\t\t\t\tObject.assign(error, {\n\t\t\t\t\t\t\textra: {\n\t\t\t\t\t\t\t\tmethod: response.config.method,\n\t\t\t\t\t\t\t\turl: response.config.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn response;\n\t\t\t},\n\t\t\t(error: AxiosError) => {\n const foundError = findError(error.response as AxiosResponse<T>);\n \n\t\t\t\t// 创建标准错误响应格式\n\t\t\t\tconst errorResponse: ResponseData = {\n // 单独拦截401的状态码,映射为400,避免触发绘文平台的鉴权错误处理逻辑\n\t\t\t\t\tcode: (error.response?.status === 401 ? 400 : error.response?.status) || 500,\n\t\t\t\t\tmessage: error.message || \"\",\n\t\t\t\t\tdata: error.response?.data,\n\t\t\t\t\textra: {\n\t\t\t\t\t\tmethod: error.config?.method,\n\t\t\t\t\t\turl: error.config?.url,\n\t\t\t\t\t},\n\t\t\t\t};\n \n if (foundError) Object.assign(errorResponse, foundError);\n\n\t\t\t\t// 如果服务端返回了详细错误信息,可以使用服务端的错误信息\n\t\t\t\tif (error.response?.data) {\n\t\t\t\t\tif (typeof error.response.data === \"object\") {\n\t\t\t\t\t\t// 如果服务端返回的是对象,可以尝试提取错误信息\n\t\t\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\t\t\t\t\tconst serverError = error.response.data as any;\n \n errorResponse.message = serverError.msg || serverError.message; // 匹配小红书与普通错误message\n \n\t\t\t\t\t\t// 可以保留原始错误数据\n\t\t\t\t\t\terrorResponse.data = serverError;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ✅ 情况二:网络错误(没有 response)\n\t\t\t\tif (error.code) {\n\t\t\t\t\tswitch (error.code) {\n\t\t\t\t\t\tcase \"ECONNABORTED\":\n errorResponse.code = 492;\n errorResponse.message = \"请求超时,请检查网络连接!\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"ECONNRESET\":\n errorResponse.code = 492;\n\t\t\t\t\t\t\terrorResponse.message = \"连接被重置,请检查网络或稍后重试!\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"ENOTFOUND\":\n errorResponse.code = 492;\n\t\t\t\t\t\t\terrorResponse.message = \"域名解析失败,请检查 URL 是否正确!\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"ETIMEDOUT\":\n errorResponse.code = 492;\n\t\t\t\t\t\t\terrorResponse.message = \"网络请求超时,请检查网络连接!\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"ECONNREFUSED\":\n errorResponse.code = 492;\n\t\t\t\t\t\t\terrorResponse.message = \"服务器拒绝连接,请稍后重试!\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"EAI_AGAIN\":\n errorResponse.code = 492;\n\t\t\t\t\t\t\terrorResponse.message = \"DNS 查询超时,请稍后重试!\";\n\t\t\t\t\t\t\tbreak;\n case \"ERR_BAD_REQUEST\":\n errorResponse.code = 492;\n errorResponse.message = \"请求出现错误,请检查请求参数!\";\n break;\n case \"ERR_CANCELED\":\n errorResponse.code = 500;\n errorResponse.message = \"请求连接超时,请稍候重试!\"\n break\n\t\t\t\t\t\tdefault:\n errorResponse.code = 492;\n\t\t\t\t\t\t\terrorResponse.message = `未知网络错误: ${error.message}`;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n if (error.message.includes(\"Proxy connection ended\")) { // 代理Connect阶段错误重写!\n errorResponse.message = \"所在区域代理连接超时,请更换区域或稍后重试!\";\n }\n\n\t\t\t\t// 返回标准化的错误响应\n\t\t\t\tthrow errorResponse;\n\t\t\t},\n\t\t);\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\tpublic async api<T = any>(\n\t\tconfig: AxiosRequestConfig,\n\t\toptions?: {\n\t\t\tretries?: number;\n\t\t\tretryDelay?: number;\n timeout?: number;\n\t\t},\n\t): Promise<T> {\n\t\tconst retries = options?.retries ?? 0; // 默认不重试\n\t\tconst retryDelay = options?.retryDelay ?? 500;\n const reqTimeout = options?.timeout ?? 30*1000\n let agent: { ip:string, port:string, agent: HttpsProxyAgent<string> | null } | null | undefined;\n // let isForceRefreshProxy = false;\n\t\tconst sessionRt = async (Rtimes: number): Promise<T> => {\n \n try {\n \n\t\t\t\t// if (this.ip) {\n\t\t\t\t// \tconst cacheKey = `${this.ip}|${this.adr ?? \"\"}|${this.accountId ?? \"\"}`;\n // \n // if( this.adr && Rtimes === 1 ) {\n // this.adr = \"\"; \n // Http.agentCache.delete(cacheKey);\n // }\n // if( Rtimes%2 === 0 && Rtimes > 0 ) {\n // // 重试时清除缓存,并强制刷新代理 refresh = true \n // Http.agentCache.delete(cacheKey);\n // isForceRefreshProxy = true;\n // this.task.debug && this.task.logger.info(`进入第${Rtimes+1}次重试,强制刷新代理!`);\n // }\n //\n // if (Http.agentCache.has(cacheKey)) {\n // this.agent = Http.agentCache.get(cacheKey) ?? null;\n // \n // } else if (Http.agentPromiseCache.has(cacheKey)) {\n // this.task.debug && this.task.logger.info(\"代理正在创建,等待中...\");\n // const agentResult = await Http.agentPromiseCache.get(cacheKey);\n // this.agent = agentResult?.agent ?? null;\n // } else {\n // const promise = ProxyAgent(this.ip, this.adr, this.accountId, isForceRefreshProxy);\n //\n // Http.agentPromiseCache.set(cacheKey, promise);\n //\n // this.agent = (await promise)?.agent;\n // \n // if (this.agent) {\n // this.agent.options.keepAlive = true;\n // Http.agentCache.set(cacheKey, this.agent);\n // } else {\n // Http.agentCache.set(cacheKey, null);\n // }\n // Http.agentPromiseCache.delete(cacheKey);\n // }\n // }\n //\n // if (this.agent === null) {\n // if (Rtimes === retries && this.ip) {\n // return Promise.reject({\n // code: 400,\n // message: \"\",\n // data: {\n // code: 400, // 仅配合sessioncheck使用\n // msg: \"当前所选区域暂不支持!\"\n // }\n // });\n // }\n // if (this.adr) {\n // throw {code: 500, message: \"\", data: {}}; // 触发重试\n // }\n // }\n \n this.proxyInfo = agent ? `${agent.ip}:${agent.port}` : undefined;\n \n // 请求级别超时控制(即使代理层没超时,也能强制中断)\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), reqTimeout); // 全阶段超时控制\n\n try {\n const response = await this.apiClient<T>({\n ...config,\n timeout: reqTimeout, // Axios 自身的超时 http阶段,tcp socket已建立情况下的超时\n signal: controller.signal, // 自定义超时保护信号,用户axios监听\n ...(agent ? {httpAgent: agent.agent, httpsAgent: agent.agent} : {}),\n });\n\n clearTimeout(timeoutId);\n return response.data;\n } catch (err) {\n const handledError: ResponseData = Http.handleApiError(err);\n clearTimeout(timeoutId);\n throw handledError;\n }\n } catch (error) {\n\t\t\t\tconst handledError: ResponseData = Http.handleApiError(error);\n\t\t\t\tconst isRetry = handledError.code === 0 || handledError.code === 500;\n \n if ( Rtimes < retries && isRetry) {\n\t\t\t\t\tthis.logger?.info(`进入第${Rtimes+1}次重试!`);\n\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, retryDelay));\n\t\t\t\t\treturn sessionRt(Rtimes + 1);\n\t\t\t\t}\n\t\t\t\treturn Promise.reject(handledError);\n\t\t\t}\n\t\t};\n if( this.agentPromise ) agent = await this.agentPromise\n\t\treturn sessionRt(0);\n\t}\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { CommonAction, Page, ResponseData } from \"@iflyrpa/share\";\nimport domSerializer from \"dom-serializer\";\nimport { type ChildNode, DomHandler, type Element } from \"domhandler\";\nimport { DomUtils, Parser } from \"htmlparser2\";\nimport mime from \"mime-types\";\n\nimport { Http } from \"./http\";\n\n/**\n * 生成两数之间的随机整数\n * @param min\n * @param max\n * @returns\n */\nexport function getRandomInRange(min: number, max: number) {\n\treturn Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\nexport const getFileState = (filePath: string) => {\n\t// 获取文件名\n\tconst filename = path.basename(filePath);\n\t// 获取文件类型\n\tconst fileType = mime.lookup(filePath);\n\tconst stats = fs.statSync(filePath);\n\t// 获取文件大小\n\tconst fileSize = stats.size;\n\t// 获取最后修改时间\n\tconst lastModifiedDate = stats.mtime;\n\n\treturn {\n\t\tname: filename,\n\t\ttype: fileType,\n\t\tsize: fileSize,\n\t\tlastModifiedDate: lastModifiedDate.toString(),\n\t};\n};\n\nexport type AspectRatio = [number, number];\nexport type CropCoordinates = {\n\tx1: number;\n\ty1: number;\n\tx2: number;\n\ty2: number;\n};\n\n/**\n * 获取特定的比例切割图片,获取切割的坐标\n * @param width 图片长度\n * @param height 图片高度\n * @param aspectRatio 切割比例:[宽度,高度]\n * @returns\n */\nexport const calculateCropCoordinates = (width: number, height: number, aspectRatio: AspectRatio): CropCoordinates => {\n\tconst targetRatio = aspectRatio[0] / aspectRatio[1];\n\tlet cropWidth: number;\n\tlet cropHeight: number;\n\n\tif (width / height > targetRatio) {\n\t\t// 图片过宽,需要裁切宽度\n\t\tcropHeight = height;\n\t\tcropWidth = height * targetRatio;\n\t} else {\n\t\t// 图片过高,需要裁切高度\n\t\tcropWidth = width;\n\t\tcropHeight = width / targetRatio;\n\t}\n\n\tconst x1 = (width - cropWidth) / 2;\n\tconst y1 = (height - cropHeight) / 2;\n\tconst x2 = x1 + cropWidth;\n\tconst y2 = y1 + cropHeight;\n\n\t// 返回百分比坐标\n\treturn {\n\t\tx1: x1 / width,\n\t\ty1: y1 / height,\n\t\tx2: x2 / width,\n\t\ty2: y2 / height,\n\t};\n};\n\n// 提取 html 中的 img 标签\nexport const extractImgTag = (html: string) => {\n\tconst srcList: string[] = [];\n\n\tconst parser = new Parser({\n\t\tonopentag(name, attributes) {\n\t\t\tif (name === \"img\" && (attributes.src.trim() || attributes.currentSrc.trim())) {\n\t\t\t\tsrcList.push(attributes.src.trim() || attributes.currentSrc.trim());\n\t\t\t}\n\t\t},\n\t});\n\n\tparser.write(html);\n\tparser.end();\n\n\treturn srcList;\n};\n\n/**\n * 时间格式化\n * @param time\n * @param format 默认 yyyy-MM-dd HH:mm\n * @returns 时间字符串\n */\nexport namespace TimeFormatter {\n\texport function format(timestamp: number, formatStr = 'yyyy-MM-dd hh:mm'): string {\n\t\t// 自动判断:如果是10位(秒),就转为毫秒\n\t\tif (timestamp.toString().length === 10) {\n\t\t\ttimestamp *= 1000;\n\t\t}\n\n\t\tconst date = new Date(timestamp);\n\n\t\tconst map: Record<string, string> = {\n\t\t\t\"yyyy\": String(date.getFullYear()),\n\t\t\t\"yy\": String(date.getFullYear()).slice(-2),\n\t\t\t\"MM\": String(date.getMonth() + 1).padStart(2, '0'),\n\t\t\t\"dd\": String(date.getDate()).padStart(2, '0'),\n\t\t\t\"hh\": String(date.getHours()).padStart(2, '0'),\n\t\t\t\"mm\": String(date.getMinutes()).padStart(2, '0'),\n\t\t\t\"ss\": String(date.getSeconds()).padStart(2, '0'),\n\t\t\t\"M\": String(date.getMonth() + 1), // 月不带前导零\n\t\t\t\"d\": String(date.getDate()), // 日不带前导零\n\t\t\t\"h\": String(date.getHours()), // 不带前导零\n\t\t\t\"m\": String(date.getMinutes()), // 不带前导零\n\t\t\t\"s\": String(date.getSeconds()) // 不带前导零\n\t\t};\n\n\t\treturn formatStr.replace(/yyyy|yy|MM|dd|hh|mm|ss|M|d|h|m|s/g, key => map[key]);\n\t}\n}\n\nexport const replaceImgSrc = (html: string, callback: (dom: Element) => Element) => {\n\tlet lastedHtml = html;\n\n\tconst isImageTag = (node: ChildNode): node is Element => node.type === \"tag\" && node.name === \"img\";\n\n\tconst traverseDom = (node: ChildNode) => {\n\t\tif (DomUtils.hasChildren(node)) {\n\t\t\tfor (const child of node.children) {\n\t\t\t\tif (isImageTag(child)) {\n\t\t\t\t\tcallback(child);\n\t\t\t\t}\n\t\t\t\ttraverseDom(child);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handler = new DomHandler((error, dom) => {\n\t\tif (error) {\n\t\t\tconsole.log(error);\n\t\t} else {\n\t\t\t// 处理 DOM 节点的函数\n\t\t\tdom.forEach(traverseDom);\n\t\t}\n\n\t\tlastedHtml = domSerializer(dom, { decodeEntities: false });\n\t});\n\n\tconst parser = new Parser(handler, { decodeEntities: false });\n\tparser.write(html);\n\tparser.end();\n\n\treturn lastedHtml;\n};\n\nexport const stringifyError = (error: unknown) => {\n\tif (error instanceof Error) {\n\t\treturn error.toString();\n\t}\n\n\tif (typeof error === \"object\") {\n\t\treturn JSON.stringify(error);\n\t}\n\n\treturn error;\n};\n\n/**\n * 创建一个函数,该函数会依次执行传入的函数列表,直到有一个函数成功或所有函数都失败。\n *\n * @template P - 函数的参数类型,为一个任意长度的数组。\n * @template T - 函数的返回类型,为一个 Promise 的解析值类型。\n * @param {CommonAction<P, T>[]} actions - 一个函数列表,每个函数的类型为 `(...p: P) => Promise<T>`。\n * @returns {CommonAction<P, T>} - 返回一个新的函数,其类型与传入的函数列表中的函数类型相同。\n * 当调用该函数时,会依次执行 `actions` 中的函数,直到有一个函数成功(即返回一个解析的 Promise),\n * 或者所有函数都失败(即抛出异常)。如果所有函数都失败,则抛出最后一个错误。\n *\n * @example\n * const action1 = async (num) => {\n * if (num > 0) return \"Action 1 succeeded\";\n * throw new Error(\"Action 1 failed\");\n * };\n *\n * const action2 = async (num) => {\n * if (num > 1) return \"Action 2 succeeded\";\n * throw new Error(\"Action 2 failed\");\n * };\n *\n * const combinedAction = executeAction(action1, action2);\n *\n * (async () => {\n * try {\n * const result = await combinedAction(1);\n * console.log(result); // 输出: \"Action 2 succeeded\"\n * } catch (error) {\n * console.error(error.message);\n * }\n * })();\n */\nexport const executeAction = <P, T>(...actions: CommonAction<P, T>[]): CommonAction<P, T> => {\n\treturn async (task, params) => {\n\t\tlet result: ResponseData<T> = {\n\t\t\tcode: 500,\n\t\t\tmessage: \"\",\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\t\tdata: null as any,\n\t\t};\n\n\t\tfor (let index = 0; index < actions.length; index++) {\n\t\t\tconst action = actions[index];\n\n\t\t\ttry {\n\t\t\t\tresult = await action(task, params);\n\t\t\t} catch (error) {\n\t\t\t\tresult = Http.handleApiError(error);\n\t\t\t}\n\n\t\t\t// code === 0 表示成功, code === 200 or 400 虽然表示失败,但是不需要继续执行后续的 action\n\t\t\tif (result.code === 0 || result.code === 200 || result.code === 400) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\t// 不是最后一个 action,上报错误信息\n\t\t\tif (index !== actions.length - 1) {\n\t\t\t\ttask.logger.error(result.message, stringifyError(result.data), result.extra);\n\t\t\t}\n\t\t}\n\n\t\t// 所有 action 都执行完毕但都失败了,返回最后一个失败结果\n\t\treturn result;\n\t};\n};\n\n/**\n * 将 HTML 内容复制到剪贴板\n * @param page - 页面对象\n * @param html - HTML 内容\n * @param options - 选项,包括格式和回退\n * @returns 无返回值\n */\nexport async function copyHtmlToClipboard(page: Page, html: string, options = { format: \"text/html\", fallback: true }) {\n\ttry {\n\t\t// 尝试使用原生 API\n\t\tawait page.evaluate(\n\t\t\tasync ({ htmlContent, format }) => {\n\t\t\t\tconst blob = new Blob([htmlContent], { type: format });\n\t\t\t\tawait navigator.clipboard.write([new ClipboardItem({ [format]: blob })]);\n\t\t\t},\n\t\t\t{ htmlContent: html, format: options.format },\n\t\t);\n\t} catch (error) {\n\t\tif (options.fallback) {\n\t\t\t// 回退到 DOM 操作\n\t\t\tawait page.evaluate((htmlContent) => {\n\t\t\t\tconst div = document.createElement(\"div\");\n\t\t\t\tdiv.contentEditable = \"true\";\n\t\t\t\tdiv.style.cssText = `\n position: fixed;\n left: -9999px;\n opacity: 0;\n pointer-events: none;\n `;\n\n\t\t\t\tdiv.innerHTML = htmlContent;\n\t\t\t\tdocument.body.appendChild(div);\n\n\t\t\t\tconst range = document.createRange();\n\t\t\t\trange.selectNodeContents(div);\n\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: <忽略错误>\n\t\t\t\tconst selection = window.getSelection()!;\n\t\t\t\tselection.removeAllRanges();\n\t\t\t\tselection.addRange(range);\n\n\t\t\t\tdocument.execCommand(\"copy\");\n\t\t\t\tdocument.body.removeChild(div);\n\t\t\t\tselection.removeAllRanges();\n\t\t\t}, html);\n\t\t}\n\t}\n}\n\n/**\n * 通用弹窗监听处理器\n * @param page - Playwright 页面对象\n * @param popupSelector - 弹窗的选择器(字符串或 Locator)\n * @param popKey - 弹窗中的唯一键(字符串)\n * @param buttonSelector - 弹窗中需要点击的按钮选择器\n * @param options - 可选配置项\n */\nexport function PopupListener(\n\tpage: Page, \n\tpopupSelector: string, \n\tpopKey: string, \n\tbuttonSelector: string, \n\toptions:{\n\t\tcheckInterval?: number;\n\t\tstopAfterClick?: boolean;\n\t} = {}) {\n\tconst {\n\t\tcheckInterval = 1000,\n\t\tstopAfterClick = false\n\t} = options;\n\n\tconst popup = page.locator(popupSelector);\n\tconst button = page.locator(buttonSelector);\n\n\tconst intervalId = setInterval(async () => {\n\t\ttry {\n\t\t\tif (await popup.count() > 0 && await popup.isVisible() && (await popup.textContent()||\"\").includes(popKey)) {\n\t\t\t\tawait button.click({ force: true });\n\n\t\t\t\tif (stopAfterClick) {\n\t\t\t\t\tclearInterval(intervalId);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) { }\n\t}, checkInterval);\n\n\treturn () => {\n\t\tclearInterval(intervalId);\n\t};\n}\n\n// 将 url 的 queryString 解析成对象\nexport const parseUrlQueryString = (url: string) => {\n\tconst queryStringObject: Record<string, string> = {};\n\n\t// 检查 URL 是否包含查询参数\n\tif (!url || !url.includes(\"?\")) {\n\t\treturn queryStringObject;\n\t}\n\n\t// 提取查询字符串部分\n\tconst queryString = url.split(\"?\")[1];\n\n\t// 检查查询字符串是否为空\n\tif (!queryString) {\n\t\treturn queryStringObject;\n\t}\n\n\t// 处理 hash 部分\n\tconst queryWithoutHash = queryString.split(\"#\")[0];\n\n\t// 分割查询参数\n\tconst queryStringArray = queryWithoutHash.split(\"&\");\n\n\tfor (const item of queryStringArray) {\n\t\t// 跳过空参数\n\t\tif (!item) continue;\n\n\t\tconst equalIndex = item.indexOf(\"=\");\n\n\t\t// 处理没有值的参数 (如 ?param)\n\t\tif (equalIndex === -1) {\n\t\t\tqueryStringObject[item] = \"\";\n\t\t} else {\n\t\t\tconst key = item.slice(0, equalIndex);\n\t\t\tconst value = item.slice(equalIndex + 1);\n\n\t\t\t// 尝试解码,如果解码失败则使用原始值\n\t\t\ttry {\n\t\t\t\tqueryStringObject[key] = decodeURIComponent(value);\n\t\t\t} catch (e) {\n\t\t\t\tqueryStringObject[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn queryStringObject;\n};\n\n/**\n * 合并默认参数\n * @param params\n * @param defaults\n * @returns\n */\nexport const defaultParams = <P = Record<string, unknown>>(params: P, defaults: Partial<P>): P => {\n\treturn Object.assign({}, defaults, params);\n};\n","import crypto from \"node:crypto\";\n\n/**\n * 生成百家号话题html\n * @param topic\n * @param id\n * @param sv_small_images\n */\nexport const generateTopicHtml = function (topic: string, id?: string, sv_small_images?: {\n http: string,\n https: string\n}) {\n const generateUid = function () {\n const e = () => Math.floor(65536 * (1 + Math.random())).toString(16).substring(1);\n return e() + e() + e() + e() + e() + e() + e() + e();\n };\n const topicBase = function (topic: string, id?: string, sv_small_images?: { http: string, https: string }) {\n const t = function (r: any) {\n let n = [];\n let e = 0;\n for (; e < 256; ++e)\n n[e] = (e + 256).toString(16).substr(1);\n let o = 0;\n return [\n n[r[o++]], n[r[o++]], n[r[o++]], n[r[o++]], \"-\",\n n[r[o++]], n[r[o++]], \"-\",\n n[r[o++]], n[r[o++]], \"-\",\n n[r[o++]], n[r[o++]], \"-\",\n n[r[o++]], n[r[o++]], n[r[o++]], n[r[o++]], n[r[o++]], n[r[o++]]\n ].join(\"\");\n };\n const s = crypto.randomBytes(16);\n // @ts-ignore\n (s[6] = 15 & s[6] | 64, s[8] = 63 & s[8] | 128);\n return {\n id: id || t(s),\n sv_small_images: sv_small_images || \"\",\n title: topic.replace(/[^\\u4E00-\\u9FA5a-zA-Z0-9]/g, \"\"),\n isCreate: 1\n };\n };\n\n const n = id ? topicBase(topic, id, sv_small_images) : topicBase(topic);\n const topicAttr = {\n style: \"border:none;display:inline-block;color:#3E5599;text-decoration:none;font-style:normal;\",\n href: `https://m.baidu.com/s?word=%23${n.title}%23&topic_id=${n.id}&sa=edit&sfrom=1023524a&append=1&newwindow=0&upqrade=1`.replace(/&/g, \"&amp;\"),\n target: \"_blank\",\n // @ts-ignore\n \"data-bjh-cover\": \"\".concat(n.sv_small_images && (n.sv_small_images.https || n.sv_small_images.http)),\n \"data-bjh-src\": `https://m.baidu.com/s?word=%23${n.title}%23&topic_id=${n.id}&sa=edit&sfrom=1023524a&append=1&newwindow=0&upqrade=1`.replace(/&/g, \"&amp;\"),\n \"data-bjh-box\": \"topic\",\n \"data-bjh-title\": n.title,\n \"data-bjh-id\": id || n.id,\n \"data-bjh-type\": \"topic\",\n contenteditable: \"false\",\n \"data-ignore-remove-style\": \"1\",\n \"data-bjh-create\": id ? \"0\" : \"1\",\n \"data-bjh-adinspiration\": \"0\",\n \"data-diagnose-id\": generateUid()\n };\n\n const attrStr = Object.entries(topicAttr)\n .map(([key, val]) => `${key}=\"${val}\"`)\n .join(\" \");\n\n return `<p><span data-diagnose-id=${generateUid()}></span><a ${attrStr}>#${n.title}#</a></p>`;\n};","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\n\nimport type { PublishAction } from \".\";\nimport { extractImgTag, replaceImgSrc } from \"../../utils\";\nimport { Http } from \"../../utils/http\";\nimport {generateTopicHtml} from \"./utils\";\nimport type {AxiosProxyParams} from \"../../types\";\n\ninterface CommonResponse<T = unknown> {\n\tdata: T;\n\terrmsg: string;\n\terrno: number;\n}\n\ninterface ImageRetResponse {\n\tbos_url: string;\n\thttps_url: string;\n\tno_waterlog_bos_url: string;\n\torg_url: string;\n}\n\nconst errnoMap: Record<number, string> = {\n\t20040706: \"正文图片和封面图片推荐jpg、png格式。\",\n\t20040084: \"正文图片和封面图片推荐jpg、png格式。\",\n\t20050004: \"今日百家号发布次数已达上限,请明天再试。\",\n\t10000015: \"账号存在异常,需前往百家号平台完成发文验证后可激活使用。\",\n\t20050000: \"操作太频繁,请稍后再试\",\n\t20040027: \"你的账号状态异常,请到百家号平台检查账号状态。\",\n\t10000017: \"账号存在异常,需前往百家号平台完成发文验证后可激活使用。\",\n\t20040033: \"封面图片推荐 jpg、png格式,宽高在372×284-5000×5000 范围内。\",\n\t2004005714: \"网络环境异常,请检查网络后重试发布。\",\n\t401100032: \"异常,请检查图片(如:格式、版权、合规性等)。\",\n\t20040034: \"封面图片推荐jpg、png格式,不支持gif格式。\",\n\t20040124: \"服务器异常,请稍后重试!\",\n\t20040001: \"当前用户未登录,请登陆后重试!\",\n 401100025: \"该应用不支持此媒资类型\",\n 401100033: \"图片宽高不满足要求\",\n 20040105: \"标题中不可使用表情!\",\n '-6': \"文章分类信息错误\"\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst { baijiahaoSingleCover, baijiahaoMultCover, baijiahaoCoverType } = params.settingInfo;\n\tconst tmpCachePath = task.getTmpPath();\n const headers= {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\ttoken: params.token,\n\t\t}\n\n const args: AxiosProxyParams = [\n { headers },\n task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n const http = new Http({ headers })\n\tconst proxyHttp = new Http(...args);\n\n\t// 添加响应拦截器\n\tproxyHttp.addResponseInterceptor<CommonResponse>((response) => {\n\t\tconst msgType = params.saveType === \"draft\" ? \"同步\" : \"发布\";\n \n\t\t// 检查响应中的 errno 字段\n\t\tif (response && response.data.errno !== 0) {\n\t\t\tlet errmsg = response.config.defaultErrorMsg || `文章${msgType}异常,请稍后重试。`;\n\n\t\t\tif (response.data.errno === 20050000) {\n\t\t\t\terrmsg = msgType + errnoMap[response.data.errno];\n\t\t\t}\n\t\t\tif (response.data.errno === 401100032) {\n\t\t\t\terrmsg = `图片${msgType}${errnoMap[response.data.errno]}`;\n\t\t\t} else if (errnoMap[response.data.errno]) {\n\t\t\t\terrmsg = errnoMap[response.data.errno];\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcode: errnoMap[response.data.errno] ? 200 : 500,\n\t\t\t\tmessage: errmsg,\n\t\t\t\tdata: response.data,\n\t\t\t};\n\t\t}\n\t});\n\n\t// 0. 校验登录\n\tawait http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/pcui/home/index\",\n\t\tdefaultErrorMsg: `百家号登录状态失效,请重新绑定账号后${params.saveType === \"draft\" ? \"同步\" : \"发布\"}。`,\n\t});\n\n\t// 1. 获取用户 appId\n\tconst appIdInfo = await http.api<CommonResponse<{ user: { app_id: number } }>>({\n\t\tmethod: \"post\",\n\t\turl: \"https://baijiahao.baidu.com/builder/app/appinfo\",\n\t\tdefaultErrorMsg: \"创建草稿失败,请稍后重试。\",\n\t});\n\n\tconst appId = appIdInfo.data.user.app_id;\n\n\tconst uploadImages = async (_images: string[]) => {\n\t\t// 过滤掉空字符串\n\t\tconst images = _images.filter((url) => !!url && url.trim() !== \"\");\n\n\t\t// 下载图片到本地\n\t\treturn await Promise.all(\n\t\t\timages.map(async (url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\tconst image = await downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t\tconst formData = new FormData();\n\t\t\t\tformData.append(\"org_file_name\", fileName);\n\t\t\t\tformData.append(\"type\", \"image\");\n\t\t\t\tformData.append(\"app_id\", appId);\n\t\t\t\tformData.append(\"is_waterlog\", \"1\");\n\t\t\t\tformData.append(\"save_material\", \"1\");\n\t\t\t\tformData.append(\"no_compress\", \"0\");\n\t\t\t\tformData.append(\"article_type\", \"news\");\n\t\t\t\tformData.append(\"media\", fs.createReadStream(image));\n\n\t\t\t\tconst res = await http.api<{ ret: ImageRetResponse }>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://baijiahao.baidu.com/materialui/picture/uploadProxy\",\n\t\t\t\t\tdata: formData,\n\t\t\t\t\tdefaultErrorMsg:\n\t\t\t\t\t\tparams.saveType === \"draft\" ? \"图片上传异常,请稍后重试同步。\" : \"图片上传异常,请稍后重试发布。\",\n\t\t\t\t},{retries: 3, retryDelay: 20, timeout:10*1000});\n\n\t\t\t\treturn res.ret;\n\t\t\t}),\n\t\t);\n\t};\n\n\t// 2. 提取并上传正文中的图片\n\tconst originContentImages = extractImgTag(params.content);\n\tconst targetContentImages = await uploadImages(originContentImages);\n \n if (params.settingInfo.baijiahaoTopic && !params.settingInfo.baijiahaoTopic?.id) {\n const topicCheck = await http.api<{ errno: number; errmsg: string }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/pcui/topic/topiccheck\",\n params: {\n topicName: params.settingInfo.baijiahaoTopic?.title\n }\n });\n if (topicCheck.errno !== 0) {\n return { code: 400, message: topicCheck.errmsg, data: '' };\n }\n }\n\n\t// 替换正文中的图片\n const content = replaceImgSrc(params.settingInfo?.baijiahaoTopic?.title ? params.content + generateTopicHtml(params.settingInfo?.baijiahaoTopic?.title, params.settingInfo?.baijiahaoTopic?.id || \"\", params.settingInfo.baijiahaoTopic?.sv_small_images||\"\"): params.content , (dom) => {\n if (dom.attribs.src) {\n\t\t\tconst idx = originContentImages.findIndex((it) => it === dom.attribs.src.replace(/&amp;/g,\"&\"));\n\t\t\tdom.attribs.src = targetContentImages[idx].bos_url;\n\t\t\tdom.attribs[\"data-bjh-origin-src\"] = targetContentImages[idx].org_url;\n\t\t\tdom.attribs[\"data-bjh-params\"] = targetContentImages[idx].org_url;\n\t\t\tdom.attribs[\"data-bjh-type\"] = \"IMG\";\n\t\t}\n\n\t\treturn dom;\n\t});\n\n\t// 3. 上传竖版封面\n\t// let vertical_cover = params.settingInfo.baijiahaoVerticalCover;\n\t// if (vertical_cover) {\n\t// \tvertical_cover = (await uploadImages([vertical_cover]))[0].bos_url;\n\t// }\n\n\t// 4. 上传横版封面\n\tconst horizontalCoverUrl = baijiahaoCoverType === \"single\" ? [baijiahaoSingleCover] : baijiahaoMultCover;\n\tconst horizontalCoverRes = await uploadImages(horizontalCoverUrl);\n\tconst cover_images = horizontalCoverRes.map((item) => ({\n\t\tsrc: item.bos_url,\n\t\tmachine_chooseimg: 0,\n\t\tisLegal: 0,\n\t}));\n\tconst _cover_images_map = horizontalCoverRes.map((item) => ({\n\t\tsrc: item?.bos_url,\n\t\torigin_src: item?.org_url,\n\t}));\n\n\t// 5. 构造发布数据\n\tconst isAi = params.settingInfo.baijiahaoIsAi.includes(\"isAi\");\n\tconst activityList = params.settingInfo.baijiahaoSelectActivityCache;\n\tconst cover_layout = baijiahaoCoverType === \"single\" ? \"one\" : \"three\";\n\n\tconst activity_list = [\n\t\t...(activityList.length > 0 ? [{ id: `task_${activityList[0]}`, is_checked: 1 }] : []),\n\t\t...(params.settingInfo.baijiahaoPublishConf?.map( item => ({ id : item.confName, is_checked : item.isChecked? 1 : 0 })) || [])\n\t];\n\n\tif(isAi && !activity_list.some(item => 'aigc_bjh_status' in item)){ activity_list.push({ id : 'aigc_bjh_status', is_checked : 1 })} // 兼容旧版配置\n\n\tconst publishData: Record<string, unknown> = {\n\t\ttitle: params.settingInfo.baijiahaoTitle,\n\t\tcontent,\n\t\t// vertical_cover,\n\t\tabstract: params.settingInfo.baijiahaoAbstract,\n\t\tcover_layout,\n\t\tcover_images: JSON.stringify(cover_images),\n\t\t_cover_images_map: JSON.stringify(_cover_images_map),\n\t\ttype: \"news\",\n\t\tsource_reprinted_allow: 0,\n\t\tabstract_from: 1,\n\t\tisBeautify: \"false\",\n\t\tusingImgFilter: \"false\",\n\t\tsource: \"upload\",\n\t\tcover_source: \"upload\",\n\t\tevent2news: params.settingInfo?.baijiahaoEvent2News ? 2 : 0,\n\t\tactivity_list,\n\t\t...(params.settingInfo.timer ? { timer_time: params.settingInfo.timer } : {}),\n ...(params.settingInfo.baijiahaoCms? { 'cate_user_cms[0]': params.settingInfo.baijiahaoCms[0], 'cate_user_cms[1]': params.settingInfo.baijiahaoCms[1]}:{}),\n ...(params.settingInfo.baijiahaoEventSpec? {'event_spec[time]':params.settingInfo.baijiahaoEventSpec.time, 'event_spec[pos]': params.settingInfo.baijiahaoEventSpec.pos}:{})\n\t};\n\n\tconst isDraft = params.saveType === \"draft\";\n\n\tconst saveUrl = isDraft\n\t\t? \"https://baijiahao.baidu.com/pcui/article/save?callback=bjhdraft\"\n\t\t: \"https://baijiahao.baidu.com/pcui/article/publish?callback=bjhpublish\";\n\n task._timerRecord.PrePublish= Date.now();\n \n\tconst res = await proxyHttp.api<{errno:number; ret: { article_id: string }; proxyInfo: Record<string, unknown>; errmsg: string}>({\n\t\tmethod: \"post\",\n\t\turl: saveUrl,\n\t\tdata: publishData,\n\t\theaders: {\n\t\t\t\"content-type\": \"application/x-www-form-urlencoded\",\n\t\t\torigin: \"https://baijiahao.baidu.com\",\n\t\t\treferer: \"https://baijiahao.baidu.com/builder/rc/edit?type=news\",\n\t\t},\n\t\tdefaultErrorMsg: isDraft ? \"文章同步出现异常,请稍后重试。\" : \"文章发布出现异常,请稍后重试。\",\n }, {retries: 3, retryDelay: 500, timeout: 6*1000});\n \n return success(res.errno === 0 ? res?.ret?.article_id || '': \"\", res.errno === 0 ? `文章发布成功!${http.proxyInfo || \"\"}`: res.errmsg ?? '文章发布失败,请稍后重试。')\n};\n","import path from \"node:path\";\nimport type { CookieMap, Response } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport { copyHtmlToClipboard, TimeFormatter} from \"../../utils\";\nimport type { PublishAction } from \"./index\";\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"baijiahao.baidu.com\",\n\t\turl: \"https://baijiahao.baidu.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://baijiahao.baidu.com/builder/rc/edit?type=news&is_from_cms=1\",\n cookies: (params.cookies?.map((it) => ({...it, ...commonCookies})) || []) as CookieMap,\n\t});\n\n\t// 0. 校验登录\n\ttry {\n\t\tawait page.waitForSelector(\".bjh-edit-header\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn { code: 400, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 1. 等待编辑器加载出来\n\tawait page.waitForSelector(\".edui-editor-toolbarbox\", { state: \"visible\" });\n\n\t// 2. 关闭纯文本粘贴\n\t// 有个默认开启纯文本粘贴的提示,先关闭\n\tif (await page.locator(\"#_onceTip-news_pasteplain_tip\").isVisible()) {\n\t\tawait page.locator(\"#_onceTip-news_pasteplain_tip .confirm\").click();\n\t}\n\t// 判断是否开启纯文本粘贴,如果开启,点击关闭\n\tif (await page.locator(\".edui-editor-toolbarbox .edui-button.edui-for-pasteplain .edui-state-checked\").isVisible()) {\n\t\tawait page.locator(\".edui-editor-toolbarbox .edui-button.edui-for-pasteplain .edui-state-checked\").click();\n\t}\n\n\t// 3. 填写标题\n\tconst titleInstance = page.locator(\"#ueditor #bjhNewsTitle .input-box textarea\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 4. 填写正文\n\tawait copyHtmlToClipboard(page, params.content);\n\t// 定位目标元素并聚焦\n\tawait page.click(\"#ueditor .edui-editor-iframeholder iframe\");\n\t// 模拟Ctrl+A全选\n\tawait page.keyboard.press(\"Control+A\");\n\t// 模拟Ctrl+V粘贴\n\tawait page.keyboard.press(\"Control+V\");\n\n\t// 等待 1 秒钟(让正文中的图片上传上去)\n\tawait page.waitForTimeout(1000);\n\n\t// 5. 设置封面\n\tconst coverFormItem = page.locator(\".bjh-edit-wrap-set .cheetah-form-item\").nth(0);\n\tconst isSingleCover = params.settingInfo.baijiahaoCoverType === \"single\";\n\tif (isSingleCover) {\n\t\t// 单图\n\t\tawait coverFormItem\n\t\t\t.locator(\".cheetah-form-item-control label.cheetah-radio-wrapper\")\n\t\t\t.filter({ hasText: \"单图\" })\n\t\t\t.click();\n\t} else {\n\t\t// 多图\n\t\tawait coverFormItem\n\t\t\t.locator(\".cheetah-form-item-control label.cheetah-radio-wrapper\")\n\t\t\t.filter({ hasText: \"三图\" })\n\t\t\t.click();\n\t}\n\t// 获取待上传图片的本地路径\n\tconst images = await Promise.all(\n\t\t(isSingleCover ? [params.settingInfo.baijiahaoSingleCover] : params.settingInfo.baijiahaoMultCover).map((url) => {\n\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t}),\n\t);\n\tconst coverSelector = page.locator(\n\t\t\".cheetah-form-item-control .edit-cover-container .cover-list .DraggableTags-tag-drag .coverUploaderView\",\n\t);\n\tconst coverCount = await coverSelector.count();\n\n\tfor (let i = 0; i < coverCount; i++) {\n\t\tconst item = coverSelector.nth(i);\n\t\tconst image = images[i];\n\n\t\t// 滚动到可视区域\n\t\tawait item.evaluate((node) => node.scrollIntoView());\n\n\t\t// 如果已经存在图片,选择更换\n\t\tif (await item.locator(\".actions-wrap\").isVisible()) {\n\t\t\tawait item.locator(\".actions-wrap .action\").filter({ hasText: \"更换\" }).click();\n\t\t} else {\n\t\t\tawait item.click();\n\t\t}\n\n\t\t// 等待弹窗出现\n\t\tawait page.waitForSelector(\".cheetah-modal-root .cheetah-ui-pro-image-modal\", { state: \"visible\" });\n\t\t// 选择本地图片 tab\n\t\tawait page\n\t\t\t.locator(\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-tabs-nav-list .cheetah-tabs-tab\")\n\t\t\t.filter({ hasText: \"本地图片\" })\n\t\t\t.click();\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait page\n\t\t\t.locator(\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-tabs-tabpane-active .cheetah-upload-wrapper\")\n\t\t\t.click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles([image]);\n\t\t// 等待上传完成(可以用去编辑是否可点击来判断)\n\t\t// 等待 button 元素上面的 disabled 属性消失\n\t\tawait page.waitForSelector(\n\t\t\t\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-modal-footer button#imageModalEditBtn[disabled]\",\n\t\t\t{ state: \"detached\" },\n\t\t);\n\t\t// 点击确认关闭弹窗\n\t\tawait page\n\t\t\t.locator(\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-modal-footer button\")\n\t\t\t.filter({ hasText: \"确认\" })\n\t\t\t.click();\n\t\t// 等待 2 秒\n\t\tawait page.waitForTimeout(1000);\n\t}\n\n\t// 6. 摘要\n\tconst abstractFormItem = page\n\t\t.locator(\".bjh-edit-wrap-set .cheetah-form-item\")\n\t\t.nth(1)\n\t\t.locator(\"textarea.cheetah-input\");\n\tawait abstractFormItem.click();\n\tawait abstractFormItem.fill(params.settingInfo.baijiahaoAbstract);\n\n\t// 7. 设置\n\tconst isAi = params.settingInfo.baijiahaoIsAi.includes(\"isAi\");\n\tconst settingFormItem = page.locator(\".bjh-edit-wrap-set .cheetah-form-item\").nth(5);\n\tif (isAi) {\n\t\tawait settingFormItem.locator(\"label.cheetah-checkbox-wrapper\").filter({ hasText: \"AI创作声明\" }).click();\n\t}\n\tif(params.settingInfo.baijiahaoPublishConf){\n\t\tfor (const item of params.settingInfo.baijiahaoPublishConf) {\n\t\t\tconst _settingFormItem = settingFormItem.locator(\"label.cheetah-checkbox-wrapper\").locator(`span.${item.confName}`)\n\t\t\tif((await _settingFormItem.isChecked()) !== item.isChecked ) await _settingFormItem.click();\n\t\t\tawait page.waitForTimeout(200);\n\t\t};\n\t}\n\n\tconst enent2NewsBtn = page.locator(\"input#event2news\")\n\tif((await enent2NewsBtn.isVisible()) && params.settingInfo.baijiahaoEvent2News) await enent2NewsBtn.click()\n\n\t// 8. 活动投稿\n\tif (params.settingInfo.baijiahaoActivity.length > 0 && params.settingInfo.baijiahaoSelectActivityCache.length > 0) {\n\t\tconst activity = params.settingInfo.baijiahaoActivity.filter((it) =>\n\t\t\tparams.settingInfo.baijiahaoSelectActivityCache.includes(it.id),\n\t\t);\n\t\tif (activity.length > 0) {\n\t\t\tconst activityFormItem = page.locator(\".bjh-edit-wrap-set .cheetah-form-item\").nth(3);\n\t\t\tconst name = activity[0].task_name;\n\t\t\tconst findActivity = activityFormItem.locator(\".cheetah-form-item-control\").getByText(name, { exact: true });\n\t\t\tif ((await findActivity.count()) > 0) {\n\t\t\t\tawait findActivity.first().locator(\"..\").click();\n\t\t\t}\n\t\t}\n\t}\n\n\t// 9. 保存草稿 / 发布\n\tconst {articleId, message}= await new Promise<{articleId: string, message:string}>(async (resolve) => {\n\t\t// 定义响应处理函数\n\t\tconst handleResponse = async (response: Response) => {\n\t\t\tconst url = response.url();\n\t\t\tif (url.includes(\"/pcui/article/save\") || url.includes(\"/pcui/article/publish\")) {\n\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\tresolve({articleId:jsonResponse?.ret?.article_id, message: jsonResponse?.errmsg});\n\t\t\t}\n\t\t};\n\n\t\t// 开始监听响应事件\n\t\tpage.on(\"response\", handleResponse);\n task._timerRecord['PrePublish']= Date.now();\n\n\t\tconst operatorContainer = page.locator(\".editor-component-operator\");\n\t\tif (params.saveType === \"draft\") {\n\t\t\tawait operatorContainer.locator(\".op-btn-outter-content\").filter({ hasText: \"存草稿\" }).locator(\"button\").click();\n\t\t} else {\n\t\t\tif (params.settingInfo.timer) {\n\t\t\t\t// 点击“定时发布”按钮\n\t\t\t\tawait operatorContainer.locator(\".op-btn-outter-content\").filter({ hasText: \"定时发布\" }).locator(\"button\").click();\n\n\t\t\t\t// 选择日期\n\t\t\t\tawait page.locator(\".timepublish-wrap-select .select-wrap\",{hasText: \"日\"}).click();\n\t\t\t\tawait page.locator('#select-date_list + * .cheetah-select-item-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"M月dd日\") }).click();\n\t\t\t\tawait page.waitForTimeout(200);\n\n\t\t\t\t// 选择小时\n\t\t\t\tawait page.locator(\".timepublish-wrap-select .select-wrap\",{hasText: \"点\"}).click();\n\t\t\t\tawait page.locator('#select-hour_list +div.rc-virtual-list').hover();\n\n\t\t\t\tconst scrollHourInfo = await page.evaluate(() => {\n\t\t\t\t\tconst hourInner = document.querySelector('#select-hour_list + * .rc-virtual-list-holder-inner');\n\t\t\t\t\tconst hourElementHeight = hourInner?.children[0].clientHeight || 36;\n\t\t\t\t\tconst hourMapsElem = Array.from(document.querySelectorAll('#select-hour_list + * .cheetah-select-item-option .cheetah-select-item-option-content'));\n\t\t\t\t\tconst hourMap = hourMapsElem.map(item => item.textContent?.trim());\n\n\t\t\t\t\treturn {elementHeight: hourElementHeight, elementItem : hourMap};\n\t\t\t\t});\n\t\t\t\tconst fistHourElem = scrollHourInfo.elementItem[0];\n\t\t\t\tlet fistHourElemH = Number(fistHourElem?.split(\"点\")[0]); // 列表渲染的第一个时间\n\n\t\t\t\tconst lastHourElem = scrollHourInfo.elementItem[scrollHourInfo.elementItem.length - 1];\n\t\t\t\tlet lastHourElemH = Number(lastHourElem?.split(\"点\")[0]); // 列表渲染的最后一个时间\n\n\t\t\t\tlet targetTimeH = Number(TimeFormatter.format(params.settingInfo.timer, 'h')); // 目标时间\n\t\t\t\tawait page.mouse.wheel(0, targetTimeH > lastHourElemH ? (targetTimeH-lastHourElemH)*scrollHourInfo.elementHeight : targetTimeH < fistHourElemH ? -(fistHourElemH - targetTimeH)*scrollHourInfo.elementHeight : 0 );\n\t\t\t\tawait page.locator(\"#select-hour_list + * .cheetah-select-item-option \",{ hasText: targetTimeH + \"点\"}).click()\n\t\t\t\tawait page.waitForTimeout(200);\n\n\n\t\t\t\t// 选择分钟\n\t\t\t\tawait page.locator(\".timepublish-wrap-select .select-wrap\",{hasText: \"分\"}).click();\n\t\t\t\tawait page.locator('#select-minute_list +div.rc-virtual-list').hover();\n\n\t\t\t\tconst scrollMinuteInfo = await page.evaluate(() => {\n\t\t\t\t\tconst hourInner = document.querySelector('#select-minute_list + * .rc-virtual-list-holder-inner');\n\t\t\t\t\tconst hourElementHeight = hourInner?.children[0].clientHeight || 36;\n\t\t\t\t\tconst hourMapsElem = Array.from(document.querySelectorAll('#select-minute_list + * .cheetah-select-item-option .cheetah-select-item-option-content'));\n\t\t\t\t\tconst hourMap = hourMapsElem.map(item => item.textContent?.trim());\n\n\t\t\t\t\treturn {elementHeight: hourElementHeight, elementItem : hourMap};\n\t\t\t\t});\n\t\t\t\tconst fistMinuteElem = scrollMinuteInfo.elementItem[0];\n\t\t\t\tlet fistMinuteElemH = Number(fistMinuteElem?.split(\"分\")[0]); // 列表渲染的第一个时间\n\n\t\t\t\tconst lastMinuteElem = scrollMinuteInfo.elementItem[scrollMinuteInfo.elementItem.length - 1];\n\t\t\t\tlet lastMinuteElemH = Number(lastMinuteElem?.split(\"分\")[0]); // 列表渲染的最后一个时间\n\n\t\t\t\tlet targetTimeM = Number(TimeFormatter.format(params.settingInfo.timer, 'm')); // 目标时间\n\t\t\t\tawait page.mouse.wheel(0, targetTimeM > lastMinuteElemH ? (targetTimeM-lastMinuteElemH)*scrollMinuteInfo.elementHeight : targetTimeM < fistMinuteElemH ? -(fistMinuteElemH - targetTimeM)*scrollMinuteInfo.elementHeight : 0 );\n\t\t\t\tawait page.locator(\"#select-minute_list + * .cheetah-select-item-option \",{ hasText: targetTimeM + \"分\"}).click()\n\t\t\t\tawait page.waitForTimeout(200);\n\n\n\t\t\t\tawait page.locator(\".cheetah-modal-confirm-btns button\").filter({ hasText:\"定时发布\" }).click()\n\t\t\t}else{\n\t\t\t\tawait operatorContainer.locator(\".op-btn-outter-content\").filter({ hasText: /^发布/ }).locator(\"button\").click();\n\t\t\t}\n\t\t}\n\t});\n\n\t// 关闭页面\n\tawait page.close();\n\n\treturn success(articleId, articleId? \"发布成功\" : message);\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\ninterface ActivityData {\n\tid: string;\n\ttask_name: string;\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t[key: string]: any;\n}\n\nexport interface BaijiahaoPublishParams extends ActiomCommonParams {\n\tsaveType: \"draft\" | \"publish\"; // 保存成草稿 / 发布\n\ttoken: string;\n\ttitle: string;\n\tcontent: string;\n proxyLoc?: string;\n localIP?: string; // 用户ip\n huiwenToken?: string; // 绘文token\n\tsettingInfo: {\n\t\tbaijiahaoTitle: string; // 标题\n\t\tbaijiahaoCoverType: \"single\" | \"multiple\"; // 封面设置:单图 | 三图\n\t\tbaijiahaoAbstract: string; // 摘要\n\t\tbaijiahaoIsAi: string[]; // 设置-由配置项取代\n\t\tbaijiahaoSingleCover: string; // 单图封面\n\t\tbaijiahaoMultCover: string[]; // 三图封面\n\t\tbaijiahaoVerticalCover?: string; // 竖版封面-下版本删除\n\t\tbaijiahaoActivity: ActivityData[]; // 活动投稿\n\t\tbaijiahaoPublishConf?: {\n\t\t\tconfName: string;\n\t\t\tisChecked: boolean;\n\t\t}[]; // 发布配置项\n baijiahaoTopic?: Record<string, any>; // 百家号话题\n baijiahaoCms?: string[];// 百家号分类\n baijiahaoEventSpec?: { time: string; pos: string }; // 百家号事件来源说明\n\t\tbaijiahaoEvent2News: boolean; // 图文转动态\n\t\tbaijiahaoSelectActivityCache: string[]; // 选中的活动标签\n\t\ttimer?: number;\n\t};\n}\n\nexport type PublishAction = CommonAction<BaijiahaoPublishParams, string>;\n\nexport const baijiahaoPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, Toutiao, Xiaohongshu, Weixin, BaiJiaHao, AxiosProxyParams} from \"../../../types\";\nimport { Http } from \"../../../utils/http\";\nimport https from \"node:https\";\n\nexport type ttSearchAction = CommonAction<ActiomCommonParams, Toutiao.FansCount>;\n\nexport type xhsSearchAction = CommonAction<ActiomCommonParams, Xiaohongshu.FansCount>;\n\nexport interface GetWxFansSearchParams extends ActiomCommonParams {\n\ttoken: string | number;\n}\n\nexport type wxSearchAction = CommonAction<GetWxFansSearchParams, Weixin.FansCount>;\n\nexport type bjhSearchAction = CommonAction<ActiomCommonParams, BaiJiaHao.FansCount>;\n\nconst generatorFormData = (data: Record<string, unknown>) => {\n\tconst formData = new URLSearchParams();\n\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tformData.append(key, String(value));\n\t}\n\n\treturn formData.toString();\n};\n\nexport const TTFansExport: ttSearchAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\tconst fans: Toutiao.FansCount = { digg_count: null, fans_count: null, following: null, description: \"\" };\n\n\tconst userInfo = await http.api<{ code: number; total_fans_count: number; user_id_str: string }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.toutiao.com/mp/agw/creator_center/user_info?app_id=1231\",\n\t\tparams: { app_id: 1231 },\n\t});\n\n\tasync function getToutiaoToken(userId: string, cookies: Record<string, unknown>[]) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst cookieStr = cookies.map((it: Record<string, unknown>) => `${it.name}=${it.value}`).join(\"; \");\n\n\t\t\thttps\n\t\t\t\t.get(\n\t\t\t\t\t`https://www.toutiao.com/c/user/${userId}/`,\n\t\t\t\t\t{\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\tCookie: cookieStr,\n\t\t\t\t\t\t\t\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64)\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t(res) => {\n\t\t\t\t\t\t// 尝试从 Location 头中提取 token\n\t\t\t\t\t\tconst location = res.headers.location || \"\";\n\t\t\t\t\t\tconst match = location.match(/\\/token\\/([^\\/]+)/);\n\t\t\t\t\t\tconst token = match ? match[1] : \"\";\n\n\t\t\t\t\t\tresolve(token);\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.on(\"error\", reject);\n\t\t});\n\t}\n\n\tconst token = await getToutiaoToken(userInfo.user_id_str, params.cookies);\n\n\ttype ttFansDetail = {\n\t\tdigg_count: string;\n\t\tfans: string;\n\t\tfollowing: string;\n\t};\n\tconst fansDetail: { data: ttFansDetail; message: string } = await http.api({\n\t\tmethod: \"POST\",\n\t\turl: \"https://www.toutiao.com/api/pc/user/fans_stat\",\n\t\tdata: generatorFormData({ token }),\n\t});\n\n\tconst descriptionRes: { data: { media: { description: string } }; message: string } = await http.api({\n\t\tmethod: \"GET\",\n\t\turl: \"https://mp.toutiao.com/mp/agw/media/edit_media_account_info\",\n\t\tparams: { app_id: 1231 },\n\t});\n\n\tfans.fans_count = Number(fansDetail.data.fans);\n\tfans.digg_count = Number(fansDetail.data.digg_count);\n\tfans.following = Number(fansDetail.data.following);\n\tfans.description = descriptionRes.data.media.description;\n\n\treturn success(fansDetail.message === \"success\" ? fans : fans, \"获取粉丝数成功!\");\n};\n\nexport const XhsFansExport: xhsSearchAction = async (_task, params) => {\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com/new/home?source=official\",\n };\n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n \n\tconst fans: Xiaohongshu.FansCount = { digg_count: null, fans_count: null, following: null, description: \"\" };\n\n\tconst res = await http.api<{\n\t\tresult: number;\n\t\tdata: { follow_count: number; fans_count: number; faved_count: number; personal_desc: string };\n\t}>({\n\t\tmethod: \"get\",\n\t\turl: \"https://creator.xiaohongshu.com/api/galaxy/creator/home/personal_info\",\n\t},{ retries: 3, retryDelay: 20, timeout: 3000 });\n\n\tfans.fans_count = Number(res.data.fans_count);\n\tfans.digg_count = Number(res.data.faved_count);\n\tfans.following = Number(res.data.follow_count);\n\tfans.description = res.data.personal_desc;\n\n\treturn success(fans, `获取粉丝数成功!${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`);\n};\n\nexport const WxFansExport: wxSearchAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t},\n\t});\n\tconst fans: Weixin.FansCount = { digg_count: null, fans_count: null, following: null, description: \"\" };\n\n\tconst htmlStr = await http.api<string>({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/home\",\n\t\tparams: {\n\t\t\tt: \"home/index\",\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t},\n\t});\n\tconst match = htmlStr.match(/总用户数[\\s\\S]*?<mp-thousandth>(\\d+)<\\/mp-thousandth>/);\n\tif (match) {\n\t\tfans.fans_count = Number(match[1]);\n\t}\n\n\tconst desc = await http.api<string>({\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/settingpage\",\n\t\tmethod: \"get\",\n\t\tparams: {\n\t\t\tt: \"setting/index\",\n\t\t\taction: \"index\",\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t},\n\t});\n\tconst descMatch = desc.match(\n\t\t/<label[^>]*class=\"weui-desktop-setting__item__label\"[^>]*>介绍<\\/label>[\\s\\S]*?<div[^>]*class=\"weui-desktop-setting__item__info\"[^>]*>(.*?)<\\/div>/,\n\t);\n\n\tif (descMatch) {\n\t\tfans.description = descMatch[1].trim();\n\t}\n\n\treturn success(fans, \"获取粉丝数成功!\");\n};\n\nexport const BjhFansExport: bjhSearchAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://baijiahao.baidu.com/builder/rc/home\",\n\t\t},\n\t});\n\tconst fans: BaiJiaHao.FansCount = { digg_count: null, fans_count: null, following: null, description: \"\" };\n\n\tconst res = await http.api<{ errno: number; data: { total_fans: number } }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/cms-ui/rights/growth/get_info\",\n\t});\n\tif (res.errno === 0) fans.fans_count = res.data.total_fans;\n\n\tconst desc = await http.api<{ errno: number; data: { user: { wishes: string } } }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/builder/app/appinfo\",\n\t});\n\tif (desc.errno === 0) fans.description = desc.data.user.wishes;\n\n\treturn success(fans, \"获取粉丝数成功!\");\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetBaijiahaoActivityParams extends ActiomCommonParams {\n\ttoken: string;\n}\n\nexport interface ActivityData {\n\tid: string;\n\ttask_name: string;\n}\n\nexport type PublishAction = CommonAction<GetBaijiahaoActivityParams, ActivityData[]>;\n\nexport const getBaijiahaoActivity: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\ttoken: params.token,\n\t\t},\n\t});\n\n\tconst res = await http.api<{ data: { list: ActivityData[] } }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/author/eco/tasksystem/getSquareMissionList\",\n\t\tparams: {\n\t\t\tpage_no: 1,\n\t\t\tpage_size: 18,\n\t\t\tarticle_type: 1,\n\t\t\ttask_attend: 1,\n\t\t\ttask_origin: \"market\",\n\t\t\ttask_type: -1,\n\t\t\tfrom: \"pc_edit\",\n\t\t},\n\t});\n\n\treturn success(res?.data?.list ?? []);\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetBaijiahaoConfigParams extends ActiomCommonParams {\n\ttoken: string;\n}\n\nexport interface ConfigData {\n\tid: string;\n\tname: string;\n\tdetail: string;\n\tis_enable: number;\n\tpublish_num_left?: number;\n}\n\nexport type PublishAction = CommonAction<GetBaijiahaoConfigParams, ConfigData[]>;\n\nexport const getBaijiahaoConfig: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\ttoken: params.token,\n\t\t},\n\t});\n\n\tconst res = await http.api<{ data: { article: { activity_list: ConfigData[]}, ability: { publish_num_left: number} } }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/pcui/article/edit\",\n\t\tparams: {\n\t\t\ttype: \"news\"\n\t\t},\n\t});\n\tconst data : ConfigData[] = res?.data?.article.activity_list.map((_item) =>{ \n\t\treturn {\n\t\t\tid: _item.id,\n\t\t\tname: _item.name,\n\t\t\tdetail: _item.detail,\n\t\t\tis_enable: _item.is_enable\n\t\t}\n\t})?? []\n\tdata.push({\n\t\tid: \"bjh_publish_num_left\",\n\t\tname: \"账号剩余发文数\",\n\t\tdetail: \"\",\n\t\tis_enable: 1,\n\t\tpublish_num_left: res.data.ability.publish_num_left\n\t})\n\treturn success(data, \"获取百家号配置项成功!\")\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetToutiaoConfigParams extends ActiomCommonParams {}\n\nexport interface GetToutiaoConfigResult {\n\tsuggestWords: Toutiao.Topic[];\n\tcityDistrict: Toutiao.CityDistrict | null;\n\tuserRights: Toutiao.UserRight[];\n}\n\nexport type PublishAction = CommonAction<GetToutiaoConfigParams, GetToutiaoConfigResult>;\n\nexport const getToutiaoConfig: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\tconst getSuggestWords = async () => {\n\t\ttry {\n\t\t\tconst res = await http.api<{ code: number; hots: Toutiao.Topic[] }>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.toutiao.com/mp/agw/creator_helper/suggest_words\",\n\t\t\t\tparams: { type: 2, words: \"\" },\n\t\t\t});\n\n\t\t\treturn res.code === 0 ? res.hots : [];\n\t\t} catch (error) {\n\t\t\treturn [];\n\t\t}\n\t};\n\n\tconst getCityDistrict = async () => {\n\t\ttry {\n\t\t\tconst res = await http.api<{ status: number; data: Toutiao.CityDistrict }>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.toutiao.com/toutiao/normandy/mp/city_district/\",\n\t\t\t});\n\t\t\treturn res.status === 0 ? res.data : null;\n\t\t} catch (error) {\n\t\t\treturn null;\n\t\t}\n\t};\n\n\tconst getUserRights = async () => {\n\t\ttry {\n\t\t\tconst res = await http.api<{ code: number; data: { benefit_level_info_list: Toutiao.UserRight[] } }>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.toutiao.com/mp/agw/creator_project/get_benefit_page_info\",\n\t\t\t});\n\t\t\treturn res.code === 0 ? res.data.benefit_level_info_list : [];\n\t\t} catch (error) {\n\t\t\treturn [];\n\t\t}\n\t};\n\n\tconst [suggestWords, cityDistrict, userRights] = await Promise.all([\n\t\tgetSuggestWords(),\n\t\tgetCityDistrict(),\n\t\tgetUserRights(),\n\t]);\n\n\treturn success({ suggestWords, cityDistrict, userRights });\n};\n","import {type CommonAction, response, success} from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface SearchToutiaoLocationParams extends ActiomCommonParams {\n\tplaceName: string;\n}\n\nexport type PublishAction = CommonAction<SearchToutiaoLocationParams, Toutiao.CityPoi[]>;\n\nexport const searchToutiaoLocation: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t\tbiz: 1231,\n\t\t},\n\t});\n\n\tconst res = await http.api<{\n\t\tcode: number;\n message: string;\n\t\tdata: {\n\t\t\tpoi: Array<{ name: string; city: string; longitude: number; latitude: number; type_code: string; id: string }>;\n\t\t};\n\t}>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.toutiao.com/poi/api/searchplace\",\n\t\tdata: {\n\t\t\tappid: 1231,\n\t\t\tdevice: 2,\n\t\t\tkeywords: params.placeName,\n\t\t\tlanguage: \"zh-CN\",\n\t\t\tlocation: \"-1,-1\",\n\t\t\toffset: 20,\n\t\t\tpage: 1,\n\t\t\tregion: \"CN\",\n\t\t\tscenario: \"TIPS\",\n\t\t\ttimestamp: Math.floor(Date.now() / 1000),\n\t\t},\n\t});\n\n\tif (res.code === 200) {\n\t\treturn success(\n\t\t\tres.data.poi.map((item) => ({\n\t\t\t\tposition: item.name,\n\t\t\t\tcity: item.city,\n\t\t\t\tlongitude: item.longitude,\n\t\t\t\tlatitude: item.latitude,\n\t\t\t\ttype_code: item.type_code,\n\t\t\t\tpoi_id: item.id,\n\t\t\t})),\n\t\t);\n\t}\n\n const isSuccess = res.code === 0;\n\tconst message = `搜索头条用户ID成功${isSuccess ? \"成功\" : `失败,原因:${res.message}`}`;\n\tconst data = isSuccess\n\t\t? res.data.poi.map((item) => ({\n\t\t\t\tposition: item.name,\n\t\t\t\tcity: item.city,\n\t\t\t\tlongitude: item.longitude,\n\t\t\t\tlatitude: item.latitude,\n\t\t\t\ttype_code: item.type_code,\n\t\t\t\tpoi_id: item.id,\n\t\t\t}))\n\t\t: [];\n\n\treturn response(isSuccess ? 0 : 400, message, data);\n};\n","import {type CommonAction, response, success} from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface SearchToutiaoTopicListParams extends ActiomCommonParams {\n\tsearchValue: string;\n}\n\nexport type PublishAction = CommonAction<SearchToutiaoTopicListParams, Toutiao.Topic[]>;\n\nexport const searchToutiaoTopicList: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\tconst res = await http.api<{ code: number; message:string; recents: Toutiao.Topic[]; hots: Toutiao.Topic[] }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.toutiao.com/mp/agw/creator_helper/suggest_words\",\n\t\tparams: { type: 2, words: params.searchValue },\n\t});\n\n const isSuccess = res.code === 0;\n\tconst message = `获取话题${isSuccess ? \"成功\" : `失败,原因:${res.message}`}`;\n\tconst data = isSuccess ? params.searchValue ? res.recents : res.hots : [];\n\n\treturn response(isSuccess ? 0 : 400, message, data);\n\n};\n","import { type CommonAction, response, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface SearchToutiaoUserIDParams extends ActiomCommonParams {\n\tUserName: string;\n}\n\nexport type PublishAction = CommonAction<SearchToutiaoUserIDParams, Toutiao.SuggestWords[]>;\n\nexport const searchToutiaoUserInfo: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\tconst res = await http.api<{\n\t\terr_no: number;\n\t\terror_msg: string;\n\t\tdata: { suggest: { user: { info: { user_id: number; name: string; avatar_url: string }; relation_count: {followers_count: number} } }[] };\n\t}>({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.toutiao.com/ugc/publish/post/v1/suggest/\",\n\t\tparams: {\n\t\t\twords: params.UserName,\n\t\t\tlanguage: \"zh\",\n\t\t\tapp_name: \"toutiao_mp\",\n\t\t},\n\t});\n\n\tif (res.err_no === 0) {\n\t\treturn success(\n\t\t\tres.data.suggest.map((item) => ({\n\t\t\t\tuser_id: item.user.info.user_id,\n\t\t\t\tname: item.user.info.name,\n\t\t\t\tavatar_url: item.user.info.avatar_url,\n\t\t\t\tfollowers_count: item.user.relation_count.followers_count,\n\t\t\t})),\n\t\t\t\"搜索成功\",\n\t\t);\n\t}\n\n\tconst isSuccess = res.err_no === 0;\n\tconst message = `搜索头条用户ID成功${isSuccess ? \"成功\" : `失败,原因:${res.error_msg}`}`;\n\tconst data = isSuccess\n\t\t? res.data.suggest.map((item) => ({\n\t\t\t\tuser_id: item.user.info.user_id,\n\t\t\t\tname: item.user.info.name,\n\t\t\t\tavatar_url: item.user.info.avatar_url,\n\t\t\t\tfollowers_count: item.user.relation_count.followers_count,\n\t\t\t}))\n\t\t: [];\n\n\treturn response(isSuccess ? 0 : 400, message, data);\n};\n","import {type CommonAction, response, success} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams, Xiaohongshu} from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface searchXiaohongshuLocationParams extends ActiomCommonParams {\n\tsearchValue: string;\n\tlatitude?: number;\n\tlongitude?: number;\n\tsize?: number;\n\tpage?: number;\n}\n\nexport type PublishAction = CommonAction<searchXiaohongshuLocationParams, Xiaohongshu.Location[]>;\n\nexport const searchXiaohongshuLocation: PublishAction = async (_task, params) => {\n\tconst headers= {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://creator.xiaohongshu.com\",\n\t\t\torigin: \"https://creator.xiaohongshu.com\",\n\t\t};\n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n\n\tconst result = await http.api<{ code: number; msg:string; data: { poi_list: Xiaohongshu.Location[] } }>({\n\t\tmethod: \"post\",\n\t\turl: \"https://edith.xiaohongshu.com/web_api/sns/v1/local/poi/creator/search\",\n\t\tdata: {\n\t\t\tkeyword: params.searchValue,\n\t\t\tlatitude: params.latitude ?? 0,\n\t\t\tlongitude: params.longitude ?? 0,\n\t\t\tpage: params.page ?? 1,\n\t\t\tsize: params.size ?? 10,\n\t\t\tsource: \"WEB\",\n\t\t\ttype: 3,\n\t\t},\n\t},{ retries: 3, retryDelay: 20, timeout: 3000 });\n \n\tconst isSuccess = result.code === 0;\n\tconst message = `获取地点信息${isSuccess ? \"成功\" : `失败,原因:${result.msg}`}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n\tconst data = isSuccess ? result.data.poi_list : [];\n\n\treturn response(isSuccess ? 0 : 400, message, data);\n};\n","/**\n * 小红书请求签名生成工具 TypeScript 版本\n * 完全对应 Python 版本的功能实现\n * 兼容ES5/ES2015版本\n */\n\nimport * as crypto from 'node:crypto';\n\n// ========== 配置常量类 ==========\nexport class CryptoConfig {\n // 位操作相关常量\n static readonly MAX_32BIT = 0xFFFFFFFF;\n static readonly MAX_SIGNED_32BIT = 0x7FFFFFFF;\n static readonly MAX_BYTE = 255;\n\n // Base64编码相关常量\n static readonly STANDARD_BASE64_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n static readonly CUSTOM_BASE64_ALPHABET = \"ZmserbBoHQtNP+wOcza/LpngG8yJq42KWYj0DSfdikx3VT16IlUAFM97hECvuRX5\";\n static readonly X3_BASE64_ALPHABET = \"MfgqrsbcyzPQRStuvC7mn501HIJBo2DEFTKdeNOwxWXYZap89+/A4UVLhijkl63G\";\n\n // XOR 密钥 (124字节)\n static readonly HEX_KEY = \"71a302257793271ddd273bcee3e4b98d9d7935e1da33f5765e2ea8afb6dc77a51a499d23b67c20660025860cbf13d4540d92497f58686c574e508f46e1956344f39139bf4faf22a3eef120b79258145b2feb5193b6478669961298e79bedca646e1a693a926154a5a7a1bd1cf0dedb742f917a747a1e388b234f2277\";\n\n // 十六进制处理相关常量\n static readonly EXPECTED_HEX_LENGTH = 32;\n static readonly OUTPUT_BYTE_COUNT = 8;\n static readonly HEX_CHUNK_SIZE = 2;\n\n // 载荷构建相关常量 (固定124字节)\n static readonly VERSION_BYTES = [119, 104, 96, 41];\n static readonly SEQUENCE_VALUE_MIN = 15;\n static readonly SEQUENCE_VALUE_MAX = 50;\n static readonly WINDOW_PROPS_LENGTH_MIN = 900;\n static readonly WINDOW_PROPS_LENGTH_MAX = 1200;\n\n // 校验和常量\n static readonly CHECKSUM_VERSION = 1;\n static readonly CHECKSUM_XOR_KEY = 115;\n static readonly CHECKSUM_FIXED_TAIL = [249, 65, 103, 103, 201, 181, 131, 99, 94, 7, 68, 250, 132, 21];\n\n // 环境指纹生成参数\n static readonly ENV_FINGERPRINT_XOR_KEY = 41;\n static readonly ENV_FINGERPRINT_TIME_OFFSET_MIN = 10;\n static readonly ENV_FINGERPRINT_TIME_OFFSET_MAX = 50;\n\n // 签名数据模板\n static readonly SIGNATURE_DATA_TEMPLATE = {\n x0: \"4.2.6\",\n x1: \"xhs-pc-web\",\n x2: \"Windows\",\n x3: \"\",\n x4: \"\"\n };\n\n // 前缀常量\n static readonly X3_PREFIX = \"mns0301_\";\n static readonly XYS_PREFIX = \"XYS_\";\n\n // Trace ID 生成常量\n static readonly HEX_CHARS = \"abcdef0123456789\";\n static readonly XRAY_TRACE_ID_SEQ_MAX = 8388607; // 2^23-1\n static readonly XRAY_TRACE_ID_TIMESTAMP_SHIFT = 23;\n static readonly B3_TRACE_ID_LENGTH = 16;\n\n // 新增 PUBLIC_USERAGENT\n static readonly PUBLIC_USERAGENT = \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36 Edg/142.0.0.0\";\n\n // 新增 SIGNATURE_XSCOMMON_TEMPLATE\n static readonly SIGNATURE_XSCOMMON_TEMPLATE = {\n s0: 5,\n s1: \"\",\n x0: \"1\",\n x1: \"4.2.6\",\n x2: \"Windows\",\n x3: \"xhs-pc-web\",\n x4: \"4.86.0\",\n x5: \"\",\n x6: \"\",\n x7: \"\",\n x8: \"\",\n x9: -596800761,\n x10: 0,\n x11: \"normal\"\n };\n}\n\n// ========== 位操作类 ==========\nexport class BitOperations {\n private config = CryptoConfig;\n\n normalizeTo32bit(value: number): number {\n return value & this.config.MAX_32BIT;\n }\n\n xorTransformArray(inputArray: number[]): Uint8Array {\n const keyBytes = this.hexStringToBytes(this.config.HEX_KEY);\n const result = new Uint8Array(inputArray.length);\n\n for (let i = 0; i < inputArray.length; i++) {\n result[i] = inputArray[i] ^ keyBytes[i % keyBytes.length];\n }\n\n return result;\n }\n\n private hexStringToBytes(hexString: string): number[] {\n const bytes: number[] = [];\n for (let i = 0; i < hexString.length; i += 2) {\n bytes.push(parseInt(hexString.substr(i, 2), 16));\n }\n return bytes;\n }\n}\n\n// ========== 随机数生成类 ==========\nexport class RandomGenerator {\n private config = CryptoConfig;\n\n generateRandomBytes(byteCount: number): number[] {\n const result: number[] = [];\n for (let i = 0; i < byteCount; i++) {\n result.push(Math.floor(Math.random() * (this.config.MAX_BYTE + 1)));\n }\n return result;\n }\n\n generateRandomByteInRange(minVal: number, maxVal: number): number {\n return Math.floor(Math.random() * (maxVal - minVal + 1)) + minVal;\n }\n\n generateRandomInt(): number {\n return Math.floor(Math.random() * (this.config.MAX_32BIT + 1));\n }\n\n generateB3TraceId(): string {\n let result = '';\n for (let i = 0; i < this.config.B3_TRACE_ID_LENGTH; i++) {\n result += this.config.HEX_CHARS[Math.floor(Math.random() * this.config.HEX_CHARS.length)];\n }\n return result;\n }\n\n generateXrayTraceId(timestamp?: number, seq?: number): string {\n if (timestamp === undefined) {\n timestamp = Date.now();\n }\n if (seq === undefined) {\n seq = Math.floor(Math.random() * (this.config.XRAY_TRACE_ID_SEQ_MAX + 1));\n }\n\n const part1 = ((timestamp << this.config.XRAY_TRACE_ID_TIMESTAMP_SHIFT) | seq).toString(16).padStart(16, '0');\n\n let part2 = '';\n for (let i = 0; i < 16; i++) {\n part2 += this.config.HEX_CHARS[Math.floor(Math.random() * this.config.HEX_CHARS.length)];\n }\n\n return part1 + part2;\n }\n}\n\n// ========== Base64编码器 ==========\nexport class Base64Encoder {\n private config = CryptoConfig;\n\n encode(dataToEncode: string): string {\n const dataBytes = Buffer.from(dataToEncode, 'utf-8');\n const standardEncodedString = dataBytes.toString('base64');\n\n let result = '';\n for (const char of standardEncodedString) {\n const index = this.config.STANDARD_BASE64_ALPHABET.indexOf(char);\n if (index !== -1) {\n result += this.config.CUSTOM_BASE64_ALPHABET[index];\n } else {\n result += char;\n }\n }\n\n return result;\n }\n\n decode(encodedString: string): string {\n let standardString = '';\n for (const char of encodedString) {\n const index = this.config.CUSTOM_BASE64_ALPHABET.indexOf(char);\n if (index !== -1) {\n standardString += this.config.STANDARD_BASE64_ALPHABET[index];\n } else {\n standardString += char;\n }\n }\n\n return Buffer.from(standardString, 'base64').toString('utf-8');\n }\n\n encodeX3(dataBytes: Uint8Array): string {\n const base64String = Buffer.from(dataBytes).toString('base64');\n\n let result = '';\n for (const char of base64String) {\n const index = this.config.STANDARD_BASE64_ALPHABET.indexOf(char);\n if (index !== -1) {\n result += this.config.X3_BASE64_ALPHABET[index];\n } else {\n result += char;\n }\n }\n\n return result;\n }\n\n decodeX3(encodedString: string): Uint8Array {\n let standardString = '';\n for (const char of encodedString) {\n const index = this.config.X3_BASE64_ALPHABET.indexOf(char);\n if (index !== -1) {\n standardString += this.config.STANDARD_BASE64_ALPHABET[index];\n } else {\n standardString += char;\n }\n }\n\n return new Uint8Array(Buffer.from(standardString, 'base64'));\n }\n}\n\n// ========== 请求签名验证器 ==========\nexport type HttpMethod = 'GET' | 'POST';\n\nexport class RequestSignatureValidator {\n static validateMethod(method: any): HttpMethod {\n if (typeof method !== 'string') {\n throw new TypeError(`method must be str, got ${typeof method}`);\n }\n\n const normalizedMethod = method.trim().toUpperCase() as HttpMethod;\n if (!['GET', 'POST'].includes(normalizedMethod)) {\n throw new Error(`method must be 'GET' or 'POST', got '${method}'`);\n }\n\n return normalizedMethod;\n }\n\n static validateUri(uri: any): string {\n if (typeof uri !== 'string') {\n throw new TypeError(`uri must be str, got ${typeof uri}`);\n }\n\n if (!uri.trim()) {\n throw new Error('uri cannot be empty');\n }\n\n return uri.trim();\n }\n\n static validateA1Value(a1Value: any): string {\n if (typeof a1Value !== 'string') {\n throw new TypeError(`a1_value must be str, got ${typeof a1Value}`);\n }\n\n if (!a1Value.trim()) {\n throw new Error('a1_value cannot be empty');\n }\n\n return a1Value.trim();\n }\n\n static validateXsecAppid(xsecAppid: any): string {\n if (typeof xsecAppid !== 'string') {\n throw new TypeError(`xsec_appid must be str, got ${typeof xsecAppid}`);\n }\n\n if (!xsecAppid.trim()) {\n throw new Error('xsec_appid cannot be empty');\n }\n\n return xsecAppid.trim();\n }\n\n static validatePayload(payload: any): Record<string, any> | null {\n if (payload !== null && (typeof payload !== 'object' || Array.isArray(payload))) {\n throw new TypeError(`payload must be dict or None, got ${typeof payload}`);\n }\n\n if (payload !== null) {\n for (const key in payload) {\n if (typeof key !== 'string') {\n throw new TypeError(`payload keys must be str, got ${typeof key} for key '${key}'`);\n }\n }\n }\n\n return payload;\n }\n}\n\n// ========== 加密处理器 ==========\nexport class CryptoProcessor {\n public config = CryptoConfig;\n public bitOps = new BitOperations();\n public b64encoder = new Base64Encoder();\n public randomGen = new RandomGenerator();\n\n private intToLeBytes(val: number, length: number = 4): number[] {\n const arr: number[] = [];\n for (let i = 0; i < length; i++) {\n arr.push(val & 0xFF);\n val >>>= 8;\n }\n return arr;\n }\n\n private envFingerprintA(ts: number, xorKey: number): number[] {\n const data: number[] = [];\n\n // 小端序编码时间戳\n for (let i = 0; i < 8; i++) {\n data.push((ts >>> (i * 8)) & 0xFF);\n }\n\n // 计算校验和\n const sum1 = data.slice(1, 5).reduce((a, b) => a + b, 0);\n const sum2 = data.slice(5, 8).reduce((a, b) => a + b, 0);\n const mark = ((sum1 & 0xFF) + sum2) & 0xFF;\n data[0] = mark;\n\n // XOR变换\n return data.map(b => b ^ xorKey);\n }\n\n private envFingerprintB(ts: number): number[] {\n const data: number[] = [];\n for (let i = 0; i < 8; i++) {\n data.push((ts >>> (i * 8)) & 0xFF);\n }\n return data;\n }\n\n buildPayloadArray(\n hexParameter: string,\n a1Value: string,\n appIdentifier: string = \"xhs-pc-web\",\n stringParam: string = \"\",\n timestamp?: number\n ): number[] {\n const payload: number[] = [];\n\n // 固定头\n payload.push(...this.config.VERSION_BYTES);\n\n // 随机种子\n const seed = this.randomGen.generateRandomInt();\n const seedBytes = this.intToLeBytes(seed, 4);\n payload.push(...seedBytes);\n const seedByte0 = seedBytes[0];\n\n // 时间戳处理\n if (timestamp === undefined) {\n timestamp = Date.now() / 1000;\n }\n const tsMs = Math.floor(timestamp * 1000);\n\n payload.push(...this.envFingerprintA(tsMs, this.config.ENV_FINGERPRINT_XOR_KEY));\n\n const timeOffset = this.randomGen.generateRandomByteInRange(\n this.config.ENV_FINGERPRINT_TIME_OFFSET_MIN,\n this.config.ENV_FINGERPRINT_TIME_OFFSET_MAX\n );\n payload.push(...this.envFingerprintB(tsMs - timeOffset * 1000));\n\n // 序列值和窗口属性\n const sequenceValue = this.randomGen.generateRandomByteInRange(\n this.config.SEQUENCE_VALUE_MIN,\n this.config.SEQUENCE_VALUE_MAX\n );\n payload.push(...this.intToLeBytes(sequenceValue, 4));\n\n const windowPropsLength = this.randomGen.generateRandomByteInRange(\n this.config.WINDOW_PROPS_LENGTH_MIN,\n this.config.WINDOW_PROPS_LENGTH_MAX\n );\n payload.push(...this.intToLeBytes(windowPropsLength, 4));\n\n // URI 长度\n const uriLength = Buffer.from(stringParam, 'utf-8').length;\n payload.push(...this.intToLeBytes(uriLength, 4));\n\n // MD5 XOR 段\n const md5Bytes = Buffer.from(hexParameter, 'hex');\n for (let i = 0; i < 8; i++) {\n payload.push(md5Bytes[i] ^ seedByte0);\n }\n\n // A1 长度和内容 (固定52字节)\n payload.push(52);\n const a1Bytes = Buffer.from(a1Value, 'utf-8');\n for (let i = 0; i < 52; i++) {\n payload.push(i < a1Bytes.length ? a1Bytes[i] : 0);\n }\n\n // 源长度和内容 (固定10字节)\n payload.push(10);\n const sourceBytes = Buffer.from(appIdentifier, 'utf-8');\n for (let i = 0; i < 10; i++) {\n payload.push(i < sourceBytes.length ? sourceBytes[i] : 0);\n }\n\n // 尾部校验\n payload.push(1);\n payload.push(this.config.CHECKSUM_VERSION);\n payload.push(seedByte0 ^ this.config.CHECKSUM_XOR_KEY);\n payload.push(...this.config.CHECKSUM_FIXED_TAIL);\n\n return payload;\n }\n}\n\n// ========== CRC32 加密类 ==========\nexport class CRC32 {\n private static readonly CRC32_TABLE: number[] = (() => {\n const table: number[] = [];\n for (let i = 0; i < 256; i++) {\n let crc = i;\n for (let j = 0; j < 8; j++) {\n crc = (crc & 1) ? (0xEDB88320 ^ (crc >>> 1)) : (crc >>> 1);\n }\n table.push(crc >>> 0);\n }\n return table;\n })();\n\n static crc32JsInt(input: string | number[] | Uint8Array, signed: boolean = true): number {\n let crc = 0xFFFFFFFF;\n const data = typeof input === 'string' ? this.stringToBytes(input) : input;\n\n for (const byte of data) {\n const index = (crc ^ byte) & 0xFF;\n crc = (this.CRC32_TABLE[index] ^ (crc >>> 8)) >>> 0;\n }\n\n crc = (crc ^ 0xFFFFFFFF) >>> 0;\n\n if (signed) {\n return crc > 0x7FFFFFFF ? crc - 0x100000000 : crc;\n }\n return crc;\n }\n\n private static stringToBytes(str: string): number[] {\n const bytes: number[] = [];\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n if (code <= 0xFF) {\n bytes.push(code);\n } else {\n // JS 字符串模式:只取低8位\n bytes.push(code & 0xFF);\n }\n }\n return bytes;\n }\n}\n\n// ========== 指纹数据常量 ==========\nexport class FingerprintData {\n // GPU 供应商列表\n static readonly GPU_VENDORS = [\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 400 (0x00000166) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 4400 (0x00001112) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 4600 (0x00000412) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 520 (0x1912) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 530 (0x00001912) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 550 (0x00001512) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 6000 (0x1606) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(TM) Graphics 540 (0x1912) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(TM) Graphics 550 (0x1913) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(TM) Plus Graphics 640 (0x161C) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 600 (0x3E80) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 620 (0x00003EA0) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 630 (0x00003E9B) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 655 (0x00009BC8) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(R) Xe Graphics (0x000046A8) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(R) Xe Graphics (0x00009A49) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(R) Xe MAX Graphics (0x00009BC0) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (Intel)|ANGLE (Intel, Intel Arc A370M (0x0000AF51) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel Arc A380 (0x0000AF41) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel Arc A380M (0x0000AF5E) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel Arc A550 (0x0000AF42) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel Arc A770 (0x0000AF43) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel Arc A770M (0x0000AF50) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) Graphics (RPL‑P GT1) (0x0000A702) OpenGL 4.6)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) UHD Graphics 770 (0x00004680) OpenGL 4.6)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) HD Graphics 4400 (0x00001122) OpenGL 4.6)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) Graphics (ADL‑S GT1) (0x0000A0A1) OpenGL 4.6)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) Graphics (RKL GT1) (0x0000A9A1) OpenGL 4.6)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) UHD Graphics (CML GT2) (0x00009A14) OpenGL 4.6)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 3000 (0x00001022) Direct3D9Ex vs_3_0 ps_3_0, igdumd64.dll)\", // noqa: E501\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics Family (0x00000A16) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris Pro OpenGL Engine, OpenGL 4.1)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(TM) Plus Graphics 645 (0x1616) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(TM) Plus Graphics 655 (0x161E) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 730 (0x0000A100) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 805 (0x0000B0A0) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Vega 3 Graphics (0x000015E0) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Vega 8 Graphics (0x000015D8) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Vega 11 Graphics (0x000015DD) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Graphics (0x00001636) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 5500 XT Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 560 (0x000067EF) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 570 (0x000067DF) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 580 2048SP (0x00006FDF) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 590 (0x000067FF) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6600 (0x000073FF) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6600 XT (0x000073FF) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6650 XT Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6700 XT (0x000073DF) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6800 (0x000073BF) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6900 XT (0x000073C2) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 7700 XT Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Pro 5300M OpenGL Engine, OpenGL 4.1)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Pro 5500 XT OpenGL Engine, OpenGL 4.1)\",\n \"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon R7 370 Series (0x00006811) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (AMD)|ANGLE (AMD, ATI Technologies Inc. AMD Radeon RX Vega 64 OpenGL Engine, OpenGL 4.1)\",\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce GTX 1050 (0x00001C81) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce GTX 1050 Ti (0x00001C8C) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce GTX 1060 6GB (0x000010DE) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce GTX 1070 (0x00001B81) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce GTX 1080 (0x00001B80) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 2060 (0x00001F06) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 2060 SUPER (0x00001F06) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 2070 (0x00001F10) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 2070 SUPER (0x00001F10) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 (0x0000250F) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 Ti (0x00002489) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3070 (0x00002488) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3070 Ti (0x000028A5) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3080 (0x00002206) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3080 Ti (0x00002208) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3090 (0x00002204) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4060 (0x00002882) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4060 Ti (0x00002803) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4070 (0x00002786) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4070 Ti (0x00002857) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4080 (0x00002819) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4090 (0x00002684) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA Quadro RTX 5000 Ada Generation (0x000026B2) Direct3D11 vs_5_0 ps_5_0, D3D11)\", // noqa: E501\n \"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA Quadro P400 (0x00001CB3) Direct3D11 vs_5_0 ps_5_0, D3D11)\",\n \"Google Inc. (Google)|ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver)\", // noqa: E501\n \"Google Inc. (Google)|ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero)), SwiftShader driver)\",\n \"Google Inc. (Google)|ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device), SwiftShader driver)\",\n ];\n\n // 屏幕分辨率配置\n static readonly SCREEN_RESOLUTIONS = {\n resolutions: [\"1366;768\", \"1600;900\", \"1920;1080\", \"2560;1440\", \"3840;2160\", \"7680;4320\"],\n weights: [0.25, 0.15, 0.35, 0.15, 0.08, 0.02]\n };\n\n // 颜色深度选项\n static readonly COLOR_DEPTH_OPTIONS = {\n values: [16, 24, 30, 32],\n weights: [0.05, 0.6, 0.05, 0.3]\n };\n\n // 设备内存选项\n static readonly DEVICE_MEMORY_OPTIONS = {\n values: [1, 2, 4, 8, 12, 16],\n weights: [0.10, 0.25, 0.4, 0.2, 0.03, 0.01]\n };\n\n // CPU 核心数选项\n static readonly CORE_OPTIONS = {\n values: [2, 4, 6, 8, 12, 16, 24, 32],\n weights: [0.1, 0.4, 0.2, 0.15, 0.08, 0.04, 0.02, 0.01]\n };\n\n // 浏览器插件\n static readonly BROWSER_PLUGINS = \"PDF Viewer,Chrome PDF Viewer,Chromium PDF Viewer,Microsoft Edge PDF Viewer,WebKit built-in PDF\";\n\n // Canvas 哈希\n static readonly CANVAS_HASH = \"742cc32c\";\n\n // 语音哈希选项\n static readonly VOICE_HASH_OPTIONS = \"10311144241322244122\";\n\n // 字体字符串\n static readonly FONTS = 'system-ui, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\", -apple-system, \"Segoe UI\", Roboto, Ubuntu, Cantarell, \"Noto Sans\", sans-serif, BlinkMacSystemFont, \"Helvetica Neue\", Arial, \"PingFang SC\", \"PingFang TC\", \"PingFang HK\", \"Microsoft Yahei\", \"Microsoft JhengHei\"';\n}\n\n// ========== 指纹生成器辅助函数 ==========\nexport class FingerprintHelpers {\n /**\n * 加权随机选择\n */\n static weightedRandomChoice<T>(options: T[], weights: number[]): T {\n const totalWeight = weights.reduce((sum, weight) => sum + weight, 0);\n let random = Math.random() * totalWeight;\n\n for (let i = 0; i < options.length; i++) {\n random -= weights[i];\n if (random <= 0) {\n return options[i];\n }\n }\n return options[options.length - 1];\n }\n\n /**\n * 获取随机渲染器信息\n */\n static getRendererInfo(): { vendor: string; renderer: string } {\n const rendererStr = FingerprintData.GPU_VENDORS[Math.floor(Math.random() * FingerprintData.GPU_VENDORS.length)];\n const [vendor, renderer] = rendererStr.split('|');\n return { vendor, renderer };\n }\n\n /**\n * 获取屏幕配置\n */\n static getScreenConfig(): { width: number; height: number; availWidth: number; availHeight: number } {\n const resolutionStr = this.weightedRandomChoice(\n FingerprintData.SCREEN_RESOLUTIONS.resolutions,\n FingerprintData.SCREEN_RESOLUTIONS.weights\n );\n const [widthStr, heightStr] = resolutionStr.split(';');\n const width = parseInt(widthStr);\n const height = parseInt(heightStr);\n\n let availWidth: number, availHeight: number;\n\n if (Math.random() > 0.5) {\n availWidth = width - parseInt(String(this.weightedRandomChoice([0, 30, 60, 80], [0.1, 0.4, 0.3, 0.2])));\n availHeight = height;\n } else {\n availWidth = width;\n availHeight = height - parseInt(String(this.weightedRandomChoice([30, 60, 80, 100], [0.2, 0.5, 0.2, 0.1])));\n }\n\n return { width, height, availWidth, availHeight };\n }\n\n /**\n * 生成 Canvas 哈希\n */\n static generateCanvasHash(): string {\n return FingerprintData.CANVAS_HASH;\n }\n\n /**\n * 生成 WebGL 哈希\n */\n static generateWebglHash(): string {\n return crypto.createHash('md5').update(crypto.randomBytes(32)).digest('hex');\n }\n}\n\n// ========== ARC4 加密实现 ==========\nexport class ARC4 {\n private s: number[] = [];\n\n constructor(key: Uint8Array) {\n // 初始化 S 盒\n for (let i = 0; i < 256; i++) {\n this.s[i] = i;\n }\n\n // 密钥调度算法 (KSA)\n let j = 0;\n for (let i = 0; i < 256; i++) {\n j = (j + this.s[i] + key[i % key.length]) % 256;\n [this.s[i], this.s[j]] = [this.s[j], this.s[i]];\n }\n }\n\n /**\n * 加密数据\n */\n encrypt(data: Uint8Array): Uint8Array {\n const result = new Uint8Array(data.length);\n let i = 0, j = 0;\n\n for (let k = 0; k < data.length; k++) {\n i = (i + 1) % 256;\n j = (j + this.s[i]) % 256;\n [this.s[i], this.s[j]] = [this.s[j], this.s[i]];\n\n const keyByte = this.s[(this.s[i] + this.s[j]) % 256];\n result[k] = data[k] ^ keyByte;\n }\n\n return result;\n }\n}\n\n// ========== 指纹生成器 ==========\nexport class FingerprintGenerator {\n private config = CryptoConfig;\n private b1Key: Uint8Array;\n private encoder: Base64Encoder;\n\n constructor() {\n this.b1Key = new TextEncoder().encode(\"xhswebmplfbt\");\n this.encoder = new Base64Encoder();\n }\n\n /**\n * 生成完整的浏览器指纹\n * 完全对应 Python 版本的实现\n */\n generate(cookies: Record<string, any>, userAgent: string): Record<string, any> {\n const cookieString = Object.entries(cookies).map(([k, v]) => `${k}=${v}`).join('; ');\n const screenConfig = FingerprintHelpers.getScreenConfig();\n const isIncognitoMode = FingerprintHelpers.weightedRandomChoice([\"true\", \"false\"], [0.95, 0.05]);\n const { vendor, renderer } = FingerprintHelpers.getRendererInfo();\n\n const x78Y = Math.floor(Math.random() * (2450 - 2350 + 1)) + 2350;\n\n const fp = {\n x1: userAgent,\n x2: \"false\",\n x3: \"zh-CN\",\n x4: String(FingerprintHelpers.weightedRandomChoice(\n FingerprintData.COLOR_DEPTH_OPTIONS.values,\n FingerprintData.COLOR_DEPTH_OPTIONS.weights\n )),\n x5: String(FingerprintHelpers.weightedRandomChoice(\n FingerprintData.DEVICE_MEMORY_OPTIONS.values,\n FingerprintData.DEVICE_MEMORY_OPTIONS.weights\n )),\n x6: \"24\",\n x7: `${vendor},${renderer}`,\n x8: String(FingerprintHelpers.weightedRandomChoice(\n FingerprintData.CORE_OPTIONS.values,\n FingerprintData.CORE_OPTIONS.weights\n )),\n x9: `${screenConfig.width};${screenConfig.height}`,\n x10: `${screenConfig.availWidth};${screenConfig.availHeight}`,\n x11: \"-480\",\n x12: \"Asia/Shanghai\",\n x13: isIncognitoMode,\n x14: isIncognitoMode,\n x15: isIncognitoMode,\n x16: \"false\",\n x17: \"false\",\n x18: \"un\",\n x19: \"Win32\",\n x20: \"\",\n x21: FingerprintData.BROWSER_PLUGINS,\n x22: FingerprintHelpers.generateWebglHash(),\n x23: \"false\",\n x24: \"false\",\n x25: \"false\",\n x26: \"false\",\n x27: \"false\",\n x28: \"0,false,false\",\n x29: \"4,7,8\",\n x30: \"swf object not loaded\",\n x33: \"0\",\n x34: \"0\",\n x35: \"0\",\n x36: String(Math.floor(Math.random() * 20) + 1),\n x37: \"0|0|0|0|0|0|0|0|0|1|0|0|0|0|0|0|0|0|1|0|0|0|0|0\",\n x38: \"0|0|1|0|1|0|0|0|0|0|1|0|1|0|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0\",\n x39: 0,\n x40: \"0\",\n x41: \"0\",\n x42: \"3.4.4\",\n x43: FingerprintHelpers.generateCanvasHash(),\n x44: String(Math.floor(Date.now())),\n x45: \"__SEC_CAV__1-1-1-1-1|__SEC_WSA__|\",\n x46: \"false\",\n x47: \"1|0|0|0|0|0\",\n x48: \"\",\n x49: \"{list:[],type:}\",\n x50: \"\",\n x51: \"\",\n x52: \"\",\n x53: crypto.createHash('md5').update(crypto.randomBytes(32)).digest('hex'),\n x54: FingerprintData.VOICE_HASH_OPTIONS,\n x55: \"380,380,360,400,380,400,420,380,400,400,360,360,440,420\",\n x56: `${vendor}|${renderer}|${FingerprintHelpers.generateWebglHash()}|35`,\n x57: cookieString,\n x58: \"180\",\n x59: \"2\",\n x60: \"63\",\n x61: \"1291\",\n x62: \"2047\",\n x63: \"0\",\n x64: \"0\",\n x65: \"0\",\n x66: {\n referer: \"\",\n location: \"https://www.xiaohongshu.com/explore\",\n frame: 0\n },\n x67: \"1|0\",\n x68: \"0\",\n x69: \"326|1292|30\",\n x70: [\"location\"],\n x71: \"true\",\n x72: \"complete\",\n x73: \"1191\",\n x74: \"0|0|0\",\n x75: \"Google Inc.\",\n x76: \"true\",\n x77: \"1|1|1|1|1|1|1|1|1|1\",\n x78: {\n x: 0,\n y: x78Y,\n left: 0,\n right: 290.828125,\n bottom: x78Y + 18,\n height: 18,\n top: x78Y,\n width: 290.828125,\n font: FingerprintData.FONTS\n },\n x79: \"144|599565058866\",\n x80: \"1|[object FileSystemDirectoryHandle]\",\n x31: \"124.04347527516074\",\n x82: \"_0x17a2|_0x1954\"\n };\n\n return fp;\n }\n\n /**\n * 生成 b1 参数\n * 完全对应 Python 版本的实现\n */\n generateB1(fp: Record<string, any>): string {\n const b1Fp = {\n x33: fp.x33,\n x34: fp.x34,\n x35: fp.x35,\n x36: fp.x36,\n x37: fp.x37,\n x38: fp.x38,\n x39: fp.x39,\n x42: fp.x42,\n x43: fp.x43,\n x44: fp.x44,\n x45: fp.x45,\n x46: fp.x46,\n x48: fp.x48,\n x49: fp.x49,\n x50: fp.x50,\n x51: fp.x51,\n x52: fp.x52,\n x82: fp.x82\n };\n\n const b1Json = JSON.stringify(b1Fp, null, 0).replace(/\\s+/g, '');\n\n // 使用 ARC4 加密\n const cipher = new ARC4(this.b1Key);\n const ciphertext = cipher.encrypt(new TextEncoder().encode(b1Json));\n\n // 转换为 Latin1 字符串并进行 URL 编码\n let latin1String = '';\n for (let i = 0; i < ciphertext.length; i++) {\n latin1String += String.fromCharCode(ciphertext[i]);\n }\n\n const encodedUrl = encodeURIComponent(latin1String).replace(/[!'()*~_-]/g, (c) => {\n return c; // 保持这些字符不编码\n });\n\n // 处理编码结果\n const b: number[] = [];\n const parts = encodedUrl.split('%').slice(1); // 去掉第一个空元素\n\n for (const part of parts) {\n const chars = part.split('');\n if (chars.length >= 2) {\n b.push(parseInt(chars.slice(0, 2).join(''), 16));\n for (let i = 2; i < chars.length; i++) {\n b.push(chars[i].charCodeAt(0));\n }\n }\n }\n\n const b1 = this.encoder.encode(JSON.stringify(b));\n return b1;\n }\n\n /**\n * 更新指纹\n * 完全对应 Python 版本的实现\n */\n update(fp: Record<string, any>, cookies: Record<string, any>, url: string): void {\n const cookieString = Object.entries(cookies).map(([k, v]) => `${k}=${v}`).join('; ');\n\n fp.x39 = 0;\n fp.x44 = String(Math.floor(Date.now()));\n fp.x57 = cookieString;\n fp.x66 = {\n referer: \"https://www.xiaohongshu.com/explore\",\n location: url,\n frame: 0\n };\n }\n}\n\n// ========== x-s-common 签名器 ==========\nexport class XsCommonSigner {\n private config = CryptoConfig;\n private fpGenerator: FingerprintGenerator;\n private encoder: Base64Encoder;\n\n constructor() {\n this.fpGenerator = new FingerprintGenerator();\n this.encoder = new Base64Encoder();\n }\n\n sign(cookieDict: Record<string, any>): string {\n if (!cookieDict.a1) {\n throw new Error(\"Missing 'a1' in cookies\");\n }\n\n const a1Value = cookieDict.a1;\n const fingerprint = this.fpGenerator.generate(cookieDict, this.config.PUBLIC_USERAGENT);\n const b1 = this.fpGenerator.generateB1(fingerprint);\n const x9 = CRC32.crc32JsInt(b1, true);\n\n const signStruct = {\n s0: 5,\n s1: \"\",\n x0: \"1\",\n x1: \"4.2.6\",\n x2: \"Windows\",\n x3: \"xhs-pc-web\",\n x4: \"4.86.0\",\n x5: a1Value,\n x6: \"\",\n x7: \"\",\n x8: b1,\n x9: x9,\n x10: 0,\n x11: \"normal\"\n };\n\n const signJson = JSON.stringify(signStruct);\n return this.encoder.encode(signJson);\n }\n}\n\n// ========== 主客户端类 ==========\nexport class Xhshow {\n private cryptoProcessor = new CryptoProcessor();\n private xsCommonSigner = new XsCommonSigner();\n\n private buildContentString(\n method: string,\n uri: string,\n payload: Record<string, any> | null = null\n ): string {\n payload = payload || {};\n\n if (method.toUpperCase() === 'POST') {\n // 使用紧凑格式的 JSON,与 Python json.dumps(separators=(\",\", \":\"), ensure_ascii=False) 一致\n return uri + JSON.stringify(payload);\n } else {\n if (Object.keys(payload).length === 0) {\n return uri;\n } else {\n const params = Object.entries(payload).map(([key, value]) => {\n let valueStr: string;\n if (Array.isArray(value)) {\n valueStr = value.map(v => String(v)).join(',');\n } else {\n valueStr = value !== null ? String(value) : '';\n }\n // XHS只编码等号为%3D\n valueStr = valueStr.replace(/=/g, '%3D');\n return `${key}=${valueStr}`;\n });\n return `${uri}?${params.join('&')}`;\n }\n }\n }\n\n private generateDValue(content: string): string {\n return crypto.createHash('md5').update(content, 'utf-8').digest('hex');\n }\n\n private buildSignature(\n dValue: string,\n a1Value: string,\n xsecAppid: string = \"xhs-pc-web\",\n stringParam: string = \"\",\n timestamp?: number\n ): string {\n const payloadArray = this.cryptoProcessor.buildPayloadArray(\n dValue, a1Value, xsecAppid, stringParam, timestamp\n );\n\n const xorResult = this.cryptoProcessor.bitOps.xorTransformArray(payloadArray);\n\n return this.cryptoProcessor.b64encoder.encodeX3(xorResult.slice(0, 124));\n }\n\n signXs(\n method: HttpMethod,\n uri: string,\n a1Value: string,\n xsecAppid: string = \"xhs-pc-web\",\n payload: Record<string, any> | null = null,\n timestamp?: number\n ): string {\n const validatedMethod = RequestSignatureValidator.validateMethod(method);\n const validatedUri = RequestSignatureValidator.validateUri(uri);\n const validatedA1Value = RequestSignatureValidator.validateA1Value(a1Value);\n const validatedXsecAppid = RequestSignatureValidator.validateXsecAppid(xsecAppid);\n const validatedPayload = RequestSignatureValidator.validatePayload(payload);\n\n // 深拷贝模板,避免修改原始配置对象\n const signatureData = JSON.parse(JSON.stringify(this.cryptoProcessor.config.SIGNATURE_DATA_TEMPLATE));\n\n const content = this.buildContentString(validatedMethod, validatedUri, validatedPayload);\n\n const dValue = this.generateDValue(content);\n signatureData.x3 = this.cryptoProcessor.config.X3_PREFIX + this.buildSignature(\n dValue, validatedA1Value, validatedXsecAppid, content, timestamp\n );\n\n // JSON.stringify 默认就是紧凑格式,与 Python 的 separators=(\",\", \":\") 一致\n const signatureJson = JSON.stringify(signatureData);\n return this.cryptoProcessor.config.XYS_PREFIX + this.cryptoProcessor.b64encoder.encode(signatureJson);\n }\n\n signXsGet(\n uri: string,\n a1Value: string,\n xsecAppid: string = \"xhs-pc-web\",\n params: Record<string, any> | null = null,\n timestamp?: number\n ): string {\n return this.signXs('GET', uri, a1Value, xsecAppid, params, timestamp);\n }\n\n signXsPost(\n uri: string,\n a1Value: string,\n xsecAppid: string = \"xhs-pc-web\",\n payload: Record<string, any> | null = null,\n timestamp?: number\n ): string {\n return this.signXs('POST', uri, a1Value, xsecAppid, payload, timestamp);\n }\n\n signXsCommon(cookieDict: Record<string, any> | string): string {\n const cookies = this.parseCookies(cookieDict);\n return this.xsCommonSigner.sign(cookies);\n }\n\n signXsc(cookieDict: Record<string, any> | string): string {\n return this.signXsCommon(cookieDict);\n }\n\n private parseCookies(cookies: Record<string, any> | string): Record<string, any> {\n if (typeof cookies === 'string') {\n const cookieObj: Record<string, any> = {};\n cookies.split(';').forEach(item => {\n const [key, value] = item.trim().split('=');\n if (key && value) {\n cookieObj[key] = value;\n }\n });\n return cookieObj;\n }\n return cookies;\n }\n\n signHeaders(\n method: HttpMethod,\n uri: string,\n cookies: Record<string, any> | string,\n xsecAppid: string = \"xhs-pc-web\",\n params?: Record<string, any> | null,\n payload?: Record<string, any> | null,\n timestamp?: number\n ): Record<string, string> {\n if (timestamp === undefined) {\n timestamp = Date.now() / 1000;\n }\n\n const methodUpper = method.toUpperCase();\n\n // 验证方法和参数\n let requestData: Record<string, any> | null = null;\n if (methodUpper === 'GET') {\n if (payload !== undefined && payload !== null) {\n throw new Error(\"GET requests must use 'params', not 'payload'\");\n }\n requestData = params || null;\n } else if (methodUpper === 'POST') {\n if (params !== undefined && params !== null) {\n throw new Error(\"POST requests must use 'payload', not 'params'\");\n }\n requestData = payload || null;\n } else {\n throw new Error(`Unsupported method: ${method}`);\n }\n\n const cookieDict = this.parseCookies(cookies);\n\n const a1Value = cookieDict.a1;\n if (!a1Value) {\n throw new Error(\"Missing 'a1' in cookies\");\n }\n\n const xS = this.signXs(methodUpper as HttpMethod, uri, a1Value, xsecAppid, requestData, timestamp);\n const xSCommon = this.signXsCommon(cookieDict);\n const xT = this.getXT(timestamp);\n const xB3Traceid = this.getB3TraceId();\n const xXrayTraceid = this.getXrayTraceId(Math.floor(timestamp * 1000));\n\n return {\n 'x-s': xS,\n 'x-s-common': xSCommon,\n 'x-t': xT.toString(),\n 'x-b3-traceid': xB3Traceid,\n 'x-xray-traceid': xXrayTraceid\n };\n }\n\n signHeadersGet(\n uri: string,\n cookies: Record<string, any> | string,\n xsecAppid: string = \"xhs-pc-web\",\n params?: Record<string, any> | null,\n timestamp?: number\n ): Record<string, string> {\n return this.signHeaders('GET', uri, cookies, xsecAppid, params, undefined, timestamp);\n }\n\n signHeadersPost(\n uri: string,\n cookies: Record<string, any> | string,\n xsecAppid: string = \"xhs-pc-web\",\n payload?: Record<string, any> | null,\n timestamp?: number\n ): Record<string, string> {\n return this.signHeaders('POST', uri, cookies, xsecAppid, undefined, payload, timestamp);\n }\n\n decodeX3(x3Signature: string): Uint8Array {\n if (x3Signature.startsWith(this.cryptoProcessor.config.X3_PREFIX)) {\n x3Signature = x3Signature.substring(this.cryptoProcessor.config.X3_PREFIX.length);\n }\n\n const decodedBytes = this.cryptoProcessor.b64encoder.decodeX3(x3Signature);\n return this.cryptoProcessor.bitOps.xorTransformArray(Array.from(decodedBytes));\n }\n\n decodeXs(xsSignature: string): Record<string, any> {\n if (xsSignature.startsWith(this.cryptoProcessor.config.XYS_PREFIX)) {\n xsSignature = xsSignature.substring(this.cryptoProcessor.config.XYS_PREFIX.length);\n }\n\n const jsonString = this.cryptoProcessor.b64encoder.decode(xsSignature);\n try {\n return JSON.parse(jsonString);\n } catch (e) {\n throw new Error(`Invalid signature: JSON decode failed - ${e}`);\n }\n }\n\n getB3TraceId(): string {\n return this.cryptoProcessor.randomGen.generateB3TraceId();\n }\n\n getXrayTraceId(timestamp?: number, seq?: number): string {\n return this.cryptoProcessor.randomGen.generateXrayTraceId(timestamp, seq);\n }\n\n getXT(timestamp?: number): number {\n if (timestamp === undefined) {\n timestamp = Date.now() / 1000;\n }\n return Math.floor(timestamp * 1000);\n }\n\n buildUrl(baseUrl: string, params?: Record<string, any>): string {\n if (!params || Object.keys(params).length === 0) {\n return baseUrl;\n }\n\n const queryString = Object.entries(params)\n .map(([key, value]) => {\n const valueStr = Array.isArray(value) ? value.join(',') : String(value);\n return `${key}=${encodeURIComponent(valueStr)}`;\n })\n .join('&');\n\n return `${baseUrl}?${queryString}`;\n }\n\n buildJsonBody(payload: Record<string, any>): string {\n // JSON.stringify 默认就是紧凑格式,与 Python json.dumps(separators=(\",\", \":\"), ensure_ascii=False) 一致\n return JSON.stringify(payload);\n }\n}\n\n// 导出默认实例\nexport default new Xhshow();\n\n","import {AutomateTask, type CommonAction, response, success} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams, Xiaohongshu} from \"../../types\";\nimport { Http } from \"../../utils/http\";\nimport { Xhshow } from \"../../utils/xhsXsEncrypt\";\n\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport interface SearchXiaohongshuTopicListParams extends ActiomCommonParams {\n\tsearchValue: string;\n}\n\nexport type PublishAction = CommonAction<SearchXiaohongshuTopicListParams, Xiaohongshu.Topic[]>;\n\nexport const searchXiaohongshuTopicList: PublishAction = async (_task, params) => {\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com\",\n origin: \"https://creator.xiaohongshu.com\",\n };\n \n const args: AxiosProxyParams = [\n { headers },\n _task.logger, \n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\tif (!a1Cookie) return { code: 400, message: \"账号数据异常,请重新绑定账号后重试。\", data: [] };\n \n\tconst topicData = {\n\t\tkeyword: params.searchValue,\n\t\tsuggest_topic_request: {\n\t\t\ttitle: \"\",\n\t\t\tdesc: `#${params.searchValue}`,\n\t\t},\n\t\tpage: {\n\t\t\tpage_size: 20,\n\t\t\tpage: 1,\n\t\t},\n\t};\n\n\tconst fatchTopic = \"/web_api/sns/v1/search/topic\";\n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n \n const fatchTopicXsHeader = xsEncrypt.signHeadersPost(fatchTopic, recordCookie, \"xhs-pc-web\", topicData);\n\n const result = await http.api<{ code: number; msg: string; data: { topic_info_dtos: Xiaohongshu.Topic[] } }>({\n method: \"post\",\n url: \"https://edith.xiaohongshu.com/web_api/sns/v1/search/topic\",\n data: topicData,\n headers: fatchTopicXsHeader,\n defaultErrorMsg: \"话题搜索异常,请稍后重试。\",\n },{ retries: 3, retryDelay: 20, timeout: 3000 })\n\n\tconst isSuccess = result.code === 0;\n\tconst message = `获取话题${isSuccess ? \"成功\" : `失败,原因:${result.msg}`}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n\tconst data = isSuccess ? result.data.topic_info_dtos : [];\n\n\treturn response(isSuccess ? 0 : 400, message, data);\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\n\nimport type {AxiosProxyParams, Toutiao} from \"../../types\";\nimport { extractImgTag, replaceImgSrc, TimeFormatter } from \"../../utils\";\nimport { Http } from \"../../utils/http\";\nimport { COVER_TYPE, type PublishAction, getAddTypeValue } from \"./index\";\nconst GenAB = require(\"../../utils/ttABEncrypt\") as (headers: string, data: string) => string;\n\ninterface CommonResponse<T = unknown> {\n\tdata: T;\n proxyInfo?: Record<string, unknown>\n\tcode: number;\n\tmessage: string;\n}\n\nconst errnoMap: Record<number, string | string[]> = {\n\t20004020: \"图片上传异常,请重新绑定账号后同步。\",\n\t7115: \"正文图片和封面图片推荐jpg、png格式。\",\n\t100006: \"文章同步异常,请重新绑定账号后重试。\",\n\t3101: [\n\t\t\"今日头条号发布次数已达上限,请明天再试。\",\n\t\t\"头条账号状态异常,需前往头条号完成实名认证。\",\n\t\t\"头条账号状态异常,资料审核未通过,请前往头条号查看。\",\n\t],\n\t2007: \"文章发布失败,声明原创要求正文字数不少于 300 字,请修改后重试。\",\n\t2010: \"无头条广告权限,请修改后重试。\",\n\t3103: \"今日头条号发布次数已达上限,请明天再试。\",\n\t1053: \"正文图片和封面图片推荐jpg、png格式。\",\n\t1050: \"图片上传失败,请重试上传。\",\n\t2005: \"账号无【申明原创】权限,请关闭申明后重试。\",\n\t100004: \"用户未登录或登陆已过期,请重新登陆后重试。\"\n};\nconst generatorFormData = (data: Record<string, unknown>) => {\n\treturn Object.entries(data)\n\t\t.map(([key, value]) => {\n\t\t\tconst encodedKey = encodeURIComponent(key);\n\t\t\tconst encodedValue = encodeURIComponent(String(value));\n\t\t\treturn `${encodedKey}=${encodedValue}`;\n\t\t})\n\t\t.join('&');\n};\nconst get3101DetailError = (errorList: string[], message: string, saveType: string) => {\n\tlet error = \"\";\n\tif (message?.includes(\"当日发文\")) {\n\t\terror = errorList[0];\n\t} else if (message?.includes(\"实名认证\")) {\n\t\terror = errorList[1];\n\t} else if (message?.includes(\"资料审核\")) {\n\t\terror = errorList[2];\n\t}\n\treturn error || (saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\");\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst { toutiaoSingleCover, toutiaoMultCover, toutiaoCoverType, toutiaoOriginal, toutiaoExclusive, toutiaoClaim } = params.settingInfo;\n\tconst tmpCachePath = task.getTmpPath();\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n origin: \"https://mp.toutiao.com\",\n referer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n }\n const args: AxiosProxyParams = [\n { headers },\n task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n const http = new Http({ headers })\n\tconst proxyHttp = new Http(...args);\n\n\t// 添加响应拦截器\n\tproxyHttp.addResponseInterceptor<CommonResponse>((response) => {\n\t\t// 检查响应中的 errno 字段\n\t\tif (response && response.data?.code !== 0) {\n\t\t\tlet errmsg = \"\";\n\n\t\t\tif (Array.isArray(errnoMap[response.data.code])) {\n\t\t\t\terrmsg = get3101DetailError(errnoMap[response.data.code] as string[], response.data.message, params.saveType);\n\t\t\t} else {\n\t\t\t\terrmsg =\n\t\t\t\t\t(errnoMap[response.data.code] as string) ||\n\t\t\t\t\tresponse.config.defaultErrorMsg ||\n\t\t\t\t\t(params.saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\");\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcode: errnoMap[response.data.code] ? 200 : 500,\n\t\t\t\tmessage: errmsg,\n\t\t\t\tdata: response.data,\n\t\t\t};\n\t\t}\n\t});\n\n\t// 0. 校验登录\n\tawait http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.toutiao.com/mp/agw/creator_center/user_info\",\n\t\tdefaultErrorMsg: `头条号登录状态失效,请重新绑定账号后${params.saveType === \"draft\" ? \"同步\" : \"发布\"}。`,\n\t});\n\n\tconst uploadImages = async (images: string[]) => {\n\t\t// 下载图片到本地\n\t\treturn await Promise.all(\n\t\t\timages.map(async (url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\tconst image = await downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t\tconst formData = new FormData();\n\t\t\t\tformData.append(\"image\", fs.createReadStream(image));\n\n\t\t\t\tconst response = await http.api<CommonResponse<Toutiao.ImageData>>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://mp.toutiao.com/spice/image?upload_source=20020002&aid=1231&device_platform=web\",\n\t\t\t\t\tdata: formData,\n\t\t\t\t\tdefaultErrorMsg:\n\t\t\t\t\t\tparams.saveType === \"draft\" ? \"图片上传异常,请稍后重试同步。\" : \"图片上传异常,请稍后重试发布。\",\n\t\t\t\t});\n\n\t\t\t\treturn response.data;\n\t\t\t}),\n\t\t);\n\t};\n\n\t// 1. 提取并上传正文中的图片\n\tconst originContentImages = extractImgTag(params.content);\n\tconst targetContentImages = await uploadImages(originContentImages);\n\t// 2. 替换正文中的图片\n\tconst content = replaceImgSrc(params.content, (dom) => {\n\t\tif (dom.attribs.src) {\n\t\t\tconst idx = originContentImages.findIndex((it) => it === dom.attribs.src.replace(/&amp;/g,\"&\"));\n\t\t\tdom.attribs.src = targetContentImages[idx].image_url;\n\t\t\tdom.attribs.web_uri = targetContentImages[idx].image_uri;\n\t\t\tdom.attribs.img_width = targetContentImages[idx].image_width.toString();\n\t\t\tdom.attribs.image_height = targetContentImages[idx].image_height.toString();\n\t\t\tdom.attribs.image_type = targetContentImages[idx].image_type.toString();\n\t\t\tdom.attribs.mime_type = targetContentImages[idx].image_mime_type;\n\t\t}\n\t\treturn dom;\n\t});\n\n\t// 3. 上传横版封面\n\tconst coverUrl =\n\t\ttoutiaoCoverType === \"single\" ? [toutiaoSingleCover] : toutiaoCoverType === \"multiple\" ? toutiaoMultCover : [];\n\tconst coverRes = await uploadImages(coverUrl);\n\n\t// 4. 构造发布数据\n\t// const isSingleTitle = params.settingInfo.toutiaoTitleType === \"single\";\n\tconst location = params.settingInfo.toutiaoLocation;\n\tconst topics = params.settingInfo.toutiaoTopic || [];\n\n\t// const multiTitleData = params.settingInfo.subTitles.map((title) => ({\n\t// \tid: \"0\",\n\t// \tvisibility_level: 0,\n\t// \tsource: \"author\",\n\t// \told_source: \"author\",\n\t// \ttext: title,\n\t// \tversion: \"author\",\n\t// \tai_title: \"\",\n\t// }));\n\n\tconst topicContent = topics\n\t\t.map(\n\t\t\t(topic) =>\n\t\t\t\t`<p><a class=\"tteditor-forum\" data-name=\"${topic.word}\" data-id=\"${topic.id}\" data-concern-id=\"${topic.id}\">#${topic.word}#</a ></p >`,\n\t\t)\n\t\t.join(\"\");\n\n\tlet sourceData : Record<string, unknown> = {\n\t\tsource_type: toutiaoClaim ? toutiaoClaim.type : 5 // 老用户默认为:个人观点,仅供参考\n\t}\n\tif (toutiaoClaim && toutiaoClaim.type === 1) {\n\t\tif( !toutiaoClaim?.source_author_uid) return { code: 500, message: \"请填写作者ID\", data: \"\" }\n\t\tsourceData = {\n\t\t\t...sourceData,\n\t\t\tsource_author_uid: toutiaoClaim.source_author_uid,\n\t\t\ttime_format: toutiaoClaim.time_format,\n\t\t\tposition: toutiaoClaim.position\n\t\t}\n\t}\n\tconst extraData = {\n\t\tcontent_word_cnt: params.settingInfo.cntWord,\n\t\t// is_multi_title: isSingleTitle ? 0 : 1,\n\t\t// sub_titles: isSingleTitle ? [] : multiTitleData,\n\t\tgd_ext: {\n\t\t\tentrance: \"\",\n\t\t\tfrom_page: \"publisher_mp\",\n\t\t\tenter_from: \"PC\",\n\t\t\tdevice_platform: \"mp\",\n\t\t\tis_message: 0,\n\t\t},\n\t\ttuwen_wtt_trans_flag: params.settingInfo?.toutiaoTransWtt ? \"2\" : \"0\",\n\t\tinfo_source: sourceData,\n\t\t...(location ? { city: location.label, city_code: location.value } : null),\n ...(params.settingInfo?.toutiaoCollectionId ? { want_join_collection_id: params.settingInfo.toutiaoCollectionId } : null)\n\t};\n\n\tconst publishData = {\n\t\tarticle_type: 0,\n\t\tsource: 0,\n\t\tsearch_creation_info: '{\"searchTopOne\": 0, \"abstract\": \"\", \"clue_id\": \"\"}',\n\t\ttitle_id: \"\",\n\t\teducluecard: \"\",\n\t\torigin_debut_check_pgc_normal: 1,\n\t\tis_fans_article: 0,\n\t\tgovern_forward: 0,\n\t\tpraise: 0,\n\t\tdisable_praise: 0,\n\t\ttree_plan_article: 0,\n\t\tstar_order_id: \"\",\n\t\tstar_order_name: \"\",\n\t\tcustomer_nick_name: \"\",\n\t\tactivity_tag: 0,\n\t\ttrends_writing_tag: 0,\n\t\tis_refute_rumor: 0,\n\t\tsave: params.saveType === \"publish\" ? 1 : 0,\n\t\ttimer_status: params.settingInfo.timer? 1 : 0,\n\t\ttimer_time: params.settingInfo.timer? TimeFormatter.format(params.settingInfo.timer):\"\",\n\t\ttitle: params.title,\n\t\tcontent: content + topicContent,\n\t\textra: JSON.stringify(extraData),\n\t\tmp_editor_stat: toutiaoCoverType === \"no\" ? \"{}\" : '{\"image\": %d}',\n\t\tdraft_form_data: JSON.stringify({\n\t\t\tcoverType: COVER_TYPE[toutiaoCoverType],\n\t\t}),\n\t\tpgc_feed_covers: JSON.stringify(\n\t\t\tcoverRes.map((item) => ({\n\t\t\t\tid: \"\",\n\t\t\t\turl: item.image_url,\n\t\t\t\turi: item.image_uri,\n\t\t\t\tic_uri: \"\",\n\t\t\t\tthumb_widt: item.image_width,\n\t\t\t\tthumb_heigh: item.image_height,\n\t\t\t\textra: {\n\t\t\t\t\tfrom_content_uri: \"\",\n\t\t\t\t\tfrom_content: \"0\",\n\t\t\t\t},\n\t\t\t})),\n\t\t),\n\t\tarticle_ad_type: getAddTypeValue(params.settingInfo.toutiaoAd),\n\t\t// claim_origin: toutiaoOriginal.includes(\"original\") ? 1 : 0,\n\t\tclaim_exclusive: toutiaoExclusive ? toutiaoExclusive : toutiaoOriginal?.includes(\"exclusive\") ? 1 : 0, // 首发声明兼容老用户字段\n\t};\n \n task._timerRecord.PrePublish = Date.now();\n\n\tconst msToken = params.cookies.find((it) => it.name === \"msToken\")?.value;\n\tlet publishOption = {}\n\tif (!msToken) {\n\t\tpublishOption = {\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.toutiao.com/mp/agw/article/publish?source=mp&type=article&aid=1\",\n\t\t\tdata: publishData,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"application/x-www-form-urlencoded\",\n\t\t\t},\n\t\t\tdefaultErrorMsg: params.saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\",\n\t\t};\n\t}else{\n\t\tconst postHeaders = generatorFormData({\n\t\t\tsource: \"mp\",\n\t\t\ttype: \"article\",\n\t\t\taid: 1231,\n\t\t\tmp_publish_ab_val: 0,\n\t\t\tmsToken: msToken\n\t\t})\n\t\tconst postData = generatorFormData(publishData)\n\t\tconst a_bogus = GenAB(postHeaders,postData)\n\t\n\t\tpublishOption = {\n\t\t\tmethod: \"post\",\n\t\t\turl: `https://mp.toutiao.com/mp/agw/article/publish?${postHeaders}&a_bogus=${a_bogus}`,\n\t\t\tdata: postData,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"application/x-www-form-urlencoded\",\n\t\t\t\t\"user-agent\": \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36\"\n\t\t\t},\n\t\t\tdefaultErrorMsg: params.saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\",\n\t\t};\n\t}\n\n const publishResult = await proxyHttp.api<CommonResponse<{ pgc_id: string }>>(publishOption, {\n retries: 3,\n retryDelay: 500, \n timeout: 12*1000\n });\n\n\treturn success(publishResult.data.pgc_id, `文章发布成功!${ task.debug ? ` ${http.proxyInfo}`: \"\"}`);\n};\n","import path from \"node:path\";\nimport type { CookieMap, Response } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport { copyHtmlToClipboard, getRandomInRange, PopupListener, TimeFormatter } from \"../../utils\";\nimport { COVER_TYPE, type PublishAction, getAddTypeValue } from \"./index\";\nconst GenAB = require(\"../../utils/ttABEncrypt\") as (headers: string, data: string) => string;\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \".toutiao.com\",\n\t\turl: \"https://mp.toutiao.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n cookies: (params.cookies?.map((it) => ({...it, ...commonCookies})) || []) as CookieMap,\n\t});\n\n\t// 0. 校验登录\n\ttry {\n\t\tawait page.waitForSelector(\".publish-editor\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn {\n\t\t\tcode: 400,\n\t\t\tmessage: `头条号登录状态失效,请重新绑定账号后${params.saveType === \"draft\" ? \"同步\" : \"发布\"}。`,\n\t\t\tdata: page.url(),\n\t\t};\n\t}\n\n\tconst interceptUrls = [\n\t\t'/mp/agw/article/publish'\n\t];\n\t \n\tawait page.route('**', async (route, request) => {\n\t\tconst url = new URL(request.url()); \n\t\tif (interceptUrls.some(pattern => url.pathname.includes(pattern))) {\n\t\t\tconst headers = {\n\t\t\t\t...request.headers(),\n\t\t\t\t\"user-agent\": \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36\" //ua参数固定,不可修改\n\t\t\t};\n\n\t\t\tconst generatorFormData = (data: Record<string, unknown>) => {\n\t\t\t\treturn Object.entries(data)\n\t\t\t\t\t.map(([key, value]) => {\n\t\t\t\t\t\tconst encodedKey = encodeURIComponent(key);\n\t\t\t\t\t\tconst encodedValue = encodeURIComponent(String(value));\n\t\t\t\t\t\treturn `${encodedKey}=${encodedValue}`;\n\t\t\t\t\t})\n\t\t\t\t\t.join('&');\n\t\t\t};\n\n\t\t\tconst postHeaders = generatorFormData({\n\t\t\t\tsource: \"mp\",\n\t\t\t\ttype: \"article\",\n\t\t\t\taid: 1231,\n\t\t\t\tmp_publish_ab_val: 0,\n\t\t\t\tmsToken: url.searchParams.get('msToken')\n\t\t\t})\n\t\t\tconst postData = request.postData() || \"\";\n\t\t\tlet a_bogus = GenAB(postHeaders,postData)\n\n\t\t\turl.searchParams.set('aid', \"1231\"); \n\t\t\turl.searchParams.set('mp_publish_ab_val', \"0\"); \n\t\t\turl.searchParams.set('a_bogus', a_bogus); \n\n\t\t\tawait route.continue({ url: url.toString() , headers: headers});\n\n\t\t} else {\n\t\t\tawait route.continue();\n\t\t}\n\t});\n\n\t//弹窗监听检测\n\tPopupListener(page,'.byte-modal.publish-exclusive-modal .title',\"激励\", '.byte-modal-close-icon', \n\t{\n\t\tcheckInterval: 1000,\n\t\tstopAfterClick: false\n\t})\n\t\n\t// 1. 填写标题\n\tconst titleInstance = page.locator(\".publish-editor-title-wrapper .publish-editor-title textarea\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 2. 填写正文\n\tawait copyHtmlToClipboard(page, params.content);\n\t// 定位目标元素并聚焦\n\tawait page.click(\".publish-editor .syl-editor-wrap .ProseMirror\");\n\t// 模拟Ctrl+V粘贴\n\tawait page.keyboard.press(\"Control+V\");\n\n\t// 3. 封面\n\tconst coverTypeValue = COVER_TYPE[params.settingInfo.toutiaoCoverType];\n\tconst coverContainer = page.locator(\".form-container .edit-cell\").filter({ hasText: \"展示封面\" });\n\t// 滚动到可视区域\n\tawait coverContainer.evaluate((node) => node.scrollIntoView());\n\tawait coverContainer.locator(`.article-cover label.byte-radio:has(input[value=\"${coverTypeValue}\"])`).click();\n\n\tlet coverUrls: string[] = [];\n\tif (params.settingInfo.toutiaoCoverType === \"single\") {\n\t\tcoverUrls = [params.settingInfo.toutiaoSingleCover];\n\t} else if (params.settingInfo.toutiaoCoverType === \"multiple\") {\n\t\tcoverUrls = params.settingInfo.toutiaoMultCover;\n\t}\n\t// 获取待上传图片的本地路径\n\tconst images = await Promise.all(\n\t\tcoverUrls.map((url) => {\n\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t}),\n\t);\n\n\tconst coverUploadEle = coverContainer\n\t\t.locator(\".article-cover .article-cover-images\")\n\t\t.locator(\".article-cover-img-wrap, .article-cover-add\");\n\tconst coverUploadCount = await coverUploadEle.count();\n\n\tfor (let i = 0; i < coverUploadCount; i++) {\n\t\tif (!images[i]) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst ele = coverUploadEle.nth(i);\n\t\t// 如果存在图片则替换\n\t\tif ((await ele.locator(\"img\").count()) > 0) {\n\t\t\tawait ele.locator(\".article-cover-img-menu a\").filter({ hasText: \"替换\" }).click();\n\t\t} else {\n\t\t\t// 如果不存在图片则点击上传\n\t\t\tawait ele.click();\n\t\t}\n\n\t\t// 上传图片\n\t\tconst drawerContainer = page.locator(\".byte-drawer-wrapper:not(.byte-drawer-wrapper-hide)\");\n\t\tawait drawerContainer.locator(\".byte-tabs-header .byte-tabs-header-title\").filter({ hasText: \"上传图片\" }).click();\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait page.waitForTimeout(200);\n\t\tawait drawerContainer.locator(\".upload-image-panel button.byte-btn\").filter({ hasText: \"本地上传\" }).click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles([images[i]]);\n\n\t\t// 等待上传完成\n\t\tconst confirmBtn = drawerContainer\n\t\t\t.locator(\".footer .confirm-btns button:not(.byte-btn-disabled)\")\n\t\t\t.filter({ hasText: \"确定\" });\n\t\tawait confirmBtn.waitFor({ state: \"visible\" });\n\t\tawait confirmBtn.click();\n\n\t\tawait page.waitForTimeout(getRandomInRange(500, 1000));\n\t}\n\n\t// 4. 添加位置\n\tif (params.settingInfo.toutiaoLocation) {\n\t\tconst locationContainer = page.locator(\".form-container .edit-cell\").filter({ hasText: \"添加位置\" });\n\t\tawait locationContainer.locator(\".position-select\").click();\n\t\tawait locationContainer\n\t\t\t.locator(\".position-select .byte-select-view-search input\")\n\t\t\t.fill(params.settingInfo.toutiaoLocation.label);\n\t\tconst poperInstance = page.locator(\".byte-trigger .byte-select-popup .byte-select-option\");\n\t\tawait poperInstance.first().waitFor();\n\t\tawait poperInstance.first().click();\n\t}\n\n\t// 5. 投放广告\n\tconst adContainer = page\n\t\t.locator(\".form-container .edit-cell .edit-label\")\n\t\t.filter({ hasText: \"投放广告\" })\n\t\t.locator(\"xpath=..\");\n\n\t// 判断是否存在投放广告的选项\n\tconst isAdOptionVisible = await adContainer.isVisible();\n\n\tif (isAdOptionVisible) {\n\t\t// 获取元素的父元素句柄并点击\n\t\tawait adContainer\n\t\t\t.locator(`label.byte-radio:has(input[value=\"${getAddTypeValue(params.settingInfo.toutiaoAd)}\"])`)\n\t\t\t.click();\n\t}\n\n\t// 6. 声明首发\n\tconst exclusiveContainer = page.locator(\".form-container .edit-cell .edit-label\").filter({ hasText: \"声明首发\" }).locator(\"xpath=..\");\n\tif ((params.settingInfo.toutiaoOriginal && params.settingInfo.toutiaoOriginal.includes(\"exclusive\")) || params.settingInfo.toutiaoExclusive ) {\n\n\t\texclusiveContainer.locator(\".exclusive .exclusive-checkbox-wraper .byte-checkbox\").check();\n\t}else{\n\t\texclusiveContainer.locator(\".exclusive .exclusive-checkbox-wraper .byte-checkbox\").uncheck();\n\t}\n\n\t// 作品声明\n\tlet claim = params.settingInfo.toutiaoClaim ? params.settingInfo.toutiaoClaim.type : 5;\n\tswitch (claim) {\n\t\t// case 1:\n\t\t// \tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"引用站内\"}).locator(\".byte-checkbox-mask\").check();\n\t\t// \tif(!params.settingInfo.toutiaoClaim?.source_author_name) return{ code: 500, message: \"请填写作者账户名\", data: \"\" };\n\t\t// \tawait page.locator(\".source-form-item\",{hasText: \"账号\"}).locator(\".byte-select-view-search input\").fill(params.settingInfo.toutiaoClaim.source_author_name)\n\t\t// \tbreak;\n\t\tcase 3:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"引用AI\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"取材网络\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"个人观点,仅供参考\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tcase 6:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"虚构演绎,故事经历\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"个人观点,仅供参考\"}).locator(\".byte-checkbox-mask\").check();\n\n\t\t\tbreak;\n\t}\n\n\t// 7. 保存草稿 / 发布\n\tconst articleId = await new Promise<string>(async (resolve) => {\n\t\tconst handleResponse = async (response: Response) => {\n\t\t const url = response.url();\n\t\t if (url.includes(\"/mp/agw/article/publish\")) {\n\t\t\tconst jsonResponse = await response.json();\n\t\t\tpage.off(\"response\", handleResponse);\n\t\t\tresolve(jsonResponse.data.pgc_id);\n\t\t }\n\t\t};\n\t \n\t\tpage.on(\"response\", handleResponse);\n\t \n\t\tif (params.settingInfo.timer && params.saveType == \"publish\") {\n\t\t // 点击“定时发布”按钮\n\t\t await page.locator(\".publish-footer button\").filter({ hasText: \"定时发布\" }).click();\n\t\t await page.waitForSelector('button.publish-btn:not(.byte-btn-loading) >> nth=1', { state: 'attached' });\n\t \n\t\t // 选择日期\n\t\t await page.locator(\".byte-modal-content .day-select .byte-select-view-value\").click();\n\t\t await page.locator('li.byte-select-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"MM月dd日\") }).click();\n\t\t await page.waitForTimeout(200);\n\t \n\t\t // 选择小时\n\t\t await page.locator(\".byte-modal-content .hour-select .byte-select-view-value\").click();\n\t\t await page.locator('li.byte-select-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"h\") }).click();\n\t\t await page.waitForTimeout(200);\n\t \n\t\t // 选择分钟\n\t\t await page.locator(\".byte-modal-content .minute-select .byte-select-view-value\").click();\n\t\t await page.locator('li.byte-select-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"m\") }).click();\n\t\t await page.waitForTimeout(200);\n\n\t\t await page.locator(\".byte-modal-footer button\").filter({ hasText:\"预览并定时发布\" }).click()\n\t\t}else{\n\t\t\tawait page.locator(\".publish-footer button\").filter({ hasText:\"预览并发布\" }).click();\n\t\t}\n\t \n\t });\n\n\tif(params.settingInfo.toutiaoAd == 'no'){\n\t\tawait page.waitForTimeout(200);\n\t\tconst confirmBtn = page.locator('div.byte-modal-footer button.byte-btn-primary:has-text(\"确定\")');\n\t\tif (await confirmBtn.isVisible()) {\n\t\t await confirmBtn.click();\n\t\t}\n\t}\n \n\ttask._timerRecord['PrePublish']= Date.now();\n \n\tif (params.saveType === \"publish\") {\n\t\tawait page.locator(\".publish-footer button\").filter({ hasText: params.settingInfo.timer? \"定时发布\" : \"确认发布\" }).waitFor({ state: \"visible\" });\n\t\tawait page.waitForTimeout(200);\n\t\tawait page.locator(\".publish-footer button\").filter({ hasText: params.settingInfo.timer? \"定时发布\" : \"确认发布\" }).click();\n\t}\n\n\t// 关闭页面\n\tawait page.close();\n\n\treturn success(articleId, params.saveType === \"publish\" ? \"发布成功\" : \"保存草稿成功\");\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\ntype CoverType = \"single\" | \"multiple\" | \"no\";\n\nexport interface ToutiaoPublishParams extends ActiomCommonParams {\n\tsaveType: \"draft\" | \"publish\"; // 保存成草稿 / 发布\n\ttitle: string;\n\tcontent: string;\n proxyLoc?: string; // 代理位置\n localIP?: string; // 用户ip\n huiwenToken?: string; // 绘文token\n\tsettingInfo: {\n\t\ttoutiaoCoverType: CoverType;\n\t\ttoutiaoTitleType: \"single\" | \"multiple\"; // 已关闭对应功能,保留参数,兼容老版本\n\t\ttoutiaoSingleCover: string;\n\t\ttoutiaoMultCover: string[];\n\t\ttoutiaoAd: string; // 广告配置 - 投放广告/不投放广告\n\t\ttoutiaoOriginal?: string; // 原创声明-已修改为首发声明,兼容老用户\n\t\ttoutiaoExclusive?: number; // 头条首发 0 - 声明非首发 1- 声明首发\n toutiaoCollectionId?: string; // 头条合集id\n toutiaoTransWtt?: boolean; // 是否同步微头条\n\t\ttoutiaoClaim?: {\n\t\t\ttype: number// 作品声明 -1 - 不声明,4 - 取材网络,1 - 引用站内(该选项必须传入下方两个参数,否则会错误),5 - 个人观点,仅供参考,3 - 引用AI,6 - 虚构演绎,故事经历\n\t\t\tsource_author_uid?: string;\n\t\t\tsource_author_name?: string;\n\t\t\ttime_format?: string;\n\t\t\tposition?: {\n\t\t\t\tposition: string;\n\t\t\t\tcity: string;\n\t\t\t\tlongitude: number;\n\t\t\t\tlatitude: number;\n\t\t\t\ttype_code: string;\n\t\t\t\tpoi_id: string;\n\t\t\t}\n\n\t\t}; \n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\ttoutiaoLocation?: { label: string; value: string; [key: string]: any }; // 位置\n\t\ttoutiaoTopic: { id: string; word: string }[]; // 话题\n\t\tcntWord: number;\n\t\tsubTitles: string[]; // 多标题\n\t\ttimer?: number;\n\t};\n}\n\nexport const COVER_TYPE: Record<CoverType, number> = {\n\tno: 1,\n\tsingle: 2,\n\tmultiple: 3,\n};\n\nexport const getAddTypeValue = (toutiaoAd: ToutiaoPublishParams[\"settingInfo\"][\"toutiaoAd\"]) =>\n\ttoutiaoAd === \"yes\" ? 3 : 2;\n\nexport type PublishAction = CommonAction<ToutiaoPublishParams, string>;\n\nexport const toutiaoPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","/** A special constant with type `never` */\nexport const NEVER = Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n var _a;\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod ?? {},\n enumerable: false,\n });\n (_a = inst._zod).traits ?? (_a.traits = new Set());\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n for (const k in _.prototype) {\n if (!(k in inst))\n Object.defineProperty(inst, k, { value: _.prototype[k].bind(inst) });\n }\n inst._zod.constr = _;\n inst._zod.def = def;\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\nexport const globalConfig = {};\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n","// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error();\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepString = step.toString();\n let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n const match = stepString.match(/\\d?e-(\\d?)/);\n if (match?.[1]) {\n stepDecCount = Number.parseInt(match[1]);\n }\n }\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nconst EVALUATING = Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\"Object schemas containing refinements cannot be extended. Use `.safeExtend()` instead.\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = {\n ...schema._zod.def,\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n checks: schema._zod.def.checks,\n };\n return clone(schema, def);\n}\nexport function merge(a, b) {\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: [], // delete existing checks\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues });\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues });\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, issue.path));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n","export const cuid = /^[cC][^\\s-]{8,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\nexport const e164 = /^\\+(?:[0-9]){6,14}[0-9]$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inst,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inst,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n","export class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n","export const version = {\n major: 4,\n minor: 1,\n patch: 12,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n // const handleChecksResult = (\n // checkResult: ParsePayload,\n // originalResult: ParsePayload,\n // ctx: ParseContextInternal\n // ): util.MaybeAsync<ParsePayload> => {\n // // if the checks mutated the value && there are no issues, re-parse the result\n // if (checkResult.value !== originalResult.value && !checkResult.issues.length)\n // return inst._zod.parse(checkResult, ctx);\n // return originalResult;\n // };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n inst[\"~standard\"] = {\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n };\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: regexes.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = `ipv4`;\n });\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = `ipv6`;\n });\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.contentEncoding = \"base64\";\n });\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.contentEncoding = \"base64url\";\n });\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checksp\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (result.value === undefined) {\n if (key in input) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n // iterate over input keys\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n for (const key of Object.keys(input)) {\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input)));\n }\n else {\n handlePropertyResult(r, payload, key, input);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input)));\n }\n else {\n handlePropertyResult(r, payload, key, input);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n doc.write(`const ${id} = ${parseStr(key)};`);\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n if (def.unionFallback) {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n if (left.issues.length) {\n result.issues.push(...left.issues);\n }\n if (right.issues.length) {\n result.issues.push(...right.issues);\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n const optStart = items.length - [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n if (!def.rest) {\n const tooBig = input.length > items.length;\n const tooSmall = input.length < optStart - 1;\n if (tooBig || tooSmall) {\n payload.issues.push({\n ...(tooBig ? { code: \"too_big\", maximum: items.length } : { code: \"too_small\", minimum: items.length }),\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n }\n let i = -1;\n for (const item of items) {\n i++;\n if (i >= input.length)\n if (i >= optStart)\n continue;\n const result = item._zod.run({\n value: input[i],\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n if (def.rest) {\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({\n value: el,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n if (def.keyType._zod.values) {\n const values = def.keyType._zod.values;\n payload.value = {};\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!values.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (keyResult.issues.length) {\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n payload.value[keyResult.value] = keyResult.value;\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n inst._zod.values = new Set(def.values);\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (inst._zod.values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (result.issues.length && input === undefined) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, payload.value));\n return handleOptionalResult(result, payload.value);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"template_literal\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // let _innerType!: any;\n // util.defineLazy(def, \"getter\", () => {\n // if (!_innerType) {\n // _innerType = def.getter();\n // }\n // return () => _innerType;\n // });\n util.defineLazy(inst._zod, \"innerType\", () => def.getter());\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType._zod.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType._zod.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType._zod.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n","import * as util from \"../core/util.js\";\nexport const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"number\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n};\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const Nouns = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Invalid input: expected ${issue.expected}, received ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","export const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n if (this._idmap.has(meta.id)) {\n throw new Error(`ID ${meta.id} already exists in the registry`);\n }\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\nexport const globalRegistry = /*@__PURE__*/ registry();\n","import * as checks from \"./checks.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\nexport function _superRefine(fn) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n","import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n","import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // base methods\n inst.check = (...checks) => {\n return inst.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }));\n };\n inst.clone = (def, params) => core.clone(inst, def, params);\n inst.brand = () => inst;\n inst.register = ((reg, meta) => {\n reg.add(inst, meta);\n return inst;\n });\n // parsing\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n // encoding/decoding\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // refinements\n inst.refine = (check, params) => inst.check(refine(check, params));\n inst.superRefine = (refinement) => inst.check(superRefine(refinement));\n inst.overwrite = (fn) => inst.check(checks.overwrite(fn));\n // wrappers\n inst.optional = () => optional(inst);\n inst.nullable = () => nullable(inst);\n inst.nullish = () => optional(nullable(inst));\n inst.nonoptional = (params) => nonoptional(inst, params);\n inst.array = () => array(inst);\n inst.or = (arg) => union([inst, arg]);\n inst.and = (arg) => intersection(inst, arg);\n inst.transform = (tx) => pipe(inst, transform(tx));\n inst.default = (def) => _default(inst, def);\n inst.prefault = (def) => prefault(inst, def);\n // inst.coalesce = (def, params) => coalesce(inst, def, params);\n inst.catch = (params) => _catch(inst, params);\n inst.pipe = (target) => pipe(inst, target);\n inst.readonly = () => readonly(inst);\n // meta\n inst.describe = (description) => {\n const cl = inst.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n };\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n inst.meta = (...args) => {\n if (args.length === 0) {\n return core.globalRegistry.get(inst);\n }\n const cl = inst.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n };\n // helpers\n inst.isOptional = () => inst.safeParse(undefined).success;\n inst.isNullable = () => inst.safeParse(null).success;\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n // validations\n inst.regex = (...args) => inst.check(checks.regex(...args));\n inst.includes = (...args) => inst.check(checks.includes(...args));\n inst.startsWith = (...args) => inst.check(checks.startsWith(...args));\n inst.endsWith = (...args) => inst.check(checks.endsWith(...args));\n inst.min = (...args) => inst.check(checks.minLength(...args));\n inst.max = (...args) => inst.check(checks.maxLength(...args));\n inst.length = (...args) => inst.check(checks.length(...args));\n inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args));\n inst.lowercase = (params) => inst.check(checks.lowercase(params));\n inst.uppercase = (params) => inst.check(checks.uppercase(params));\n // transforms\n inst.trim = () => inst.check(checks.trim());\n inst.normalize = (...args) => inst.check(checks.normalize(...args));\n inst.toLowerCase = () => inst.check(checks.toLowerCase());\n inst.toUpperCase = () => inst.check(checks.toUpperCase());\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: /^https?$/,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.int = (params) => inst.check(int(params));\n inst.safe = (params) => inst.check(int(params));\n inst.positive = (params) => inst.check(checks.gt(0, params));\n inst.nonnegative = (params) => inst.check(checks.gte(0, params));\n inst.negative = (params) => inst.check(checks.lt(0, params));\n inst.nonpositive = (params) => inst.check(checks.lte(0, params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n inst.step = (value, params) => inst.check(checks.multipleOf(value, params));\n // inst.finite = (params) => inst.check(core.finite(params));\n inst.finite = () => inst;\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst.element = def.element;\n inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params));\n inst.nonempty = (params) => inst.check(checks.minLength(1, params));\n inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params));\n inst.length = (len, params) => inst.check(checks.length(len, params));\n inst.unwrap = () => inst.element;\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });\n inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });\n inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });\n inst.extend = (incoming) => {\n return util.extend(inst, incoming);\n };\n inst.safeExtend = (incoming) => {\n return util.safeExtend(inst, incoming);\n };\n inst.merge = (other) => util.merge(inst, other);\n inst.pick = (mask) => util.pick(inst, mask);\n inst.omit = (mask) => util.omit(inst, mask);\n inst.partial = (...args) => util.partial(ZodOptional, inst, args[0]);\n inst.required = (...args) => util.required(ZodNonOptional, inst, args[0]);\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn) {\n return core._superRefine(fn);\n}\nfunction _instanceof(cls, params = {\n error: `Input not instance of ${cls.name}`,\n}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nexport function preprocess(fn, schema) {\n return pipe(transform(fn), schema);\n}\n","// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n core.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n return core.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n","export * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, toJSONSchema, TimePrecision, util, NEVER, } from \"../core/index.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n","import {CDPCookieSchema, CookieSchema, LoggerImplement} from \"@iflyrpa/share\";\nimport type {CreateAxiosDefaults} from \"axios\";\nimport { z } from \"zod\";\n\ndeclare module \"axios\" {\n\texport interface AxiosRequestConfig {\n\t\tdefaultErrorMsg?: string;\n\t}\n}\n\nexport const ActionCommonParamsSchema = z.object({\n url: z.string().optional(),\n // cookie 必选项\n cookies: z.array(CDPCookieSchema),\n actionType: z.enum([\"mockApi\", \"rpa\", \"server\"]).optional(),\n accountId: z.number().optional(),\n proxyLoc: z.string().nullable().optional(), // TODO:兼容前端,后期考虑放弃\n localIP: z.string().optional(),\n huiwenToken: z.string().optional(),\n articleId: z.string().optional(),\n saveType: z.string().optional(),\n});\n\n// 自动生成 TypeScript 类型\nexport type ActiomCommonParams = z.infer<typeof ActionCommonParamsSchema>;\n\nexport type AxiosProxyParams = [\n CreateAxiosDefaults, // axios 配置\n LoggerImplement?,\n (string | null | undefined)?, // proxyLoc\n string?, // localIP\n // string?, // huiwenToken\n number? ,// accountId\n];\n\nexport interface ActionParams extends ActiomCommonParams {\n id?: string; //steel 任务 id,客户端传入\n}\n\nexport enum ExecutionState {\n RUNNING = 'RUNNING',\n SCAN_WAITING = 'SCAN_WAITING',\n SCANNED = 'SCANNED',\n CONFIRMED = 'CONFIRMED',\n SUCCESS = 'SUCCESS',\n TIMEOUT = 'TIMEOUT',\n BROWSER_CLOSED = 'BROWSER_CLOSED',\n FAILED = 'FAILED',\n}\n\nexport interface FansDetail {\n following: number | null; // 关注数\n fans_count: number | null; // 粉丝数\n digg_count: number | null; // 获赞数\n description: string; // 个人简介\n}\n\nexport namespace Weixin {\n\n\texport interface FansCount extends FansDetail {}\n\n\texport interface WeiXinCropResult {\n\t\tcdnurl: string;\n\t\tfile_id: number;\n\t\twidth: number;\n\t\theight: number;\n\t}\n}\n\nexport namespace BaiJiaHao {\n\n\texport interface FansCount extends FansDetail {}\n}\nexport namespace Toutiao {\n\n\texport interface FansCount extends FansDetail {}\n\n\texport interface Topic {\n\t\tconcern_id: string;\n\t\tid: string;\n\t\ttalk_count: string;\n\t\ttalk_count_str: string;\n\t\ttype: number;\n\t\tword: string;\n\t}\n\n\texport interface SuggestWords {\n\t\tuser_id: number, \n\t\tname: string, \n\t\tavatar_url: string, \n\t\tfollowers_count: number\n\t}\n\n\texport interface CityPoi{\n\t\tposition: string;\n\t\tcity: string;\n\t\tlongitude: number;\n\t\tlatitude: number;\n\t\ttype_code: string;\n\t\tpoi_id: string;\n\t}\n\n\texport interface CityDistrict {\n\t\tgps_location: {\n\t\t\tcity_name: string;\n\t\t\tcity_code: string;\n\t\t\tdistrict_name: string;\n\t\t\tdistrict_code: string;\n\t\t};\n\t}\n\n\texport interface UserRight {\n\t\tbenefit_list: Array<unknown>;\n\t\tdescribe: string;\n\t\tfans_num_threshold: number;\n\t\tlevel: number;\n\t\ttype: number;\n\t}\n\n\texport interface ImageData {\n\t\timage_url: string;\n\t\timage_uri: string;\n\t\timage_width: string;\n\t\timage_height: string;\n\t\timage_type: string;\n\t\timage_mime_type: string;\n\t}\n}\n\nexport namespace Xiaohongshu {\n\texport interface FansCount extends FansDetail {}\n\n\texport interface Topic {\n\t\tid?: string;\n\t\tname: string;\n\t\ttype: string;\n\t\tlink?: string;\n\t}\n\n\texport interface Location {\n\t\taddress: string;\n\t\tcity_name: string;\n\t\tfull_address: string;\n\t\tlatitude: number;\n\t\tlongitude: number;\n\t\tname: string;\n\t\tpoi_id: string;\n\t\tpoi_type: number;\n\t\ttype: string;\n\t}\n}\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../../types\";\nimport { Http } from \"../../../utils/http\";\nimport { Xhshow } from \"../../../utils/xhsXsEncrypt\";\nimport { ActionCommonParamsSchema} from \"../../../types\";\nimport { z } from \"zod\";\n\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport const SessionCheckResultSchema = z.object({ isValidSession: z.boolean(), }); \nexport type sessionCheckResult = z.infer<typeof SessionCheckResultSchema>\n\nexport const WxBjhSessionParamsSchema = ActionCommonParamsSchema.extend({\n token: z.union([z.string(), z.number()]),\n});\nexport type WxBjhSessionParams = z.infer<typeof WxBjhSessionParamsSchema>;\n\nexport type ttSessionCheck = CommonAction<ActiomCommonParams, sessionCheckResult>;\nexport type wxSessionCheck = CommonAction<WxBjhSessionParams, sessionCheckResult>;\nexport type xhsSessionCheck = CommonAction<ActiomCommonParams, sessionCheckResult>;\nexport type bjhSessionCheck = CommonAction<WxBjhSessionParams, sessionCheckResult>;\n\nexport const TTSessionCheck: ttSessionCheck = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\tconst res = await http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.toutiao.com/mp/agw/creator_center/user_info\",\n\t\tdefaultErrorMsg: \"头条号登录状态失效。\",\n\t});\n\n\tconst isSuccess = res.code === 0;\n\tconst message = \"头条账号有效性检测成功\";\n\tconst data = isSuccess ? { isValidSession: true } : { isValidSession: false };\n\n\treturn success(data, message);\n};\n\nexport const WxSessionCheck: wxSessionCheck = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t},\n\t});\n\tconst fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\n const res = await http.api<{ base_resp: { ret: number } }>({\n method: \"get\",\n url: \"https://mp.weixin.qq.com/cgi-bin/appmsgpublish\",\n params: {\n fingerprint,\n sub: \"list\",\n begin: 0,\n count: 10,\n query: \"\",\n type: 101_1_102_103,\n show_type: \"\",\n free_publish_type: 1_102_103,\n sub_action: \"list_ex\",\n search_card: 0,\n token: params.token,\n lang: \"zh_CN\",\n f: \"json\",\n ajax: 1,\n },\n });\n\n return success(\n res.base_resp.ret === 0 ? {isValidSession: true} : {isValidSession: false},\n \"微信账号有效性检测完成!\",\n );\n\n};\n\nexport const XhsSessionCheck: xhsSessionCheck = async (_task, params) => {\n\tconst check = { isValidSession: false, isValidWebSession: false };\n\n\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\tif (!a1Cookie) {\n\t\treturn { code: 400, message: \"账号数据异常,请重新绑定账号后重试。\", data: check };\n\t}\n\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com/new/home?source=official\",\n }\n \n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n const http = new Http(...args);\n http.addResponseInterceptor(response => {\n if (response.status === 401)\n return {\n code: response.data.code,\n message: response.data.msg,\n data: response.data.data\n }\n })\n \n\tconst loginBasePath = \"/api/galaxy/v2/creator/datacenter/account/base\";\n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n const loginBaseXsHeader = xsEncrypt.signHeadersGet(loginBasePath, recordCookie, \"xhs-pc-web\", null);\n \n const _baseInfo = http.api<{ code: number, msg: string }>({\n method: \"get\",\n baseURL: \"https://creator.xiaohongshu.com\",\n url: loginBasePath,\n headers: loginBaseXsHeader,\n }, {retries: 3, retryDelay: 20, timeout: 3000}).catch(e => e.data);\n\n const _web_session = http.api<{ code: number, msg: string }>({\n method: \"get\",\n url: \"https://edith.xiaohongshu.com/api/sns/web/unread_count\",\n },{ retries: 3, retryDelay: 20, timeout: 3000 });\n\n\tconst [baseInfo, web_session] = await Promise.all([_baseInfo, _web_session]);\n \n\tif (baseInfo?.code === 0) check.isValidSession = true;\n\tif (web_session.code === 0) check.isValidWebSession = true;\n\n const isSuccess = baseInfo?.code === web_session.code;\n\tconst message = `小红书账号有效性检测成功${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n\n\treturn success( check, message );\n};\n\nexport const BjhSessionCheck: bjhSessionCheck = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n token: params.token,\n\t\t\treferer: \"https://baijiahao.baidu.com/builder/rc/home\",\n\t\t},\n\t});\n\n const res = await http.api({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/user-ui/cms/settingInfo\",\n defaultErrorMsg: \"百家号登录状态失效。\",\n });\n\n const isSuccess = res.errno === 0;\n\tconst message = \"百家号账号有效性检测成功\";\n\tconst data = isSuccess ? {isValidSession: true} : {isValidSession: false};\n\n\treturn success(data, message);\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetWeixinCollectionParams extends ActiomCommonParams {\n\ttoken: string | number;\n}\n\nexport interface CollectDetailResponse {\n\tbase_resp: { err_msg: string ,ret: number },\n\tlist_resp: { items: CollectDetail[]; total: number; };\n}\n\nexport interface CollectDetail { \n continous_read_on: number;\n cover_url: string;\n create_time: number;\n id: string;\n is_ban: number;\n is_updating: number;\n need_pay: number;\n title: string;\n total: number;\n type: number;\n update_time: number;\n url: string;\n uv: number;\n}\n\nexport type PublishAction = CommonAction<GetWeixinCollectionParams, CollectDetail[]>;\n\nexport const getWeixinCollection: PublishAction = async (_task, params) => {\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\")\n\t\t},\n\t});\n const fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\n\tconst res = await http.api<CollectDetailResponse>({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/appmsgalbummgr\",\n\t\tparams: {\n action: 'list',\n begin: 0,\n count: 100,\n sub_title:'',\n type: 0,\n latest: 1,\n need_pay: 0,\n fingerprint,\n token: params.token,\n lang: 'zh_CN',\n f: 'json',\n ajax: 1\n\t\t},\n\t});\n\n\treturn success(res.list_resp.items, res.base_resp.ret === 0 ? \"微信合计信息获取成功!\" : \"微信合集信息获取失败!\");\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetWeixinConfigParams extends ActiomCommonParams {\n\ttoken: string | number;\n}\n\ninterface QuotaDetail {\n\toriginal_quota: number;\n\tquota: number;\n\tstr_date: string;\n}\n\ninterface QuotaDetailResponse {\n\tbase_resp: { err_msg: string ,ret: number },\n\tquota_detail_list: { quota_item_list: QuotaDetail, quota_type: string }[];\n}\n\n\nexport interface ConfigData {\n\tpublishQuota: QuotaDetail[];\n}\n\nexport type PublishAction = CommonAction<GetWeixinConfigParams, ConfigData>;\n\nexport const getWeixinConfig: PublishAction = async (_task, params) => {\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\")\n\t\t},\n\t});\n const fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\n\tconst res = await http.api<QuotaDetailResponse>({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssendpage\",\n\t\tparams: {\n\t\t\tf: 'json',\n\t\t\ttoken: params.token,\n\t\t\tlang: 'zh_CN',\n\t\t\tajax: 1,\n\t\t\tfingerprint: fingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t},\n\t});\n\tconst filtered = {\n\t\tpublishQuota : res.base_resp.ret === 0? res.quota_detail_list\n\t\t.filter(item => item.quota_type === \"kQuotaTypeMassSendNormal\")\n\t\t.map(item => item.quota_item_list): [],\n\t}\n\treturn success(filtered, res.base_resp.ret === 0 ? \"微信配置信息获取成功!\" : \"微信配置信息获取失败!\");\n};\n","import {type CommonAction, response, success} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../types\";\nimport { Http } from \"../../utils/http\";\nimport { z } from \"zod\";\n\nexport interface CollectionResponse {\n success: boolean;\n result: number;\n data: {\n userDetail:{\n id: string;\n nickname: string;\n url: string;\n }\n collections: CollectionDetail[]\n };\n}\n\nexport const CollectionDetailSchema = z.object({\n id: z.string(),\n name: z.string(),\n desc: z.string(),\n userId: z.string(),\n noteNum: z.number(),\n viewNum: z.number(),\n cursor: z.string(),\n enabled: z.boolean(),\n status: z.number(),\n createTime: z.number(),\n unreadCount: z.number(),\n coverImage: z.null(),\n deeplink: z.string(),\n});\n\nexport type CollectionDetail = z.infer<typeof CollectionDetailSchema>;\n\nexport type PublishAction = CommonAction<ActiomCommonParams, CollectionDetail[]>;\n\nexport const getXhsCollection: PublishAction = async (_task, params) => {\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com\",\n origin: \"https://creator.xiaohongshu.com\",\n };\n\n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n \n\tconst http = new Http(...args);\n const res = await http.api<CollectionResponse>({\n method: \"get\",\n url: \"https://creator.xiaohongshu.com/api/galaxy/user/my-info\",\n },{ retries: 3, retryDelay: 20, timeout: 3000 });\n\n const isSuccess = res.result === 0;\n const message = `合集信息获取${isSuccess ? \"成功!\" : \"失败!\"}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n const data = isSuccess ? res.data.collections : [];\n\n return response(isSuccess ? 0 : 400, message, data);\n};\n","import { z } from 'zod';\n\nexport const ttConfigDataSchema = z.object({\n fansNum: z.number(),\n fansNumYesterday: z.number().nullable(),\n readNum: z.number(),\n incomeNum: z.number(),\n incomeNumYesterday: z.number().nullable(),\n showNumYesterday: z.number().nullable(),\n readNumYesterday: z.number().nullable(),\n likeNumYesterday: z.number().nullable(),\n commentNumYesterday: z.number().nullable(),\n});\n\nexport type ttConfigData = z.infer<typeof ttConfigDataSchema>;\n\nexport const xhsConfigDataSchema = z.object({\n fansNum: z.number(),\n favedNum: z.number(),\n watchNumLastWeek: z.number(),\n likeNumLastWeek: z.number(),\n collectNumLastWeek: z.number(),\n commentNumLastWeek: z.number(),\n fansNumLastWeek: z.number(),\n fansNumYesterday: z.number(),\n});\n\nexport type xhsConfigData = z.infer<typeof xhsConfigDataSchema>;\n\nexport const wxConfigDataSchema = z.object({\n fansNum: z.number(),\n fansNumYesterday: z.number(),\n readNumYesterday: z.number(),\n shareNumYesterday: z.number(),\n});\n\nexport type wxConfigData = z.infer<typeof wxConfigDataSchema>;\n\nexport const bjhConfigDataSchema = z.object({\n fansNum: z.number(),\n fansNumYesterday: z.number().nullable(),\n readNum: z.number(),\n incomeNum: z.number(),\n incomeNumYesterday: z.number().nullable(),\n recommendNumYesterday: z.number().nullable(),\n readNumYesterday: z.number().nullable(),\n likeNumYesterday: z.number().nullable(),\n commentNumYesterday: z.number().nullable(),\n});\n\nexport type bjhConfigData = z.infer<typeof bjhConfigDataSchema>\n\n\nexport interface SearchAccountInfoResponse {\n code: number;\n message: string;\n data: ttConfigData | xhsConfigData | wxConfigData | bjhConfigData | null;\n};\n\nexport const errorResponse = (\n message: string,\n code = 500\n): SearchAccountInfoResponse => ({\n code,\n message,\n data: null,\n});\n","// @ts-ignore\nimport {AutomateTask, success} from \"@iflyrpa/share\";\nimport { SearchAccountInfoResponse, errorResponse, bjhConfigData } from \"./types\";\nimport { type SearchAccountInfoParams } from \".\";\nimport { Http } from \"../../utils/http\";\nimport { TimeFormatter } from \"../../utils\";\n\nexport async function getBaijiahaoData(_task: AutomateTask, params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n try {\n const { token } = params;\n if (!token) return errorResponse(\"缺少token\", 200);\n\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n token: String(token),\n Referer: \"https://baijiahao.baidu.com/builder/rc/home\",\n },\n });\n\n const yesterday = TimeFormatter.format(new Date().setDate(new Date().getDate() - 1), \"yyyyMMdd\");\n const [fansData, readData, incomeData, yesterdayData] = await Promise.all([\n http.api<{ data: { coreData: { fansCount: number; } } }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/pcui/home/index\",\n }),\n http.api<{ data: { total: { view_count: number; } } }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/author/eco/statistic/getauthorhistory\",\n }),\n http.api<{ data: { all_income: { total_income: number; yesterday_income: number; } } }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/author/eco/income4/homepageincome\",\n }),\n http.api<{ data: { data: { recommend_count: number; view_count: number; likes_count: number; comment_count: number; fans_increase: number; } } }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/author/eco/statistics/appStatistic\",\n params: {\n type: \"all\",\n is_yesterday: false,\n start_day: yesterday,\n end_day: yesterday,\n stat: 0,\n },\n }),\n ]);\n\n const bjhData: bjhConfigData = {\n fansNum: fansData.data.coreData.fansCount,\n fansNumYesterday: yesterdayData.data.data.fans_increase === -1 ? null : yesterdayData.data.data.fans_increase,\n readNum: readData.data.total.view_count,\n incomeNum: incomeData.data.all_income.total_income,\n incomeNumYesterday: incomeData.data.all_income.yesterday_income === -1 ? null : incomeData.data.all_income.yesterday_income,\n recommendNumYesterday: yesterdayData.data.data.recommend_count === -1 ? null : yesterdayData.data.data.recommend_count,\n readNumYesterday: yesterdayData.data.data.view_count === -1 ? null : yesterdayData.data.data.view_count,\n likeNumYesterday: yesterdayData.data.data.likes_count === -1 ? null : yesterdayData.data.data.likes_count,\n commentNumYesterday: yesterdayData.data.data.comment_count === -1 ? null : yesterdayData.data.data.comment_count,\n };\n\n return success(bjhData, \"百家号平台数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"百家号平台数据获取失败\");\n }\n}\n","// @ts-ignore\nimport {AutomateTask, success} from \"@iflyrpa/share\";\nimport {SearchAccountInfoResponse, errorResponse, ttConfigData} from \"./types\";\nimport {type SearchAccountInfoParams} from \".\";\nimport {Http} from \"../../utils/http\";\n\nexport async function getToutiaoData(_task: AutomateTask, params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n const {cookies} = params;\n try {\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n },\n });\n\n const [totalData, contentDataYesterday] = await Promise.all([\n http.api<{\n data: {\n statistic: {\n data: {\n total_subscribe_count: string;\n total_read_play_count: string;\n total_income: number;\n yesterday_income: number;\n is_yesterday_income_ready: boolean;\n yesterday_fans?: string\n yesterday_play_count: string;\n yesterday_read_count: string;\n }\n }\n }\n }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/fe_api/home/merge_v2\",\n params: {app_id: 1231},\n }),\n http.api<{\n author_stat: {\n consume_data: { impression_count: number; go_detail_count: number; },\n interaction_data: { comment_count: number; digg_count: number; }\n }\n }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/agw/statistic/v2/content_stat\",\n params: {type: 0, app_id: 1231},\n }),\n ]);\n\n const isReday = totalData.data.statistic.data.yesterday_read_count !== undefined\n\n const ttData: ttConfigData = {\n fansNum: Number(totalData.data.statistic.data.total_subscribe_count),\n fansNumYesterday: totalData.data.statistic.data.yesterday_fans !== undefined ? Number(totalData.data.statistic.data.yesterday_fans) : null,\n readNum: Number(totalData.data.statistic.data.total_read_play_count),\n incomeNum: totalData.data.statistic.data.total_income,\n incomeNumYesterday: totalData.data.statistic.data.is_yesterday_income_ready ? totalData.data.statistic.data.yesterday_income : null,\n showNumYesterday: isReday ? contentDataYesterday.author_stat.consume_data.impression_count: null,\n readNumYesterday: isReday ? contentDataYesterday.author_stat.consume_data.go_detail_count : null,\n likeNumYesterday: isReday ? contentDataYesterday.author_stat.interaction_data.digg_count: null,\n commentNumYesterday: isReday ? contentDataYesterday.author_stat.interaction_data.comment_count: null,\n };\n\n return success(ttData, \"头条号粉丝数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"头条号数据获取失败\");\n }\n\n}","// @ts-ignore\nimport {AutomateTask, success} from \"@iflyrpa/share\";\nimport {SearchAccountInfoResponse, errorResponse, wxConfigData} from \"./types\";\nimport {type SearchAccountInfoParams} from \".\";\nimport {Http} from \"../../utils/http\";\nimport {TimeFormatter} from \"../../utils\";\n\nexport async function getWeixinData(_task: AutomateTask, params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n const {token} = params;\n\n if (!token) return {code: 400, message: \"缺少token\", data: null};\n\n try {\n const {token} = params;\n if (!token) return errorResponse(\"缺少token\", 200);\n\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n },\n });\n const userInfo = {\n originalCount: 0,\n totalUsers: 0,\n userIncrease: 0,\n yesterday: {\n read: 0,\n share: 0,\n subscribe: 0\n }\n };\n const userInfoHtml = await http.api<string>({\n method: \"get\",\n url: \"https://mp.weixin.qq.com/cgi-bin/home\",\n params: {\n t: \"home/index\",\n token,\n lang: \"zh_CN\"\n },\n })\n if( userInfoHtml.includes(\"请重新<a id='jumpUrl' href='/'>登录</a>\")) return errorResponse(\"Token已失效,请重新获取\");\n\n // 提取原创内容(兼容属性、换行)\n const originalMatch = userInfoHtml.trim().match(/原创内容[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (originalMatch) userInfo.originalCount = Number.parseInt(originalMatch[1].replace(/,/g, ''), 10);\n\n // 提取总用户数(兼容属性、空格)\n const totalUsersMatch = userInfoHtml.match(/总用户数[\\s\\S]*?<div[^>]*class=[\"']weui-desktop-user_sum[\"'][^>]*>[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (totalUsersMatch) userInfo.totalUsers = Number.parseInt(totalUsersMatch[1].replace(/,/g, ''), 10);\n\n // 提取用户增长(支持正负号、带属性)\n const increaseMatch = userInfoHtml.match(/weui-desktop-user_increase_num[^>]*>\\s*([+-]?)\\s*<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (increaseMatch) {\n const sign = increaseMatch[1] === '-' ? -1 : 1;\n userInfo.userIncrease = sign * Number.parseInt(increaseMatch[2].replace(/,/g, ''), 10);\n }\n\n // 昨日阅读\n const readMatch = userInfoHtml.match(/昨日阅读[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (readMatch) userInfo.yesterday.read = Number.parseInt(readMatch[1].replace(/,/g, ''), 10);\n\n // 昨日分享\n const shareMatch = userInfoHtml.match(/昨日分享[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (shareMatch) userInfo.yesterday.share = Number.parseInt(shareMatch[1].replace(/,/g, ''), 10);\n\n // 昨日新增关注\n const subscribeMatch = userInfoHtml.match(/昨日新增关注[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (subscribeMatch) userInfo.yesterday.subscribe = Number.parseInt(subscribeMatch[1].replace(/,/g, ''), 10);\n\n const wxData: wxConfigData = {\n fansNum: userInfo.totalUsers,\n fansNumYesterday: userInfo.yesterday.subscribe,\n readNumYesterday: userInfo.yesterday.read,\n shareNumYesterday: userInfo.yesterday.share,\n };\n\n return success(wxData, \"微信平台数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"微信平台数据获取失败\");\n }\n}","// @ts-ignore\nimport {AutomateTask, success} from \"@iflyrpa/share\";\nimport { type SearchAccountInfoResponse, errorResponse, type xhsConfigData } from \"./types\";\nimport type { SearchAccountInfoParams } from \".\";\nimport { Http } from \"../../utils/http\";\nimport { Xhshow } from \"../../utils/xhsXsEncrypt\";\nimport type {AxiosProxyParams} from \"../../types\";\n\nexport async function getXiaohongshuData(_task: AutomateTask, params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n\n try {\n const a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) {\n return errorResponse(\"账号数据异常,请重新绑定账号后重试。\", 200);\n }\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com\",\n origin: \"https://creator.xiaohongshu.com\",\n }\n const args: AxiosProxyParams = [\n {headers},\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n const http = new Http(...args);\n const xsEncrypt = new Xhshow();\n \n const sevenDataUrl = \"/api/galaxy/v2/creator/datacenter/account/base\";\n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n const sevenDataXsHeader = xsEncrypt.signHeadersGet(sevenDataUrl, recordCookie, \"xhs-pc-web\", null);\n\n const [overAllData, sevenData] = await Promise.all([\n http.api<{ data: { fans_count: number; faved_count: number; } }>({\n method: \"get\",\n url: \"https://creator.xiaohongshu.com/api/galaxy/creator/home/personal_info\",\n },{ retries: 3, retryDelay: 20, timeout: 3000 }),\n http.api<{ data: { seven: { view_count: number; like_count: number; collect_count: number; comment_count: number; rise_fans_count: number; rise_fans_list: { data: number; count: number; }[] } } }>({\n method: \"get\",\n baseURL: \"https://creator.xiaohongshu.com\",\n url: sevenDataUrl,\n headers: sevenDataXsHeader,\n },{ retries: 3, retryDelay: 20, timeout: 3000 }),\n ]);\n\n const xhsData: xhsConfigData = {\n fansNum: overAllData.data.fans_count,\n favedNum: overAllData.data.faved_count,\n watchNumLastWeek: sevenData.data.seven.view_count,\n likeNumLastWeek: sevenData.data.seven.like_count,\n collectNumLastWeek: sevenData.data.seven.collect_count,\n commentNumLastWeek: sevenData.data.seven.comment_count,\n fansNumLastWeek: sevenData.data.seven.rise_fans_count,\n fansNumYesterday: sevenData.data.seven.rise_fans_list[0].count\n };\n\n return success(xhsData, \"小红书平台数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"小红书平台数据获取失败\");\n }\n}","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport {ActionCommonParamsSchema} from \"../../types\";\nimport { ttConfigData, xhsConfigData, wxConfigData, bjhConfigData } from \"./types\";\nimport { getBaijiahaoData } from \"./getBjhInfo\";\nimport { getToutiaoData } from \"./getTTInfo\";\nimport { getWeixinData } from \"./getWxInfo\";\nimport { getXiaohongshuData } from \"./getXhsInfo\";\nimport { z } from \"zod\"; \n\nexport const SearchAccountInfoParamsSchema = ActionCommonParamsSchema.extend({\n token: z.union([z.string(), z.number()]).optional(),\n platform: z.enum([\"toutiao\", \"xiaohongshu\", \"weixin\", \"baijiahao\"]),\n})\n\nexport type SearchAccountInfoParams = z.infer<typeof SearchAccountInfoParamsSchema>;\n\nexport const SearchAccountInfo: CommonAction<\nSearchAccountInfoParams,\nttConfigData | xhsConfigData | wxConfigData | bjhConfigData | null\n> = async (_task, params) => {\n const { platform } = params;\n switch (platform) {\n case \"toutiao\":\n return getToutiaoData(_task, params);\n case \"xiaohongshu\":\n return getXiaohongshuData(_task, params);\n case \"weixin\":\n return getWeixinData(_task, params);\n case \"baijiahao\":\n return getBaijiahaoData(_task, params);\n default:\n return success(null, \"暂不支持该平台\");\n }\n};","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface SearchBjhTopicListParams extends ActiomCommonParams {\n\ttoken: string;\n topicContent: string;\n}\n\nexport interface TopicData {\n\ttitle: string;\n\tid: string;\n}\n\nexport type PublishAction = CommonAction<SearchBjhTopicListParams, TopicData[]>;\n\nexport const searchBjhTopicList: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\ttoken: params.token,\n\t\t},\n\t});\n\n\tconst res = await http.api<{ errno: number; data: { hot: TopicData[] } }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/pcui/pcpublisher/searchtopic\",\n\t\tparams: {\n\t\t\tcontent: params.topicContent,\n resource_type: 1\n\t\t},\n\t});\n\n\treturn success(res?.data?.hot ?? [], \"百家号\" + (res.errno == 0 ? \"话题获取成功!\":\"话题获取失败\"));\n};\n","// 文章公共属性\nimport { z } from 'zod';\n\n// 文章公共属性\nconst BaseArticleSchema = z.object({\n title: z.string(), // 文章标题\n imageUrl: z.string(), // 图片地址\n createTime: z.number(), // 发布时间\n redirectUrl: z.string(), // 文章网页端地址\n originalData: z.unknown().optional(), // 原始数据,可选\n});\n\n// 平台特定文章属性\nexport const ToutiaoArticleSchema = BaseArticleSchema.extend({\n showNum: z.number(), // 展现量\n readNum: z.number(), // 阅读量\n likeNum: z.number(), // 点赞量\n commentNum: z.number(), // 评论量\n});\nexport type ToutiaoArticle = z.infer<typeof ToutiaoArticleSchema>;\n\nexport const WeixinArticleSchema = BaseArticleSchema.extend({\n readNum: z.number(), // 阅读人数\n likeNum: z.number(), // 点赞人数\n shareNum: z.number(), // 分享人数\n recommendNum: z.number(), // 推荐人数\n});\nexport type WeixinArticle = z.infer<typeof WeixinArticleSchema>;\n\nexport const BaijiahaoArticleSchema = BaseArticleSchema.extend({\n recommendNum: z.number(), // 推荐量\n collectNum: z.number(), // 收藏量\n readNum: z.number(), // 阅读量\n likeNum: z.number(), // 点赞量\n commentNum: z.number(), // 评论量\n shareNum: z.number(), // 转发量\n});\nexport type BaijiahaoArticle = z.infer<typeof BaijiahaoArticleSchema>;\n\nexport const XiaohongshuArticleSchema = BaseArticleSchema.extend({\n readNum: z.number(), // 阅读量\n likeNum: z.number(), // 点赞量\n commentNum: z.number(), // 评论量\n collectNum: z.number(), // 收藏量\n shareNum: z.number(), // 转发量\n});\nexport type XiaohongshuArticle = z.infer<typeof XiaohongshuArticleSchema>;\n\n// 响应数据类型\nexport const FetchArticlesDataSchema = z.object({\n articleCell: z.array(z.union([ToutiaoArticleSchema, WeixinArticleSchema, BaijiahaoArticleSchema, XiaohongshuArticleSchema])).optional(),\n pagination: z.object({\n total: z.number().optional(), // 总条数\n nextPage: z.boolean().optional(), // 是否有下一页\n lastPage: z.number().optional(), // 用于维系游标所在页,提高查询速度\n cursor: z.number().optional(), // 返回最终游标\n pageNum: z.number(), // 当前页\n pageSize: z.number(), // 每页大小\n }).optional(),\n});\n\nexport type FetchArticlesData = z.infer<typeof FetchArticlesDataSchema>;\nexport interface FetchArticlesResponse {\n\tcode: number;\n\tmessage: string;\n\tdata: FetchArticlesData | Record<string, never>;\n}\n\nexport const errorResponse = (message: string, code = 500): FetchArticlesResponse => ({\n\tcode,\n\tmessage,\n\tdata: {},\n});\n","// @ts-ignore\nimport {AutomateTask, success} from \"@iflyrpa/share\";\nimport {type FetchArticlesResponse, errorResponse,type BaijiahaoArticle } from \"./types\";\nimport type{ FetchArticlesParams } from \".\"\nimport { Http } from \"../../utils/http\";\n\ninterface ArticleInfo {\n abstract: string;\n antispam_code: number;\n app_id: string;\n article_id: string;\n article_set_nids: string;\n audit_msg: string;\n authentication_type: string;\n auto_generate_id: string;\n bad_status: string;\n bjh_ext_info: string;\n bjh_video_finger_printing: string;\n call_slot: number;\n commit_at: string;\n content?: string;\n cover_images: string;\n cover_layout: string;\n created_at: string;\n creative_method: string;\n deleted_at: string;\n displaytype_exinfo: string;\n domain: string;\n dst_status: string;\n ext_info: string;\n feed_cat: string;\n feed_id: string;\n feed_id_from: number;\n feed_push_amount: number;\n feed_rs: string;\n feed_source_id: string;\n feed_sub_cat: string;\n file_name: string;\n first_exclusive_publish: number;\n first_storage_time: number;\n has_edited_times: number;\n is_authenticated: number;\n is_feed_import: number;\n is_good: number;\n is_pay: number;\n is_published: number;\n is_reported: number;\n is_transfer?: number;\n is_tagged: number;\n is_wx_spread: number;\n issue_status: number;\n midway_issue_status: number;\n mount_goods: number;\n mthvideo: number;\n nid: string;\n open_comment: number;\n open_front_page: number;\n origin_app_id: string;\n origin_id: string;\n origin_url: string;\n original_status: number;\n pay_money: number;\n platform_source: number;\n provider: string;\n publish_at: string;\n publish_time: string;\n publish_type: string;\n quality: number;\n quality_audit_type: string;\n quality_not_pass_reason: string;\n quality_status: string;\n res_slot: string;\n secure_not_pass_reason: string;\n secure_status: string;\n shoubai_c_articleid: string;\n smp_url: string;\n source_name: string;\n source_reprinted_allow: number;\n source_reprinted_astrict: string;\n source_type: string;\n status: string;\n sub_status_id: number;\n subtitle: string;\n tag: string;\n tag_detail: string;\n title: string;\n top_end: number;\n top_st: number;\n tp_id: string;\n transform_id: string;\n trigger_odyssey: number;\n type: string;\n updated_at: string;\n url: string;\n vertical_cover: string;\n video_sub_type: number;\n video_tag: string;\n weixin_import_type: number;\n id: string;\n certify_url: string;\n timer_time: number;\n similar_article_id: string;\n article_push_audit_res: number;\n withdraw_status: {\n withdraw_msg: string;\n has_withdraw_times: {\n news: number;\n };\n can_withdraw: number;\n };\n modify_status: {\n edit_msg: string;\n can_edit: number;\n };\n delete_status: {\n delete_msg: string;\n can_delete: number;\n };\n recover_status: {\n recover_msg: string;\n can_recover: number;\n };\n can_edit_goods: number;\n recomm_status: {\n can_recomm: number;\n };\n dxxFinalAuditResult: string;\n read_amount: number;\n read_num: number;\n forward_num: number;\n praise_num: number;\n comment_num: number;\n rec_amount: number;\n comment_amount: number;\n share_amount: number;\n like_amount: number;\n collection_amount: number;\n profit: number;\n is_rec: number;\n solicit_info: {\n tag: string | null;\n point: string | null;\n inspire: string | null;\n };\n group_can_share: number;\n group_already_shared: number;\n show_selected_comment_option: number;\n show_ai_intro: number;\n flow_invest_status: number;\n flow_invest_msg: string;\n package_invest_status: number;\n can_only_modify_goods: number;\n audit_msg_color: string;\n audit_msg_icon: string;\n playlet_pay2free_switch: number;\n audit_type_v0: string;\n is_ridewind: string;\n is_show_adding: string;\n is_show_add_view: string;\n add_view_count: string;\n coupons_add_view_count: string;\n platform_add_view_count: string;\n rec_count: number;\n share_url: string;\n v_type: number;\n v_intro: string;\n duration: number | null;\n video_num: number;\n};\n\ntype ArticleApiResponse = {\n data: {\n list: ArticleInfo[];\n page: {\n currentPage: number;\n pageSize: number;\n totalCount: number;\n totalPage: number;\n };\n };\n\n};\n\nexport async function handleBaijiahaoData(_task: AutomateTask, params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n try {\n const {\n cookies,\n token,\n pageNum = 1,\n pageSize = 10,\n showOriginalData = false,\n onlySuccess = false, \n containsArticle = false,\n } = params;\n\n if (!token) return { code: 400, message: \"缺少token\", data: {} };\n const http = new Http({\n headers: {\n cookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n token: token\n },\n });\n\n async function fetchArticles(\n pageNum: number,\n pageSize: number,\n onlySuccess = false\n ): Promise<ArticleApiResponse> {\n return await http.api<ArticleApiResponse>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/pcui/article/lists\",\n params: {\n currentPage: pageNum,\n pageSize: pageSize,\n search: \"\",\n type: \"\",\n collection: onlySuccess ? \"publish\" : \"\",\n clearBeforeFetch: false,\n dynamic: 1,\n },\n });\n };\n\n\n const articleInfo = await fetchArticles(pageNum, pageSize, onlySuccess);\n const filtered = articleInfo.data.list.filter(item => item.status !== \"draft\");\n const totalPage = articleInfo.data.page?.totalPage || 1;\n\n let currentPage = pageNum + 1;\n const usedPages = new Set<number>();\n while (filtered.length < pageSize && currentPage <= totalPage) {\n if (usedPages.has(currentPage)) {\n currentPage++;\n continue;\n }\n\n const res = await fetchArticles(currentPage, pageSize, onlySuccess);\n usedPages.add(currentPage);\n\n const validItems = res.data.list.filter(item => item.status !== \"draft\");\n filtered.push(...validItems);\n\n currentPage++;\n }\n\n // 截取前 pageSize 条返回\n const final = filtered.slice(0, pageSize);\n \n const getDetailContent = async (url: string) => {\n try {\n const detailInfo = await http.api<string>({ method: \"get\", url });\n const match = detailInfo.match( /window\\.jsonData\\s*=\\s*(\\{[\\s\\S]*?\\});window\\.firstScreenTime/);\n if (!match) { \n const isCheckPass = detailInfo.indexOf('百度安全验证')\n if (isCheckPass > -1) {\n return '⚠️ 需要进行百度安全验证,请手动打开链接完成验证后再尝试获取文章内容';\n }\n return null;\n }\n const jsonStr = match[1].trim();\n type DataType = {\n bsData:\n {\n superlanding:\n {\n itemData:\n {\n sections: {\n content: string;\n }[]\n }\n }[]\n }\n };\n const data: DataType = JSON.parse(jsonStr);\n return data.bsData.superlanding[0].itemData.sections.map(item => item.content).join(\"\");\n } catch (err) {\n console.error(\"❌ JSON 解析失败:\", err);\n return null;\n }\n }\n\n // 转换结构\n const articleCell: BaijiahaoArticle[] = await Promise.all(\n final.map(async (item) => ({\n title: item?.is_transfer ?? false ? item.content || \"\" : item.title,\n imageUrl: JSON.parse(item.cover_images)[0]?.src || \"\",\n createTime: Math.floor(new Date(item.publish_at.replace(/-/g, \"/\")).getTime() / 1000),\n redirectUrl: item.url || item.share_url,\n recommendNum: item.rec_amount | item.forward_num,\n collectNum: item.collection_amount,\n readNum: item.read_amount | item.read_num,\n likeNum: item.like_amount | item.praise_num,\n commentNum: item.comment_amount | item.comment_num,\n shareNum: item.share_amount,\n ...(showOriginalData ? {originalData: item} : {}),\n ...(containsArticle ? {article: await getDetailContent(item.url)} : {})\n\n }))\n );\n\n return success(\n {\n articleCell,\n ...(onlySuccess ? {\n pagination: {\n total: articleInfo.data.page?.totalCount,\n pageNum,\n pageSize,\n }\n } : null),\n },\n \"百家号文章数据获取成功\"\n );\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"百家号文章数据获取失败\");\n }\n}\n","// @ts-ignore\nimport {AutomateTask, success} from \"@iflyrpa/share\";\nimport { FetchArticlesResponse, errorResponse, ToutiaoArticle } from \"./types\";\nimport { type FetchArticlesParams } from \".\"\nimport { Http } from \"../../utils/http\";\n\ninterface ArticleResponse {\n itemCell: {\n actionCtrl: Record<string, unknown>;\n cellCtrl: {\n articleImageType: number;\n dspStyle: null | string;\n };\n extra: {\n answer_count: string;\n origin_content: string;\n };\n logPB: string;\n articleBase: {\n createTime: number;\n itemStatus: number;\n articleURL: string;\n displayFlags: string;\n gidStr: string;\n subTitle: string | null;\n title: string;\n abstractText: string;\n content: string;\n displayURL: string;\n groupID: number;\n publishTime: number;\n schema: string;\n visibilityLevel: number;\n };\n articleClassification: {\n bizTag: number;\n groupSource: number;\n isOriginal: boolean;\n isStick: boolean;\n isSubject: boolean;\n articleSubType: number;\n articleType: number;\n bizID: number;\n };\n containsElements: {\n hasImage: boolean;\n hasVideo: boolean;\n };\n imageList: {\n staggerFeedCover: ImageInfo[];\n thumbImageList: ImageInfo[];\n };\n itemCounter: {\n readCount: number;\n repinCount: number;\n showCount: number;\n videoWatchCount: number;\n commentCount: number;\n diggCount: number;\n };\n richContentInfo: {\n richContent: string;\n titleRichSpan: string;\n };\n shareInfo: {\n shareURL: string;\n };\n userInfo: {\n avatarURL: string;\n name: string;\n userID: number;\n };\n };\n}\n\ninterface ImageInfo {\n width: number;\n height: number;\n uri: string;\n url: string;\n}\n\nexport async function handleToutiaoData(_task: AutomateTask, params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n try {\n const {\n cookies,\n pageNum = 1,\n pageSize = 10,\n showOriginalData = false,\n onlySuccess = false,\n containsArticle = false,\n } = params;\n\n const http = new Http({\n headers: {\n cookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n },\n });\n\n const getDetailContent = async (id: string) => {\n try {\n const detailInfo = await http.api<{content: string}>({ \n method: \"get\", \n url: 'https://mp.toutiao.com/mp/agw/article/edit',\n params: {\n pgc_id: id,\n wxstyle:0,\n format:\"json\",\n }\n });\n \n return detailInfo.content;\n } catch (err) {\n console.error(\"❌ JSON 解析失败:\", err);\n return null;\n }\n }\n \n const visitedUid = await http.api<{ user_id_str: string }>({\n url: \"https://mp.toutiao.com/mp/agw/creator_center/user_info?\",\n method: \"get\",\n params: { app_id: 1231 },\n })\n\n const articleInfo = await http.api<{ data: { assembleCell: ArticleResponse }[], total_number: number; api_base_info: { app_extra_params: string } }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/api/feed/mp_provider/v1/\",\n params: {\n provider_type: \"mp_provider\",\n aid: \"13\",\n app_name: \"news_article\",\n category: \"mp_all\",\n channel: \"\",\n stream_api_version: \"88\",\n genre_type_switch: '{\"repost\":1,\"small_video\":1,\"toutiao_graphic\":1,\"weitoutiao\":1,\"xigua_video\":1}',\n device_platform: \"pc\",\n platform_id: \"0\",\n visited_uid: visitedUid.user_id_str,\n offset: (pageNum - 1) * pageSize,\n count: pageSize,\n keyword: \"\",\n client_extra_params: `{\"category\":\"mp_all\",\"real_app_id\":\"1231\",\"need_forward\":\"true\",\"offset_mode\":\"1\",\"page_index\":\"1\",\"status\":${onlySuccess ? \"2\" : \"8\"},\"source\":\"0\"}`,\n app_id: \"1231\"\n },\n });\n\n const articleCell: ToutiaoArticle[] = await Promise.all(\n articleInfo.data.map(async (item) => ({\n title: item.assembleCell.itemCell.articleBase.title,\n imageUrl: item.assembleCell.itemCell.imageList.staggerFeedCover[0].url,\n createTime: item.assembleCell.itemCell.articleBase.publishTime,\n redirectUrl: item.assembleCell.itemCell.articleBase.articleURL,\n showNum: item.assembleCell.itemCell.itemCounter.showCount,\n readNum: item.assembleCell.itemCell.itemCounter.readCount,\n likeNum: item.assembleCell.itemCell.itemCounter.diggCount,\n commentNum: item.assembleCell.itemCell.itemCounter.commentCount,\n ...(showOriginalData ? { originalData: item, } : {}),\n ...(containsArticle ? {article: await getDetailContent(item.assembleCell.itemCell.articleBase.gidStr)} : {})\n }))\n );\n\n const api_base_info_json: { total_count: number } = JSON.parse(articleInfo.api_base_info.app_extra_params)\n return success(\n {\n articleCell,\n ...(onlySuccess ? {\n pagination: {\n total: api_base_info_json.total_count,\n pageNum,\n pageSize,\n }\n } : null),\n },\n \"头条号文章文章获取成功\"\n );\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"头条号文章数据获取失败\");\n }\n}","// @ts-ignore\nimport {AutomateTask, success} from \"@iflyrpa/share\";\nimport type { FetchArticlesParams } from \".\";\nimport { Http } from \"../../utils/http\";\nimport { type FetchArticlesResponse, type WeixinArticle, errorResponse } from \"./types\";\n\ninterface PublishInfo {\n\ttype: number;\n\tmsgid: number;\n\tappmsg_info: Array<{\n\t\tshare_type: number;\n\t\tappmsgid: number;\n\t\tcontent_url: string;\n\t\ttitle: string;\n\t\tis_deleted: boolean;\n\t\tcopyright_status: number;\n\t\tcopyright_type: number;\n\t\tread_num: number;\n\t\tlike_num: number;\n\t\tcomment_id: string;\n\t\tis_comment_enable: boolean;\n\t\tcomment_num: number;\n\t\tcover: string;\n\t\tsmart_product: number;\n\t\tmodify_status: number;\n\t\tappmsg_like_type: number;\n\t\tcan_delete_status: number;\n\t\told_like_num: number;\n\t\titemidx: number;\n\t\tis_pay_subscribe: number;\n\t\tis_from_transfer: number;\n\t\tpublic_tag_info: {\n\t\t\tmodify_times: number;\n\t\t\tinit_tag_list_size: number;\n\t\t};\n\t\tdigest: string;\n\t\tis_cooling_article: number;\n\t\tpic_cdn_url_235_1: string;\n\t\tpic_cdn_url_16_9: string;\n\t\tpic_cdn_url_3_4: string;\n\t\tpic_cdn_url_1_1: string;\n\t\tdisable_recommend: number;\n\t\tline_info: {\n\t\t\tuse_line: number;\n\t\t\tline_count: number;\n\t\t\tsend_time: number;\n\t\t\tis_appmsg_flag: number;\n\t\t\tis_use_flag: number;\n\t\t};\n\t\tclaim_source_type: number;\n\t\tshare_num: number;\n\t\tis_rumor_refutation: number;\n\t\tsegment_comment_id: string;\n\t\tis_segment_comment_enable: boolean;\n\t\tmulti_picture_cover: number;\n\t\tmoment_like_num: number;\n\t\titem_show_type: number;\n\t}>;\n\tcopy_appmsg_id: number;\n\tnew_publish: number;\n}\n\ninterface BasePublishItem<T = string> {\n\tpublish_type: number;\n\tpublish_info: T;\n}\n\ninterface BaseParsedPublishPage<T = string> {\n\ttotal_count: number;\n\tpublish_count: number;\n\tmasssend_count: number;\n\tpublish_list: BasePublishItem<T>[];\n\tfeatured_count: number;\n}\n\ntype ParsedPublishPage = BaseParsedPublishPage<PublishInfo>;\n\nexport async function handleWeixinData(_task: AutomateTask, params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n\ttry {\n\t\tconst {\n\t\t\tcookies,\n\t\t\ttoken,\n\t\t\tpageNum = 1,\n\t\t\tpageSize = 10,\n\t\t\tshowOriginalData = false,\n\t\t\tonlySuccess = false,\n\t\t\tcursor,\n\t\t\tlastPage,\n\t\t\tcontainsArticle = false,\n\t\t} = params;\n\t\tif (!token) return { code: 400, message: \"缺少token\", data: {} };\n\t\tconst http = new Http({\n\t\t\theaders: {\n\t\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\t},\n\t\t});\n\n\t\tconst ParsePublishPage = (body: string): ParsedPublishPage => {\n\t\t\tconst match = body.match(/publish_page\\s*=\\s*({[\\s\\S]*?});/);\n\t\t\tif (!match) {\n\t\t\t\tthrow new Error(\"无法提取 publish_page 字段\");\n\t\t\t}\n\n\t\t\tconst parsedData = JSON.parse(match[1]);\n\n\t\t\t// HTML 实体解码函数\n\t\t\tconst decodeEntities = (str: string, decode = false) => {\n\t\t\t\tconst encodeMap = [\"&\", \"&amp;\", \"<\", \"&lt;\", \">\", \"&gt;\", \" \", \"&nbsp;\", '\"', \"&quot;\", \"'\", \"&#39;\"];\n\t\t\t\tconst decodeMap = [\n\t\t\t\t\t\"&#39;\",\n\t\t\t\t\t\"'\",\n\t\t\t\t\t\"&quot;\",\n\t\t\t\t\t'\"',\n\t\t\t\t\t\"&nbsp;\",\n\t\t\t\t\t\" \",\n\t\t\t\t\t\"&gt;\",\n\t\t\t\t\t\">\",\n\t\t\t\t\t\"&lt;\",\n\t\t\t\t\t\"<\",\n\t\t\t\t\t\"&amp;\",\n\t\t\t\t\t\"&\",\n\t\t\t\t\t\"&#60;\",\n\t\t\t\t\t\"<\",\n\t\t\t\t\t\"&#62;\",\n\t\t\t\t\t\">\",\n\t\t\t\t];\n\t\t\t\tconst map = decode ? decodeMap : encodeMap;\n\n\t\t\t\tlet result = str;\n\t\t\t\tfor (let i = 0; i < map.length; i += 2) {\n\t\t\t\t\tresult = result.replace(new RegExp(map[i], \"g\"), map[i + 1]);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t};\n\n\t\t\tconst finalData = {\n\t\t\t\t...parsedData,\n\t\t\t\tpublish_list: parsedData.publish_list.map((item: { publish_info: string; publish_type: number }) => {\n\t\t\t\t\tconst decoded = decodeEntities(item.publish_info, true);\n\t\t\t\t\tconst parsedInfo = JSON.parse(decoded);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpublish_type: item.publish_type,\n\t\t\t\t\t\tpublish_info: parsedInfo,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t};\n\n\t\t\treturn finalData;\n\t\t};\n\n\t\tasync function fetchArticles(begin: number, pageSize: number, token: string | number): Promise<string> {\n\t\t\treturn http.api<string>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/appmsgpublish\",\n\t\t\t\tparams: {\n\t\t\t\t\tsub: \"list\",\n\t\t\t\t\tbegin: begin,\n\t\t\t\t\tcount: pageSize,\n\t\t\t\t\ttoken: token,\n\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst size = onlySuccess ? 10 : pageSize > 20 ? 20 : pageSize;\n\t\tlet begin = (lastPage ?? pageNum) - 1; // 转换为 0-based index\n\t\tconst rawArticlesInfo = await fetchArticles(begin * size, size, token);\n\t\tconst articlesInfo = ParsePublishPage(rawArticlesInfo);\n\t\tlet articleCell: WeixinArticle[] = [];\n\n\t\tif (!onlySuccess && pageSize > 20) {\n\t\t\tlet totalFetched = articlesInfo.publish_list.length;\n\t\t\tlet nextPage = pageNum + 1;\n\n\t\t\twhile (totalFetched < pageSize) {\n\t\t\t\tconst remaining = pageSize - totalFetched;\n\t\t\t\tconst currentPageSize = remaining > 20 ? 20 : remaining;\n\n\t\t\t\tconst _rawArticlesInfo = await fetchArticles((nextPage - 1) * 20, currentPageSize, token);\n\t\t\t\tconst parsed = ParsePublishPage(_rawArticlesInfo);\n\n\t\t\t\tarticlesInfo.publish_list = articlesInfo.publish_list.concat(parsed.publish_list);\n\t\t\t\ttotalFetched = articlesInfo.publish_list.length;\n\n\t\t\t\tif (parsed.publish_list.length < currentPageSize) break;\n\t\t\t\tnextPage++;\n\t\t\t}\n\t\t}\n\n\t\tlet nextPage = false;\n\t\tif (onlySuccess) {\n\t\t\tlet filteredList = articlesInfo.publish_list\n\t\t\t\t.filter((item) => item.publish_info.appmsg_info[0].content_url.indexOf(\"tempkey\") === -1)\n\t\t\t\t.map((item) => item.publish_info);\n\n\t\t\tif (cursor) {\n\t\t\t\tconst cursorIndex = filteredList.findIndex((item) => item.msgid === cursor);\n\t\t\t\tif (cursorIndex !== -1) filteredList = filteredList.slice(cursorIndex + 1);\n\t\t\t}\n\n\t\t\tlet totalFetched = filteredList.length;\n\n\t\t\twhile (totalFetched < pageSize && begin * size < articlesInfo.total_count) {\n\t\t\t\tbegin += 1; // 页数递增\n\t\t\t\tconst nextRawArticlesInfo = await fetchArticles(begin * size, size, token);\n\t\t\t\tconst nextArticlesInfo = ParsePublishPage(nextRawArticlesInfo);\n\t\t\t\tconst newFiltered = nextArticlesInfo.publish_list\n\t\t\t\t\t.filter((item) => item.publish_info.appmsg_info[0].content_url.indexOf(\"tempkey\") === -1)\n\t\t\t\t\t.map((item) => item.publish_info);\n\t\t\t\tfilteredList = filteredList.concat(newFiltered);\n\t\t\t\ttotalFetched = filteredList.length;\n\t\t\t}\n\n\t\t\tfilteredList = filteredList.slice(0, pageSize);\n\t\t\ttotalFetched = filteredList.length;\n\n\t\t\tif (totalFetched >= pageSize && begin * size < articlesInfo.total_count) {\n\t\t\t\tconst nextRawArticlesInfo = await fetchArticles((begin + 1) * size, size, token);\n\t\t\t\tconst nextArticlesInfo = ParsePublishPage(nextRawArticlesInfo);\n\t\t\t\tnextPage =\n\t\t\t\t\tnextArticlesInfo.publish_list.length > 0 &&\n\t\t\t\t\tnextArticlesInfo.publish_list.some(\n\t\t\t\t\t\t(item) => item.publish_info.appmsg_info[0].content_url.indexOf(\"tempkey\") === -1,\n\t\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst getDetailContent = async (id: number) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst detailInfo = await http.api<string>({\n\t\t\t\t\t\tmethod: \"get\",\n\t\t\t\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/appmsg\",\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\ttoken,\n\t\t\t\t\t\t\tt: \"media/appmsg_edit\",\n\t\t\t\t\t\t\taction: \"edit\",\n\t\t\t\t\t\t\ttype: 77,\n\t\t\t\t\t\t\tappmsgid: id,\n\t\t\t\t\t\t\tisMul: 1,\n\t\t\t\t\t\t\tget_delete: 1,\n\t\t\t\t\t\t\tre_edit: 1,\n\t\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\n\t\t\t\t\tconst text = detailInfo.match(/var\\s+infos\\s*=\\s*({[\\s\\S]*?})\\s*,\\s*item\\s*=/);\n\t\t\t\t\tif (!text) {\n\t\t\t\t\t\tconst isCheckPass = detailInfo.indexOf(\"环境异常\");\n\t\t\t\t\t\tif (isCheckPass > -1) return \"当前环境异常,无法获取文章内容\";\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst deatil: { item: { content: string }[] } = JSON.parse(text[1].trim());\n\n\t\t\t\t\treturn deatil.item[0].content;\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconsole.error(\"❌ 解析失败:\", err);\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst lastMsgId = filteredList.length > 0 ? filteredList[filteredList.length - 1].msgid : undefined;\n\t\t\tarticleCell = await Promise.all(\n\t\t\t\tfilteredList.map(async (item) => ({\n\t\t\t\t\ttitle: item.appmsg_info[0].title,\n\t\t\t\t\timageUrl: item.appmsg_info[0].cover,\n\t\t\t\t\tcreateTime: item.appmsg_info[0].line_info.send_time,\n\t\t\t\t\tredirectUrl: item.appmsg_info[0].content_url,\n\t\t\t\t\treadNum: item.appmsg_info[0].read_num,\n\t\t\t\t\tlikeNum: item.appmsg_info[0].old_like_num,\n\t\t\t\t\tshareNum: item.appmsg_info[0].share_num,\n\t\t\t\t\trecommendNum: item.appmsg_info[0].like_num,\n\t\t\t\t\t...(showOriginalData ? { originalData: item } : {}),\n\t\t\t\t\t...(containsArticle ? { article: await getDetailContent(item.msgid) } : {}),\n\t\t\t\t})),\n\t\t\t);\n\n\t\t\treturn success(\n\t\t\t\t{\n\t\t\t\t\tarticleCell,\n\t\t\t\t\tpagination: {\n\t\t\t\t\t\tnextPage,\n\t\t\t\t\t\tpageNum,\n\t\t\t\t\t\tpageSize,\n\t\t\t\t\t\tlastPage: begin + 1, // 返回当前页数\n\t\t\t\t\t\tcursor: lastMsgId, // 返回最后一条的 msgid\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\"微信文章文章获取成功\",\n\t\t\t);\n\t\t}\n\n\t\tarticleCell = articlesInfo.publish_list.map((item) => ({\n\t\t\ttitle: item.publish_info.appmsg_info[0].title,\n\t\t\timageUrl: item.publish_info.appmsg_info[0].cover,\n\t\t\tcreateTime: item.publish_info.appmsg_info[0].line_info.send_time,\n\t\t\tredirectUrl: item.publish_info.appmsg_info[0].content_url,\n\t\t\treadNum: item.publish_info.appmsg_info[0].read_num,\n\t\t\tlikeNum: item.publish_info.appmsg_info[0].old_like_num,\n\t\t\tshareNum: item.publish_info.appmsg_info[0].share_num,\n\t\t\trecommendNum: item.publish_info.appmsg_info[0].like_num,\n\t\t\t...(showOriginalData ? { originalData: item } : {}),\n\t\t}));\n\t\treturn success(\n\t\t\t{\n\t\t\t\tarticleCell,\n\t\t\t},\n\t\t\t\"微信文章文章获取成功\",\n\t\t);\n\t} catch (error) {\n\t\treturn errorResponse(error instanceof Error ? error.message : \"微信文章数据获取失败\");\n\t}\n}\n","// @ts-ignore\nimport {AutomateTask, success} from \"@iflyrpa/share\";\nimport {errorResponse, type FetchArticlesResponse,type XiaohongshuArticle} from \"./types\";\nimport type{ FetchArticlesParams} from \".\"\nimport {Http} from \"../../utils/http\";\nimport {Xhshow} from \"../../utils/xhsXsEncrypt\";\nimport type {AxiosProxyParams} from \"../../types\";\n\ninterface Note {\n id: string;\n sticky: boolean;\n schedule_post_time: number;\n comments_count: number;\n tab_status: number;\n display_title: string;\n time: string;\n view_count: number;\n shared_count: number;\n images_list: {\n url: string;\n }[];\n permission_code: number;\n permission_msg: string;\n level: number;\n xsec_token: string;\n xsec_source: string;\n type: string;\n likes: number;\n collected_count: number;\n goods_info: {\n goods_name: string[];\n };\n}\ntype ArticleApiResponse = {\n data: {\n notes: Note[];\n page: number;\n tags: {\n notes_count: number;\n }[]\n }\n\n}\nexport async function handleXiaohongshuData(_task: AutomateTask, params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n try{\n const {\n cookies,\n pageNum = 1,\n pageSize = 10,\n showOriginalData = false,\n onlySuccess = false,\n containsArticle = false,\n } = params;\n\n const xsEncrypt = new Xhshow();\n const a1Cookie = cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) return { code: 400, message: \"账号数据异常\", data: {} };\n if (onlySuccess && pageSize !== 10) return { code: 400, message: \"小红书pageSize不可修改\", data: {} };\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com\",\n origin: \"https://creator.xiaohongshu.com\",\n }\n const args: AxiosProxyParams = [\n {headers},\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n \n const http = new Http(...args);\n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n\n async function fetchArticles(\n pageNum: number,\n a1Cookie: string,\n onlySuccess = false\n ): Promise<ArticleApiResponse> {\n const serveUrl = \"/web_api/sns/v5/creator/note/user/posted\";\n const serveParams = {\n tab: onlySuccess ? 1 : 0,\n page: pageNum - 1\n }\n const serveXsHeader = xsEncrypt.signHeadersGet(serveUrl, recordCookie, \"xhs-pc-web\", serveParams);\n \n return await http.api<ArticleApiResponse>({\n method: \"get\",\n baseURL: \"https://edith.xiaohongshu.com\",\n url: serveUrl,\n headers: serveXsHeader,\n params: serveParams\n },{ retries: 3, retryDelay: 20, timeout: 3000 });\n };\n const articleInfo = await fetchArticles(pageNum, a1Cookie, onlySuccess)\n\n let hasNextpage = articleInfo.data.page !== -1;\n const filtered = articleInfo.data.notes;\n let currentPage = pageNum + 1;\n const usedPages = new Set<number>();\n while (filtered.length < pageSize && hasNextpage) {\n if (usedPages.has(currentPage)) {\n currentPage++;\n continue;\n }\n\n const res = await fetchArticles(currentPage, a1Cookie, onlySuccess);\n usedPages.add(currentPage);\n\n const validItems = res.data.notes\n filtered.push(...validItems);\n\n currentPage++;\n hasNextpage = res.data.page !== -1;\n }\n\n const getDetailContent = async (id: string) => {\n try {\n const detailUrl = \"/web_api/sns/capa/postgw/note/detail\";\n const detailParams = {\n note_id: id,\n source: 'official',\n edit_mode: 1,\n }\n const detailxsHeader = xsEncrypt.signHeadersGet(detailUrl, recordCookie, \"xhs-pc-web\", detailParams);\n \n const detailInfo = await http.api<{data:{desc:string} }>({\n method: \"get\", \n baseURL: \"https://edith.xiaohongshu.com\",\n url: detailUrl,\n headers: detailxsHeader,\n params: detailParams\n },{ retries: 3, retryDelay: 20, timeout: 3000 });\n return detailInfo.data.desc;\n } catch (err) {\n console.error(\"❌ JSON 解析失败:\", err);\n return null;\n }\n }\n\n const final = filtered.slice(0, pageSize);\n const articleCell: XiaohongshuArticle[] = await Promise.all(\n final.map(async (item) => ({\n title: item.display_title,\n imageUrl: item.images_list[0].url,\n createTime: Math.floor(new Date(item.time.replace(/-/g, \"/\")).getTime() / 1000),\n redirectUrl: `https://www.xiaohongshu.com/explore/${item.id}?xsec_token=${item.xsec_token}&xsec_source=pc_creatormng`,\n readNum: item.view_count,\n likeNum: item.likes,\n commentNum: item.comments_count,\n collectNum: item.collected_count,\n shareNum: item.shared_count,\n // articleStates: item.status,\n ...(showOriginalData ? {originalData: item} : {}),\n ...(containsArticle ? {article: await getDetailContent(item.id)} : {}),\n }))\n );\n\n return success(\n {\n articleCell,\n ...(onlySuccess ? {\n pagination: {\n nextPage: hasNextpage,\n pageNum,\n pageSize,\n }\n } : null),\n },\n \"小红书文章数据获取成功\"\n );\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"小红书文章数据获取失败\");\n }\n\n}\n","// @ts-ignore\nimport { type CommonAction, success } from \"@iflyrpa/share\";\nimport {ActiomCommonParams, ActionCommonParamsSchema} from \"../../types\";\nimport { handleBaijiahaoData } from \"./handleBjhData\";\nimport { handleToutiaoData } from \"./handleTTData\";\nimport { handleWeixinData } from \"./handleWXData\";\nimport { handleXiaohongshuData } from \"./handleXhsData\";\nimport type { FetchArticlesData } from \"./types\";\nimport {z} from \"zod\";\n// 请求参数接口\n\nexport const FetchArticlesParamsSchema = ActionCommonParamsSchema.extend({\n platform: z.string().describe(\"社交平台:weixin, toutiao, baijiahao, xiaohongshu\"),\n token: z.union([z.string(), z.number()]).optional().describe(\"微信和百家号需要\"),\n pageNum: z.number().optional().describe(\"当前页,默认1\"),\n pageSize: z.number().optional().describe(\"每页大小,默认10\"),\n size: z.number().optional().describe(\"获取前多少篇文章(不含草稿),默认获取全部\"),\n onlySuccess: z.boolean().optional().describe(\"是否仅获取发布成功的文章,默认false\"),\n showOriginalData: z.boolean().optional().describe(\"是否展示原始数据,默认false\"),\n cursor: z.number().optional().describe(\"仅用于微信分页游标,默认为空\"),\n lastPage: z.number().optional(),\n containsArticle: z.boolean().optional().describe(\"是否包含文章内容,默认false\"),\n});\n\nexport type FetchArticlesParams = z.infer<typeof FetchArticlesParamsSchema>;\n\nexport const FetchArticles: CommonAction<FetchArticlesParams, FetchArticlesData | Record<string, never>> = async (\n\t_task,\n\tparams,\n) => {\n\tconst { platform } = params;\n\tswitch (platform) {\n\t\tcase \"toutiao\":\n\t\t\treturn handleToutiaoData(_task, params);\n\t\tcase \"weixin\":\n\t\t\treturn handleWeixinData(_task, params);\n\t\tcase \"baijiahao\":\n\t\t\treturn handleBaijiahaoData(_task, params);\n\t\tcase \"xiaohongshu\":\n\t\t\treturn handleXiaohongshuData(_task, params);\n\t\tdefault:\n\t\t\treturn success({}, \"暂不支持该平台\");\n\t}\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\nimport { Http } from \"../../utils/http\"\n\nimport type { PublishAction } from \".\";\nimport type { Toutiao } from \"../../types\";\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\torigin: \"https://mp.toutiao.com\",\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\t// 0. 校验登录\n\tconst userInfoRes = await http.api<{ code: number }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/agw/creator_center/user_info\",\n });\n\n\tif (userInfoRes.code !== 0) {\n return { code: 0, message: \"登录失效\", data: userInfoRes };\n\t}\n\n\t// 1. 上传图片\n\tconst imageList: string[] = [];\n\tif (params.banners && params.banners.length > 0) {\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tconst res = await Promise.all(\n\t\t\timages.map(async (it) => {\n\t\t\t\tconst formData = new FormData();\n\t\t\t\tformData.append(\"image\", fs.createReadStream(it));\n\n\t\t\t\tconst response = await http.api<{ data: Toutiao.ImageData }>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://mp.toutiao.com/spice/image?upload_source=20020003&aid=1231&device_platform=web\",\n\t\t\t\t\tdata: formData,\n\t\t\t\t});\n\n\t\t\t\treturn response.data;\n\t\t\t}),\n\t\t);\n\n\t\timageList.push(...res.map((it) => it.image_uri));\n\t}\n\n\t// 2. 构造发布数据\n\tconst extra = {\n\t\tadd_music_to_article_flag: \"0\", // 开启配乐\n\t\tclaim_exclusive: \"0\", // 原创&首发声明\n\t\ttuwen_wtt_trans_flag: \"0\",\n\t\tinfo_source: JSON.stringify({\n\t\t\tsource_type: 5,\n\t\t\tsource_author_uid: \"\",\n\t\t\ttime_format: \"\",\n\t\t\tposition: {},\n\t\t}),\n\t\tugc_position: JSON.stringify({\n\t\t\taddress: \"\",\n\t\t\tposition: \"合肥市\",\n\t\t\tcity: \"合肥市\",\n\t\t\tlongitude: 117.227289,\n\t\t\tlatitude: 31.82057,\n\t\t\tpoi_type_code: \"190104\",\n\t\t\tpoi_id: \"22535659123306003\",\n\t\t}),\n\t};\n\n\tconst syncData = {\n\t\tcontent: params.content, // 正文,\n\t\timage_list: imageList, // 图片列表\n\t\tis_fans_article: 2,\n\t\tpre_upload: 1,\n\t\twelfare_card: \"\",\n\t\textra: JSON.stringify(extra),\n\t};\n\n const res = await http.api<any>({\n method: \"post\",\n url: \"https://mp.toutiao.com/mp/agw/article/wtt\",\n data: syncData,\n });\n\n return success(res.data)\n};\n","import path from \"node:path\";\nimport type { CookieMap } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport type { PublishAction } from \"./index\";\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"mp.toutiao.com\",\n\t\turl: \"https://mp.toutiao.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://mp.toutiao.com/profile_v4/weitoutiao/publish\",\n cookies: (params.cookies?.map((it) => ({...it, ...commonCookies})) || []) as CookieMap,\n\t});\n\n\tconst tmpCachePath = task.getTmpPath();\n\n\t// 0. 判断是否登录\n\ttry {\n\t\tawait page.waitForSelector(\".publish-box\");\n\t} catch (error) {\n\t\treturn { code: 0, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 1. 添加正文\n\tconst descInstance = page.locator(\".syl-editor .ProseMirror\");\n\tawait descInstance.click();\n\tawait descInstance.fill(params.content);\n\n\t// 2. 添加图片\n\tif (params.banners && params.banners?.length > 0) {\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait page.locator(\".toolbar .syl-toolbar-tool.weitoutiao-image-plugin\").click();\n\t\tawait page.locator(\".byte-drawer.mp-ic-img-drawer button.byte-btn\").filter({ hasText: \"本地上传\" }).click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles(images);\n\n\t\tawait page.locator(\".byte-drawer.mp-ic-img-drawer .footer button.byte-btn\").filter({ hasText: \"确定\" }).click();\n\t}\n\n\t// 滚动到底部\n\tawait page.mouse.wheel(0, 500); // 向下滚动 500 像素\n\n\t// 3. 添加位置\n\tif (params.address) {\n\t\tconst addressFormItem = page.locator(\".img-form-wrap .form-item-wrap .form-item\").filter({ hasText: \"添加位置\" });\n\t\tawait addressFormItem.locator(\".byte-select\").click();\n\t\tawait addressFormItem.locator(\".byte-select-view-search input\").fill(params.address);\n\t\tconst poperInstance = page.locator(\".byte-trigger .byte-select-popup .byte-select-option\");\n\t\tawait poperInstance.first().waitFor();\n\t\tawait poperInstance.first().click();\n\t}\n\n\t// 4. 作品声明\n\tif (params.declaration) {\n\t\tconst declarationFormItem = page\n\t\t\t.locator(\".img-form-wrap .form-item-wrap .form-item\")\n\t\t\t.filter({ hasText: \"作品声明\" })\n\t\t\t.locator(\".source-info-wrap\");\n\t\tawait declarationFormItem.locator(`.byte-checkbox:has(input[value=\"${params.declaration}\"])`).click();\n\t}\n\n\t// 5. 发布\n\tawait page.locator(\".footer-wrap button.publish-content\").click();\n\n\treturn success(\"\");\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\n\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\n/**\n * 作品声明\n * 1:引用站内\n * 3:引用AI\n * 4:取材网络\n * 5:个人观点,仅供参考\n * 6:虚构演绎,故事经历\n * 7:投资观点,仅供参考\n * 8:健康医疗分享,仅供参考\n */\ntype DeclarationType = 1 | 3 | 4 | 5 | 6 | 7 | 8;\n\nexport interface WeitoutiaoPublishParams extends ActiomCommonParams {\n\tcontent: string;\n\tbanners?: string[];\n\taddress?: string;\n\tdeclaration?: DeclarationType;\n}\n\nexport type PublishAction = CommonAction<WeitoutiaoPublishParams>;\n\nexport const weitoutiaoPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","export const scanRetryMaxCount = 30;\n\nexport const QuotaType = {\n\tNormal: \"kQuotaTypeMassSendNormal\",\n\tProductActivity: \"kQuotaTypeMassSendProductActivity\",\n};\n\nexport interface QuotaItem {\n\toriginal_quota: number;\n\tquota: number;\n\tstr_date: string;\n}\n\nexport interface QuotaDetail {\n\tquota_item_list: QuotaItem[];\n\tquota_type: string;\n}\n\n\n/**\n * 生成微信话题 HTML 代码\n * @param topics - 话题数组\n * @returns 生成的 HTML 字符串\n */\nexport function genTopicHTML(topics: string[]): string {\n if (!topics || topics.length === 0) return \"\";\n const rn = (): string => {\n const O = Date.now().toString(36);\n const B = Math.random().toString(36).substring(2, 8);\n return `${O}-${B}`;\n };\n const aTags = topics\n .map(topic => {\n return `<a class=\"wx_topic_link\" topic-id=\"${rn()}\" style=\"color: #576B95 !important;\" data-topic=\"1\">#${topic}</a>`;\n })\n .join(\"&nbsp;\");\n\n return `<p style=\"line-height: 1.75;margin: 0px 0px 24px;padding: 0px;\" data-bothblock=\"0px\"><span leaf=\"\">${aTags}</span></p>`;\n}\n","import fs, { write } from \"node:fs\";\n// import https from \"node:https\";\nimport path from \"node:path\";\nimport { type ResponseData, downloadImage, getFilenameFromUrl, randomString, sleep, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\nimport { extractImgTag, getFileState, replaceImgSrc } from \"../../utils\";\nimport { Http } from \"../../utils/http\";\nimport type { PublishAction, WeixinPublishParams , WxWhitelistUserInfo, WxInteraction} from \"./index\";\nimport { type QuotaDetail, QuotaType, scanRetryMaxCount, genTopicHTML } from \"./utils\";\nimport type {AxiosProxyParams} from \"../../types\";\n\ntype CommonResponse<T = unknown> = T & {\n\tbase_resp?: { err_msg: string; ret: number };\n};\n\nconst GET_QRCODE_DEFAULT_ERROR = \"二维码获取异常,请稍后重试。\";\n\nconst errnoMap: Record<number|string, string> = {\n\t200003: \"微信公众号号登录状态失效,请重新绑定账号后重试。\",\n\t420001: \"封面图不支持GIF,请更换后重试。\",\n\t200002: \"上传图片参数错误,请检查后重试。\",\n\t200039: \"上传图片高度(像素)与宽度(像素)的乘积不能超过600万,请更换后重试。\",\n\t153201: \"不支持发布审核中或转码中的视频\",\n\t200007: \"登陆失败,请重新登陆账户后重试。\",\n\t64703: \"摘要超出120字长度限制,请修改摘要后重试。\",\n\t\"-4\": \"不支持发布审核中或转码中的视频\",\n\t\"-2\": \"不支持发布审核中或转码中的视频\",\n \"-1\" :\"系统错误,请注意备份内容后重试\",\n\t770001: \"不支持发布审核中或转码中的视频\",\n\t200074: \"系统繁忙,请稍后重试!\",\n\t64702: \"标题超出64字长度限制,请修改标题后重试。\",\n 64552: \"请检查阅读原文中的链接后重试。\"\n};\n\n// 不需要直接抛出的异常码,如 154019\nconst ignoreErrno = [\n 154019,\n 154011, // 原创校验中\n 154008, // 原创校验不通过\n 154009, // 原创校验通过 \n];\n\n// 用户互动类型表\nconst userTypeMap: Record<string, 1 | 2 | 3> = {\n\t\"所有用户\": 1,\n\t\"已关注的用户\": 2,\n\t\"已关注7天及以上的用户\": 3,\n };\n\nconst generatorFormData = (data: Record<string, unknown>) => {\n\tconst formData = new URLSearchParams();\n\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tformData.append(key, String(value));\n\t}\n\n\treturn formData.toString();\n};\n\nexport const checkCopyrightStat = async <T>(http: Http, params: WeixinPublishParams, data: Record<string, unknown>) => {\n\tlet resData: T;\n\n\ttry {\n\t\tresData = await http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\t\tparams: {\n\t\t\t\taction: \"get_appmsg_copyright_stat\",\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t},\n\t\t\tdata: generatorFormData(data),\n\t\t});\n\t} catch (error) {\n\t\tresData = (error as ResponseData)?.data;\n\t}\n\n\treturn resData;\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\tconst client_time_diff = Number(\"1743488763\") * 1 - Math.floor(new Date().getTime() / 1000);\n const reporter = task.reportService?.repportTaskStatus ?? (() => Promise.resolve());\n \n\tconst tmpCachePath = task.getTmpPath();\n const headers = {\n \"User-Agent\":\n \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0\",\n Cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n origin: \"https://mp.weixin.qq.com\",\n referer: `https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit&action=edit&isNew=1&type=77&createType=0&token=${params.token}&lang=zh_CN&timestamp=${Date.now()}`,\n }\n const args: AxiosProxyParams = [\n { headers },\n task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n const http = new Http({ headers })\n\tconst proxyHttp = new Http(...args);\n\n\t// 添加响应拦截器\n\tproxyHttp.addResponseInterceptor<CommonResponse>((response) => {\n\t\tconst responseData = response.data;\n\t\tconst msgType = params.saveType === \"draft\" ? \"同步\" : \"发布\";\n\n\t\t// 检查响应中的 errno 字段\n\t\tif (\n response &&\n\t\t\tresponseData?.base_resp &&\n\t\t\tresponseData.base_resp.ret !== 0 &&\n\t\t\t!ignoreErrno.includes(responseData.base_resp.ret)\n\t\t) {\n\t\t\tconst errmsg =\n\t\t\t\terrnoMap[responseData.base_resp.ret] ||\n\t\t\t\tresponse.config.defaultErrorMsg ||\n\t\t\t\tresponseData.base_resp.err_msg ||\n\t\t\t\t`文章${msgType}异常,请稍后重试。`;\n\n\t\t\treturn {\n\t\t\t\tcode: errnoMap[responseData.base_resp.ret] ? 200 : 500,\n\t\t\t\tmessage: errmsg,\n\t\t\t\tdata: responseData,\n\t\t\t};\n\t\t}\n\t});\n\n\t// 0. 校验登录\n\tawait http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/appmsgpublish\",\n\t\tparams: {\n\t\t\tfingerprint,\n\t\t\tsub: \"list\",\n\t\t\tbegin: 0,\n\t\t\tcount: 10,\n\t\t\tquery: \"\",\n\t\t\ttype: 101_1_102_103,\n\t\t\tshow_type: \"\",\n\t\t\tfree_publish_type: 1_102_103,\n\t\t\tsub_action: \"list_ex\",\n\t\t\tsearch_card: 0,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t},\n\t});\n\n\t// 1. 提取并上传正文中的图片\n\tconst uploadImages = async (images: string[]) => {\n\t\tconst cloudImages: Array<{ cdn_url: string; content: string }> = [];\n\n\t\t// 下载图片到本地\n\t\tconst localImages = await Promise.all(\n\t\t\timages.map((url) => {\n\t\t\t\tlet fileName = getFilenameFromUrl(url);\n const ext = path.extname(fileName);\n fileName = ext ? fileName : `${fileName}.png`\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tfor (let index = 0; index < images.length; index++) {\n\t\t\tconst image = localImages[index];\n\t\t\tconst fileState = getFileState(image);\n\n\t\t\tconst formData = new FormData();\n\t\t\tformData.append(\"id\", `WU_FILE_${index + 1}`);\n\t\t\tformData.append(\"name\", fileState.name);\n\t\t\tformData.append(\"type\", fileState.type);\n\t\t\tformData.append(\"lastModifiedDate\", fileState.lastModifiedDate);\n\t\t\tformData.append(\"size\", fileState.size);\n\t\t\tformData.append(\"file\", fs.createReadStream(image));\n\n\t\t\tconst response = await http.api<(typeof cloudImages)[0]>({\n\t\t\t\tmethod: \"post\",\n\t\t\t\turl: `https://mp.weixin.qq.com/cgi-bin/filetransfer?action=upload_material&f=json&writetype=doublewrite&token=${params.token}&lang=zh_CN`,\n\t\t\t\tdata: formData,\n\t\t\t\tdefaultErrorMsg: \"图片上传异常,请稍后重试发布。\",\n\t\t\t});\n\n\t\t\tcloudImages.push(response);\n\t\t}\n\n\t\treturn cloudImages;\n\t};\n\n\tconst originContentImages = extractImgTag(params.content);\n\tconst targetContentImages = await uploadImages(originContentImages);\n\t// 2. 替换正文中的图片\n const content = replaceImgSrc(params.settingInfo.wxTopic && params.settingInfo.wxTopic.length > 0 ? params.content + genTopicHTML(params.settingInfo.wxTopic) : params.content, (dom) => {\n if (dom.attribs.src) {\n const idx = originContentImages.findIndex((it) => it === dom.attribs.src.replace(/&amp;/g,\"&\"));\n dom.attribs.src = targetContentImages[idx].cdn_url;\n dom.attribs.class = \"rich_pass wxw-img js_insertlocalimg\";\n dom.attribs.style = \"\";\n }\n return dom;\n\t});\n\n\t// 3. 上传封面图片\n\tconst coverRes = await uploadImages(params.settingInfo.wxCover ? [params.settingInfo.wxCover] : []);\n\n\t// 4. 原创声明白名单有效性判断与生成转载白名单\n\tlet oriWhitelist = null;\n\n\tif (params.settingInfo?.wxCopyright && params.settingInfo?.wxWhitelist) {\n\t\tconst _oriWhitelist = params.settingInfo.wxWhitelist;\n\n\t\tif (_oriWhitelist && _oriWhitelist.length > 0) {\n\t\t\tconst white_list = [];\n\n\t\t\tconst white_list_user = {\n\t\t\t\tnickname: \"\",\n\t\t\t\ttitle: \"可修改文章\",\n\t\t\t\topenid: \"\",\n\t\t\t\twx_name: \"\",\n\t\t\t\tusername: \"\",\n\t\t\t\tavatar: \"\",\n\t\t\t\tcan_modify: \"1\",\n\t\t\t\tcan_hide_source: \"0\",\n\t\t\t\tcan_reward: \"0\",\n\t\t\t};\n\n\t\t\tfor (const _user of _oriWhitelist) {\n\t\t\t\tconst userInfo_res = await http.api<{ search_list: WxWhitelistUserInfo[] }>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/appmsgcopyright?action=searchacct\",\n\t\t\t\t\tparams: {\n\t\t\t\t\t\taction: \"searchacct\",\n\t\t\t\t\t},\n\t\t\t\t\tdata: generatorFormData({\n\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\trandom: Math.random().toString(),\n\t\t\t\t\t\tusername: _user,\n\t\t\t\t\t}),\n\t\t\t\t\tdefaultErrorMsg: \"搜索用户信息失败\",\n\t\t\t\t});\n\n\t\t\t\tif(userInfo_res.search_list.length>0){\n\t\t\t\t\tconst userInfo_resJson = userInfo_res.search_list[0];\n\t\t\t\t\twhite_list_user.nickname = userInfo_resJson.nickname;\n\t\t\t\t\twhite_list_user.openid = userInfo_resJson.openid;\n\t\t\t\t\twhite_list_user.avatar = userInfo_resJson.pic_url;\n\t\t\t\t\twhite_list_user.username = userInfo_resJson.username;\n\t\t\t\t\twhite_list_user.wx_name = userInfo_resJson.wx_name;\n\t\t\t\t\twhite_list.push({ ...white_list_user });\n\t\t\t\t}else{\n\t\t\t\t\treturn { code: 400, message: `白名单用户:${_user} 未搜索到,请确定输入是否正确!`, data: '' }\n\t\t\t\t}\n\t\t\t}\n\t\t\toriWhitelist = white_list.length > 0 ? JSON.stringify({ \"white_list\" : white_list }) : \"\";\n\t\t}\n\t}\n\n\t// 5. 赞赏设置\n\tlet writerid = null;\n\tlet reply_id = null\n\tif (params.settingInfo.wxCopyright && params.settingInfo.wxRewardTarget){\n\t\tasync function getWriterList() {\n\t\t\tconst res = await http.api({\n\t\t\t method: \"get\",\n\t\t\t url: 'https://mp.weixin.qq.com/acct/writermgr',\n\t\t\t params: {\n\t\t\t\taction: 'get_writer_list',\n\t\t\t\tfingerprint,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t }\n\t\t\t});\n\n\t\t\treturn res.pageinfo.writerlist || [];\n\t\t }\n\n\t\t async function getRewardText(): Promise<{ text: string , reply_id: string}[]> {\n\t\t\tconst res = await http.api({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: 'https://mp.weixin.qq.com/merchant/reward',\n\t\t\t\tparams: {\n\t\t\t\taction: 'getautoreply',\n\t\t\t\tfingerprint,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn res.reply_infos;\n\t\t}\n\n\t\t//遍历绑定信息\n\t\tfor (const _type in params.settingInfo.wxRewardTarget){\n\t\t\tif (_type === \"author\"){\n\n\t\t\t\tif( (await getWriterList()).length === 0){\n\t\t\t\t\t// 获取二维码等待用户绑定\n\t\t\t\t\tconst rewardbind = await http.api({\n\t\t\t\t\t\tmethod: \"get\",\n\t\t\t\t\t\turl: \"https://mp.weixin.qq.com/acct/writermgr\",\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\taction: \"get_rewardbind_qrcode\",\n\t\t\t\t\t\t\trandom: Math.random().toString(),\n\t\t\t\t\t\t\tfingerprint,\n\t\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst rewardBuffer = Buffer.from(rewardbind.qrcode_base64, 'base64');\n\t\t\t\t\tconst rewardFilePath = path.join(tmpCachePath, \"weixin_reward.jpg\");\n\t\t\t\t\tfs.writeFileSync(rewardFilePath, new Uint8Array(rewardBuffer));\n\n\t\t\t\t\tparams.safeQrcodeCallback?.(rewardFilePath);\n\n\t\t\t\t\tconst task_id = rewardbind.task_id\n\n\t\t\t\t\tlet code = null\n\n\t\t\t\t\tfor (let i = 0; i < scanRetryMaxCount; i++) {\n\t\t\t\t\t\tawait sleep(2000);\n\n\t\t\t\t\t\tconst checkScanResult = await http.api<{ qrcode_status: number; }>({\n\t\t\t\t\t\t\tmethod: \"get\",\n\t\t\t\t\t\t\turl: \"https://mp.weixin.qq.com/acct/writermgr\",\n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t\taction: \"query_rewardbind_qrcode_status\",\n\t\t\t\t\t\t\t\ttask_id: task_id,\n\t\t\t\t\t\t\t\tfingerprint,\n\t\t\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\t\t\ttimespam: Date.now(),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcode = checkScanResult.qrcode_status\n\n\t\t\t\t\t\tif ( code === 2 && (await getWriterList()).length > 0 ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (i === scanRetryMaxCount - 1) {\n\t\t\t\t\t\t\treturn { code: 400, message: \"二维码已过期,请重试绑定。\", data: \"\" };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// 判断为赞赏作者\n\t\t\t\tconst _writer = await getWriterList()\n\t\t\t\tfor (const _writer_item of _writer){\n\t\t\t\t\tif (_writer_item.nickname === params.settingInfo.wxRewardTarget[_type]){\n\t\t\t\t\t\twriterid = _writer_item.writerid\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!writerid){\n\t\t\t\t\t// 没找到作者id\n\t\t\t\t\treturn { code: 400, message: \"未匹配到赞赏绑定用户,请确认用户名与绑定是否正常!\", data: \"\" };\n\t\t\t\t}\n\n\t\t\t\tif (params.settingInfo?.wxRewardText){\n\t\t\t\t\t// 判断文案是否已添加\n\t\t\t\t\tconst rewardList = await getRewardText()\n\n\t\t\t\t\tconst matchdID = rewardList.find(\n\t\t\t\t\t\treward => reward.text === params.settingInfo.wxRewardText\n\t\t\t\t\t)?.reply_id ?? null;\n\n\t\t\t\t\tif (rewardList.length === 0 || !matchdID ){\n\t\t\t\t\t\tawait http.api({\n\t\t\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\t\t\turl: 'https://mp.weixin.qq.com/merchant/reward',\n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t \taction: 'addautoreply',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdata: generatorFormData({\n\t\t\t\t\t\t\t\ttype: 1,\n\t\t\t\t\t\t\t\tfingerprint,\n\t\t\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\t\t\ttext: params.settingInfo.wxRewardText\n\t\t\t\t\t\t })\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\treply_id = matchdID\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!matchdID) {\n\t\t\t\t\t\tfor (const _reply_item of (await getRewardText())){\n\t\t\t\t\t\t\treply_id = (await getRewardText()).find(\n\t\t\t\t\t\t\t\treward => reward.text === params.settingInfo.wxRewardText\n\t\t\t\t\t\t\t)?.reply_id ;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!reply_id) {\n\t\t\t\t\t\t\treturn {code:200, message:\"赞赏文案添加失败,请重新检查\", data:\"\"}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}else if(_type === \"project\"){\n\t\t\t\t// 判断为公益捐赠\n\t\t\t}\n\t\t}\n\n\t}\n\t// 留言设置\n\tconst wxInteractionInfo = (() => {\n\t\tconst _wxInteraction = {\n\t\t\tneed_open_comment0: 0,\n\t\t\tonly_fans_can_comment0: 0,\n\t\t\tonly_fans_days_can_comment0: 0,\n\t\t\treply_flag0: 2,\n\t\t\tauto_elect_comment0: 0,\n\t\t\tauto_elect_reply0: 1,\n\t\t\topen_fansmsg0: 0\n\t\t};\n\n\t\tconst type = params?.settingInfo?.wxInteraction?.Type ?? \"\";\n\t\tif (type === \"public\") {\n\t\t\tconst _opt = params?.settingInfo?.wxInteraction?.Option;\n\t\t\tif (!_opt || !_opt.Comment || !_opt.reply || _opt.elect_comment == null || _opt.elect_reply == null) return null;\n\n\t\t\tconst commentType = userTypeMap[_opt.Comment];\n\t\t\tconst replyType = userTypeMap[_opt.reply] + 1;\n\n\t\t\t// 设置评论权限\n\t\t\t_wxInteraction.need_open_comment0 = 1;\n\t\t\tswitch (commentType) {\n\t\t\t\tcase 1:\n\t\t\t\t\t_wxInteraction.only_fans_can_comment0 = 0;\n\t\t\t\t\t_wxInteraction.only_fans_days_can_comment0 = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\t_wxInteraction.only_fans_can_comment0 = 1;\n\t\t\t\t\t_wxInteraction.only_fans_days_can_comment0 = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\t_wxInteraction.only_fans_can_comment0 = 0;\n\t\t\t\t\t_wxInteraction.only_fans_days_can_comment0 = 1;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// 设置回复权限等级\n\t\t\t_wxInteraction.reply_flag0 = replyType;\n\n\t\t\t// 精选功能\n\t\t\t_wxInteraction.auto_elect_comment0 = _opt.elect_comment ? userTypeMap[_opt.Comment] : 0;\n\t\t\t_wxInteraction.auto_elect_reply0 = _opt.elect_reply ? userTypeMap[_opt.reply] : 1;\n\n\t\t\treturn _wxInteraction;\n\t\t}\n\n\t\tif (type === \"private\") {\n\t\t\t_wxInteraction.open_fansmsg0 = 1;\n\t\t\treturn _wxInteraction;\n\t\t}\n\n\t\t// 其他未启用评论功能的情形\n\t\treturn _wxInteraction;\n\t})();\n\n\tif (!wxInteractionInfo) return { code: 400, message: \"互动参数设置错误,请检查参数设置!\", data: \"\" }\n\n\n\t// 4. 保存为草稿\n\tconst draftData = {\n\t\tlang: \"zh_CN\",\n\t\tf: \"json\",\n\t\tajax: 1,\n\t\tcount: 1,\n\t\toperate_from: \"Chrome\",\n\t\tisnew: 0,\n\t\tarticlenum: 1,\n\t\tpre_timesend_set: 0,\n\t\tis_finder_video0: 0,\n\t\tfinder_draft_id0: 0,\n\t\tapplyori0: 0,\n\t\tcan_reward0: writerid ? 1 : 0,\n\t\tpay_gifts_count0: 0,\n\t\tis_video_recommend0: -1,\n\t\twriterid0: writerid ? writerid : 0,\n\t\tauto_gen_digest0: 0,\n\t\tlast_choose_cover_from0: 0,\n\t\tneed_open_comment0: wxInteractionInfo.need_open_comment0 ,\n\t\tonly_fans_can_comment0: wxInteractionInfo.only_fans_can_comment0,\n\t\tonly_fans_days_can_comment0: wxInteractionInfo.only_fans_days_can_comment0,\n\t\treply_flag0: wxInteractionInfo.reply_flag0,\n\t\tauto_elect_comment0: wxInteractionInfo.auto_elect_comment0,\n\t\tauto_elect_reply0: wxInteractionInfo.auto_elect_reply0,\n\t\treward_reply_id0:params.settingInfo?.wxRewardText? reply_id ? reply_id : 0 : 0,\n\t\tnot_pay_can_comment0: 0,\n\t\tdata_seq: 0,\n\t\tmsg_index_id0: \"\",\n\n\t\ttoken: params.token,\n\t\tAppMsgId: params.appMsgId || \"\",\n\t\ttitle0: params.title,\n\t\tauthor0: params?.settingInfo?.wxAuthor || \"\" ,\n\t\tdigest0: params?.settingInfo?.wxAbstract || \"\",\n\t\tcontent0: content || \"\",\n\t\tsourceurl0: params?.settingInfo?.wxOriginalText || \"\",\n\t\tcdn_url0: coverRes[0]?.cdn_url || \"\",\n\t\tcopyright_type0: params?.settingInfo?.wxCopyright? 1 : 0,\n\t\tallow_reprint0: params?.settingInfo?.wxCopyright? 0 : '',\n\t\tallow_reprint_modify0: params?.settingInfo?.wxCopyright? 0 : '',\n\t\tori_white_list0: params?.settingInfo?.wxCopyright? oriWhitelist: '',\n\t\topen_fansmsg0: wxInteractionInfo.open_fansmsg0,\n\t\tallow_fast_reprint0: params?.settingInfo?.wxQuickReprint ? 1 : 0,\n\t\tdisable_recommend0: params?.settingInfo?.wxNotAllowRecommend ? 1 : 0,\n\t\tclaim_source_type0: params?.settingInfo?.wxCreationSource?.[0] || \"\",\n appmsg_album_info0: JSON.stringify({\"appmsg_album_infos\": params.settingInfo?.wxCollectionInfo ? [params.settingInfo.wxCollectionInfo] : []}),\n\n\t\tmasssend_check: 1,\n\t\tis_masssend: 1,\n\t};\n \n task._timerRecord.PrePublish= Date.now();\n\n\tconst { appMsgId } = await http.api<{ appMsgId: string }>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/operate_appmsg\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tt: \"ajax-response\",\n\t\t\tsub: \"create\",\n\t\t\ttype: 77,\n\t\t\tlang: \"zh_CN\",\n\t\t},\n\t\tdata: generatorFormData(draftData),\n\t\tdefaultErrorMsg: \"创建草稿失败,请稍后重试发布。\",\n\t});\n\n\t// 如果只需要保存为草稿,直接返回 appMsgId\n\tif (params.saveType === \"draft\") {\n\t\treturn { code: 0, data: appMsgId, message: \"微信公众号保存草稿成功。\" };\n\t}\n \n let checkTimes = 0;\n let copyrightStatRes: { base_resp: { ret: number }, list?: string } = {base_resp: {ret: -1}, list: ''};\n do {\n checkTimes++;\n const copyrightStat = http.api<{ base_resp: { ret: number }, list?: string }>({\n method: 'post',\n url: 'https://mp.weixin.qq.com/cgi-bin/masssend',\n params: {\n action: 'get_appmsg_copyright_stat',\n token: params.token,\n lang: 'zh_CN'\n },\n data: generatorFormData({\n token: params.token,\n lang: 'zh_CN',\n f: 'json',\n ajax: 1,\n fingerprint,\n random: Math.random().toString(),\n first_check: checkTimes === 1 ? 1 : 0,\n type: 10,\n appMsgId\n })\n });\n\n copyrightStatRes = await copyrightStat;\n if (copyrightStatRes.base_resp.ret === 154008 && copyrightStatRes?.list) return {\n code: 400,\n message: \"文章内容未通过原创校验,请修改后重试!\",\n data: JSON.parse(copyrightStatRes.list).list\n }\n\n } while (copyrightStatRes.base_resp.ret === 154011 && checkTimes < 10);\n\n\tconst masssendpage = () => {\n\t\treturn http.api<CommonResponse<{ operation_seq: string; quota_detail_list: QuotaDetail[] }>>({\n\t\t\tmethod: \"get\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssendpage\",\n\t\t\tparams: {\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tpreview_appmsgid: appMsgId,\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t},\n\t\t\tdefaultErrorMsg: \"创建草稿失败,请稍后重试发布。\",\n\t\t});\n\t};\n\n\t// 4. 预览\n\tlet massSendRes = await masssendpage();\n\t// 判断是否需要同意群发声明\n\tif (massSendRes.base_resp?.ret === 154019) {\n\t\tawait http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/setprotocolsign\",\n\t\t\tparams: {\n\t\t\t\tcgi: \"setprotocolsign\",\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\ttoken: params.token,\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t\tissigned: 1,\n\t\t\t}),\n\t\t});\n\t\tmassSendRes = await masssendpage();\n\t}\n\n\t// 判断是否还有群发次数\n\tconst { operation_seq, quota_detail_list = [] } = massSendRes;\n\n\t// 群发时需要判断是否还有群发次数\n\tif (params.masssend) {\n\t\tconst quotaDetail = quota_detail_list.find((it) => it.quota_type === QuotaType.Normal);\n\t\tif (!quotaDetail?.quota_item_list[0]?.quota) {\n\t\t\treturn { code: 400, message: \"今日群发次数用尽,请明天再试。\", data: \"\" };\n\t\t}\n\t}\n\n\t// 非群发时会多一个接口\n\tif (!params.masssend) {\n\t\tawait http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\t\tparams: {\n\t\t\t\tt: \"ajax-response\",\n\t\t\t\tfor_check: 1,\n\t\t\t\tis_release_publish_page: 1,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\tappmsgid: appMsgId,\n\t\t\t\tfingerprint,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t}),\n\t\t});\n\t}\n\n\t// check\n\tawait http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend?action=check_same_material\",\n\t\tdata: generatorFormData({\n\t\t\tmsgid: appMsgId,\n\t\t\tfingerprint,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t});\n\n\tconst copyrightStatData = {\n\t\ttoken: params.token,\n\t\tlang: \"zh_CN\",\n\t\tf: \"json\",\n\t\tajax: 1,\n\t\trandom: Math.random().toString(),\n\t\tfingerprint,\n\t\tfirst_check: 1,\n\t\ttype: 10,\n\t\tappmsgid: appMsgId,\n\t};\n\tfor (let i = 0; i < 10; i++) {\n\t\tawait sleep(1000);\n\t\tconst lastData = { ...copyrightStatData, first_check: i === 0 ? 1 : 0 };\n\t\tconst checkCopyrightStatRes = await checkCopyrightStat<{ open_ad_reprint_status?: string }>(http, params, lastData);\n\t\tif (checkCopyrightStatRes.open_ad_reprint_status) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tawait sleep(300);\n\n\tawait http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\tparams: {\n\t\t\taction: \"check_ad\",\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\tappmsg_id: appMsgId,\n\t\t\tfingerprint,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\tis_release_publish_page: params.masssend ? 0 : 1, // 群发时为 0,否则为 1\n\t\t\tsend_time: params.settingInfo.timer ? params.settingInfo.timer : 0 ,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t});\n\n\tawait sleep(300);\n\n\tawait http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\tparams: {\n\t\t\taction: \"check_music\",\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\tappmsgid: appMsgId,\n\t\t\tmasssend_check: 1,\n\t\t\tfingerprint,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t});\n\n\tawait sleep(300);\n\n\t// 5. 获取群发文章ticket接口\n\tconst getTicketResult = await http.api<{ ticket: string; operation_seq: string }>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/misc/safeassistant\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\t1: 1,\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\taction: \"get_ticket\",\n\t\t\tfingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t});\n\n\tawait sleep(300);\n\n\t// 6. 获取群发文章 uuid\n\tconst getUuidResult = await http.api<{ uuid: string; genuuid_res: number }>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/safe/safeqrconnect\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\t1: 1,\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\tstate: 0,\n\t\t\tlogin_type: \"safe_center\",\n\t\t\ttype: \"json\",\n\t\t\tticket: getTicketResult.ticket,\n\t\t\tfingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t});\n\tawait sleep(1000);\n\n\tif (getUuidResult.genuuid_res !== 0) {\n\t\treturn { code: 400, message: GET_QRCODE_DEFAULT_ERROR, data: \"\" };\n\t}\n\tconst uuid = getUuidResult.uuid;\n\tawait sleep(1000);\n \n\t// 7. 获取验证二维码\n\tconst qrcodeResult = await http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/safe/safeqrcode\",\n\t\tparams: {\n\t\t\taction: \"check\",\n\t\t\ttype: \"msgs\",\n\t\t\tservice_type: 1,\n\t\t\tticket: getTicketResult.ticket,\n\t\t\tuuid,\n\t\t\tmsgid: operation_seq,\n\t\t\topen_email: !!params.settingInfo.timer,\n\t\t\t...(params.masssend ? {} : { publish_type: 1 }),\n\t\t},\n\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t\tresponseType: \"arraybuffer\",\n\t});\n\n\tconst qrcodeBuffer = Buffer.from(qrcodeResult);\n\tconst qrcodeFilePath = path.join(tmpCachePath, `weixin_qrcode_${Date.now()}.jpg`);\n\tfs.writeFileSync(qrcodeFilePath, new Uint8Array(qrcodeBuffer));\n\n\tparams.safeQrcodeCallback ? params.safeQrcodeCallback?.(qrcodeFilePath) : await reporter(10041, \"请扫码确认发布!\", `data:image/jpeg;base64,${Buffer.from(qrcodeResult).toString('base64')}`);\n\n\t// 8. 验证二维码结果\n\tlet code = \"\";\n\tfor (let i = 0; i < scanRetryMaxCount; i++) {\n\t\tawait sleep(2000);\n\n\t\tconst checkScanResult = await http.api<{ code: string; errcode: number }>({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/safe/safeuuid\",\n\t\t\tparams: {\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\ttimespam: Date.now(),\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tuuid,\n\t\t\t\taction: \"json\",\n\t\t\t\ttype: \"json\",\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t}),\n\t\t});\n\n\t\tif (checkScanResult.errcode === 405 && checkScanResult.code) {\n\t\t\tcode = checkScanResult.code;\n\t\t\tbreak;\n\t\t}\n\n\t\tif (i === scanRetryMaxCount - 1) {\n\t\t\treturn { code: 400, message: \"二维码已过期,请重试发布。\", data: \"\" };\n\t\t}\n\t}\n\n\t// 非群发时会多一个接口\n\tif (!params.masssend) {\n\t\tawait http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/misc/safeassistant\",\n\t\t\tparams: {\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t1: 1,\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t\taction: \"get_uuid\",\n\t\t\t\tuuid,\n\t\t\t}),\n\t\t});\n\t}\n \n\t// 9. 发送群发通知\n\tawait proxyHttp.api<{ code: string; errcode: number; proxyInfo: Record<string, unknown>}>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\tparams: {\n\t\t\tt: \"ajax-response\",\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\t...(params.masssend ? {\n\t\t\t\t...(params.settingInfo.timer ? {\n\t\t\t\t\taction: \"time_send\"\n\t\t\t\t}: {})\n\t\t\t} : { is_release_publish_page: 1 }),\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: \"1\",\n\t\t\tfingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t\tack: \"\",\n\t\t\tcode,\n\t\t\treprint_info: \"\",\n\t\t\treprint_confirm: \"0\",\n\t\t\tlist: \"\",\n\t\t\tgroupid: \"\",\n\t\t\tsex: \"0\",\n\t\t\tcountry: \"\",\n\t\t\tprovince: \"\",\n\t\t\tcity: \"\",\n\t\t\tsend_time: params.settingInfo.timer ? params.settingInfo.timer : \"0\",\n\t\t\ttype: \"10\",\n\t\t\tshare_page: \"1\",\n\t\t\tsynctxweibo: \"0\",\n\t\t\toperation_seq,\n\t\t\treq_id: randomString(32),\n\t\t\treq_time: new Date().getTime() + client_time_diff * 1e3,\n\t\t\tsync_version: \"1\",\n\t\t\tisFreePublish: params.masssend ? \"false\" : \"true\",\n\t\t\tappmsgid: appMsgId,\n\t\t\tisMulti: \"0\",\n\t\t\tdirect_send: \"1\",\n\t\t\tisNeedCode: \"true\",\n\t\t\tuserType: \"1\",\n\t\t}),\n\t\tdefaultErrorMsg: params.masssend ? \"文章群发异常,请尝试关闭群发或稍后重试。\" : \"文章发布异常,请稍后重试。\",\n }, {retries: 3, retryDelay: 500, timeout: 12*1000});\n\n\treturn success(appMsgId, `微信公众号发布完成!${ task.debug ? ` ${http.proxyInfo}`: \"\"}`);\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { CookieMap, Response } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport axios from \"axios\";\n\nimport { copyHtmlToClipboard, parseUrlQueryString, PopupListener, TimeFormatter } from \"../../utils\";\nimport type { PublishAction } from \"./index\";\nimport { scanRetryMaxCount } from \"./utils\";\n\n// 等待二维码验证结果最长时间\nconst waitQrcodeResultMaxTime = scanRetryMaxCount * 2 * 1000;\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"mp.weixin.qq.com\",\n\t\turl: \"https://mp.weixin.qq.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst urlParams = {\n\t\taction: \"edit\",\n\t\ttype: 77,\n\t\ttoken: params.token,\n\t\tlang: \"zh_CN\",\n\t\ttimestamp: Date.now(),\n\t\tappmsgid: params.appMsgId,\n\t};\n\n\tif (params.settingInfo?.wxRewardTarget){\n\t\tconst urlRewardParams = {\n\t\t\taction: \"inviteauthor\",\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t};\n\t\tconst wxRewardPage = await task.createPage({\n\t\t\tshow: task.debug,\n\t\t\turl:\n\t\t\t\tparams.url ||\n\t\t\t\t`https://mp.weixin.qq.com/cgi-bin/safecenterstatus?${Object.entries(urlRewardParams)\n\t\t\t\t\t.map((it) => it.join(\"=\"))\n\t\t\t\t\t.join(\"&\")}`,\n cookies: (params.cookies?.map((it) => ({...it, ...commonCookies})) || []) as CookieMap,\n\t\t});\n\n\t\tconst reward_page = wxRewardPage.locator(\"#app\")\n\t\tconst isAddRewarder = reward_page.locator('.author_card_bd.weui-desktop-vm_primary').filter({hasText: params.settingInfo.wxRewardTarget.author}).count()\n\t\tif(await isAddRewarder === 0){\n\t\t\tawait reward_page.locator('.weui-desktop-panel__hd-right').click()\n\t\t\ttry {\n\t\t\t\ttry {\n\t\t\t\t\tawait wxRewardPage.waitForSelector('.invite-qrcode', { state: 'visible', timeout: 20000 });\n\t\t\t\t\tconst qrcodeSrc = await reward_page.locator(\".invite-qrcode\").getAttribute('src')\n\n\t\t\t\t\tif (qrcodeSrc) {\n\t\t\t\t\t\tconst rewardBuffer = Buffer.from(qrcodeSrc.replace(/^data:image\\/\\w+;base64,/, ''), 'base64');\n\t\t\t\t\t\tconst rewardFilePath = path.join(tmpCachePath, \"weixin_reward.jpg\");\n\t\t\t\t\t\tfs.writeFileSync(rewardFilePath, new Uint8Array(rewardBuffer));\n\n\t\t\t\t\t\tparams.safeQrcodeCallback?.(rewardFilePath);\n\t\t\t\t\t}\n\n\t\t\t\t\t// await wxRewardPage.waitForSelector('[data-transfer=\"true\"]:not([weui=\"true\"])', { state: 'detached', timeout: 30000 });\n\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthrow new Error(\"二维码已过期,请重试绑定。\");\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < scanRetryMaxCount; i++) {\n\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\twxRewardPage.reload(),\n\t\t\t\t\t\twxRewardPage.waitForLoadState('domcontentloaded')\n\t\t\t\t\t]);\n\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait wxRewardPage.waitForSelector(`.author_card_bd.weui-desktop-vm_primary:has-text(\"${params.settingInfo.wxRewardTarget?.author}\")`, { timeout: 1000 });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} catch (error) {}\n\n\t\t\t\t\tif (i === scanRetryMaxCount - 1) throw new Error(\"未确认绑定账户,请在手机端确认绑定并重试\");\n\t\t\t\t}\n\n\t\t\t} catch (error) {\n\t\t\t\tlet errorMessage = \"发生未知错误\";\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\terrorMessage = error.message;\n\t\t\t\t} else if (typeof error === \"string\") {\n\t\t\t\t\terrorMessage = error;\n\t\t\t\t}\n\t\t\t\tawait wxRewardPage.close();\n\t\t\t\treturn { code: 200, message: errorMessage , data: \"\" };\n\t\t\t}\n\t\t}\n\n\t\tif(params.settingInfo.wxRewardText){\n\t\t\tawait wxRewardPage.locator('[href=\"/merchant/reward?action=getautoreply\"]').click()\n\t\t\tawait wxRewardPage.waitForLoadState('networkidle');\n\n\t\t\tconst isAddWord = reward_page.locator(\".auto-reply__list.edit .auto-reply__hd .auto-reply__text\").filter({hasText: new RegExp(`^${params.settingInfo.wxRewardText}$`) }).count()\n\n\t\t\tif(await isAddWord === 0){\n\t\t\t\tawait reward_page.locator(\".emotion_editor .edit_area\").fill(params.settingInfo.wxRewardText)\n\t\t\t\tawait reward_page.locator(\".emotion_editor .edit_area\").click()\n\t\t\t\tawait reward_page.locator(\".editor_toolbar .weui-desktop-btn.weui-desktop-btn_primary\").click()\n\t\t\t}\n\t\t}\n\t\tawait wxRewardPage.close();\n\n\t}\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl:\n\t\t\tparams.url ||\n\t\t\t`https://mp.weixin.qq.com/cgi-bin/appmsg?${Object.entries(urlParams)\n\t\t\t\t.map((it) => it.join(\"=\"))\n\t\t\t\t.join(\"&\")}`,\n cookies: (params.cookies?.map((it) => ({...it, ...commonCookies})) || []) as CookieMap,\n\t});\n\n\t// 0. 校验登录\n\ttry {\n\t\tawait page.waitForSelector(\".weui-desktop-head\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn { code: 400, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 1. 等待编辑器加载出来\n\tawait page.waitForSelector(\"#editor_pannel\", { state: \"visible\" });\n\n\t//新功能更新监听\n\tPopupListener(page,'[v-transfer-dom=\"#vue_app\"] .weui-desktop-dialog',\"更新\", '[v-transfer-dom=\"#vue_app\"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn',\n\t{\n\t\tcheckInterval: 1000,\n\t\tstopAfterClick: false\n\t})\n\t//小店功能开通监听\n\tPopupListener(page,'[extclass=\"weui-desktop-dialog_simple\"] .weui-desktop-dialog',\"小店\", '[extclass=\"weui-desktop-dialog_simple\"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn',\n\t{\n\t\tcheckInterval: 1000,\n\t\tstopAfterClick: true\n\t})\n\n\t// 2. 填写标题\n\tconst titleInstance = page.locator(\"#js_title_main textarea#title\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 3. 填写作者\n\tif (params.settingInfo.wxAuthor) {\n\t\tconst titleInstance = page.locator(\"#js_author_area input#author\");\n\t\tawait titleInstance.click();\n\t\tawait titleInstance.fill(params.settingInfo.wxAuthor);\n\t}\n\n\t// 4. 填写正文\n\tawait copyHtmlToClipboard(page, params.content);\n\t// 定位目标元素并聚焦\n\tawait page.click(\".js_editor_area .ProseMirror\");\n\t// 模拟Ctrl+V粘贴\n\tawait page.keyboard.press(\"Control+V\");\n\n\t// 将设置区域滚动到可见区域\n\tawait page.locator(\"#article_setting_area\").evaluate((node) => node.scrollIntoView());\n\n\t// 5. 填写摘要\n\tif (params.settingInfo.wxAbstract) {\n\t\tconst titleInstance = page.locator(\"#article_setting_area #js_description_area textarea\");\n\t\tawait titleInstance.click();\n\t\tawait titleInstance.fill(params.settingInfo.wxAbstract);\n\t}\n\n\t// 6. 设置封面\n\tif (params.settingInfo.wxCover) {\n\t\tlet fileName = getFilenameFromUrl(params.settingInfo.wxCover);\n const ext = path.extname(fileName);\n fileName = ext ? fileName : `${fileName}.png`\n\t\tconst cover = await downloadImage(params.settingInfo.wxCover, path.join(tmpCachePath, fileName));\n\n\t\t// 从图片库选择\n\t\tawait page.locator(\"#article_setting_area #js_cover_area .select-cover__btn\").hover();\n\t\tawait page\n\t\t\t.locator(\"#article_setting_area #js_cover_area .pop-opr__group-select-cover .pop-opr__list .pop-opr__item\")\n\t\t\t.filter({ hasText: \"从图片库选择\" })\n\t\t\t.click();\n\n\t\t// 在弹窗内选择「我的图片」- 「上传文件」\n\t\t// 等待弹窗出现\n\t\tawait page.waitForSelector(\"#vue_app .weui-desktop-dialog\", { state: \"visible\" });\n\t\tconst dialog = page.locator(\"#vue_app .weui-desktop-dialog\");\n\t\t// 点击「我的图片」\n\t\tawait dialog.locator(\".weui-desktop-menu .weui-desktop-menu__item\").filter({ hasText: \"我的图片\" }).click();\n\t\tawait page.waitForTimeout(300);\n\t\t// 点击「上传文件」\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait dialog.locator(\".weui-desktop-img-picker__list__area .js_upload_btn_container\").click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles([cover]);\n\n\t\t// 等待图片上传完成\n\t\tawait page.waitForSelector(\".weui-desktop-img-picker__list .weui-desktop-img-picker__item.selected\", {\n\t\t\tstate: \"visible\",\n\t\t});\n\t\tawait page.waitForSelector('.weui-desktop-upload__file__progress', { state: 'detached' });\n\n\t\tconst pic_msg = page.locator('.weui-desktop-img-picker__list .weui-desktop-img-picker__item.selected .weui-desktop-upload__file__msg')\n\t\tif(await pic_msg.count() > 0) return {code: 200, message: `图片上传错误:${await pic_msg.textContent()||\"未知错误,请重试!\"}`, data: \"\"}\n\n\t\t// 选择下一步\n\t\tawait dialog\n\t\t\t.locator(\".weui-desktop-dialog__ft .weui-desktop-btn:not(.weui-desktop-btn_disabled)\")\n\t\t\t.filter({ hasText: \"下一步\" })\n\t\t\t.click();\n\t\t// 等待第二步的确认按钮出来\n\t\tawait dialog\n\t\t\t.locator(\".weui-desktop-dialog__ft .weui-desktop-btn\")\n\t\t\t.filter({ hasText: \"确认\" })\n\t\t\t.waitFor({ state: \"visible\" });\n\t\tawait dialog.locator(\".weui-desktop-dialog__ft .weui-desktop-btn\").filter({ hasText: \"确认\" }).click();\n\t}\n\n\t// 7. 原创与赞赏设置\n\tif(params.settingInfo.wxCopyright){\n\t\tawait page.locator('#js_original').click()\n\n\t\tconst ori_dialog = page.locator('.claim__original-dialog.original_dialog')\n\t\tconst ori_dialog_bd = ori_dialog.locator('.weui-desktop-dialog__bd')\n\t\tconst ori_dialog_ft = ori_dialog.locator('.weui-desktop-dialog__ft')\n\n\t\tawait ori_dialog_bd.locator('.weui-desktop-form__check-content').filter({hasText: \"文字原创\"}).click()\n\n\t\tif(params.settingInfo?.wxWhitelist){\n\n\t\t\tfor (const _target of params.settingInfo.wxWhitelist){\n\n\t\t\t\tawait ori_dialog_bd.locator('#js_article_whitelist_search').fill(_target)\n\t\t\t\tawait ori_dialog_bd.locator('.js_search').click()\n\t\t\t\tconst search_res = ori_dialog_bd.locator('#js_article_whitelist_search_result > div')\n\n\t\t\t\tawait page.waitForTimeout(1000);\n\n\t\t\t\tif( await search_res.getAttribute('class') !== 'search-result-title search-result-empty'){\n\n\t\t\t\t\tconst search_res_name = await search_res.locator('.search-result-name-left').textContent() || undefined\n\t\t\t\t\tawait search_res.click()\n\t\t\t\t\tconst whrite_list = ori_dialog_bd.locator('#js_article_whitelist_added tbody')\n\t\t\t\t\tconst white_td_isadd = await whrite_list.locator('.table-td-name').filter({hasText: search_res_name}).count()\n\n\t\t\t\t\tif (!white_td_isadd) {\n\t\t\t\t\t\treturn {code: 200 , message:'白名单添加失败,请重试!', data: ''}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\treturn { code: 200, message: `白名单用户:${_target} 未搜索到,请确定输入是否正确!`, data: '' }\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\n\t\tif(params.settingInfo?.wxQuickReprint){\n\t\t\tconst btn_isChecked = await ori_dialog_bd.locator('//span[@class=\"frm_tips\"]').filter({hasText: '已开启'}).count() === 1;\n\t\t\tif(!btn_isChecked) await ori_dialog_bd.locator('.weui-desktop-switch_loading .weui-desktop-switch__box').click()\n\t\t}\n\n\t\tconst checkbox = ori_dialog_ft.locator('.weui-desktop-icon-checkbox')\n\t\tif( !await checkbox.isChecked()) await checkbox.check()\n\t\tawait ori_dialog_ft.locator('.weui-desktop-btn.weui-desktop-btn_primary').click()\n\n\t\tif (params.settingInfo?.wxRewardTarget){\n\n\t\t\tawait page.locator('#js_reward_setting_area').click()\n\n\t\t\tconst reward_setting = page.locator('.reward-setting-dialog')\n\t\t\tconst reward_setting_bd = reward_setting.locator('.weui-desktop-dialog__bd')\n\t\t\tconst reward_setting_ft = reward_setting.locator('.weui-desktop-dialog__ft')\n\n\t\t\t//遍历绑定信息\n\t\t\tfor (const _type in params.settingInfo.wxRewardTarget){\n\t\t\t\tif (_type === \"author\"){\n\t\t\t\t\tconst userName = params.settingInfo.wxRewardTarget[_type]\n\n\t\t\t\t\tawait reward_setting_bd.locator('.weui-desktop-form__check-label', { hasText: '赞赏作者' }).click()\n\t\t\t\t\tawait reward_setting_bd.locator('.weui-desktop-form__input').fill(userName)\n\n\n\t\t\t\t\tif(params.settingInfo.wxRewardText) {\n\t\t\t\t\t\tconst reward_setting_replay = page.locator('.reward-reply-setting')\n\t\t\t\t\t\tconst switchAuto = reward_setting_replay.locator('.weui-desktop-switch__box')\n\n\t\t\t\t\t\tconst maxAttempts = 5;\n\t\t\t\t\t\tconst delayMs = 500;\n\t\t\t\t\t\tlet nowCheckTime = 0\n\n\t\t\t\t\t\tfor (let attempt = 0; attempt < maxAttempts; attempt++) {\n\t\t\t\t\t\t\tconst isDisabled = await switchAuto.isDisabled();\n\t\t\t\t\t\t\tif (!isDisabled){\n\t\t\t\t\t\t\t\tawait switchAuto.isChecked() ? nowCheckTime++ : null\n\t\t\t\t\t\t\t\tif (nowCheckTime === 2) break\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (attempt === maxAttempts - 1) throw new Error('Checkbox did not become enabled within the timeout.');\n\t\t\t\t\t\t\tawait new Promise(resolve => setTimeout(resolve, delayMs));\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tconst isOneReplay = await reward_setting_replay.locator('.reward-reply-select__wrp >.reward-reply-select__tips').textContent() === \"添加新的回复\"\n\t\t\t\t\t\tconst isCurrentReplay = await reward_setting_replay.locator('.reward-reply-select__wrp >.reward-reply-select__display .wording').filter({hasText: new RegExp(`^${[params.settingInfo.wxRewardText]}$`)}).count() === 1\n\n\t\t\t\t\t\tif (!isOneReplay && !isCurrentReplay) {\n\t\t\t\t\t\t\tawait reward_setting_replay.locator('.reward-reply-select__wrp >.reward-reply-select__tips').click()\n\t\t\t\t\t\t\tawait reward_setting_replay.locator('.reward-reply-select__display.can-select .wording').filter({hasText: new RegExp(`^${[params.settingInfo.wxRewardText]}$`)}).click()\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tawait reward_setting_bd.locator('.reward-reply-setting .weui-desktop-switch__input').isChecked() ? await reward_setting_bd.locator('.reward-reply-setting .weui-desktop-switch__box').uncheck(): 0\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\telse if (_type === \"project\"){}\n\t\t\t}\n\n\t\t\tconst checkbox = reward_setting_ft.locator('.weui-desktop-icon-checkbox')\n\t\t\tif( !await checkbox.isChecked()) await checkbox.check()\n\t\t\tawait reward_setting_ft.locator('.weui-desktop-btn.weui-desktop-btn_primary').click()\n\n\t\t}\n\n\t}\n\n\t// 8. 互动设置\n\tif(params.settingInfo?.wxInteraction){\n\t\tawait page.locator('.appmsg-editor__setting-group.js_interaction_cell').click()\n\t\tconst wxInteraction_setting = page.locator('.interaction-dialog')\n\t\tconst wxInteraction_bd = wxInteraction_setting.locator('.weui-desktop-dialog__bd')\n\t\tconst wxInteraction_ft = wxInteraction_setting.locator('.weui-desktop-dialog__ft')\n\n\t\tif(params.settingInfo.wxInteraction.Type === \"public\"){\n\t\t\tawait wxInteraction_bd.locator('.weui-desktop-form__check-label span', { hasText: /^(开启|留言)$/ }).click();\n\n\t\t\tconst comment_area = wxInteraction_bd.locator('.comment-options-block.pt0')\n\t\t\tconst reply_area = wxInteraction_bd.locator('.comment-options-block.bb0.pb0')\n\t\t\tconst commont_rply_opt = page.locator('.weui-desktop-popper.options-popover[x-placement=\"bottom\"]')\n\n\t\t\tawait comment_area.locator('.comment-options__selector-btn').click();\n\t\t\tawait commont_rply_opt.locator('.weui-desktop-form__check-label', { hasText: params.settingInfo.wxInteraction.Option?.Comment }).click();\n\n\t\t\tif(params.settingInfo.wxInteraction.Option?.elect_comment) {\n\t\t\t\tawait comment_area.locator('.weui-desktop-switch__box').check()\n\t\t\t}else{\n\t\t\t\tawait comment_area.locator('.weui-desktop-switch__input').isChecked() ? await comment_area.locator('.weui-desktop-switch__box').uncheck(): 0\n\t\t\t}\n\n\t\t\tawait page.waitForTimeout(1000);\n\n\t\t\tawait reply_area.locator('.comment-options__selector-btn').click();\n\t\t\tawait commont_rply_opt.locator('.weui-desktop-form__check-label', { hasText: params.settingInfo.wxInteraction.Option?.reply }).click();\n\n\t\t\tif(params.settingInfo.wxInteraction.Option?.elect_reply) {\n\t\t\t\tawait reply_area.locator('.weui-desktop-switch__box').check()\n\t\t\t}else{\n\t\t\t\tawait reply_area.locator('.weui-desktop-switch__input').isChecked() ? await reply_area.locator('.weui-desktop-switch__box').uncheck(): 0\n\t\t\t}\n\t\t}else if(params.settingInfo.wxInteraction.Type === \"private\"){\n\t\t\tawait wxInteraction_bd.locator('.weui-desktop-form__check-label span', { hasText: /^(快捷私信|不开启)$/ }).click();\n\t\t}\n\n\t\tawait wxInteraction_ft.locator('.weui-desktop-btn.weui-desktop-btn_primary').click()\n\t}\n\n\t// 9. 原文链接\n\tif (params.settingInfo.wxOriginalText) {\n\t\tawait page.locator(\"#js_article_url_area .allow_click_opr\").click();\n\t\tawait page.waitForTimeout(200);\n\t\tconst poperInstance = page.locator('.popover:not([style*=\"display: none\"])');\n\t\tconst poperInput = poperInstance.locator(\"input.weui-desktop-form__input.js_url\");\n\t\tawait poperInput.fill(params.settingInfo.wxOriginalText);\n\t\tawait poperInstance.locator(\".popover_bar .btn_primary\").click();\n\t}\n\n\t// 10. 创作来源\n\tif (params.settingInfo.wxCreationSource && params.settingInfo.wxCreationSource.length > 0) {\n\t\tconst source = params.settingInfo.wxCreationSource[0];\n\t\tawait page.locator(\"#js_claim_source_area .allow_click_opr\").click();\n\t\tawait page.waitForTimeout(200);\n\t\tconst poperInstance = page.locator('.popover:not([style*=\"display: none\"])');\n\t\tawait poperInstance.locator(`.frm_radio_item label[for=\"${source}\"]`).click();\n\t}\n\n\t// 11. 关闭平台推荐\n\tif (params.settingInfo.wxNotAllowRecommend === true) {\n\t\tawait page.locator(\"#js_not_recommend_area .allow_click_opr\").click();\n\t\tawait page.waitForTimeout(200);\n\t\tconst poperInstance = page.locator('.popover:not([style*=\"display: none\"])');\n\t\tawait poperInstance.locator('.frm_radio_item label[for=\"not_recomment_0\"]').click();\n\t}\n\n\tawait page.waitForTimeout(1000);\n task._timerRecord.PrePublish = Date.now();\n\n\t// 12. 发布\n const articleId = await new Promise<string>((resolve) => {\n // 定义响应处理函数\n const handleResponse = async (response: Response) => {\n const url = response.url();\n const query = parseUrlQueryString(url);\n if (url.includes(\"/cgi-bin/operate_appmsg\") && query?.t === \"ajax-response\") {\n const jsonResponse = await response.json();\n page.off(\"response\", handleResponse);\n resolve(jsonResponse?.appMsgId);\n }\n };\n\n // 开始监听响应事件\n page.on(\"response\", handleResponse);\n\n // 点击发表\n (async () => {\n await page.locator(\"#editor_pannel #bottom_main #js_button_area #js_send button\").click();\n await page.waitForTimeout(200);\n\n if (params.settingInfo.timer) {\n await page.locator(\".mass-send .mass-send__td-setting\", {hasText: \"定时发表\"}).locator(\".weui-desktop-switch__box\").check();\n const dateD = Number(TimeFormatter.format(params.settingInfo.timer, \"d\"));\n const nowD = Number(TimeFormatter.format(Date.now(), \"d\"));\n\n await page.locator(\".mass-send__timer .weui-desktop-form__dropdown__dt\").click();\n const dropMenu = page.locator(\".mass-send__timer .weui-desktop-dropdown-menu\").locator(\".weui-desktop-dropdown__list-ele\")\n await dropMenu.filter({hasText: dateD === nowD ? \"今天\" : dateD === nowD + 1 ? \"明天\" : TimeFormatter.format(params.settingInfo.timer, \"M月d日\")}).click();\n\n const timeDropMenu = page.locator(\".mass-send__timer .weui-desktop-picker__time:visible\")\n await timeDropMenu.locator(\".weui-desktop-form__input\").fill(TimeFormatter.format(params.settingInfo.timer, \"hh:mm\"));\n await timeDropMenu.locator(\"i.weui-desktop-icon__time\").click();\n\n }\n })();\n });\n\tawait page.waitForTimeout(200);\n\n\tif(params.masssend){\n\t\tconst times = Number(await page.locator(\".mass-send .multi-sent__notice_time\").locator('div[style=\"display: none;\"] div:not([style*=\"display: none\"]) span').textContent())\n\t\tif( times===0 ) return { code: 200, message: \"今日群发次数用尽,请明天再试。\", data: \"\" };\n\t\tawait page.locator(\".mass-send .mass_send__notify\").locator(\".weui-desktop-switch__box\").check();\n\t}else{\n\t\tawait page.locator(\".mass-send .mass_send__notify\").locator(\".weui-desktop-switch__box\").uncheck();\n\t}\n\n\tawait page.waitForTimeout(200);\n\n\t// 再次点击发表\n\tawait page.waitForSelector('.new_mass_send_dialog .weui-desktop-dialog__wrp:not([style*=\"display: none\"])', {state: \"visible\"});\n\tawait page.locator(\".new_mass_send_dialog .weui-desktop-dialog .weui-desktop-dialog__ft button.weui-desktop-btn_primary\").click();\n\n\t// 点击继续发表\n\tawait page.waitForSelector('.double_check_dialog .weui-desktop-dialog__wrp:not([style*=\"display: none\"])', {state: \"visible\",});\n\tawait page.locator(\".double_check_dialog .weui-desktop-dialog .weui-desktop-dialog__ft button.weui-desktop-btn_primary\").click();\n\n\tawait page.waitForTimeout(2000);\n\n\t// 原创校验弹窗\n\tconst originalCheckDialog = page.locator('div[data-transfer=\"true\"][width\\\\.number=\"800\"][height\\\\.number=\"800\"] .weui-desktop-dialog__title')\n\tif((await originalCheckDialog.count() > 0) ){\n\t\tif (await originalCheckDialog.textContent() === \"原创校验\"){\n\t\t\tconst popMassend = page.locator('div[data-transfer=\"true\"][width\\\\.number=\"800\"][height\\\\.number=\"800\"]')\n\t\t\tawait popMassend.locator(\".weui-desktop-btn_primary\",{hasText: \"下一步\"}).click();\n\t\t\tawait popMassend.locator(\".weui-desktop-btn_primary\",{hasText: \"继续\"}).click();\n\t\t}\n\t}\n\n\n\ttry {\n\t\tconst startTime = Date.now();\n\n\t\t// biome-ignore lint/suspicious/noAsyncPromiseExecutor: <explanation>\n\t\tawait new Promise<void>(async (resolve, reject) => {\n\t\t\t// 定义响应处理函数\n\t\t\tconst handleResponse = async (response: Response) => {\n\t\t\t\tif (response.url().includes(\"/safe/safeuuid\")) {\n\t\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\t\tif (jsonResponse.errcode === 405) {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\t\t} else if (Date.now() - startTime > waitQrcodeResultMaxTime) {\n\t\t\t\t\t\treject();\n\t\t\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// 开始监听响应事件\n\t\t\tpage.on(\"response\", handleResponse);\n\n\t\t\t// 获取微信验证二维码\n\t\t\tawait page.waitForSelector(\".dialog .js_wxchecks.safe_check img.qrcode.js_qrcode\", {\n\t\t\t\tstate: \"visible\",\n\t\t\t});\n\t\t\tconst qrcodeSrc = await page\n\t\t\t\t.locator(\".dialog .js_wxchecks.safe_check img.qrcode.js_qrcode\")\n\t\t\t\t.first()\n\t\t\t\t.getAttribute(\"src\");\n\t\t\tif (qrcodeSrc) {\n\t\t\t\tconst imgUrl = new URL(qrcodeSrc, page.url()).href; // 处理相对路径\n\t\t\t\tconst response = await axios({\n\t\t\t\t\tmethod: \"get\",\n\t\t\t\t\turl: imgUrl,\n\t\t\t\t\tresponseType: \"arraybuffer\", // 确保接收二进制数据\n\t\t\t\t});\n\t\t\t\t// 保存文件\n\t\t\t\tconst qrcodeFilePath = path.join(tmpCachePath, \"weixin_qrcode.jpg\");\n\t\t\t\tfs.writeFileSync(qrcodeFilePath, response.data);\n\t\t\t\tparams.safeQrcodeCallback?.(qrcodeFilePath);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"qrcodeSrc is empty\");\n\t\t\t}\n\t\t});\n\t} catch (error) {\n\t\tawait page.close();\n\t\treturn { code: 500, message: \"群发二维码已过期,请重试发布。\", data: \"\" };\n\t}\n\n\tawait page.waitForTimeout(3000);\n\tawait page.close();\n\n\treturn success(articleId);\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\n\nimport type { ActiomCommonParams } from \"../../types\";\nimport { defaultParams, executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\nimport type { CollectDetail } from '../getWeixinCollection'\n\nexport interface WxInteraction {\n\tType: \"public\" | \"private\" | \"off\"; // public:评论留言, priviate: 快捷私信, off: 不开启\n\tOption?: { // public下相关设置\n\t Comment: \"已关注7天及以上的用户\" | \"已关注的用户\" | \"所有用户\"; // 评论设置\n\t reply: \"已关注7天及以上的用户\" | \"已关注的用户\" | \"所有用户\"; // 回复设置\n\t elect_comment: boolean; // 是否开启精选评论\n\t elect_reply: boolean; // 是否开启精选回复\n\t};\n }\n\nexport interface WeixinPublishParams extends ActiomCommonParams {\n\tsaveType: \"draft\" | \"publish\"; // 保存成草稿 / 发布\n\tmasssend?: boolean; // 是否群发(默认开启群发)\n\ttoken: string | number;\n\ttitle: string; // 标题\n\tcontent: string; // 正文内容\n\tuuid?: string;\n\tappMsgId?: string;\n\toperation_seq?: string;\n proxyLoc?: string; // 代理位置\n localIP?: string; // 用户ip\n huiwenToken?: string; // 绘文token\n\tsettingInfo: {\n\t\twxCover: string; // 封面\n\t\twxAuthor?: string; // 作者\n\t\twxAbstract?: string; // 摘要\n\t\twxOriginalText?: string; // 原文链接\n\t\twxCopyright?: boolean, // 版权声明\n\t\twxWhitelist?: string[]; // 转载白马名单\n\t\twxRewardTarget?: Record<string, string>; // 赞赏目标与ID\n\t\twxRewardText?: string; // 赞赏文案\n\t\twxQuickReprint?: boolean; // 快捷转载\n\t\twxNotAllowRecommend?: boolean; // 不允许被平台推荐\n\t\twxCreationSource?: string[]; // 创作来源\n\t\twxInteraction?: WxInteraction // 互动设置\n\t\ttimer?: number; // 定时发文时间\n wxTopic?: string[]; //话题数组\n wxCollectionInfo?: CollectDetail; // 文章合集信息\n\t};\n\tsafeQrcodeCallback?: (qrcodePath: string) => void; // 二维码验证回调\n}\n\nexport interface WxWhitelistUserInfo {\n\tnickname: string;\n\topenid: string; // 微信常用字段命名可能是 open_id\n\tusername: string;\n\twx_name: string;\n\tpic_url: string;\n}\n\nexport type PublishAction = CommonAction<WeixinPublishParams, string>;\n\nexport const weixinPublish: PublishAction = async (task, _params) => {\n\tconst params = defaultParams(_params, { masssend: true });\n\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\n\nimport type { PublishAction, WeixinmpPublishParams } from \".\";\nimport type { Weixin } from \"../../types\";\nimport type { AspectRatio } from \"../../utils\";\nimport { calculateCropCoordinates, getFileState } from \"../../utils\";\nimport { Http } from \"../../utils/http\"\n\ntype ColorResponse = {\n\twidth: number;\n\theight: number;\n\ttheme_color: { r: number; g: number; b: number };\n};\ntype ShareInamgeInfo = {\n\tcdn_url: string;\n\tdisable_live: 0;\n\tdisable_theme: 1;\n\tfile_id: number;\n\twidth: number;\n\theight: number;\n\ttheme_color: string;\n\turl: string;\n};\n\nconst saveDraft = (\n\thttp: Http,\n\tparams: WeixinmpPublishParams,\n\tdata: Record<string, unknown>,\n) => {\n\tconst formData = new FormData();\n\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tformData.append(key, value);\n\t}\n\n\treturn http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/operate_appmsg\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tt: \"ajax-response\",\n\t\t\tsub: \"update\",\n\t\t\ttype: 77,\n\t\t\tlang: \"zh_CN\",\n\t\t},\n\t\tdata: formData,\n\t});\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\torigin: \"https://mp.weixin.qq.com\",\n\t\t\treferer: `https://mp.weixin.qq.com/cgi-bin/appmsg?token=${params.token}&lang=zh_CN`,\n\t\t},\n\t});\n\n\t// 1. 上传图片\n\tconst shareImageInfos: ShareInamgeInfo[] = [];\n\tconst cropResult: Record<string, string> = {};\n\n\tif (params.banners && params.banners.length > 0) {\n\t\t// 下载图片到本地\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tfor (let index = 0; index < images.length; index++) {\n\t\t\tconst image = images[index];\n\t\t\tconst fileState = getFileState(image);\n\n\t\t\tconst formData = new FormData();\n\t\t\tformData.append(\"id\", `WU_FILE_${index + 1}`);\n\t\t\tformData.append(\"name\", fileState.name);\n\t\t\tformData.append(\"type\", fileState.type);\n\t\t\tformData.append(\"lastModifiedDate\", fileState.lastModifiedDate);\n\t\t\tformData.append(\"size\", fileState.size);\n\t\t\tformData.append(\"file\", fs.createReadStream(image));\n\n\t\t\tconst response = await http.api<{ cdn_url: string; content: string }>({\n\t\t\t\tmethod: \"post\",\n\t\t\t\turl: `https://mp.weixin.qq.com/cgi-bin/filetransfer?action=upload_material&f=json&writetype=doublewrite&token=${params.token}&lang=zh_CN`,\n\t\t\t\tdata: formData,\n\t\t\t});\n\n\t\t\t// 获取图片的主题色\n\t\t\tconst colorResponseData = await http.api<ColorResponse>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/filepage\",\n\t\t\t\tparams: {\n\t\t\t\t\taction: \"getimgext\",\n\t\t\t\t\tfileid: response.content,\n\t\t\t\t\ttoken: params.token,\n\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\tf: \"json\",\n\t\t\t\t\tajax: 1,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst themeColor = colorResponseData.theme_color;\n\n\t\t\tshareImageInfos.push({\n\t\t\t\tcdn_url: response.cdn_url,\n\t\t\t\tdisable_live: 0,\n\t\t\t\tdisable_theme: 1,\n\t\t\t\tfile_id: Number(response.content),\n\t\t\t\twidth: colorResponseData.width,\n\t\t\t\theight: colorResponseData.height,\n\t\t\t\ttheme_color: `rgb(${themeColor.r},${themeColor.g},${themeColor.b})`,\n\t\t\t\turl: response.cdn_url,\n\t\t\t});\n\n\t\t\t// 第一张图片还需要添加头图裁切\n\t\t\tif (index === 0) {\n\t\t\t\tconst cropFormData = new FormData();\n\t\t\t\tcropFormData.append(\"imgurl\", response.cdn_url);\n\n\t\t\t\t// 需要裁切 16:9,3:4,1:1 三种尺寸的图片\n\t\t\t\tconst cropRatios: AspectRatio[] = [\n\t\t\t\t\t[16, 9],\n\t\t\t\t\t[1, 1],\n\t\t\t\t\t[3, 4],\n\t\t\t\t];\n\t\t\t\tcropFormData.append(\"size_count\", cropRatios.length);\n\t\t\t\tconst cropCoordinates = cropRatios.map((r, idx) => {\n\t\t\t\t\tconst cropCoordinate = calculateCropCoordinates(\n\t\t\t\t\t\tcolorResponseData.width,\n\t\t\t\t\t\tcolorResponseData.height,\n\t\t\t\t\t\tr,\n\t\t\t\t\t);\n\t\t\t\t\tcropFormData.append(`size${idx}_x1`, cropCoordinate.x1);\n\t\t\t\t\tcropFormData.append(`size${idx}_y1`, cropCoordinate.y1);\n\t\t\t\t\tcropFormData.append(`size${idx}_x2`, cropCoordinate.x2);\n\t\t\t\t\tcropFormData.append(`size${idx}_y2`, cropCoordinate.y2);\n\n\t\t\t\t\treturn { ratio: `${r[0]}_${r[1]}`, ...cropCoordinate };\n\t\t\t\t});\n\n\t\t\t\tcropFormData.append(\"token\", params.token);\n\t\t\t\tcropFormData.append(\"lang\", \"zh_CN\");\n\t\t\t\tcropFormData.append(\"f\", \"json\");\n\t\t\t\tcropFormData.append(\"ajax\", 1);\n\n\t\t\t\tconst cropResponse = await http.api<{ result: Weixin.WeiXinCropResult[] }>({\n method: \"post\",\n url: \"https://mp.weixin.qq.com/cgi-bin/cropimage?action=crop_multi\",\n data: cropFormData\n });\n\n\t\t\t\tcropResult.cdn_url_back0 = response.cdn_url; // 原图\n\t\t\t\tcropResult.cdn_url0 = cropResponse.result[0].cdnurl; // 16:9\n\t\t\t\tcropResult.cdn_235_1_url0 = cropResponse.result[0].cdnurl; // 16:9\n\t\t\t\tcropResult.cdn_16_9_url0 = cropResponse.result[0].cdnurl; // 16:9\n\t\t\t\tcropResult.cdn_1_1_url0 = cropResponse.result[1].cdnurl; // 1:1\n\t\t\t\tcropResult.cdn_3_4_url0 = cropResponse.result[2].cdnurl; // 3:4\n\t\t\t\tcropResult.crop_list0 = JSON.stringify({\n\t\t\t\t\tcrop_list: cropCoordinates.map((it, idx) => ({\n\t\t\t\t\t\tfile_id: cropResponse.result[idx].file_id,\n\t\t\t\t\t\tratio: it.ratio,\n\t\t\t\t\t\tx1: 0,\n\t\t\t\t\t\tx2: 0,\n\t\t\t\t\t\ty1: 0,\n\t\t\t\t\t\ty2: 0,\n\t\t\t\t\t})),\n\t\t\t\t\tcrop_list_percent: cropCoordinates.map((it, idx) => ({\n\t\t\t\t\t\t...it,\n\t\t\t\t\t\tfile_id: cropResponse.result[idx].file_id,\n\t\t\t\t\t})),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// 保存\n\tconst res = await saveDraft(http, params, {\n\t\t...cropResult,\n\t\ttoken: params.token,\n\t\tlang: \"zh_CN\",\n\t\tf: \"json\",\n\t\tajax: 1,\n\t\toperate_from: \"Chrome\",\n\t\ttitle0: params.title,\n\t\tcontent0: params.content,\n\t\tshare_imageinfo0: JSON.stringify(shareImageInfos),\n\t});\n\n return success(res)\n};\n","import path from \"node:path\";\nimport type { CookieMap } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport type { PublishAction, Source } from \"./index\";\n\nconst sourceText: Record<Source, string> = {\n\tai: \"内容由AI生成\",\n\tofficial: \"素材来源官方媒体/网络新闻\",\n\tfictional: \"内容剧情演绎,仅供娱乐\",\n\tpersonal: \"个人观点,仅供参考\",\n};\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"mp.weixin.qq.com\",\n\t\turl: \"https://mp.weixin.qq.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl:\n\t\t\tparams.url ||\n\t\t\t`https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&type=77&createType=8&token=${params.token}&lang=zh_CN`,\n cookies: (params.cookies?.map((it) => ({...it, ...commonCookies})) || []) as CookieMap,\n\t});\n\n\tconst tmpCachePath = task.getTmpPath();\n\n\t// 0. 判断是否登录\n\ttry {\n\t\tawait page.waitForSelector(\"#editor_pannel\");\n\t} catch (error) {\n\t\treturn { code: 500, message: \"登录失效\", data: page.url() };\n\t}\n\n\tconst container = page.locator(\"#editor_pannel\");\n\n\t// 1. 添加图片\n\tif (params.banners && params.banners.length > 0) {\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\t// 选择文件\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait container.locator(\".image-selector__add\").hover();\n\t\tawait container\n\t\t\t.locator(\".image-selector__add .pop-opr__list .pop-opr__item\")\n\t\t\t.filter({ hasText: \"本地上传\" })\n\t\t\t.click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles(images);\n\t}\n\n\t// 2. 标题\n\tconst titleInstance = page.locator(\"#js_title_main textarea#title\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 3. 正文\n\tconst descInstance = page.locator(\"#guide_words_main .ProseMirror\");\n\tawait descInstance.click();\n\tawait descInstance.fill(params.content);\n\n\t// 4. 来源\n\tif (params.source) {\n\t\tawait container.locator(\"#js_claim_source_area .js_claim_source_desc\").click();\n\t\tawait page\n\t\t\t.locator(\".popover_article_claim_source .frm_radio_item label\")\n\t\t\t.filter({ hasText: sourceText[params.source] })\n\t\t\t.click();\n\t}\n\n\t// 5. 等待所有图片上传完成\n\tif (params.banners && params.banners.length > 0) {\n\t\tawait page.waitForSelector(\"#editor_pannel .image-selector .image-selector__preview\");\n\t}\n\n\t// 6. 保存\n\tif (params.draft) {\n\t\tawait container.locator(\"#bottom_main #js_submit button\").click();\n\t} else {\n\t\tawait container.locator(\"#bottom_main #js_send button\").click();\n\t}\n\n\treturn success(\"\");\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\n\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\nexport type Source = \"ai\" | \"official\" | \"fictional\" | \"personal\";\n\nexport interface WeixinmpPublishParams extends ActiomCommonParams {\n\ttoken: string | number;\n\tbanners?: string[];\n\ttitle: string; // 标题\n\tcontent: string; // 正文\n\t/**\n\t * 内容由AI生成 - ai\n\t * 素材来源官方媒体/网络新闻 - official\n\t * 内容剧情演绎,仅供娱乐 - fictional\n\t * 个人观点,仅供参考 - personal\n\t */\n\tsource?: Source; // 来源\n\tdraft?: boolean; // 是否为草稿\n}\n\nexport type PublishAction = CommonAction<WeixinmpPublishParams>;\n\nexport const weixinmpPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import fs from \"node:fs\";\n\nimport path from \"node:path\";\nimport {downloadImage, getFilenameFromUrl, response, success} from \"@iflyrpa/share\";\nimport type {PublishAction} from \".\";\nimport {Http} from \"../../utils/http\";\nimport {Xhshow} from \"../../utils/xhsXsEncrypt\";\nimport type{CollectionResponse} from \"../getXhsCollection\";\nimport type {AxiosProxyParams} from \"../../types\";\nconst GenXSCommon = require(\"../../utils/XhsXsCommonEnc.js\") as (a1cookie: string, x_t: string|number, x_s:string) => string;\n\ninterface CommonResponse<T = unknown> {\n msg: string;\n data: T;\n proxyInfo?: Record<string, unknown>\n code: number;\n success: boolean;\n result?: number;\n}\n\ninterface UploadTempPermit<T = string[]> {\n bucket: string;\n uploadAddr: string;\n fileIds: T;\n token: string;\n}\n\nconst errnoMap: Record<number, string> = {\n \"-1\": \"未知拦截器错误,请稍后重试。\",\n 915: \"所属C端账号手机号被修改,请重新登录\",\n 914: \"所属C端账号密码被修改,请重新登录\",\n 903: \"账户已登出,需重新登陆重试!\",\n 902: \"登录已过期,请重新登录!\",\n 906: \"账号存在风险,请重新登录!\",\n \"-9136\": \"因违反社区规范禁止发笔记,请检查账号状态!\",\n};\n\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport const mockAction: PublishAction = async (task, params) => {\n const tmpCachePath = task.getTmpPath();\n if ( params?.selfDeclaration?.type === \"source-statement\" && params.selfDeclaration.childType === \"transshipment\" && params.originalBind ) return {code: 400, message: \"原创声明与转载声明互斥,请重新选择后发布!\", data: \"\"};\n const a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) {\n return {code: 400, message: \"账号数据异常,请重新绑定账号后重试。\", data: \"\"};\n }\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n origin: \"https://creator.xiaohongshu.com\",\n referer: \"https://creator.xiaohongshu.com/\",\n \"user-agent\":\n \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36\",\n }\n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n \n const args: AxiosProxyParams = [\n { headers },\n task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n const http = new Http({ headers })\n\tconst proxyHttp = new Http(...args);\n\n // 添加响应拦截器\n proxyHttp.addResponseInterceptor<CommonResponse>((response) => {\n const responseData = response.data;\n\n // 检查响应中的 errno 字段\n if (response && responseData?.code && responseData.code !== 0 || responseData?.code && !responseData.success) {\n\n const errmsg = errnoMap[responseData.code] || response.config.defaultErrorMsg || \"文章发布异常,请稍后重试。\";\n\n return {\n code: errnoMap[responseData.code] ? 400 : 500,\n message: errmsg,\n data: responseData\n };\n }\n });\n \n // 0. 获取上传 token\n const fetchCoverUrl = \"/api/media/v1/upload/creator/permit\";\n const fetchCoverParams = {\n biz_name: \"spectrum\", \n scene: \"image\", \n file_count: params.banners.length,\n version: 1, \n source: \"web\"\n }\n const fetchCoverXsHeader = xsEncrypt.signHeadersGet(fetchCoverUrl, recordCookie, \"xhs-pc-web\", fetchCoverParams);\n\n const coverIdInfo = await proxyHttp.api<CommonResponse<{ uploadTempPermits: UploadTempPermit[] }>>({\n method: \"get\",\n baseURL: \"https://creator.xiaohongshu.com\",\n url: fetchCoverUrl,\n defaultErrorMsg: \"获取小红书用户信息失败,请稍后重试发布。\",\n headers: fetchCoverXsHeader,\n params: fetchCoverParams\n },{ retries: 3, retryDelay: 20, timeout: 3000 });\n\n const uploadInfos: UploadTempPermit<string>[] = [];\n for (const item of coverIdInfo.data.uploadTempPermits) {\n for (const fileId of item.fileIds) {\n uploadInfos.push({\n bucket: item.bucket || \"\",\n uploadAddr: item.uploadAddr || \"\",\n fileIds: fileId,\n token: item.token || \"\"\n });\n }\n }\n\n\n if (uploadInfos.length < params.banners.length) return {code: 400, message: \"可用 OSS bucket 数量不足,无法上传所有图片!\", data: \"\"};\n\n if (uploadInfos.length === 0) return {code: 400, message: \"图片上传失败,请稍后重试!\", data: \"\"};\n\n const availableBuckets = Array.from({length: uploadInfos.length}, (_, i) => i);\n\n const uploadFile = async (url: string, index: number): Promise<{\n ossFileId: string;\n ossToken: string;\n }> => {\n const fileName = getFilenameFromUrl(url);\n const localUrl = await downloadImage(url, path.join(tmpCachePath, fileName));\n const fileBuffer = fs.readFileSync(localUrl);\n\n const MAX_RETRIES = uploadInfos.length;\n let attempt = 0;\n\n while (attempt < MAX_RETRIES) {\n // 分配 bucket\n const ossBucketIndex = availableBuckets.shift(); // 移除并获取第一个可用 bucket\n\n if (ossBucketIndex === undefined) {\n return {ossFileId: \"\", ossToken: \"\"}; // 没有可用 bucket\n }\n\n const currentInfo = uploadInfos[ossBucketIndex];\n const ossFileId = currentInfo.fileIds;\n const ossToken = currentInfo.token;\n const ossDomain = currentInfo.uploadAddr;\n\n try {\n await http.api({\n method: \"put\",\n url: `https://${ossDomain}/${ossFileId}`,\n data: fileBuffer,\n headers: {\n \"x-cos-security-token\": ossToken,\n },\n defaultErrorMsg: \"图片上传异常,请稍后重试发布。\",\n },{ retries: 3, retryDelay: 20, timeout: 8000 });\n return {ossFileId, ossToken};\n } catch (error) {\n attempt++;\n }\n }\n return {ossFileId: \"\", ossToken: \"\"}; // 所有尝试失败\n };\n\n const coverInfos = await Promise.all(params.banners.map((it, idx) => uploadFile(it, idx)));\n const invalidUpload = coverInfos.find((it) => it.ossToken === \"\" || it.ossFileId === \"\")\n if (invalidUpload) return {code: 400, message: \"图片上传异常,请稍后重试发布。\", data: \"\"}\n \n if (params.topic && params.topic.length > 0) {\n await Promise.all(params.topic.map(async (topic) => {\n if (!topic.id) {\n const topicData = {topic_names: topic.name}\n const topicXsHeader = xsEncrypt.signHeadersPost(\"/web_api/sns/capa/postgw/topic/batch_customized\", recordCookie, \"xhs-pc-web\", topicData);\n\n const createTopic = await proxyHttp.api({\n method: \"POST\",\n url: \"https://edith.xiaohongshu.com/web_api/sns/capa/postgw/topic/batch_customized\",\n headers: topicXsHeader,\n data: topicData,\n defaultErrorMsg: \"话题创建异常,请稍后重试。\",\n },{ retries: 3, retryDelay: 20, timeout: 3000 })\n Object.assign(topic, createTopic.data.topic_infos[0])\n }\n }))\n };\n \n const visibleRangeMap = {\n public: 0,\n private: 1,\n friends: 4\n }\n\n const publishData = {\n common: {\n ats: [],\n biz_relations: [],\n desc: params?.content,\n goods_info: {},\n hash_tag: params.topic || [],\n note_id: \"\",\n source: JSON.stringify({\n type: \"web\",\n ids: \"\",\n extraInfo: '{\"systemId\":\"web\"}',\n }),\n title: params?.title,\n type: \"normal\",\n privacy_info: {\n op_type: 1,\n type: visibleRangeMap[params.visibleRange],\n },\n post_loc: params.address\n ? {\n name: params.address?.name,\n poi_id: params.address?.poi_id,\n poi_type: params.address?.poi_type,\n subname: params.address?.full_address,\n }\n : null,\n business_binds: \"\",\n },\n image_info: {\n images: coverInfos.map((it) => ({\n extra_info_json: '{\"mimeType\":\"image/png\"}',\n file_id: it.ossFileId,\n metadata: {source: -1},\n stickers: {floating: [], version: 2},\n })),\n },\n video_info: null,\n };\n\n // 自主声明\n const userDeclarationBind = {\n origin: 2,\n photoInfo: {},\n repostInfo: {},\n };\n\n if (params.selfDeclaration?.type === \"fictional-rendition\") {\n // 虚拟演绎,仅供娱乐\n userDeclarationBind.origin = 1;\n } else if (params.selfDeclaration?.type === \"ai-generated\") {\n // 笔记含AI合成内容\n userDeclarationBind.origin = 2;\n } else if (params.selfDeclaration?.type === \"source-statement\") {\n // 内容来源声明\n if (params.selfDeclaration.childType === \"self-labeling\") {\n // 已自主标注\n userDeclarationBind.origin = 3;\n } else if (params.selfDeclaration.childType === \"self-shooting\") {\n // 自主拍摄\n userDeclarationBind.origin = 4;\n const photoInfo: { photoPlace?: unknown; photoTime?: string } = {};\n\n if (params.selfDeclaration.shootingLocation) {\n // 拍摄地点\n photoInfo.photoPlace = {\n name: params.selfDeclaration.shootingLocation.name,\n poiId: params.selfDeclaration.shootingLocation.poi_id,\n poiType: params.selfDeclaration.shootingLocation.poi_type,\n subname: params.selfDeclaration.shootingLocation.full_address,\n };\n }\n\n if (params.selfDeclaration.shootingDate) {\n // 拍摄日期\n photoInfo.photoTime = params.selfDeclaration.shootingDate;\n }\n\n userDeclarationBind.photoInfo = photoInfo;\n } else if (params.selfDeclaration.childType === \"transshipment\") {\n // 来源转载\n userDeclarationBind.origin = 5;\n\n if (params.selfDeclaration.sourceMedia) {\n // 来源媒体\n userDeclarationBind.repostInfo = {\n source: params.selfDeclaration.sourceMedia,\n };\n }\n }\n }\n const bizId =\n params?.originalBind &&\n (\n params.cookies.find((it) => it.name === \"x-user-id-creator.xiaohongshu.com\")?.value ||\n await proxyHttp.api<CollectionResponse>({\n method: \"get\",\n url: \"https://creator.xiaohongshu.com/api/galaxy/user/my-info\",\n },{ retries: 3, retryDelay: 20, timeout: 3000 }).then((userData) => userData.data?.userDetail?.id)\n );\n \n const business_binds = {\n version: 1,\n bizType: \"\",\n noteId: \"\",\n noteOrderBind: {},\n // 发布时间 - 立即发布/定时发布\n notePostTiming: params.isImmediatelyPublish ? {} : {postTime: params.scheduledPublish},\n coProduceBind: {enable: !!params?.coProduceBind}, // 是否允许合拍\n noteCopyBind: {copyable: !!params?.noteCopyBind}, // 关闭允许复制\n optionRelationList: params.originalBind ? [{ // 原创声明\n type: \"ORIGINAL_STATEMENT\",\n relationList: [{\n bizId,\n bizType: \"ORIGINAL_STATEMENT\",\n extraInfo: \"{}\"\n }]\n }] : [],\n ...(params?.groupBind ? { groupBind: { groupId: params?.groupBind?.group_id, groupName: params.groupBind?.group_name, desc: params.groupBind?.desc, avatar: params.groupBind?.avatar}} : {groupBind:{}}),\n ...(params.selfDeclaration ? {userDeclarationBind} : {}),\n ...(params?.collectionBind?.id ? { noteCollectionBind:{ id: params.collectionBind.id }}: {}),\n \n };\n\n publishData.common.business_binds = JSON.stringify(business_binds);\n \n const publishXsHeader = xsEncrypt.signHeadersPost(\"/web_api/sns/v2/note\", recordCookie, \"xhs-pc-web\", publishData);\n \n task._timerRecord.PrePublish = Date.now();\n // 发布\n const publishResult = await proxyHttp.api<CommonResponse<{ id: string }>>({\n method: \"post\",\n url: \"https://edith.xiaohongshu.com/web_api/sns/v2/note\",\n data: publishData,\n headers: publishXsHeader,\n defaultErrorMsg: \"文章发布异常,请稍后重试。\",\n }, {retries: 2, retryDelay: 500, timeout: 12*1000});\n \n const isSuccess = publishResult.success;\n\tconst message = `文章发布${isSuccess ? \"成功\" : `失败,原因:${publishResult.msg}`}${ task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n\tconst data = isSuccess ? publishResult.data?.id || \"\" : \"\";\n\n\treturn response(isSuccess ? 0 : 400, message, data);\n \n};\n","import path from \"node:path\";\nimport {CookieMap, Locator, Response, TaskState} from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n// import { Xhshow } from \"../../utils/xhsXsEncrypt\";\nimport type { PublishAction } from \"./index\";\n// const GenXSCommon = require(\"../../utils/XhsXsCommonEnc.js\") as (a1cookie: string, x_t: string|number, x_s:string) => string;\n\n// 小红书参数加密器\n// const xsEncrypt = new Xhshow();\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst updateTaskState = task.taskStageStore?.update?.bind(task.taskStageStore, task.taskId || \"\");\n \n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsameSite: \"lax\",\n\t\tsecure: false,\n\t\tdomain: \".xiaohongshu.com\",\n\t\turl: \"https://creator.xiaohongshu.com\",\n\t\thttpOnly: true,\n\t};\n\n const page = await task.createPage({\n show: task.debug,\n url: params.url || \"https://creator.xiaohongshu.com/publish/publish\",\n cookies: (params.cookies?.map((it) => ({...it, ...commonCookies})) || []) as CookieMap,\n });\n \n\tawait updateTaskState?.({\n\t\tstate: TaskState.ACTION,\n\t\tconnectAddress: task.steelConnector?.getProxyUrl(task.sessionId || \"\", \"v1/sessions/debug\"),\n\t\tsessionId: task.sessionId,\n\t});\n\tconst tmpCachePath = task.getTmpPath();\n\n\t// const interceptUrls = [\n\t// \t'/api/media/v1/upload/creator/permit',\n\t// \t'/api/galaxy/v2/creator/activity_center/list',\n\t// \t'/web_api/sns/v5/creator/topic/template/list',\n\t// \t'/web_api/sns/v5/creator/file/encryption',\n\t// \t'/web_api/sns/capa/postgw/topic/batch_customized',\n\t// \t'/web_api/sns/v2/note'\n\t// ];\n\n\t// await page.route('**', async (route, request) => {\n\t// \tconst url = request.url();\n\t// \tif (interceptUrls.some(pattern => url.includes(pattern))) {\n\t// \t\tconst urlObj = new URL(url);\n\t// \t\tconst fetchCoverUrl = urlObj.pathname + urlObj.search;\n // const fetchCoverParams = Object.fromEntries(new URLSearchParams(urlObj.search));\n\t// \t\tconst xt = Date.now().toString();\n //\n\t// \t\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\t// \t\tif (!a1Cookie) {\n\t// \t\t\tawait route.fulfill({\n\t// \t\t\t\tstatus: 200,\n\t// \t\t\t\tcontentType: 'application/json',\n\t// \t\t\t\tbody: JSON.stringify({ code: 200, message: \"账号数据异常,请重新绑定账号后重试。\", data: \"\" })\n\t// \t\t\t});\n\t// \t\t\treturn;\n\t// \t\t}\n //\n\t// \t\tconst isNoteRequest = urlObj.pathname.includes(interceptUrls[5]);\n //\n\t// \t\tconst xs = await (isNoteRequest\n\t// \t\t\t? (async () => {\n\t// \t\t\t\tconst publishData = JSON.parse(request.postData() || \"\")\n\t// \t\t\t\treturn xsEncrypt.signXsPost(interceptUrls[5], a1Cookie,\"xhs-pc-web\" ,publishData);\n\t// \t\t\t })(): xsEncrypt.signXsGet(urlObj.pathname, a1Cookie, \"xhs-pc-web\" , fetchCoverParams))\n //\n // const xscommon = GenXSCommon(a1Cookie, xt, xs)\n //\n\t// \t\tconst newHeaders = {\n\t// \t\t\t...request.headers(),\n\t// \t\t\t'x-s': xs,\n // 'x-s-common':xscommon\n\t// \t\t};\n //\n\t// \t\tawait route.continue({ headers: newHeaders });\n\t// \t}else {\n\t// \t\tawait route.continue();\n\t// \t}\n\t// });\n\n\n\t// 通用的选择地点\n\tconst selectAddress = async (selector: Locator, address: string) => {\n\t\tconst instance = typeof selector === \"string\" ? page.locator(selector) : selector;\n\t\tawait instance.click();\n\t\tawait instance.locator(\"input\").fill(address);\n\t\tconst poperInstance = page.locator('.d-popover:not([style*=\"display: none\"]) .d-options .d-grid-item');\n\t\tawait poperInstance.first().waitFor();\n\t\tawait poperInstance.first().click();\n\t};\n\n\t// 通用的选择日期\n\tconst selectDate = async (selector: string | Locator, date: string) => {\n\t\tconst instance = typeof selector === \"string\" ? page.locator(selector) : selector;\n\t\tawait instance.click();\n\t\tawait instance.fill(date);\n\t\tawait instance.blur();\n\t};\n\n\t// 查找显示的 popover 弹窗\n\tconst getPoperInstance = async (): Promise<Locator> => {\n\t\tawait page.waitForTimeout(500);\n\t\tconst elements = page.locator(\".d-popover\");\n\t\tconst count = await elements.count();\n\t\tconst visibleElements: (typeof elements)[] = [];\n\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst element = elements.nth(i);\n\t\t\tconst style = await element.getAttribute(\"style\");\n\t\t\tif (style && !style.includes(\"display: none\")) {\n\t\t\t\tvisibleElements.push(element);\n\t\t\t}\n\t\t}\n\n\t\tif (visibleElements.length > 0) {\n\t\t\treturn visibleElements[visibleElements.length - 1];\n\t\t}\n\n\t\tthrow new Error(\"未找到 popover 弹窗\");\n\t};\n\n\t// 查找显示的 dialog 弹窗\n\tconst getDialogInstance = async (): Promise<Locator> => {\n\t\tawait page.waitForTimeout(1000);\n\t\tconst elements = page.locator(\".el-dialog\");\n\t\treturn elements.last();\n\t};\n\n\t// 自动化脚本\n\t// ----------------------------------------------------------------------------------\n\n\t// 等待登录成功\n\ttry {\n\t\tawait page.waitForSelector(\"#CreatorPlatform\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn { code: 400, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 跳转到发布页面\n\tawait page.locator(\"#content-area .menu-container .publish-video .btn\").click();\n\n\t// 点击上传图文\n\tawait page\n\t\t.locator('.creator-container .header .creator-tab:not([style*=\"-9999px\"]) .title')\n\t\t.filter({ hasText: /^上传图文$/ })\n\t\t.click();\n\n\t// 获取待上传图片的本地路径\n\tconst images = await Promise.all(\n\t\tparams.banners.map((url) => {\n\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t}),\n\t);\n \n\t// 选择文件\n const fileChooser = await page.$('input.upload-input');\n if(fileChooser) await fileChooser.setInputFiles(images)\n\n\t// 填写标题\n\tconst titleInstance = page.locator(\".input input\");\n await titleInstance.waitFor({ state: 'visible', timeout: 1000*50 });\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 填写正文\n\tconst descInstance = page.locator(\".editor-container .tiptap.ProseMirror\");\n\tawait descInstance.click();\n\tawait descInstance.pressSequentially(params.content.replace(/#.*?\\[.*?]\\#/g,\"\"));\n\n\t// 填写话题\n\tif(params.topic && params.topic.length > 0){\n\t\tfor (const it of params.topic) {\n\t\t\tawait descInstance.pressSequentially(`#${it.name}`);\n\t\t\tawait page.locator('.ql-mention-loading').waitFor({ state: 'detached' });\n\t\t\tawait page.waitForTimeout(1000);\n\t\t\tawait page.locator('#creator-editor-topic-container .item.is-selected').click();\n\t\t}\n\t}\n\n\t// 滚动到底部\n\tconst container = page.locator(\".plugin.editor-container\");\n\tawait container.focus();\n\tawait page.mouse.wheel(0, 500); // 向下滚动 500 像素\n\n\tif (params.address) {\n\t\t// 填写地点\n\t\tawait selectAddress(\n\t\t\tpage.locator(\".media-extension .address-input\").filter({ hasText: \"添加地点\" }),\n\t\t\tparams.address.name,\n\t\t);\n\t}\n\n\tif (params.selfDeclaration) {\n\t\t// 自主声明\n\t\tawait page.locator(\".media-settings .flexbox\").filter({ hasText: \"内容类型声明\" }).locator(\".d-select-placeholder\").click();\n\t\tconst poperInstance = await getPoperInstance();\n\t\tconst selfDeclarationInstance = poperInstance.locator(\".d-options .d-option\");\n\t\tif (params.selfDeclaration.type === \"fictional-rendition\") {\n\t\t\tawait selfDeclarationInstance.filter({ hasText: \"虚构演绎,仅供娱乐\" }).click();\n\t\t} else if (params.selfDeclaration.type === \"ai-generated\") {\n\t\t\tawait selfDeclarationInstance.filter({ hasText: \"笔记含AI合成内容\" }).click();\n\t\t} else if (params.selfDeclaration.type === \"source-statement\") {\n\t\t\tawait selfDeclarationInstance.filter({ hasText: /内容来源声明/ }).click();\n\t\t\t// 内容来源声明二级菜单\n\t\t\tconst selfDeclarationSecondaryMenuInstance = (await getPoperInstance()).locator(\".d-options .d-option\");\n\t\t\t// 等待元素出现\n\t\t\tawait selfDeclarationSecondaryMenuInstance.first().waitFor();\n\t\t\tif (params.selfDeclaration.childType === \"self-labeling\") {\n\t\t\t\tawait selfDeclarationSecondaryMenuInstance.filter({ hasText: \"已在正文中自主标注\" }).click();\n\t\t\t} else if (params.selfDeclaration.childType === \"self-shooting\") {\n\t\t\t\tconst { shootingDate, shootingLocation } = params.selfDeclaration;\n\t\t\t\tawait selfDeclarationSecondaryMenuInstance.filter({ hasText: \"自主拍摄\" }).click();\n\t\t\t\t// 自主拍摄弹窗\n\t\t\t\tconst selfShootingPopup = await getDialogInstance();\n\t\t\t\tconst hasCustomContent = shootingDate || shootingLocation;\n\n\t\t\t\t// 选择拍摄地点\n\t\t\t\tif (shootingLocation) {\n\t\t\t\t\tawait selectAddress(selfShootingPopup.locator(\".address-input\"), shootingLocation.name);\n\t\t\t\t}\n\t\t\t\t// 选择拍摄日期\n\t\t\t\tif (shootingDate) {\n\t\t\t\t\tawait selectDate(selfShootingPopup.locator(\".date-picker input\"), shootingDate);\n\t\t\t\t}\n\n\t\t\t\tawait selfShootingPopup\n\t\t\t\t\t.locator(\"footer button\")\n\t\t\t\t\t.filter({ hasText: hasCustomContent ? \"确认\" : \"取消\" })\n\t\t\t\t\t.click();\n\t\t\t} else if (params.selfDeclaration.childType === \"transshipment\") {\n\t\t\t\tawait selfDeclarationSecondaryMenuInstance.filter({ hasText: \"来源转载\" }).click();\n\t\t\t\t// 来源媒体弹窗\n\t\t\t\tconst selfShootingPopup = await getDialogInstance();\n\n\t\t\t\tconst sourceMedia = params.selfDeclaration.sourceMedia;\n\t\t\t\tif (sourceMedia) {\n\t\t\t\t\tawait selfShootingPopup.locator(\".el-input input\").fill(sourceMedia);\n\t\t\t\t}\n\n\t\t\t\tawait selfShootingPopup\n\t\t\t\t\t.locator(\"footer button\")\n\t\t\t\t\t.filter({ hasText: sourceMedia ? \"确认\" : \"取消\" })\n\t\t\t\t\t.click();\n\t\t\t}\n\t\t}\n\t}\n\n\t// 可见范围 - 仅自己可见\n\tif (params.visibleRange === \"private\") {\n\t\tawait page.locator(\".media-settings .flexbox\").filter({ hasText: \"可见范围\" }).locator(\".d-select-wrapper\").click();\n\t\tconst poperInstance = await getPoperInstance();\n\t\tawait poperInstance.locator(\".d-options .custom-option\").filter({ hasText: \"仅自己可见\" }).click();\n\t}\n\n // task._timerRecord.PrePublish = Date.now();\n \n\tconst releaseTimeInstance = page\n\t\t.locator(\"label\")\n\t\t.filter({ hasText: params.isImmediatelyPublish ? \"立即发布\" : \"定时发布\" });\n\tawait releaseTimeInstance.click();\n\n\tif (params.scheduledPublish) {\n\t\t// 自定义发布时间\n\t\tawait selectDate(\".date-picker input\", params.scheduledPublish);\n\t}\n\n\tconst response = await new Promise<string>((resolve) => {\n\t\t// 定义响应处理函数\n\t\tconst handleResponse = async (response: Response) => {\n\t\t\tif (response.url().includes(\"/web_api/sns/v2/note\")) {\n\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\tresolve(jsonResponse?.data?.id);\n\t\t\t}\n\t\t};\n\n\t\t// 开始监听响应事件\n\t\tpage.on(\"response\", handleResponse);\n\n\t\tpage.locator(\".submit .publishBtn\").click();\n\t});\n \n\tawait updateTaskState?.({\n\t\tstate: TaskState.SUCCESS,\n result: {\n response\n }\n\t});\n \n // 关闭页面\n\tawait page.close();\n\n\treturn success(response);\n};\n","import path from \"node:path\";\nimport {Locator, Response, TaskState} from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport type { PublishAction } from \"./index\";\nimport {Page} from \"playwright-core\";\n\nexport const rpaAction_Server: PublishAction = async (task, params) => {\n \n if( params.originalBind && params?.selfDeclaration?.type === \"source-statement\"){\n return { code: 400, message: \"已声明原创不可选择“来源转载”\", data: \"\" };\n }\n \n const defaultPage = task.steelBrowserContext?.pages()[0];\n if (defaultPage) {\n const blockedPatterns = [\n '**/ffmpeg-core.wasm*',\n '**/apm-fe.xiaohongshu.com*',\n '**/t2.xiaohongshu.com*',\n '**/fe-video-qc.xhscdn.com*'\n ].map(pattern => new RegExp(pattern.replace(/\\*\\*/g, '.*').replace(/\\*/g, '[^/]*')));\n\n await defaultPage.route('**/*', async route => {\n const req = route.request();\n const url = req.url();\n\n // 是否命中屏蔽规则\n const blocked = blockedPatterns.some(regex => regex.test(url));\n if (!blocked) {\n return route.continue();\n }\n\n if (req.method() === 'OPTIONS') {\n console.log('处理 OPTIONS 预检:', url);\n await route.fulfill({\n status: 204,\n headers: {\n 'access-control-allow-origin': '*',\n 'access-control-allow-methods': 'GET,POST,OPTIONS,PUT,DELETE',\n 'access-control-allow-headers': '*'\n },\n body: ''\n });\n return;\n }\n\n await route.fulfill({\n status: 204,\n body: ''\n });\n });\n\n }\n \n const tmpCachePath = task.getTmpPath();\n task.logger?.info(\"==>任务开始,下载图片开始...\");\n\tconst updateTaskState = task.taskStageStore?.update?.bind(task.taskStageStore, task.taskId || \"\");\n const imagePromise = Promise.all(\n\t\tparams.banners.map((url) => {\n\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t}),\n\t);\n\n task.logger?.info(\"==>开始打开小红书页面...\");\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://creator.xiaohongshu.com/publish/publish?source=official&from=menu&target=image\",\n\t});\n task.logger?.info(\"==>小红书页面打开成功\");\n \n\tawait updateTaskState?.({\n\t\tstate: TaskState.ACTION,\n\t\tconnectAddress: task.steelConnector?.getProxyUrl(task.sessionId || \"\", \"v1/sessions/debug\"),\n\t\tsessionId: task.sessionId,\n\t});\n \n const clickTimeout = 1000*10\n \n\t// 通用的选择地点\n\tconst selectAddress = async (selector: Locator, address: string) => {\n\t\tconst instance = typeof selector === \"string\" ? page.locator(selector) : selector;\n\t\tawait instance.click({timeout: clickTimeout});\n\t\tawait instance.locator(\"input\").fill(address);\n\t\tconst poperInstance = page.locator('.d-popover:not([style*=\"display: none\"]) .d-options .d-grid-item');\n\t\tawait poperInstance.first().waitFor();\n\t\tawait poperInstance.first().click({timeout: clickTimeout});\n\t};\n\n\t// 通用的选择日期\n\tconst selectDate = async (selector: string | Locator, date: string) => {\n\t\tconst instance = typeof selector === \"string\" ? page.locator(selector) : selector;\n\t\tawait instance.click({timeout: clickTimeout});\n\t\tawait instance.fill(date);\n\t\tawait instance.blur();\n\t};\n\n\t// 查找显示的 popover 弹窗\n\tconst getPoperInstance = async (): Promise<Locator> => {\n\t\tawait page.waitForTimeout(500);\n\t\tconst elements = page.locator(\".d-popover\");\n\t\tconst count = await elements.count();\n\t\tconst visibleElements: (typeof elements)[] = [];\n\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst element = elements.nth(i);\n\t\t\tconst style = await element.getAttribute(\"style\");\n\t\t\tif (style && !style.includes(\"display: none\")) {\n\t\t\t\tvisibleElements.push(element);\n\t\t\t}\n\t\t}\n\n\t\tif (visibleElements.length > 0) {\n\t\t\treturn visibleElements[visibleElements.length - 1];\n\t\t}\n\n\t\tthrow new Error(\"未找到 popover 弹窗\");\n\t};\n\n\t// 查找显示的 dialog 弹窗\n\tconst getDialogInstance = async (): Promise<Locator> => {\n\t\tawait page.waitForTimeout(1000);\n\t\tconst elements = page.locator(\".el-dialog\");\n\t\treturn elements.last();\n\t};\n\n\t// 自动化脚本\n\t// ----------------------------------------------------------------------------------\n\n\t// 等待登录成功\n\ttry {\n\t\tawait page.waitForSelector(\"#CreatorPlatform\", { state: \"attached\" });\n\t} catch (error) {\n\t\treturn { code: 400, message: \"登录失效\", data: page.url() };\n\t}\n\t// 获取待上传图片的本地路径\n\tconst images = await imagePromise;\n\n task.logger?.info(`==>图片下载完成,共 ${images.length} 张,开始上传图片...`);\n \n const fileChooser = await page.waitForSelector('input.upload-input', {timeout: 1000*10});\n\n if (fileChooser) {\n await fileChooser.setInputFiles(images, {timeout: 60*1000}).catch(err => {\n task.logger?.error(`设置上传文件失败:${err.message}`);\n });\n } else {\n task.logger?.error('文件上传输入框未找到');\n }\n \n task.logger?.info('==>图片上传完成,开始RPA操作内容...');\n\n\t// 填写标题\n\tconst titleInstance = page.locator(\".input input\");\n await titleInstance.waitFor({ state: 'attached', timeout: 1000*60 });\n\tawait titleInstance.click({timeout: clickTimeout*24});\n\tawait titleInstance.fill(params.title);\n\n\t// 填写正文\n\tconst descInstance = page.locator(\".editor-container .tiptap.ProseMirror\");\n\tawait descInstance.click({timeout: clickTimeout});\n await descInstance.fill(`${params.content.replace(/#.*?\\[.*?]\\#/g, '')}\\n`);\n await page.keyboard.press('Control+End');\n \n\t// 填写话题\n\tif(params.topic && params.topic.length > 0){\n\t\tfor (const it of params.topic) {\n\n\t\t\tawait page.keyboard.insertText(`#${it.name}`);\n\t\t\tawait page.locator('.ql-mention-loading').waitFor({ state: 'detached' });\n\t\t\tawait page.waitForTimeout(1000);\n\t\t\tawait page.locator('#creator-editor-topic-container .item.is-selected').click({timeout: clickTimeout});\n await page.keyboard.press('Control+End');\n\n\t\t}\n\t}\n\n\t// 滚动到底部\n\tconst container = page.locator(\".plugin.editor-container\");\n\tawait container.focus();\n\tawait page.mouse.wheel(0, 500); // 向下滚动 500 像素\n\n\tif (params.address) {\n\t\t// 填写地点\n\t\tawait selectAddress(\n\t\t\tpage.locator(\".media-extension .address-input\").filter({ hasText: \"添加地点\" }),\n\t\t\tparams.address.name,\n\t\t);\n\t}\n \n // 添加合集\n if ( params.collectionBind ){\n await page.locator('.media-extension .collection-container').filter({ hasText: '添加合集' }).click({timeout: clickTimeout});\n const collectionName = params.collectionBind.name;\n const collectionBindInstance = await getPoperInstance(); // 获取弹窗实例\n const collectionItemInstance = collectionBindInstance.locator('.d-grid-item .item-label', {hasText: collectionName})\n await collectionBindInstance.locator('.loading').waitFor({ state: 'detached' });\n await collectionItemInstance.click({timeout: clickTimeout})\n }\n \n // 选择群聊\n if( params.groupBind ){\n await page.locator('.media-extension .address-input').filter({ hasText: '选择群聊' }).click({timeout: clickTimeout});\n const groupBindName = params.groupBind.group_name;\n const groupBindInstance = await getPoperInstance(); // 获取弹窗实例\n const groupItemInstance = groupBindInstance.locator('.d-grid-item .name', {hasText: groupBindName})\n await groupBindInstance.locator('.loading').waitFor({ state: 'detached' });\n await groupItemInstance.click({timeout: clickTimeout})\n \n }\n \n // 原创声明\n const OriginalBindBtn = page.locator('.btn-text.red', {hasText: '去声明'});\n const isOriginalBindBtnVisible = await OriginalBindBtn.isVisible();\n if ( isOriginalBindBtnVisible && params.originalBind) {\n await OriginalBindBtn.click({timeout: clickTimeout});\n const poperInstance = await getPoperInstance();\n await poperInstance.locator('.d-checkbox-simulator').click({timeout: clickTimeout}); // 勾选同意协议的复选框\n await poperInstance.locator('.footer .custom-button.bg-red').click({timeout: clickTimeout}); // 点击声明原创按钮\n }\n\n // 内容类型声明\n\tif (params.selfDeclaration) {\n\t\t// 自主声明\n\t\tawait page.locator(\".media-settings .flexbox\").filter({ hasText: \"内容类型声明\" }).locator(\".d-select-placeholder\").click({timeout: clickTimeout});\n\t\tconst poperInstance = await getPoperInstance();\n\t\tconst selfDeclarationInstance = poperInstance.locator(\".d-options .d-option\");\n\t\tif (params.selfDeclaration.type === \"fictional-rendition\") {\n\t\t\tawait selfDeclarationInstance.filter({ hasText: \"虚构演绎,仅供娱乐\" }).click({timeout: clickTimeout});\n\t\t} else if (params.selfDeclaration.type === \"ai-generated\") {\n\t\t\tawait selfDeclarationInstance.filter({ hasText: \"笔记含AI合成内容\" }).click({timeout: clickTimeout});\n\t\t} else if (params.selfDeclaration.type === \"source-statement\") {\n\t\t\tawait selfDeclarationInstance.filter({ hasText: /内容来源声明/ }).click({timeout: clickTimeout});\n\t\t\t// 内容来源声明二级菜单\n\t\t\tconst selfDeclarationSecondaryMenuInstance = (await getPoperInstance()).locator(\".d-options .d-option\");\n\t\t\t// 等待元素出现\n\t\t\tawait selfDeclarationSecondaryMenuInstance.first().waitFor();\n\t\t\tif (params.selfDeclaration.childType === \"self-labeling\") {\n\t\t\t\tawait selfDeclarationSecondaryMenuInstance.filter({ hasText: \"已在正文中自主标注\" }).click({timeout: clickTimeout});\n\t\t\t} else if (params.selfDeclaration.childType === \"self-shooting\") {\n\t\t\t\tconst { shootingDate, shootingLocation } = params.selfDeclaration;\n\t\t\t\tawait selfDeclarationSecondaryMenuInstance.filter({ hasText: \"自主拍摄\" }).click({timeout: clickTimeout});\n\t\t\t\t// 自主拍摄弹窗\n\t\t\t\tconst selfShootingPopup = await getDialogInstance();\n\t\t\t\tconst hasCustomContent = shootingDate || shootingLocation;\n\n\t\t\t\t// 选择拍摄地点\n\t\t\t\tif (shootingLocation) {\n\t\t\t\t\tawait selectAddress(selfShootingPopup.locator(\".address-input\"), shootingLocation.name);\n\t\t\t\t}\n\t\t\t\t// 选择拍摄日期\n\t\t\t\tif (shootingDate) {\n\t\t\t\t\tawait selectDate(selfShootingPopup.locator(\".date-picker input\"), shootingDate);\n\t\t\t\t}\n\n\t\t\t\tawait selfShootingPopup\n\t\t\t\t\t.locator(\"footer button\")\n\t\t\t\t\t.filter({ hasText: hasCustomContent ? \"确认\" : \"取消\" })\n\t\t\t\t\t.click({timeout: clickTimeout});\n\t\t\t} else if (params.selfDeclaration.childType === \"transshipment\") {\n\t\t\t\tawait selfDeclarationSecondaryMenuInstance.filter({ hasText: \"来源转载\" }).click({timeout: clickTimeout});\n\t\t\t\t// 来源媒体弹窗\n\t\t\t\tconst selfShootingPopup = await getDialogInstance();\n\n\t\t\t\tconst sourceMedia = params.selfDeclaration.sourceMedia;\n\t\t\t\tif (sourceMedia) {\n\t\t\t\t\tawait selfShootingPopup.locator(\".el-input input\").fill(sourceMedia);\n\t\t\t\t}\n\n\t\t\t\tawait selfShootingPopup\n\t\t\t\t\t.locator(\"footer button\")\n\t\t\t\t\t.filter({ hasText: sourceMedia ? \"确认\" : \"取消\" })\n\t\t\t\t\t.click({timeout: clickTimeout});\n\t\t\t}\n\t\t}\n\t}\n\n\t// 可见范围 - 仅自己可见\n\tif (params.visibleRange !== \"public\") {\n\t\tawait page.locator(\".media-settings .flexbox\").filter({ hasText: \"可见范围\" }).locator(\".d-select-wrapper\").click({timeout: clickTimeout});\n\t\tconst poperInstance = await getPoperInstance();\n const visibleText = params.visibleRange === \"friends\" ? \"好友可见\" : \"仅自己可见\";\n await poperInstance.locator(\".d-options .custom-option\").filter({hasText: visibleText}).click({timeout: clickTimeout});\n\t}\n \n async function setSwitch(page: Page, label: string, target: boolean) {\n const item = page.locator('.d-new-form-item', {\n has: page.locator('.d-form-item__label', {hasText: label})\n });\n\n const switchUI = item.locator('.d-switch-simulator');\n const cls = await switchUI.getAttribute('class');\n const isChecked = cls?.includes('checked') || true;\n\n if (isChecked !== target) {\n await switchUI.click({timeout: clickTimeout});\n }\n }\n if( !params.coProduceBind ){\n await setSwitch(page, '允许合拍', false);\n }\n if( !params.noteCopyBind ){\n await setSwitch(page, '允许正文复制', false);\n }\n\n\n // task._timerRecord.PrePublish = Date.now();\n \n\tconst releaseTimeInstance = page\n\t\t.locator(\"label\")\n\t\t.filter({ hasText: params.isImmediatelyPublish ? \"立即发布\" : \"定时发布\" });\n\tawait releaseTimeInstance.click({timeout: clickTimeout});\n\n\tif (params.scheduledPublish) {\n\t\t// 自定义发布时间\n\t\tawait selectDate(\".date-picker input\", params.scheduledPublish);\n\t}\n \n // 等待图片上传完成\n const imgPreviewArea = page.locator('.img-preview-area');\n try {\n await imgPreviewArea.locator('.mask.uploading').waitFor({\n state: 'hidden',\n timeout: 50000,\n });\n } catch (error) {\n throw new Error('上传图片超时,请重试!');\n }\n \n\tconst response = await new Promise<{success:boolean, msg: string, data?: { id : string}}>((resolve) => {\n\t\t// 定义响应处理函数\n\t\tconst handleResponse = async (response: Response) => {\n\t\t\tif (response.url().includes(\"/web_api/sns/v2/note\")) {\n\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\tresolve(jsonResponse);\n\t\t\t}\n\t\t};\n\n\t\t// 开始监听响应事件\n\t\tpage.on(\"response\", handleResponse);\n\n page.locator(\".submit .publishBtn\").click({timeout: clickTimeout});\n\n // 检查错误toast\n page.waitForSelector('.d-toast-icon-danger', {state: 'visible', timeout: 2000})\n .then(async () => {\n // 等待toast内容完全渲染\n await page.waitForTimeout(300);\n const toastDesc = await page.locator('.d-toast-description').textContent();\n const desc = toastDesc?.trim();\n page.off(\"response\", handleResponse);\n resolve({success: false, msg: desc || '未知错误'});\n })\n .catch(() => {\n // toast 未出现,继续等待接口响应\n });\n\n // 添加整体超时保护\n setTimeout(() => {\n page.off(\"response\", handleResponse);\n resolve({success: false, msg: '发布超时'});\n }, 7000);\n });\n\n if (!response?.success) {\n const msg = `发布失败:${response?.msg || '未知错误'}`\n await updateTaskState?.({\n state: TaskState.FAILED,\n error: msg\n })\n await page.close();\n return {code: 400, message: msg, data: \"\"};\n }\n \n\t await updateTaskState?.({\n\t\tstate: TaskState.SUCCESS,\n result: {\n response: response?.data?.id || \"\"\n }\n\t});\n \n // 关闭页面\n\tawait page.close();\n\treturn success(response?.data?.id || \"\");\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport {downloadImage, getFilenameFromUrl, success, TaskState} from \"@iflyrpa/share\";\nimport type {PublishAction} from \".\";\nimport {Http} from \"../../utils/http\";\nimport {Xhshow} from \"../../utils/xhsXsEncrypt\";\nimport type {CollectionResponse} from \"../getXhsCollection\";\nimport type {AxiosProxyParams} from \"../../types\";\nimport crypto from \"node:crypto\";\n\nconst encode_mnsv2 = require(\"../../utils/xhs_ob/x_s.encoder.js\") as (\n\tmnsv2: string,\n\tplatform: string,\n\treq_type: string,\n) => string;\n\n// 生成 MD5\nfunction Md5(input: string): string {\n return crypto.createHash(\"md5\").update(input).digest(\"hex\");\n}\n\ninterface CommonResponse<T = unknown> {\n\tmsg: string;\n\tdata: T;\n\tproxyInfo?: Record<string, unknown>;\n\tcode: number;\n\tsuccess: boolean;\n\tresult?: number;\n}\n\ninterface UploadTempPermit<T = string[]> {\n\tbucket: string;\n\tuploadAddr: string;\n\tfileIds: T;\n\ttoken: string;\n}\n\nconst errnoMap: Record<number, string> = {\n\t\"-1\": \"未知拦截器错误,请稍后重试。\",\n\t915: \"所属C端账号手机号被修改,请重新登录\",\n\t914: \"所属C端账号密码被修改,请重新登录\",\n\t903: \"账户已登出,需重新登陆重试!\",\n\t902: \"登录已过期,请重新登录!\",\n\t906: \"账号存在风险,请重新登录!\",\n\t\"-9136\": \"因违反社区规范禁止发笔记,请检查账号状态!\",\n};\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport const rpaAction_Server_Mock: PublishAction = async (task, params) => {\n\tconst updateTaskState = task.taskStageStore?.update?.bind(task.taskStageStore, task.taskId || \"\");\n \n\tconst tmpCachePath = task.getTmpPath();\n\tif ( params?.selfDeclaration?.type === \"source-statement\" && params.selfDeclaration.childType === \"transshipment\" && params.originalBind){\n\t\treturn { code: 400, message: \"原创声明与转载声明互斥,请重新选择后发布!\", data: \"\" };\n }\n\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\tif (!a1Cookie) {\n\t\treturn { code: 400, message: \"账号数据异常,请重新绑定账号后重试。\", data: \"\" };\n\t}\n \n const defaultPage = task.steelBrowserContext?.pages()[0];\n if (defaultPage) {\n const blockedPatterns = [\n '**/ffmpeg-core.wasm*',\n '**/apm-fe.xiaohongshu.com*',\n '**/t2.xiaohongshu.com*',\n '**/fe-video-qc.xhscdn.com*'\n ].map(pattern => new RegExp(pattern.replace(/\\*\\*/g, '.*').replace(/\\*/g, '[^/]*')));\n\n await defaultPage.route('**/*', async route => {\n const req = route.request();\n const url = req.url();\n\n // 是否命中屏蔽规则\n const blocked = blockedPatterns.some(regex => regex.test(url));\n if (!blocked) {\n return route.continue();\n }\n\n if (req.method() === 'OPTIONS') {\n console.log('处理 OPTIONS 预检:', url);\n await route.fulfill({\n status: 204,\n headers: {\n 'access-control-allow-origin': '*',\n 'access-control-allow-methods': 'GET,POST,OPTIONS,PUT,DELETE',\n 'access-control-allow-headers': '*'\n },\n body: ''\n });\n return;\n }\n\n await route.fulfill({\n status: 204,\n body: ''\n });\n });\n\n }\n \n const pagePromise = task.createPage({ // 异步创建页面\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://creator.xiaohongshu.com/publish/publish?source=official&from=menu&target=image\",\n\t});\n await updateTaskState?.({ state: TaskState.ACTION });\n\n\tconst headers = {\n\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\torigin: \"https://creator.xiaohongshu.com\",\n\t\treferer: \"https://creator.xiaohongshu.com/\",\n\t\t\"user-agent\":\n\t\t\t\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36\",\n\t};\n\tconst recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n\t\tif (cookie.name && cookie.value) {\n\t\t\tacc[cookie.name] = cookie.value;\n\t\t}\n\t\treturn acc;\n\t}, {});\n \n\tconst args: AxiosProxyParams = [\n\t\t{ headers },\n\t\ttask.logger,\n\t\tparams.proxyLoc,\n\t\tparams.localIP,\n\t\t// params.huiwenToken,\n\t\tparams.accountId,\n\t];\n\n\tconst http = new Http({ headers });\n\tconst proxyHttp = new Http(...args);\n\n\t// 添加响应拦截器\n\tproxyHttp.addResponseInterceptor<CommonResponse>((response) => {\n\t\tconst responseData = response.data;\n\n\t\t// 检查响应中的 errno 字段\n\t\tif ((response && responseData?.code && responseData.code !== 0) || (responseData?.code && !responseData.success)) {\n\t\t\tconst errmsg = errnoMap[responseData.code] || response.config.defaultErrorMsg || \"文章发布异常,请稍后重试。\";\n\n\t\t\treturn {\n\t\t\t\tcode: errnoMap[responseData.code] ? 400 : 500,\n\t\t\t\tmessage: errmsg,\n\t\t\t\tdata: responseData,\n\t\t\t};\n\t\t}\n\t});\n\n\t// 0. 获取上传 token\n\tconst fetchCoverUrl = \"/api/media/v1/upload/creator/permit\";\n\tconst fetchCoverParams = {\n\t\tbiz_name: \"spectrum\",\n\t\tscene: \"image\",\n\t\tfile_count: params.banners.length,\n\t\tversion: 1,\n\t\tsource: \"web\",\n\t};\n\tconst fetchCoverXsHeader = xsEncrypt.signHeadersGet(fetchCoverUrl, recordCookie, \"xhs-pc-web\", fetchCoverParams);\n\n\tconst coverIdInfo = await proxyHttp.api<CommonResponse<{ uploadTempPermits: UploadTempPermit[] }>>(\n\t\t{\n\t\t\tmethod: \"get\",\n\t\t\tbaseURL: \"https://creator.xiaohongshu.com\",\n\t\t\turl: fetchCoverUrl,\n\t\t\tdefaultErrorMsg: \"获取小红书用户信息失败,请稍后重试发布。\",\n\t\t\theaders: fetchCoverXsHeader,\n\t\t\tparams: fetchCoverParams,\n\t\t},\n\t\t{ retries: 3, retryDelay: 20, timeout: 3000 },\n\t);\n\n\tconst uploadInfos: UploadTempPermit<string>[] = [];\n\tfor (const item of coverIdInfo.data.uploadTempPermits) {\n\t\tfor (const fileId of item.fileIds) {\n\t\t\tuploadInfos.push({\n\t\t\t\tbucket: item.bucket || \"\",\n\t\t\t\tuploadAddr: item.uploadAddr || \"\",\n\t\t\t\tfileIds: fileId,\n\t\t\t\ttoken: item.token || \"\",\n\t\t\t});\n\t\t}\n\t}\n\n\tif (uploadInfos.length < params.banners.length)\n\t\treturn { code: 400, message: \"可用 OSS bucket 数量不足,无法上传所有图片!\", data: \"\" };\n\n\tif (uploadInfos.length === 0) return { code: 500, message: \"图片上传失败,请稍后重试!\", data: \"\" };\n\n\tconst availableBuckets = Array.from({ length: uploadInfos.length }, (_, i) => i);\n\n\tconst uploadFile = async (\n\t\turl: string,\n\t\tindex: number,\n\t): Promise<{\n\t\tossFileId: string;\n\t\tossToken: string;\n\t}> => {\n\t\tconst fileName = getFilenameFromUrl(url);\n\t\tconst localUrl = await downloadImage(url, path.join(tmpCachePath, fileName));\n\t\tconst fileBuffer = fs.readFileSync(localUrl);\n\n\t\tconst MAX_RETRIES = uploadInfos.length;\n\t\tlet attempt = 0;\n\n\t\twhile (attempt < MAX_RETRIES) {\n\t\t\t// 分配 bucket\n\t\t\tconst ossBucketIndex = availableBuckets.shift(); // 移除并获取第一个可用 bucket\n\n\t\t\tif (ossBucketIndex === undefined) {\n\t\t\t\treturn { ossFileId: \"\", ossToken: \"\" }; // 没有可用 bucket\n\t\t\t}\n\n\t\t\tconst currentInfo = uploadInfos[ossBucketIndex];\n\t\t\tconst ossFileId = currentInfo.fileIds;\n\t\t\tconst ossToken = currentInfo.token;\n\t\t\tconst ossDomain = currentInfo.uploadAddr;\n\n\t\t\ttry {\n\t\t\t\tawait http.api(\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: \"put\",\n\t\t\t\t\t\turl: `https://${ossDomain}/${ossFileId}`,\n\t\t\t\t\t\tdata: fileBuffer,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\"x-cos-security-token\": ossToken,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultErrorMsg: \"图片上传异常,请稍后重试发布。\",\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn { ossFileId, ossToken };\n\t\t\t} catch (error) {\n\t\t\t\tattempt++;\n\t\t\t}\n\t\t}\n\t\treturn { ossFileId: \"\", ossToken: \"\" }; // 所有尝试失败\n\t};\n\n\tconst coverInfos = await Promise.all(params.banners.map((it, idx) => uploadFile(it, idx)));\n\tconst invalidUpload = coverInfos.find((it) => it.ossToken === \"\" || it.ossFileId === \"\");\n\tif (invalidUpload) return { code: 500, message: \"图片上传异常,请稍后重试发布。\", data: \"\" };\n\n\tif (params.topic && params.topic.length > 0) {\n\t\tawait Promise.all(\n\t\t\tparams.topic.map(async (topic) => {\n\t\t\t\tif (!topic.id) {\n\t\t\t\t\tconst topicData = { topic_names: topic.name };\n\t\t\t\t\tconst topicXsHeader = xsEncrypt.signHeadersPost(\n\t\t\t\t\t\t\"/web_api/sns/capa/postgw/topic/batch_customized\",\n\t\t\t\t\t\trecordCookie,\n\t\t\t\t\t\t\"xhs-pc-web\",\n\t\t\t\t\t\ttopicData,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst createTopic = await proxyHttp.api(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\t\turl: \"https://edith.xiaohongshu.com/web_api/sns/capa/postgw/topic/batch_customized\",\n\t\t\t\t\t\t\theaders: topicXsHeader,\n\t\t\t\t\t\t\tdata: topicData,\n\t\t\t\t\t\t\tdefaultErrorMsg: \"话题创建异常,请稍后重试。\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ retries: 3, retryDelay: 20, timeout: 3000 },\n\t\t\t\t\t);\n\t\t\t\t\tObject.assign(topic, createTopic.data.topic_infos[0]);\n\t\t\t\t}\n\t\t\t}),\n\t\t);\n\t}\n\n\tconst visibleRangeMap = {\n\t\tpublic: 0,\n\t\tprivate: 1,\n\t\tfriends: 4,\n\t};\n\n\tconst publishData = {\n\t\tcommon: {\n\t\t\tats: [],\n\t\t\tbiz_relations: [],\n\t\t\tdesc: params?.content,\n\t\t\tgoods_info: {},\n\t\t\thash_tag: params.topic || [],\n\t\t\tnote_id: \"\",\n\t\t\tsource: JSON.stringify({\n\t\t\t\ttype: \"web\",\n\t\t\t\tids: \"\",\n\t\t\t\textraInfo: '{\"systemId\":\"web\"}',\n\t\t\t}),\n\t\t\ttitle: params?.title,\n\t\t\ttype: \"normal\",\n\t\t\tprivacy_info: {\n\t\t\t\top_type: 1,\n\t\t\t\ttype: visibleRangeMap[params.visibleRange],\n\t\t\t},\n\t\t\tpost_loc: params.address\n\t\t\t\t? {\n\t\t\t\t\t\tname: params.address?.name,\n\t\t\t\t\t\tpoi_id: params.address?.poi_id,\n\t\t\t\t\t\tpoi_type: params.address?.poi_type,\n\t\t\t\t\t\tsubname: params.address?.full_address,\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t\tbusiness_binds: \"\",\n\t\t},\n\t\timage_info: {\n\t\t\timages: coverInfos.map((it) => ({\n\t\t\t\textra_info_json: '{\"mimeType\":\"image/png\"}',\n\t\t\t\tfile_id: it.ossFileId,\n\t\t\t\tmetadata: { source: -1 },\n\t\t\t\tstickers: { floating: [], version: 2 },\n\t\t\t})),\n\t\t},\n\t\tvideo_info: null,\n\t};\n\n\t// 自主声明\n\tconst userDeclarationBind = {\n\t\torigin: 2,\n\t\tphotoInfo: {},\n\t\trepostInfo: {},\n\t};\n\n\tif (params.selfDeclaration?.type === \"fictional-rendition\") {\n\t\t// 虚拟演绎,仅供娱乐\n\t\tuserDeclarationBind.origin = 1;\n\t} else if (params.selfDeclaration?.type === \"ai-generated\") {\n\t\t// 笔记含AI合成内容\n\t\tuserDeclarationBind.origin = 2;\n\t} else if (params.selfDeclaration?.type === \"source-statement\") {\n\t\t// 内容来源声明\n\t\tif (params.selfDeclaration.childType === \"self-labeling\") {\n\t\t\t// 已自主标注\n\t\t\tuserDeclarationBind.origin = 3;\n\t\t} else if (params.selfDeclaration.childType === \"self-shooting\") {\n\t\t\t// 自主拍摄\n\t\t\tuserDeclarationBind.origin = 4;\n\t\t\tconst photoInfo: { photoPlace?: unknown; photoTime?: string } = {};\n\n\t\t\tif (params.selfDeclaration.shootingLocation) {\n\t\t\t\t// 拍摄地点\n\t\t\t\tphotoInfo.photoPlace = {\n\t\t\t\t\tname: params.selfDeclaration.shootingLocation.name,\n\t\t\t\t\tpoiId: params.selfDeclaration.shootingLocation.poi_id,\n\t\t\t\t\tpoiType: params.selfDeclaration.shootingLocation.poi_type,\n\t\t\t\t\tsubname: params.selfDeclaration.shootingLocation.full_address,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (params.selfDeclaration.shootingDate) {\n\t\t\t\t// 拍摄日期\n\t\t\t\tphotoInfo.photoTime = params.selfDeclaration.shootingDate;\n\t\t\t}\n\n\t\t\tuserDeclarationBind.photoInfo = photoInfo;\n\t\t} else if (params.selfDeclaration.childType === \"transshipment\") {\n\t\t\t// 来源转载\n\t\t\tuserDeclarationBind.origin = 5;\n\n\t\t\tif (params.selfDeclaration.sourceMedia) {\n\t\t\t\t// 来源媒体\n\t\t\t\tuserDeclarationBind.repostInfo = {\n\t\t\t\t\tsource: params.selfDeclaration.sourceMedia,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\tconst bizId =\n\t\tparams?.originalBind &&\n\t\t(params.cookies.find((it) => it.name === \"x-user-id-creator.xiaohongshu.com\")?.value ||\n\t\t\t(await proxyHttp\n\t\t\t\t.api<CollectionResponse>(\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: \"get\",\n\t\t\t\t\t\turl: \"https://creator.xiaohongshu.com/api/galaxy/user/my-info\",\n\t\t\t\t\t},\n\t\t\t\t\t{ retries: 3, retryDelay: 20, timeout: 3000 },\n\t\t\t\t)\n\t\t\t\t.then((userData) => userData.data?.userDetail?.id)));\n\n\tconst business_binds = {\n\t\tversion: 1,\n\t\tbizType: \"\",\n\t\tnoteId: \"\",\n\t\tnoteOrderBind: {},\n\t\t// 发布时间 - 立即发布/定时发布\n\t\tnotePostTiming: params.isImmediatelyPublish ? {} : { postTime: params.scheduledPublish },\n\t\tcoProduceBind: { enable: !!params?.coProduceBind }, // 是否允许合拍\n\t\tnoteCopyBind: { copyable: !!params?.noteCopyBind }, // 关闭允许复制\n\t\toptionRelationList: params.originalBind\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\t// 原创声明\n\t\t\t\t\t\ttype: \"ORIGINAL_STATEMENT\",\n\t\t\t\t\t\trelationList: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbizId,\n\t\t\t\t\t\t\t\tbizType: \"ORIGINAL_STATEMENT\",\n\t\t\t\t\t\t\t\textraInfo: \"{}\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t: [],\n\t\t...(params?.groupBind\n\t\t\t? {\n\t\t\t\t\tgroupBind: {\n\t\t\t\t\t\tgroupId: params?.groupBind?.group_id,\n\t\t\t\t\t\tgroupName: params.groupBind?.group_name,\n\t\t\t\t\t\tdesc: params.groupBind?.desc,\n\t\t\t\t\t\tavatar: params.groupBind?.avatar,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: { groupBind: {} }),\n\t\t...(params.selfDeclaration ? { userDeclarationBind } : {}),\n\t\t...(params?.collectionBind?.id ? { noteCollectionBind: { id: params.collectionBind.id } } : {}),\n\t};\n\n\tpublishData.common.business_binds = JSON.stringify(business_binds);\n \n\ttask._timerRecord.PrePublish = Date.now();\n const page = await pagePromise;\n await updateTaskState?.({sessionId: task.sessionId});\n const publishXsHeader = {\n \"x-s\": \"\",\n \"x-t\": Date.now().toString()\n }\n\tawait page.waitForFunction(() => typeof (window as unknown as { mnsv2: unknown }).mnsv2 === \"function\", {\n\t\ttimeout: 10000,\n\t});\n const encodeData = `/web_api/sns/v2/note${JSON.stringify(publishData)}`;\n\tconst ticket_mnsv2 = await page.evaluate(\n\t\t// 调用浏览器环境获取加密参数\n\t\t({ c, d }: { c: string; d: string }) => {\n\t\t\tif (typeof (window as unknown as { mnsv2: unknown }).mnsv2 === \"function\") {\n\t\t\t\treturn (window as unknown as { mnsv2: (...args: unknown[]) => string }).mnsv2(c, d);\n\t\t\t}\n\t\t\treturn \"mnsv2 未定义\";\n\t\t},\n\t\t{\n\t\t\tc: encodeData,\n\t\t\td: Md5(encodeData), // md5\n\t\t},\n\t);\n publishXsHeader[\"x-s\"] = encode_mnsv2(ticket_mnsv2, \"Windows\", \"object\");\n publishXsHeader[\"x-t\"] = Date.now().toString();\n \n\t// 发布\n\tconst publishResult = await proxyHttp.api<CommonResponse<{ id: string }>>(\n\t\t{\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://edith.xiaohongshu.com/web_api/sns/v2/note\",\n\t\t\tdata: publishData,\n\t\t\theaders: publishXsHeader,\n\t\t\tdefaultErrorMsg: \"文章发布异常,请稍后重试。\",\n\t\t},\n\t\t{ retries: 2, retryDelay: 500, timeout: 12 * 1000 },\n\t);\n\n\tconst isSuccess = publishResult.success;\n\tconst message = `文章发布${isSuccess ? \"成功\" : `失败,原因:${publishResult.msg}`}${task.debug ? ` ${http.proxyInfo}` : \"\"}`;\n\tconst data = isSuccess ? publishResult.data?.id || \"\" : \"\";\n if (!isSuccess) {\n await updateTaskState?.({\n state: TaskState.FAILED,\n error: message\n });\n return {code: 400, data, message}\n }\n await updateTaskState?.({\n state: TaskState.SUCCESS,\n result: {\n response: data\n }\n });\n\treturn success( data, message);\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\nimport {z} from \"zod\";\nimport { ActionCommonParamsSchema,type Xiaohongshu } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\nimport { rpaAction_Server } from \"./rpa-server\";\nimport type {GroupDetail} from \"../getXhsGroup\";\nimport { CollectionDetail } from \"../getXhsCollection\";\nimport {rpaAction_Server_Mock} from \"./rpa-server-mock\";\n\nconst FictionalRendition = z.object({\n type: z.literal(\"fictional-rendition\"), // 虚拟演绎,仅供娱乐 \n});\nconst AIGenerated = z.object({\n type: z.literal(\"ai-generated\"), // 笔记含AI合成内容 \n});\nconst SourceStatement = z.object({\n type: z.literal(\"source-statement\"), // 内容来源声明 \n childType: z.enum([\"self-labeling\", \"self-shooting\", \"transshipment\"]), // 已自主标注 / 自助拍摄 / 转载 \n shootingLocation: z.custom<Xiaohongshu.Location>().optional(), // 拍摄地点 \n shootingDate: z.string().optional(), // 拍摄日期 \n sourceMedia: z.string().optional(), // 来源媒体 \n});\nconst SelfDeclarationSchema = z.union([FictionalRendition, AIGenerated, SourceStatement]);\n\ntype SelfDeclaration = z.infer<typeof SelfDeclarationSchema>;\n\nexport const XiaohongshuPublishParamsSchema = ActionCommonParamsSchema.extend({\n banners: z.array(z.string()), // 图片\n title: z.string(), // 标题\n content: z.string(), // 正文\n address: z.custom<Xiaohongshu.Location>().optional(), // 地点\n selfDeclaration: z.custom<SelfDeclaration>().optional(), // 自主声明\n topic: z.array(z.custom<Xiaohongshu.Topic>()).optional(), //话题\n proxyLoc: z.string().optional(), // 代理位置\n localIP: z.string().optional(), // 用户ip\n huiwenToken: z.string().optional(), // 绘文token\n visibleRange: z.enum([\"public\", \"private\", \"friends\"]), // 可见范围\n isImmediatelyPublish: z.boolean().optional(), // 是否立即发布\n scheduledPublish: z.string().optional(), // 定时发布时间\n collectionId: z.string().optional(), // 合集ID TODO:迁移完成后该字段移除\n collectionBind: z.custom<CollectionDetail>().optional(), // 合集绑定\n groupBind: z.custom<GroupDetail>().optional(), // 群聊绑定\n noteCopyBind: z.boolean().optional(), // 是否允许复制\n coProduceBind: z.boolean().optional(), // 是否允许合拍\n originalBind: z.boolean().optional(), // 是否开启原创声明, 声明检测app端展示,web端发布后,最终是否原创成功以小红书APP结果为准\n }\n)\n\nexport type XiaohongshuPublishParams = z.infer<typeof XiaohongshuPublishParamsSchema>;\n\nexport type PublishAction = CommonAction<XiaohongshuPublishParams, string>;\n\nexport const xiaohongshuPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n \n if( params.actionType === \"server\") {\n return rpaAction_Server_Mock(task, params);\n }\n\n // 优先执行Mock+RPA方案,失败则进入RPA-Server方案\n\treturn executeAction(rpaAction_Server_Mock, rpaAction_Server)(task, params);\n};\n","import fetch from \"node-fetch\";\n\nimport type {SteelAction} from \"./index\";\nimport {type Page, success, type UserInfo} from \"@iflyrpa/share\";\nimport type {APIResponse, Response} from \"playwright-core\";\n\nimport type{ Response as FetchResponse } from \"node-fetch\"\n\nconst scanRetryMaxCount = 60; // 二维码扫描重试次数\n// 等待二维码验证结果最长时间\nconst waitQrcodeResultMaxTime = scanRetryMaxCount * 2 * 1000;\n\nexport const rpaAction: SteelAction = async (task, params) => {\n const reporter = task.reportService?.reportLoginStatus ?? (() => Promise.resolve());\n\n let page: Page;\n let isSelfClosing = false;\n try {\n page = await task.createPage({\n url: \"https://baijiahao.baidu.com/builder/theme/bjh/login\",\n });\n if (!task._session?.id) throw new Error(\"Session ID 不存在\");\n task._steelBrowser?.on('disconnected', () => {\n if (task.debug && isSelfClosing) {\n task.logger.info(\"执行结束,关闭浏览器!\")\n } else {\n task.logger.info(\"浏览器被手动释放或意外关闭!\")\n }\n });\n } catch (e) {\n return {code: 500, message: `浏览器启动失败: ${e}`, data: {}};\n }\n\n\n\n const pageInfo = await task._client?.sessions.liveDetails(task._session.id);\n const pageId = pageInfo?.pages[0].id ?? \"\";\n\n const baseHost = task._session.websocketUrl?.replace(/^wss?:\\/\\//, \"\") ?? \"\";\n const debugParams = new URLSearchParams({baseHost, pageId});\n const connectAddress = debugParams.toString();\n\n task.reportService?.settingSessionID?.(task._session?.id || \"\");\n\n\n await page.route(\"**/*.webm\", route => route.abort()); // 拦截部分不必要的请求,提升加载速度\n await page.route(\"**/*.mp4\", route => route.abort()); // 拦截部分不必要的请求,提升加载速度\n await page.route(\"**pic.rmb.bdstatic.com/**\", route => route.abort());\n\n await reporter(0, '浏览器启动成功,请使用百家号App扫码登录......', {connectAddress});\n\n\n // 拦截二维码请求,转换为 base64 格式,注入页面,解决图片跨域问题\n await page.route('**/v2/api/qrcode**', async (route, request) => {\n let response: APIResponse| undefined;\n for (let i = 0; i < 3; i++) {\n try {\n response = await route.fetch();\n break;\n } catch (error) {\n if (i === 2) {\n console.error('二维码获取失败:', error);\n await route.abort();\n return;\n }\n await new Promise(res => setTimeout(res, 1000));\n }\n }\n\n if (!response) throw new Error(\"二维码响应未定义\");\n \n try {\n // 拿到响应体 buffer\n const buffer = await response.body();\n const base64 = buffer.toString('base64');\n const mimeType = response.headers()['content-type'] || 'image/png';\n const dataUrl = `data:${mimeType};base64,${base64}`;\n\n // 继续返回给页面\n await route.fulfill({\n status: response.status(),\n headers: response.headers(),\n body: buffer,\n });\n\n await page.evaluate((dataUrl) => {\n const img = document.querySelector<HTMLImageElement>('.tang-pass-qrcode-img');\n if (img) img.src = dataUrl;\n }, dataUrl);\n } catch (error) {\n console.error('二维码处理失败:', error);\n await route.abort();\n }\n });\n\n try {\n await page.getByRole('button', {name: '登录/注册百家号'}).click({timeout: 15 * 1000});\n } catch (e) {\n }\n\n const startTime = Date.now();\n\n let token: string| null = null;\n let userInfo: UserInfo = {uniqueId: \"\", avatar: \"\", name: \"\"}\n try {\n await new Promise<void>((resolve, reject) => {\n\n\n // ✅ 真正的超时定时器\n const timeoutTimer = setTimeout(() => {\n cleanup();\n reject(\"timeout\");\n }, waitQrcodeResultMaxTime);\n\n // ✅ 统一清理函数\n const cleanup = () => {\n clearTimeout(timeoutTimer);\n page.off(\"response\", handleCheckQR);\n page.off(\"response\", handleWebCommon);\n };\n\n // 锁标志,防止并发处理\n const isProcessing = false;\n const handleWebCommon = async (resp: Response) => {\n\n if (resp.url().includes(\"/user-ui/cms/getPassinfo\") || resp.url().includes(\"/pcui/home/dealtoken\")) {\n if (isProcessing) return; // 如果已经在处理,直接忽略新响应\n \n let res: FetchResponse;\n for (let i = 0; i < 3; i++) {\n try {\n const headers = await resp.request().allHeaders();\n \n res = await fetch('https://baijiahao.baidu.com/user-ui/cms/getPassinfo', {\n method: \"GET\",\n headers: {\n cookie: headers.cookie,\n },\n });\n if (res.ok) {\n token = res.headers.get('token');\n const jsonUser = await res.json() as { data: { avatar: string; uk: string; displayname: string } };\n userInfo = {\n name: jsonUser.data.displayname,\n avatar: jsonUser.data.avatar,\n uniqueId: jsonUser.data.uk\n }\n break\n }\n await new Promise(res => setTimeout(res, 500)); // 失败后等待1秒\n } catch (error) {\n if (i === 2) throw new Error(`请求失败: ${(error as Error).message}`);\n await new Promise(res => setTimeout(res, 500)); // 失败后等待1秒\n }\n } // 重试机制\n }\n\n if (resp.url().includes(\"/pcui/home/dealtoken\")) {\n await reporter(0, \"扫码成功!\", {stage: 'scanQrcode', connectAddress});\n\n page.off(\"response\", handleWebCommon);\n resolve();\n }\n };\n \n const handleCheckQR = async (response: Response) => {\n if (response.url().includes(\"/channel/unicast\")) {\n\n const jsonPStr = await response.text()\n const jsonStr = jsonPStr.replace(/^[^(]+\\(([\\s\\S]*)\\)\\s*$/, '$1');\n const jsonResponse: { errno: number, channel_v?: string } = JSON.parse(jsonStr);\n\n if (jsonResponse.errno === 0 && jsonResponse?.channel_v) {\n const channel_v: { status: number } = JSON.parse(jsonResponse.channel_v);\n if (channel_v.status === 0) {\n page.off(\"response\", handleCheckQR);\n page.on(\"response\", handleWebCommon);\n }\n }\n }\n };\n page.on(\"response\", handleCheckQR);\n\n });\n } catch (e) {\n const errMap = [\"\", \"用户扫码已超时,请重试!\"]\n isSelfClosing = true;\n return {code: 500, message: errMap[e as number], data: {stage: 'scanQrcode', connectAddress}};\n }\n\n const cookieJson = await task._steelBrowserContext?.cookies()\n const cookie = JSON.stringify(cookieJson).replace(/\\\\\"/g, '');\n isSelfClosing=true;await page.close();\n\n return success({connectAddress, token, cookie, userInfo}, \"登陆成功!\");\n};\n","import type { SteelAction } from \"./index\";\nimport { TaskState, type UserInfo } from \"@iflyrpa/share\";\nimport {APIResponse, Response} from \"playwright-core\";\nimport { ExecutionState } from \"../../types\";\nimport fetch from \"node-fetch\";\nimport type { Response as FetchResponse } from \"node-fetch\";\n\nconst scanRetryMaxCount = 60; // 二维码扫描重试次数\nconst waitQrcodeResultMaxTime = scanRetryMaxCount * 2 * 1000; // 最长等待时间\n\nexport const rpaServer: SteelAction = async (task, params) => {\n\tconst updateTaskState = task.taskStageStore?.update?.bind(task.taskStageStore, task.taskId || \"\");\n\tlet executionState: ExecutionState | undefined = undefined;\n\n\tconst page = await task.createPage({\n\t\turl: \"https://passport.baidu.com/v2/?login\",\n\t});\n\n\ttask.steelBrowser?.on(\"disconnected\", () => {\n\t\texecutionState = ExecutionState.BROWSER_CLOSED;\n\t});\n\n\t// 拦截不必要的资源请求\n\t// await page.route(\"**/*.webm\", (route) => route.abort());\n\t// await page.route(\"**/*.mp4\", (route) => route.abort());\n\t// await page.route(\"**pic.rmb.bdstatic.com/**\", (route) => route.abort());\n\n\t// 拦截二维码请求,转换为 base64 格式,解决跨域问题\n\t// await page.route(\"**/v2/api/qrcode**\", async (route, request) => {\n\t// \tlet response: APIResponse | undefined;\n\t// \tfor (let i = 0; i < 3; i++) {\n\t// \t\ttry {\n\t// \t\t\tresponse = await route.fetch();\n\t// \t\t\tbreak;\n\t// \t\t} catch (error) {\n\t// \t\t\tif (i === 2) {\n\t// \t\t\t\ttask.logger.warn(\"二维码获取失败:\", { error });\n\t// \t\t\t\tawait route.abort();\n\t// \t\t\t\treturn;\n\t// \t\t\t}\n\t// \t\t\tawait new Promise((res) => setTimeout(res, 1000));\n\t// \t\t}\n\t// \t}\n //\n\t// \tif (!response) throw new Error(\"二维码响应未定义\");\n //\n\t// \ttry {\n\t// \t\tconst buffer = await response.body();\n\t// \t\tconst base64 = buffer.toString(\"base64\");\n\t// \t\tconst mimeType = response.headers()[\"content-type\"] || \"image/png\";\n\t// \t\tconst dataUrl = `data:${mimeType};base64,${base64}`;\n //\n\t// \t\tawait route.fulfill({\n\t// \t\t\tstatus: response.status(),\n\t// \t\t\theaders: response.headers(),\n\t// \t\t\tbody: buffer,\n\t// \t\t});\n //\n\t// \t\tawait page.evaluate((dataUrl) => {\n\t// \t\t\tconst img = document.querySelector<HTMLImageElement>(\".tang-pass-qrcode-img\");\n\t// \t\t\tif (img) img.src = dataUrl;\n\t// \t\t}, dataUrl);\n\t// \t} catch (error) {\n\t// \t\ttask.logger.warn(\"二维码处理失败:\", { error });\n\t// \t\tawait route.abort();\n\t// \t}\n\t// });\n\n\t// try {\n\t// \tawait page.getByRole(\"button\", { name: \"登录/注册百家号\" }).click({ timeout: 15 * 1000 });\n\t// } catch (e) {\n\t// \ttask.logger.warn(\"点击登录按钮失败:\", { error: e });\n\t// }\n\n // 删除 TANGRAM__PSP_3__QrcodeAnimation 元素\n await page.locator('#TANGRAM__PSP_3__QrcodeAnimation').evaluate(el => el.remove());\n\n // 修改 TANGRAM__PSP_3__QrcodeMain 的 style\n await page.locator('#TANGRAM__PSP_3__QrcodeMain').evaluate(el => {\n // 先获取现有 style\n const style = el.getAttribute('style') || '';\n // 用正则去掉 margin-left: 39px;\n const newStyle = style.replace(/margin-left:\\s*39px;?/i, '');\n el.setAttribute('style', newStyle);\n });\n \n await page.locator('.tang-pass-qrcode-title a.pass-link').evaluate(el => {\n el.textContent = '百家号APP';\n });\n\n\tawait updateTaskState?.({\n\t\tstate: TaskState.WAIT_SCAN,\n\t\tconnectAddress: task.steelConnector?.getProxyUrl(task.sessionId || \"\", \"v1/sessions/debug\"),\n\t\tsessionId: task.sessionId,\n\t});\n\n\tlet token: string | undefined;\n\tlet userInfo: UserInfo = { uniqueId: \"\", avatar: \"\", name: \"\" };\n\n\tawait new Promise<void>((resolve, reject) => {\n\t\tlet finished = false;\n\n\t\tconst timer = setTimeout(async () => {\n\t\t\tcleanup();\n\t\t\texecutionState = ExecutionState.TIMEOUT;\n\t\t\tawait updateTaskState?.({\n\t\t\t\tstate: TaskState.TIMEOUT,\n\t\t\t\terror: \"等待扫码登录超时\",\n\t\t\t});\n\t\t\tresolve();\n\t\t}, waitQrcodeResultMaxTime);\n\n\t\tconst cleanup = () => {\n\t\t\tif (finished) return; // 防止多次调用\n\t\t\tfinished = true;\n\t\t\tclearTimeout(timer);\n\t\t\tpage.off(\"response\", handleWebCommon);\n\t\t\tpage.off(\"response\", handleCheckQR);\n\t\t\ttask.steelBrowser?.off(\"disconnected\", handleBrowserClosed);\n\t\t};\n\n\t\tconst handleBrowserClosed = () => {\n\t\t\tcleanup();\n\t\t\texecutionState = ExecutionState.BROWSER_CLOSED;\n\t\t\tresolve();\n\t\t};\n\n\t\tconst handleWebCommon = async (resp: Response) => {\n\t\t\ttry {\n\t\t\t\tconst url = resp.url();\n\n\t\t\t\t// 获取用户信息和 token\n\t\t\t\tif (url.includes(\"/user-ui/cms/getPassinfo\") || url.includes(\"/pcui/home/dealtoken\")) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst headers = await resp.request().allHeaders();\n\t\t\t\t\t\tlet res: FetchResponse;\n\n\t\t\t\t\t\tfor (let i = 0; i < 3; i++) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tres = await fetch(\"https://baijiahao.baidu.com/user-ui/cms/getPassinfo\", {\n\t\t\t\t\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t\tcookie: headers.cookie,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (res.ok) {\n\t\t\t\t\t\t\t\t\ttoken = res.headers.get(\"token\") || \"\";\n\t\t\t\t\t\t\t\t\tconst jsonUser = (await res.json()) as {\n\t\t\t\t\t\t\t\t\t\tdata: { avatar: string; uk: string; displayname: string };\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\tuserInfo = {\n\t\t\t\t\t\t\t\t\t\tname: jsonUser.data.displayname ?? \"\",\n\t\t\t\t\t\t\t\t\t\tavatar: jsonUser.data.avatar ?? \"\",\n\t\t\t\t\t\t\t\t\t\tuniqueId: jsonUser.data.uk ?? \"\",\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tawait new Promise((res) => setTimeout(res, 500));\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tif (i === 2) {\n\t\t\t\t\t\t\t\t\ttask.logger.warn(\"获取用户信息失败:\", { error });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tawait new Promise((res) => setTimeout(res, 500));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\ttask.logger.warn(\"处理用户信息失败:\", { url, error: e });\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// 登录成功\n\t\t\t\tif (url.includes(\"/pcui/home/dealtoken\")) {\n\t\t\t\t\tcleanup();\n\t\t\t\t\tawait updateTaskState?.({\n\t\t\t\t\t\tstate: TaskState.CONFIRMED,\n\t\t\t\t\t});\n\n\t\t\t\t\texecutionState = ExecutionState.SUCCESS;\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tcleanup();\n\t\t\t\treject(err);\n\t\t\t}\n\t\t};\n\n\t\tconst handleCheckQR = async (response: Response) => {\n\t\t\ttry {\n\t\t\t\tconst url = response.url();\n\t\t\t\tif (!url.includes(\"/channel/unicast\")) return;\n\n\t\t\t\tlet jsonResponse: { errno: number; channel_v?: string };\n\t\t\t\ttry {\n\t\t\t\t\tconst jsonPStr = await response.text();\n\t\t\t\t\tif (!jsonPStr) {\n\t\t\t\t\t\ttask.logger.warn(\"Empty response body:\", { url });\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst jsonStr = jsonPStr.replace(/^[^(]+\\(([\\s\\S]*)\\)\\s*$/, \"$1\");\n\t\t\t\t\tjsonResponse = JSON.parse(jsonStr);\n\t\t\t\t} catch (e) {\n\t\t\t\t\ttask.logger.warn(\"Failed to parse json:\", { url, error: e });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (jsonResponse.errno === 0 && jsonResponse?.channel_v) {\n\t\t\t\t\tconst channel_v: { status: number } = JSON.parse(jsonResponse.channel_v);\n if (channel_v.status === 1) {\n // 扫码成功\n await updateTaskState?.({\n state: TaskState.SCANNED,\n });\n }\n if (channel_v.status === 0) {\n page.off(\"response\", handleCheckQR);\n await page.goto(\"https://baijiahao.baidu.com/builder/rc/home\")\n page.on(\"response\", handleWebCommon);\n }\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tcleanup();\n\t\t\t\treject(err);\n\t\t\t}\n\t\t};\n\n\t\t// 在页面加载之前就注册监听,防止丢失请求\n\t\ttask.steelBrowser?.on(\"disconnected\", handleBrowserClosed);\n\t\tpage.on(\"response\", handleCheckQR);\n\t});\n\n\tif (executionState === undefined) return { code: 500, message: \"未知错误\", data: {} };\n\n\tswitch (executionState) {\n\t\tcase ExecutionState.BROWSER_CLOSED: {\n\t\t\tconst msg = \"浏览器已关闭,任务中断!\";\n\t\t\tawait updateTaskState?.({\n\t\t\t\tstate: TaskState.FAILED,\n\t\t\t\terror: \"浏览器已关闭\",\n\t\t\t});\n\t\t\treturn { code: 200, message: msg, data: {} };\n\t\t}\n\n\t\tcase ExecutionState.TIMEOUT: {\n\t\t\tconst msg = \"等待用户扫码登录超时!\";\n\t\t\tawait updateTaskState?.({\n\t\t\t\tstate: TaskState.TIMEOUT,\n\t\t\t\terror: msg,\n\t\t\t});\n\t\t\ttask.logger.info(msg);\n\t\t\treturn { code: 200, message: msg, data: {} };\n\t\t}\n\n\t\tcase ExecutionState.SUCCESS:\n\t\t\tawait updateTaskState?.({\n\t\t\t\tstate: TaskState.SUCCESS,\n\t\t\t\tresult: {\n\t\t\t\t\tcookie: JSON.stringify(await task.steelBrowserContext?.cookies()).replace(/\\\\\"/g, \"\"),\n\t\t\t\t\ttoken,\n\t\t\t\t\tuserInfo: userInfo,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tcode: 0,\n message: \"成功\",\n data: {\n cookie: JSON.stringify(await task.steelBrowserContext?.cookies()).replace(/\\\\\"/g, \"\"),\n token,\n userInfo,\n },\n\t\t\t};\n\t\tdefault:\n\t\t\t// 处理 RUNNING 和其他可能的状态\n\t\t\treturn { code: 500, message: \"任务执行中断\", data: {} };\n\t}\n};\n\n","import {CommonAction, success} from \"@iflyrpa/share\";\n\nimport { executeAction } from \"../../utils\";\nimport { rpaAction } from \"./rpa\";\nimport {ActionParams} from \"../../types\";\nimport {rpaServer} from \"./rpa-server\";\n\nexport type BaijiahaoLoginParams = ActionParams;\n\nexport type SteelAction = CommonAction<ActionParams, Record<string, unknown>>;\n\nexport const baijiahaoLogin: SteelAction = async (task, params) => {\n // params.actionType = \"rpa\";\n \n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn success({}, \"暂不支持mockApi\");\n\t} \n \n if( params.actionType === \"server\") {\n return rpaServer(task, params);\n }\n\n\treturn executeAction(rpaAction)(task, params);\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetToutiaoCollectionParams extends ActiomCommonParams {}\n\nexport interface GetToutiaoCollectionResult {\n id: string;\n collection_attr: {\n title: string;\n cover_image: {\n url: string;\n uri: string;\n width: number;\n height: number;\n mime_type: string;\n };\n item_status: number;\n visibility_level: number;\n create_time: string;\n suppress_reason: string;\n user_id: string;\n };\n collection_stat: {\n impression_count: string;\n go_detail_count: string;\n repin_count: string;\n forward_count: string;\n };\n menu_list: {\n show_delete: boolean;\n show_modify: boolean;\n show_hide: boolean;\n forbid_delete_reason: string;\n forbid_modify_reason: string;\n forbid_hide_reason: string;\n };\n sub_item_count: number;\n item_status_desc: string;\n}\n\nexport type PublishAction = CommonAction<GetToutiaoCollectionParams, GetToutiaoCollectionResult[]>;\n\nexport const getToutiaoCollection: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n const res = await http.api<{ code: number; data: GetToutiaoCollectionResult[]; total_count: number; }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/fe_api/collection/list\",\n params:{\n page_num: 0,\n page_size: 100,\n need_sub_item_count: true\n }\n });\n\n\treturn success(res.code === 0 ? res.data : [], res.code === 0 ? \"获取头条号合集成功!\" : \"获取头条号合集失败!\");\n};\n","import {type CommonAction, response, success} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../types\";\nimport { Http } from \"../../utils/http\";\nimport { Xhshow } from \"../../utils/xhsXsEncrypt\";\nimport { z } from \"zod\";\n\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport interface GroupListResponse {\n\tsuccess: boolean;\n\tmsg: string;\n\tdata: {\n\t\tgroup_list: GroupDetail[];\n\t};\n\tcode: number;\n}\n\n\nexport const GroupDetailSchema = z.object({\n avatar: z.string(),\n desc: z.string(),\n group_id: z.string(),\n group_name: z.string(),\n linkable: z.boolean(),\n});\nexport type GroupDetail = z.infer<typeof GroupDetailSchema>;\n\nexport type PublishAction = CommonAction<ActiomCommonParams, GroupDetail[]>;\n\nexport const getXhsGroup: PublishAction = async (_task, params) => {\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com\",\n origin: \"https://creator.xiaohongshu.com\",\n };\n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n\n\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\tif (!a1Cookie) return { code: 400, message: \"账号数据异常,请重新绑定账号后重试。\", data: [] };\n\n\tconst groupListParams = { note_id: \"\" };\n\tconst fatchGroup = \"/api/im/web/nns/group_list\";\n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n const searchXsHeader = xsEncrypt.signHeadersGet(fatchGroup, recordCookie, \"xhs-pc-web\", groupListParams);\n \n\tconst res = await http.api<GroupListResponse>({\n\t\tmethod: \"get\",\n\t\turl: \"https://edith.xiaohongshu.com/api/im/web/nns/group_list\",\n\t\tparams: groupListParams,\n\t\theaders: searchXsHeader,\n\t},{ retries: 3, retryDelay: 20, timeout: 3000 });\n \n const isSuccess = res.code === 0;\n\tconst message = `群聊信息获取${isSuccess ? \"成功\" : `失败,原因:${res.msg}`}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n\tconst data = isSuccess ? res.data.group_list : [];\n\n\treturn response(isSuccess ? 0 : 400, message, data);\n};\n","import {type CommonAction, response, success} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../types\";\nimport { Http } from \"../../utils/http\";\nimport { Xhshow } from \"../../utils/xhsXsEncrypt\";\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport interface HotTopicResponse {\n\tcode: number;\n\tsuccess: boolean;\n\tmsg: string;\n\tdata: {\n\t\tactivity_list: HotTopicDetail[];\n\t};\n}\n\nexport interface HotTopicDetail {\n\tpage_id: string;\n\tactivity_name: string;\n\tstart_time: number;\n\tactivity_status: number;\n\tcapa_deep_link: string;\n\tinstance_id: number;\n\tactivity_id: number;\n\tend_time: number;\n\tpicture_link: string;\n\tfocus_status: number;\n\tactivity_reward: string;\n\tactivity_link: string;\n\tsort_score: string;\n\tpc_post_link: string;\n\ttopic_infos: [\n\t\t{\n\t\t\tid: string;\n\t\t\tname: string;\n\t\t\tlink: string;\n\t\t},\n\t];\n}\n\nexport type PublishAction = CommonAction<ActiomCommonParams, HotTopicDetail[]>;\n\nexport const getXhsHotTopic: PublishAction = async (_task, params) => {\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com\",\n origin: \"https://creator.xiaohongshu.com\",\n };\n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n\n\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\tif (!a1Cookie) return { code: 400, message: \"账号数据异常,请重新绑定账号后重试。\", data: [] };\n \n\tconst hotTopicParams = {\n\t\tsort: 1,\n\t\ttype: 1,\n\t\tsource: 3,\n\t\ttopic_activity: 1,\n\t};\n\tconst fatchTopic = \"/api/galaxy/v2/creator/activity_center/list\";\n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n const searchXsHeader = xsEncrypt.signHeadersGet(fatchTopic, recordCookie, \"xhs-pc-web\", hotTopicParams);\n\n\tconst res = await http.api<HotTopicResponse>({\n\t\tmethod: \"get\",\n\t\turl: \"https://creator.xiaohongshu.com/api/galaxy/v2/creator/activity_center/list\",\n\t\tparams: hotTopicParams,\n\t\theaders: searchXsHeader,\n\t},{ retries: 3, retryDelay: 20, timeout: 3000 });\n\n const isSuccess = res.code === 0;\n\tconst message = `热门信息获取${isSuccess ? \"成功\" : `失败,原因:${res.msg}`}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n\tconst data = isSuccess ? res.data.activity_list : [];\n\n\treturn response(isSuccess ? 0 : 400, message, data);\n};\n","import {type CommonAction, response, success} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface searchXhsWebIntimacyListParams extends ActiomCommonParams {\n\tsearchValue?: string;\n}\n\nexport interface Intimacy {\n\timages: string;\n\trid: string;\n\tuserid: string;\n\tnickname: string;\n}\n\nexport type PublishAction = CommonAction<searchXhsWebIntimacyListParams, Intimacy[] | []>;\n\nexport const xiaohongshuWebIntimacySearch: PublishAction = async (_task, params) => {\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://www.xiaohongshu.com/\",\n origin: \"https://www.xiaohongshu.com\",\n };\n \n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n\n\tlet intimacyDetail: Intimacy[] | [] = [];\n\n\tconst res = await http.api<{ code: number; msg: string; data: { items: Intimacy[] } }>({\n\t\tmethod: \"get\",\n\t\turl: `https://edith.xiaohongshu.com/api/sns/web/v1/intimacy/intimacy_list${params.searchValue ? \"/search\" : \"\"}`,\n\t\t...(params.searchValue\n\t\t\t? {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tkeyword: params.searchValue,\n\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\trows: 30,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t},{ retries: 3, retryDelay: 20, timeout: 3000 });\n \n const isSuccess = res.code === 0;\n if (isSuccess) intimacyDetail = res.data.items;\n const message = `搜索@列表数据${isSuccess ? \"成功\" : `失败,原因:${res.msg}`}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n\n return response(isSuccess ? 0 : 400, message, intimacyDetail);\n};\n","import {type CommonAction, response, success} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../types\";\nimport { Http } from \"../../utils/http\";\nimport { z } from \"zod\";\n\nexport const UnreadCountSchema = z.object({\n connections: z.number().nullable(),\n mentions: z.number().nullable(),\n unread_count: z.number().nullable(),\n likes: z.number().nullable(),\n});\n\nexport type UnreadCount = z.infer<typeof UnreadCountSchema>;\n\nexport type PublishAction = CommonAction<ActiomCommonParams, UnreadCount>;\n\nexport const getXhsUnreadCount: PublishAction = async (_task, params) => {\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://www.xiaohongshu.com/\",\n origin: \"https://www.xiaohongshu.com\",\n };\n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId,\n ]\n\tconst http = new Http(...args);\n\n\tlet unreadCount: UnreadCount = {\n\t\tconnections: null,\n\t\tmentions: null,\n\t\tunread_count: null,\n\t\tlikes: null,\n\t};\n\n\tconst res = await http.api<{ code: number; msg: string; data: UnreadCount }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://edith.xiaohongshu.com/api/sns/web/unread_count\",\n\t},{ retries: 3, retryDelay: 20, timeout: 3000 });\n\n const isSuccess = res.code === 0;\n if (isSuccess) unreadCount = res.data;\n\tconst message = `获取未读消息数${isSuccess ? \"成功\" : `失败,原因:${res.msg}`}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n\n\t// return response(isSuccess ? 0 : 400, message, unreadCount);\n return success(unreadCount, message)\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface searchBjhUserArticleParams extends ActiomCommonParams {\n\tsearchValue: string;\n}\n\nconst parseBjhDom = (domString: string): string => {\n\tconst match = domString.match(/\"uk\"\\s*:\\s*\"([^\"]+)\"/);\n\tif (!match) throw new Error(\"没有找到 runtime\");\n\treturn match[1].trim();\n};\n\nexport type PublishAction = CommonAction<searchBjhUserArticleParams, Record<string, unknown>[]>;\n\nexport const searchBjhUserArticle: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie:\n\t\t\t\t\"Hmery-Time=948577917; BAIDUID=5A704A91E4CBAFBE1421F0CA634ACA7E:FG=1; BAIDUID_BFESS=5A704A91E4CBAFBE1421F0CA634ACA7E:FG=1\",\n\t\t},\n\t});\n\n\t// if (!a1Cookie) return {code: 200, message: \"账号数据异常,请重新绑定账号后重试。\", data: []};\n\tif (params.searchValue.indexOf(\"home?from=bjh_article\") === -1)\n\t\treturn { code: 400, message: \"请输入正确的百家号用户主页链接地址!\", data: [] };\n\n\tconst result = await http.api<string>({\n\t\tmethod: \"get\",\n\t\turl: params.searchValue,\n\t\tdefaultErrorMsg: \"用户搜索异常,请稍后重试。\",\n\t});\n\n\tconst runtime = parseBjhDom(result);\n\n\tconst detailJson = await http.api<{ errno: number; data?: { list: Record<string, unknown>[] } }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://mbd.baidu.com/webpage/\",\n\t\tparams: {\n\t\t\ttab: \"main\",\n\t\t\tnum: 10,\n\t\t\tuk: runtime,\n\t\t\tsource: \"pc\",\n\t\t\ttype: \"newhome\",\n\t\t\taction: \"dynamic\",\n\t\t\tformat: \"json\",\n\t\t},\n\t});\n\tconsole.log(detailJson);\n\n\treturn success(detailJson.data?.list ?? [], `搜索用户相关数据${detailJson.errno === 0 ? \"成功!\" : \"失败!\"}`);\n};\n","// @ts-ignore\nimport {type CommonAction, success} from \"@iflyrpa/share\";\nimport {Http} from \"../../utils/http\";\nimport type {ActiomCommonParams} from \"../../types\";\n\nexport interface searchWeixinAccountCardParams extends ActiomCommonParams {\n token: string | number;\n\tsearchValue: string;\n pageNum: number;\n}\n\nexport interface WxAccountCardInfo {\n fakeid: string;\n nickname: string;\n alias: string;\n round_head_img: string;\n service_type: number;\n signature: string;\n verify_status: number;\n}\n\nexport type PublishAction = CommonAction<searchWeixinAccountCardParams, WxAccountCardInfo[]>;\n\nexport const searchWeixinAccountCard : PublishAction = async(_task, params) =>{\n const {token} = params;\n if (!token) return {code: 400, message: \"缺少token\", data: []};\n const fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\n try {\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n },\n });\n \n const accountCardList = await http.api<{base_resp:{err_msg:string, ret: number}, list: WxAccountCardInfo[]}>({\n method: \"get\",\n url: \"https://mp.weixin.qq.com/cgi-bin/searchbiz\",\n params: {\n token,\n lang: \"zh_CN\",\n action: \"search_biz\",\n scene: params.pageNum-1 || 0,\n begin: \"0\",\n count: \"10\",\n query: params.searchValue,\n fingerprint,\n f: \"json\",\n ajax: 1\n },\n })\n\n return success(accountCardList.list, \"微信搜索账户数据成功!\");\n } catch (error) {\n return success([],\"微信搜索账户数据失败!\");\n }\n}","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface searchWeixinUserArticleParams extends ActiomCommonParams {\n\tfakeId: string;\n\ttoken: string | number;\n}\n\nexport type PublishAction = CommonAction<searchWeixinUserArticleParams, Record<string, unknown>[]>;\n\nexport const searchWeixinUserArticle: PublishAction = async (_task, params) => {\n\tconst { token } = params;\n\tif (!token) return { code: 400, message: \"缺少token\", data: [] };\n\tconst fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t},\n\t});\n\n\tconst publishInfo = await http.api<{ base_resp: { err_msg: string; ret: number }; publish_page: string }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/appmsgpublish\",\n\t\tparams: {\n\t\t\ttoken,\n\t\t\tlang: \"zh_CN\",\n\t\t\tfingerprint,\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\tsub: \"list\",\n\t\t\tsearch_field: null,\n\t\t\tbegin: \"0\",\n\t\t\tcount: \"10\",\n\t\t\tquery: \"\",\n\t\t\tfakeid: params.fakeId,\n\t\t\ttype: \"101_1\",\n\t\t\tfree_publish_type: \"1\",\n\t\t\tsub_action: \"list_ex\",\n\t\t},\n\t},{ retries: 3, retryDelay: 20, timeout: 3000 });\n\n\tconst publishPage: { publish_list: Record<string, unknown>[] } = publishInfo.publish_page\n\t\t? JSON.parse(publishInfo.publish_page)\n\t\t: { publish_list: [] };\n\n\treturn success(publishPage.publish_list, \"微信搜索账户数据成功!\");\n};\n","import {type CommonAction, response, success} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../types\";\nimport { Http } from \"../../utils/http\";\nimport { Xhshow } from \"../../utils/xhsXsEncrypt\";\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport interface searchXhsConnectionsParams extends ActiomCommonParams {\n\tnum: number;\n\tcursor: string | null;\n}\n\nexport interface ConnectionsResponse {\n\tcode: number;\n\tsuccess: boolean;\n\tmsg: string;\n\tdata: ConnectionsDetail;\n}\n\nexport interface ConnectionsDetail {\n\tmessage_list: {\n\t\ttitle: string;\n\t\ttag: string;\n\t\ttag_type: string;\n\t\tid: string;\n\t\ttype: string;\n\t\tuser: {\n\t\t\txsec_token: string;\n\t\t\tuserid: string;\n\t\t\tnickname: string;\n\t\t\timages: string;\n\t\t\tfstatus: string;\n\t\t\tred_official_verify_type: number;\n\t\t};\n\t\ttime: number;\n\t\tscore: number;\n\t\ttrack_type: string;\n\t}[];\n\thas_more: boolean;\n\tstrCursor: string;\n}\n\nexport type PublishAction = CommonAction<searchXhsConnectionsParams, ConnectionsDetail | Record<string, unknown>>;\n\nexport const searchXhsWebConnections: PublishAction = async (_task, params) => {\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://www.xiaohongshu.com/\",\n origin: \"https://www.xiaohongshu.com/\",\n };\n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n\n\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\tif (!a1Cookie) return { code: 400, message: \"账号数据异常,请重新绑定账号后重试。\", data: {} };\n\n\tconst connectionsParams = {\n\t\tnum: params.num ?? 20,\n\t\tcursor: params.cursor ?? \"\",\n\t};\n\tconst fatchConnections = \"/api/sns/web/v1/you/connections\";\n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n const fatchConnectionsXsHeader = xsEncrypt.signHeadersGet(fatchConnections, recordCookie, \"xhs-pc-web\", connectionsParams);\n\n\tconst res = await http.api<ConnectionsResponse>({\n\t\tmethod: \"get\",\n\t\turl: \"https://edith.xiaohongshu.com/api/sns/web/v1/you/connections\",\n\t\tparams: connectionsParams,\n\t\theaders: fatchConnectionsXsHeader,\n\t},{ retries: 3, retryDelay: 20, timeout: 3000 });\n\n const isSuccess = res.code === 0;\n\tconst message = `获取新增关注${isSuccess ? \"成功\" : `失败,原因:${res.msg}`}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n\tconst data = isSuccess ? res.data : {};\n\n\treturn response(isSuccess ? 0 : 400, message, data);\n};\n","import {type CommonAction, response} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../types\";\nimport { Http } from \"../../utils/http\";\nimport { Xhshow } from \"../../utils/xhsXsEncrypt\";\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport interface searchXhsLikesParams extends ActiomCommonParams {\n\tnum: number;\n\tcursor: string | null;\n}\n\nexport interface LikesResponse {\n\tcode: number;\n\tsuccess: boolean;\n\tmsg: string;\n\tdata: LikesDetail;\n}\n\nexport interface LikesDetail {\n\tmessage_list: {\n\t\ttime: number;\n\t\tuser_info: {\n\t\t\tfstatus: string;\n\t\t\tred_official_verify_type: number;\n\t\t\txsec_token: string;\n\t\t\tuserid: string;\n\t\t\tnickname: string;\n\t\t\timage: string;\n\t\t};\n\t\titem_info: {\n\t\t\timage: string;\n\t\t\tstatus: number;\n\t\t\tid: string;\n\t\t\tcontent: string;\n\t\t\timage_info: {\n\t\t\t\turl: string;\n\t\t\t\twidth: number;\n\t\t\t\theight: number;\n\t\t\t};\n\t\t\tillegal_info: {\n\t\t\t\tillegal_status: string;\n\t\t\t\tstatus: number;\n\t\t\t\tdesc: string;\n\t\t\t};\n\t\t\tlink: string;\n\t\t\tuser_info: {\n\t\t\t\tuserid: string;\n\t\t\t\tnickname: string;\n\t\t\t\timage: string;\n\t\t\t\tred_official_verify_type: number;\n\t\t\t};\n\t\t\txsec_token: string;\n\t\t\ttype: string;\n\t\t};\n\t\tcomment_info: {\n\t\t\tillegal_info: {\n\t\t\t\tstatus: number;\n\t\t\t\tdesc: string;\n\t\t\t\tillegal_status: string;\n\t\t\t};\n\t\t\tstatus: number;\n\t\t\tliked: boolean;\n\t\t\tlike_count: number;\n\t\t\tid: string;\n\t\t\tcontent: string;\n\t\t};\n\t\tliked: boolean;\n\t\ttime_flag: number;\n\t\ttype: string;\n\t\ttitle: string;\n\t\tscore: number;\n\t\ttrack_type: string;\n\t\tid: string;\n\t}[];\n\thas_more: boolean;\n\tstrCursor: string;\n}\n\nexport type PublishAction = CommonAction<searchXhsLikesParams, LikesDetail | Record<string, unknown>>;\n\nexport const searchXhsWebLikes: PublishAction = async (_task, params) => {\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://www.xiaohongshu.com/\",\n origin: \"https://www.xiaohongshu.com/\",\n };\n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n \n\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\tif (!a1Cookie) return { code: 400, message: \"账号数据异常,请重新绑定账号后重试。\", data: {} };\n\n\tconst xt = Date.now().toString();\n\tconst likesParams = {\n\t\tnum: params.num ?? 20,\n\t\tcursor: params.cursor ?? \"\",\n\t};\n\tconst fatchLikes = \"/api/sns/web/v1/you/likes\";\n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n const fatchLikesXsHeader = xsEncrypt.signHeadersGet(fatchLikes, recordCookie, \"xhs-pc-web\", likesParams);\n \n\tconst res = await http.api<LikesResponse>({\n\t\tmethod: \"get\",\n\t\turl: \"https://edith.xiaohongshu.com/api/sns/web/v1/you/likes\",\n\t\tparams: likesParams,\n\t\theaders: fatchLikesXsHeader,\n\t},{ retries: 3, retryDelay: 20, timeout: 3000 });\n\n const isSuccess = res.code === 0;\n\tconst message = `获取点赞收藏${isSuccess ? \"成功\" : `失败,原因:${res.msg}`}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n\tconst data = isSuccess ? res.data : {};\n\n\treturn response(isSuccess ? 0 : 400, message, data);\n};\n","import {type CommonAction, response, success} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../types\";\nimport { Http } from \"../../utils/http\";\nimport { Xhshow } from \"../../utils/xhsXsEncrypt\";\n// const GenXSCommon = require(\"../../utils/XhsXsCommonEnc.js\") as (a1cookie: string, x_t: string|number, x_s:string) => string;\n\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport interface searchXhsMentionsParams extends ActiomCommonParams {\n\tnum: number;\n\tcursor: string | null;\n}\n\nexport interface MentionsResponse {\n\tcode: number;\n\tsuccess: boolean;\n\tmsg: string;\n\tdata: MentionsDetail;\n}\n\nexport interface MentionsDetail {\n\tmessage_list: {\n\t\ttitle: string;\n\t\ttime: number;\n\t\tcomment_info: {\n\t\t\tillegal_info: {\n\t\t\t\tstatus: number;\n\t\t\t\tdesc: string;\n\t\t\t\tillegal_status: string;\n\t\t\t};\n\t\t\tstatus: number;\n\t\t\tliked: boolean;\n\t\t\tlike_count: number;\n\t\t\tid: string;\n\t\t\tcontent: string;\n\t\t};\n\t\ttype: string;\n\t\tscore: number;\n\t\tuser_info: {\n\t\t\tuserid: string;\n\t\t\tnickname: string;\n\t\t\timage: string;\n\t\t\tred_official_verify_type: number;\n\t\t\txsec_token: string;\n\t\t};\n\t\titem_info: {\n\t\t\ttype: string;\n\t\t\tcontent: string;\n\t\t\timage_info: {\n\t\t\t\twidth: number;\n\t\t\t\theight: number;\n\t\t\t\turl: string;\n\t\t\t};\n\t\t\tstatus: number;\n\t\t\tid: string;\n\t\t\timage: string;\n\t\t\tillegal_info: {\n\t\t\t\tstatus: number;\n\t\t\t\tdesc: string;\n\t\t\t\tillegal_status: string;\n\t\t\t};\n\t\t\tlink: string;\n\t\t\tuser_info: {\n\t\t\t\tuserid: string;\n\t\t\t\tnickname: string;\n\t\t\t\timage: string;\n\t\t\t\tred_official_verify_type: number;\n\t\t\t};\n\t\t\txsec_token: string;\n\t\t};\n\t\ttrack_type: string;\n\t\tliked: boolean;\n\t\ttime_flag: number;\n\t\tid: string;\n\t}[];\n\thas_more: boolean;\n\tstrCursor: string;\n}\n\nexport type PublishAction = CommonAction<searchXhsMentionsParams, MentionsDetail | Record<string, unknown>>;\n\nexport const searchXhsWebMentions: PublishAction = async (_task, params) => {\n\tconst headers= {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://www.xiaohongshu.com/\",\n\t\t\torigin: \"https://www.xiaohongshu.com/\",\n\t\t};\n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n\n\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\tif (!a1Cookie) return { code: 400, message: \"账号数据异常,请重新绑定账号后重试。\", data: {} };\n \n\tconst mentionsParams = {\n\t\tnum: params.num ?? 20,\n\t\tcursor: params.cursor ?? \"\",\n\t};\n\tconst fatchMentions = \"/api/sns/web/v1/you/mentions\";\n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n const fatchMentionsXsHeader = xsEncrypt.signHeadersGet(fatchMentions, recordCookie, \"xhs-pc-web\", mentionsParams);\n\n // const xscommon = GenXSCommon(a1Cookie, xt, xs)\n\tconst res = await http.api<MentionsResponse>({\n\t\tmethod: \"get\",\n\t\turl: \"https://edith.xiaohongshu.com/api/sns/web/v1/you/mentions\",\n\t\tparams: mentionsParams,\n\t\theaders: fatchMentionsXsHeader,\n\t},{ retries: 3, retryDelay: 20, timeout: 3000 });\n\tconst isSuccess = res.code === 0;\n\tconst message = `获取评论${isSuccess ? \"成功\" : `失败,原因:${res.msg}`}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n\tconst data = isSuccess ? res.data : {};\n\n\treturn response(isSuccess ? 0 : 400, message, data);\n};\n","import {type CommonAction, response, success} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../types\";\nimport {Http} from \"../../utils/http\";\n\nexport interface searchXiaohongshuUserArticleParams extends ActiomCommonParams {\n searchValue: string;\n}\n\nconst parseXhsDom = (domString: string) : {user: {userPageData:Record<string, unknown>, notes: Record<string, unknown>}; } => {\n const match = domString.match(/window\\.__INITIAL_STATE__\\s*=\\s*(\\{[\\s\\S]*\\})/);\n if (!match) {\n if(domString.indexOf(\"website-login/captcha\") !== -1) {\n throw new Error(\"当前信息需要登录后方可查看!\");\n }\n throw new Error(\"小红书页面数据检索失败!\");\n };\n const jsObjectStr = match[1];\n return new Function(`return ${jsObjectStr}`)();\n};\n\nexport type PublishAction = CommonAction<searchXiaohongshuUserArticleParams, Record<string, unknown>>;\n\nexport const searchXiaohongshuUserArticle: PublishAction = async (_task, params) => {\n const headers = {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n };\n \n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n\n // const a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n // if (!a1Cookie) return {code: 200, message: \"账号数据异常,请重新绑定账号后重试。\", data: []};\n if (params.searchValue.indexOf(\"user/profile\") === -1) return {code: 400, message: \"请输入正确的小红书用户主页链接地址!\", data: {}};\n\n const result = await http.api<string>({\n method: \"get\",\n url: params.searchValue,\n defaultErrorMsg: \"用户搜索异常,请稍后重试。\",\n },{ retries: 3, retryDelay: 20, timeout: 3000 });\n \n let INITIAL_STATE = {\n user: {userPageData: {}, notes: {}}\n }\n try{\n INITIAL_STATE = parseXhsDom(result);\n }catch (error){\n return response(400, (error as Error).message, {});\n }\n \n const isSuccess = INITIAL_STATE !== null;\n const message = `用户文章信息获取${isSuccess ? \"成功!\": \"失败,请检查!\"}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n\n return response( isSuccess ? 0 : 400, message, INITIAL_STATE );\n\n\n}","import type {SteelAction} from \"./index\";\nimport {\n type Page, \n type Response, \n type UserInfo, \n success\n} from \"@iflyrpa/share\";\n\nconst scanRetryMaxCount = 60; // 二维码扫描重试次数\n// 等待二维码验证结果最长时间\nconst waitQrcodeResultMaxTime = scanRetryMaxCount * 2 * 1000;\n\nexport const rpaAction: SteelAction = async (task, params) => {\n const reporter = task.reportService?.reportLoginStatus ?? (() => Promise.resolve());\n\n let page: Page;\n let statusMachine: string;\n let isSelfClosing = false;\n try {\n page = await task.createPage({\n url: \"https://mp.toutiao.com/auth/page/login\",\n });\n if (!task._session?.id) throw new Error(\"Session ID 不存在\");\n task._steelBrowser?.on('disconnected', () => {\n if (task.debug && isSelfClosing) {\n task.logger.info(\"执行结束,关闭浏览器!\")\n } else {\n task.logger.info(\"浏览器被手动释放或意外关闭!\")\n }\n });\n } catch (e) {\n return {code: 500, message: `浏览器启动失败: ${e}`, data: {}};\n }\n\n const pageInfo = await task._client?.sessions.liveDetails(task._session.id);\n const pageId = pageInfo?.pages[0].id ?? \"\";\n\n const baseHost = task._session.websocketUrl?.replace(/^wss?:\\/\\//, \"\") ?? \"\";\n const debugParams = new URLSearchParams({baseHost, pageId});\n const connectAddress = debugParams.toString();\n\n task.reportService?.settingSessionID?.(task._session?.id || \"\");\n\n await page.route(/\\/welcome.*\\.(png|mp4)$/i, route => route.abort());\n\n await reporter(0, '浏览器启动成功,请使用头条号App扫码登录......', {connectAddress});\n\n let userInfo: UserInfo = {uniqueId: \"\", avatar: \"\", name: \"\"}\n try {\n await new Promise<void>((resolve, reject) => {\n let finished = false;\n const timer = setTimeout(() => {\n cleanup(statusMachine);\n }, waitQrcodeResultMaxTime);\n\n const cleanup = (status?: unknown) => {\n if (finished) return; // 防止多次调用\n finished = true;\n clearTimeout(timer);\n page.off(\"response\", handleWebCommon);\n page.off(\"response\", handleCheckQR);\n if (status !== undefined) reject(status);\n };\n\n\n const handleWebCommon = async (resp: Response) => {\n if (resp.url().includes(\"/web/common\")) { // 登录成功后的第一个请求\n cleanup();\n const headers = resp.headers();\n const xmst = headers[\"x-ms-token\"];\n const date = headers[\"x-tt-timestamp\"];\n\n if (xmst && date) {\n const mstExpirDate = new Date(Number(date) * 1000 + 7 * 24 * 60 * 60 * 1000);\n const msToken = {\n name: \"msToken\",\n value: xmst,\n domain: \".bytedance.com\",\n expires: mstExpirDate.getTime() / 1000,\n httpOnly: true,\n path: \"/\",\n sameSite: \"None\" as const,\n secure: true,\n };\n await page.context().addCookies([msToken]);\n }\n\n resolve();\n } else if (resp.url().includes(\"/mp/agw/creator_center/user_info\")) { // 优先获取用户信息\n const jsonUserInfo = await resp.json();\n userInfo = {\n name: jsonUserInfo.name,\n avatar: jsonUserInfo.avatar_url,\n uniqueId: jsonUserInfo.user_id_str,\n };\n }\n };\n\n // 0=用户未扫码,5=用户扫码已超时,2=用户已扫码未确认\n const handleCheckQR = async (response: Response) => {\n try {\n if (response.url().includes(\"/check_qrconnect/\")) {\n const jsonResponse = await response.json();\n\n if (jsonResponse.error_code === 0 && jsonResponse.data?.status === \"3\") {\n // 扫码成功\n await reporter(0, \"扫码成功!\", {stage: \"scanQrcode\", connectAddress});\n\n page.on(\"response\", handleWebCommon);\n }\n\n statusMachine = jsonResponse.data?.status;\n }\n }catch (e){\n cleanup(e)\n }\n\n };\n\n // 在页面加载完成之前先注册监听,防止错过事件\n page.on(\"response\", handleCheckQR);\n });\n } catch (e) {\n const errMap = {\n \"1\": \"用户扫码已超时,请重试!\",\n \"2\": \"用户扫码后未点击确认,请重试!\",\n \"5\": \"二维码已失效,请重试!\",\n }\n isSelfClosing = true;\n const errorMessage = (typeof e === 'string' && errMap[e as keyof typeof errMap])\n ? errMap[e as keyof typeof errMap]\n : (e instanceof Error ? e.message : String(e));\n\n return {code: 500, message: errorMessage, data: {stage: 'scanQrcode', connectAddress}};\n }\n\n const cookieStr = JSON.stringify(await task._steelBrowserContext?.cookies());\n isSelfClosing=true;await page.close();\n\n return success({connectAddress, cookie: cookieStr, userInfo}, \"登陆成功!\");\n\n\n};","import type { SteelAction } from \"./index\";\nimport { TaskState, type UserInfo } from \"@iflyrpa/share\";\nimport type { Response } from \"playwright-core\";\nimport { ExecutionState } from \"../../types\";\n\nconst scanRetryMaxCount = 60; // 二维码扫描重试次数\nconst waitQrcodeResultMaxTime = scanRetryMaxCount * 2 * 1000; // 最长等待时间\n\nexport const rpaServer: SteelAction = async (task, params) => {\n\tconst updateTaskState = task.taskStageStore?.update?.bind(task.taskStageStore, task.taskId || \"\");\n\tlet executionState: ExecutionState | undefined = undefined;\n\n\tconst page = await task.createPage({\n\t\turl: \"https://mp.toutiao.com/auth/page/login\",\n\t});\n\n\ttask.steelBrowser?.on(\"disconnected\", () => {\n\t\texecutionState = ExecutionState.BROWSER_CLOSED;\n\t});\n\n\t// 拦截不必要的资源请求\n\t// await page.route(/\\/welcome.*\\.(png|mp4)$/i, (route) => route.abort());\n\n\tawait updateTaskState?.({\n\t\tstate: TaskState.WAIT_SCAN,\n\t\tconnectAddress: task.steelConnector?.getProxyUrl(task.sessionId || \"\", \"v1/sessions/debug\"),\n\t\tsessionId: task.sessionId,\n\t});\n\n\tlet userInfo: UserInfo = { uniqueId: \"\", avatar: \"\", name: \"\" };\n\n\tawait new Promise<void>((resolve, reject) => {\n\t\tlet finished = false;\n\n\t\tconst timer = setTimeout(async () => {\n\t\t\tcleanup();\n\t\t\texecutionState = ExecutionState.TIMEOUT;\n\t\t\tawait updateTaskState?.({\n\t\t\t\tstate: TaskState.TIMEOUT,\n\t\t\t\terror: \"等待扫码登录超时\",\n\t\t\t});\n\t\t\tresolve();\n\t\t}, waitQrcodeResultMaxTime);\n\n\t\tconst cleanup = () => {\n\t\t\tif (finished) return; // 防止多次调用\n\t\t\tfinished = true;\n\t\t\tclearTimeout(timer);\n\t\t\tpage.off(\"response\", handleWebCommon);\n\t\t\tpage.off(\"response\", handleCheckQR);\n\t\t\ttask.steelBrowser?.off(\"disconnected\", handleBrowserClosed);\n\t\t};\n\n\t\tconst handleBrowserClosed = () => {\n\t\t\tcleanup();\n\t\t\texecutionState = ExecutionState.BROWSER_CLOSED;\n\t\t\tresolve();\n\t\t};\n\n\t\tconst handleWebCommon = async (resp: Response) => {\n\t\t\ttry {\n\t\t\t\tconst url = resp.url();\n\n\t\t\t\t// 登录成功后的第一个请求\n\t\t\t\tif (url.includes(\"/web/common\")) {\n\t\t\t\t\tcleanup();\n\t\t\t\t\tawait updateTaskState?.({\n\t\t\t\t\t\tstate: TaskState.CONFIRMED,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst headers = resp.headers();\n\t\t\t\t\tconst xmst = headers[\"x-ms-token\"];\n\t\t\t\t\tconst date = headers[\"x-tt-timestamp\"];\n\n\t\t\t\t\tif (xmst && date) {\n\t\t\t\t\t\tconst mstExpirDate = new Date(Number(date) * 1000 + 7 * 24 * 60 * 60 * 1000);\n\t\t\t\t\t\tconst msToken = {\n\t\t\t\t\t\t\tname: \"msToken\",\n\t\t\t\t\t\t\tvalue: xmst,\n\t\t\t\t\t\t\tdomain: \".bytedance.com\",\n\t\t\t\t\t\t\texpires: mstExpirDate.getTime() / 1000,\n\t\t\t\t\t\t\thttpOnly: true,\n\t\t\t\t\t\t\tpath: \"/\",\n\t\t\t\t\t\t\tsameSite: \"None\" as const,\n\t\t\t\t\t\t\tsecure: true,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tawait page.context().addCookies([msToken]);\n\t\t\t\t\t}\n\n\t\t\t\t\texecutionState = ExecutionState.SUCCESS;\n\t\t\t\t\tresolve();\n\t\t\t\t} else if (url.includes(\"/mp/agw/creator_center/user_info\")) {\n\t\t\t\t\t// 优先获取用户信息\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst jsonUserInfo = await resp.json();\n\t\t\t\t\t\tuserInfo = {\n\t\t\t\t\t\t\tname: jsonUserInfo.name ?? \"\",\n\t\t\t\t\t\t\tavatar: jsonUserInfo.avatar_url ?? \"\",\n\t\t\t\t\t\t\tuniqueId: jsonUserInfo.user_id_str ?? \"\",\n\t\t\t\t\t\t};\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\ttask.logger.warn(\"无法解析用户信息:\", { url, error: e });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tcleanup();\n\t\t\t\treject(err);\n\t\t\t}\n\t\t};\n\n\t\t// 0=用户未扫码,5=用户扫码已超时,2=用户已扫码未确认,3=扫码成功\n\t\tconst handleCheckQR = async (response: Response) => {\n\t\t\ttry {\n\t\t\t\tconst url = response.url();\n\t\t\t\tif (!url.includes(\"/check_qrconnect/\")) return;\n\n\t\t\t\tlet jsonResponse: { error_code: number; data?: { status: string } };\n\t\t\t\ttry {\n\t\t\t\t\tconst text = await response.text();\n\t\t\t\t\tif (!text) {\n\t\t\t\t\t\ttask.logger.warn(\"Empty response body:\", { url });\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tjsonResponse = JSON.parse(text);\n\t\t\t\t} catch (e) {\n\t\t\t\t\ttask.logger.warn(\"Failed to parse json:\", { url, error: e });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n if (jsonResponse.error_code === 0 && jsonResponse.data?.status === \"2\") {\n // 扫码成功\n await updateTaskState?.({\n state: TaskState.SCANNED,\n });\n }\n\t\t\t\tif (jsonResponse.error_code === 0 && jsonResponse.data?.status === \"3\") {\n\t\t\t\t\tpage.off(\"response\", handleCheckQR);\n\t\t\t\t\tpage.on(\"response\", handleWebCommon);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tcleanup();\n\t\t\t\treject(err);\n\t\t\t}\n\t\t};\n\n\t\t// 在页面加载之前就注册监听,防止丢失请求\n\t\ttask.steelBrowser?.on(\"disconnected\", handleBrowserClosed);\n\t\tpage.on(\"response\", handleCheckQR);\n\t});\n\n\tif (executionState === undefined) return { code: 500, message: \"未知错误\", data: {} };\n\n\tswitch (executionState) {\n\t\tcase ExecutionState.BROWSER_CLOSED: {\n\t\t\tconst msg = \"浏览器已关闭,任务中断!\";\n\t\t\tawait updateTaskState?.({\n\t\t\t\tstate: TaskState.FAILED,\n\t\t\t\terror: \"浏览器已关闭\",\n\t\t\t});\n\t\t\treturn { code: 200, message: msg, data: {} };\n\t\t}\n\n\t\tcase ExecutionState.TIMEOUT: {\n\t\t\tconst msg = \"等待用户扫码登录超时!\";\n\t\t\tawait updateTaskState?.({\n\t\t\t\tstate: TaskState.TIMEOUT,\n\t\t\t\terror: msg,\n\t\t\t});\n\t\t\ttask.logger.info(msg);\n\t\t\treturn { code: 200, message: msg, data: {} };\n\t\t}\n\n\t\tcase ExecutionState.SUCCESS:\n\t\t\tawait updateTaskState?.({\n\t\t\t\tstate: TaskState.SUCCESS,\n\t\t\t\tresult: {\n\t\t\t\t\tcookie: JSON.stringify(await task.steelBrowserContext?.cookies()),\n\t\t\t\t\tuserInfo: userInfo,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tcode: 0,\n\t\t\t\tmessage: \"成功\",\n data: {\n cookie: JSON.stringify(await task.steelBrowserContext?.cookies()),\n userInfo,\n },\n\t\t\t};\n\t\tdefault:\n\t\t\t// 处理 RUNNING 和其他可能的状态\n\t\t\treturn { code: 500, message: \"任务执行中断\", data: {} };\n\t}\n};\n\n","import {CommonAction, success} from \"@iflyrpa/share\";\n\nimport { executeAction } from \"../../utils\";\nimport { rpaAction } from \"./rpa\";\nimport {ActionParams} from \"../../types\";\nimport {rpaServer} from \"./rpa-server\";\n\nexport type ToutiaoLoginParams = ActionParams;\n\nexport type SteelAction = CommonAction<ActionParams, Record<string, unknown>>;\n\nexport const toutiaoLogin: SteelAction = async (task, params) => {\n // params.actionType = \"rpa\";\n \n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn success({}, \"暂不支持mockApi\");\n\t} \n \n if( params.actionType === \"server\") {\n return rpaServer(task, params);\n }\n\n\treturn executeAction(rpaAction)(task, params);\n};\n","import type {SteelAction} from \"./index\";\nimport {\n type Page,\n type Response,\n success,\n type UserInfo\n} from \"@iflyrpa/share\";\n\nconst scanRetryMaxCount = 60; // 二维码扫描重试次数\nconst waitQrcodeResultMaxTime = scanRetryMaxCount * 2 * 1000; // 最长等待时间\n\nexport const rpaAction: SteelAction = async (task, params) => {\n const reporter = task.reportService?.reportLoginStatus ?? (() => Promise.resolve());\n let page: Page;\n let statusMachine: string ;\n let isSelfClosing = false;\n try {\n page = await task.createPage({\n url: \"https://mp.weixin.qq.com/cgi-bin/loginpage\",\n });\n if (!task._session?.id) throw new Error(\"Session ID 不存在\");\n task._steelBrowser?.on('disconnected', () => {\n if (task.debug && isSelfClosing) {\n task.logger.info(\"执行结束,关闭浏览器!\")\n } else {\n task.logger.info(\"浏览器被手动释放或意外关闭!\")\n }\n });\n } catch (e) {\n return { code: 500, message: `浏览器启动失败: ${e}`, data: {} };\n }\n\n const pageInfo = await task._client?.sessions.liveDetails(task._session.id);\n const pageId = pageInfo?.pages?.[0]?.id ?? \"\";\n\n const baseHost = task._session.websocketUrl?.replace(/^wss?:\\/\\//, \"\") ?? \"\";\n const connectAddress = new URLSearchParams({ baseHost, pageId }).toString();\n task.reportService?.settingSessionID?.(task._session?.id || \"\");\n\n await reporter(0, \"浏览器启动成功,请使用微信扫码登录……\", { connectAddress });\n\n let token: string | undefined;\n let userInfo: UserInfo = { uniqueId: \"\", avatar: \"\", name: \"\" };\n\n try {\n await new Promise<void>((resolve, reject) => {\n let finished = false;\n const timer = setTimeout(() => {\n cleanup(statusMachine);\n }, waitQrcodeResultMaxTime);\n\n const cleanup = (status?: unknown) => {\n if (finished) return; // 防止多次调用\n finished = true;\n clearTimeout(timer);\n page.off(\"response\", handleAfterLogin);\n page.off(\"response\", handleScanStatus);\n if (status !== undefined) reject(status);\n };\n\n\n const handleAfterLogin = async (resp: Response) => {\n try {\n const url = resp.url();\n\n // 登录成功跳转到公众号主页\n if (url.includes(\"/cgi-bin/home\")) {\n cleanup()\n const tokenMatch = url.match(/token=(\\d+)/);\n if (tokenMatch) token = tokenMatch[1];\n\n try {\n await page.waitForFunction(() => !!(window as unknown as Record<string, Record<string, unknown>>).wx?.commonData, {timeout: 5000});\n const commonData = await page.evaluate(() => (window as unknown as {\n wx: { commonData: { data: { \n nick_name: string;\n user_name: string;\n head_img: string;\n } } }\n }).wx.commonData);\n \n userInfo = {\n name: commonData?.data?.nick_name ?? \"\",\n uniqueId: commonData?.data?.user_name ?? \"\",\n avatar: commonData?.data?.head_img ?? \"\",\n };\n } catch (e) {\n console.warn(\"无法获取 commonData:\", e);\n }\n\n resolve();\n }\n } catch (e) {\n cleanup(e)\n }\n };\n\n // 0=用户未扫码, 4=用户已扫码未确认, 1=用户已确认登录\n const handleScanStatus = async (response: Response) => {\n try {\n const url = response.url();\n if (!url.includes(\"/cgi-bin/scanloginqrcode?action=ask\")) return;\n\n let json: Record<string, unknown>;\n try {\n const text = await response.text(); // 总是安全的\n if (!text) {\n console.warn(\"Empty response body:\", url);\n return;\n }\n\n json = JSON.parse(text); // 手动解析\n } catch (e) {\n console.warn(\"Failed to parse json:\", url, e);\n return;\n }\n const status = json.status;\n\n // 状态码说明:\n // 0=未扫码, 1=已确认登录, 4=已扫码未确认\n if (status === 1) {\n page.off(\"response\", handleScanStatus);\n page.on(\"response\", handleAfterLogin);\n await reporter(0, \"扫码成功!\", { stage: \"scanQrcode\", connectAddress });\n }\n \n statusMachine = String(status);\n } catch (e) {\n cleanup(e)\n }\n };\n\n // ✅ 提前注册监听,防止漏掉响应\n page.on(\"response\", handleScanStatus);\n });\n } catch (e) {\n const errMap: Record<string | number, string> = {\n \"0\": \"扫码超时,请重试!\",\n \"4\": \"已扫码但未确认,请重试!\",\n };\n isSelfClosing = true;\n const errorMessage = (typeof e === 'string' && errMap[e as keyof typeof errMap])\n ? errMap[e as keyof typeof errMap]\n : (e instanceof Error ? e.message : String(e));\n\n return {code: 500, message: errorMessage, data: {stage: 'scanQrcode', connectAddress}};\n }\n\n const cookie = JSON.stringify(await task._steelBrowserContext?.cookies());\n isSelfClosing = true;await page.close();\n\n return success({ connectAddress, token, cookie, userInfo }, \"登录成功!\");\n};\n","import type { SteelAction } from \"./index\";\nimport { TaskState, type UserInfo } from \"@iflyrpa/share\";\nimport type { Response } from \"playwright-core\";\nimport { ExecutionState } from \"../../types\";\n\nconst scanRetryMaxCount = 60; // 二维码扫描重试次数\nconst waitQrcodeResultMaxTime = scanRetryMaxCount * 2 * 1000; // 最长等待时间\n\nexport const rpaServer: SteelAction = async (task, params) => {\n\tconst updateTaskState = task.taskStageStore?.update?.bind(task.taskStageStore, task.taskId || \"\");\n\tlet executionState: ExecutionState | undefined = undefined;\n\n\tconst page = await task.createPage({\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/loginpage\",\n\t});\n\n\ttask.steelBrowser?.on(\"disconnected\", () => {\n\t\texecutionState = ExecutionState.BROWSER_CLOSED;\n\t});\n\n\tawait updateTaskState?.({\n\t\tstate: TaskState.WAIT_SCAN,\n\t\tconnectAddress: task.steelConnector?.getProxyUrl(task.sessionId || \"\", \"v1/sessions/debug\"),\n\t\tsessionId: task.sessionId,\n\t});\n\n\tlet token: string | undefined;\n\tlet userInfo: UserInfo = { uniqueId: \"\", avatar: \"\", name: \"\" };\n\n\tawait new Promise<void>((resolve, reject) => {\n\t\tlet finished = false;\n\n\t\tconst timer = setTimeout(async () => {\n\t\t\tcleanup();\n\t\t\texecutionState = ExecutionState.TIMEOUT;\n\t\t\tawait updateTaskState?.({\n\t\t\t\tstate: TaskState.TIMEOUT,\n\t\t\t\terror: \"等待扫码登录超时\",\n\t\t\t});\n\t\t\tresolve();\n\t\t}, waitQrcodeResultMaxTime);\n\n\t\tconst cleanup = () => {\n\t\t\tif (finished) return; // 防止多次调用\n\t\t\tfinished = true;\n\t\t\tclearTimeout(timer);\n\t\t\tpage.off(\"response\", handleAfterLogin);\n\t\t\tpage.off(\"response\", handleScanStatus);\n\t\t\ttask.steelBrowser?.off(\"disconnected\", handleBrowserClosed);\n\t\t};\n\n\t\tconst handleBrowserClosed = () => {\n\t\t\tcleanup();\n\t\t\texecutionState = ExecutionState.BROWSER_CLOSED;\n\t\t\tresolve();\n\t\t};\n\n\t\tconst handleAfterLogin = async (resp: Response) => {\n\t\t\ttry {\n\t\t\t\tconst url = resp.url();\n\n\t\t\t\t// 登录成功跳转到公众号主页\n\t\t\t\tif (url.includes(\"/cgi-bin/home\")) {\n\t\t\t\t\tcleanup();\n\t\t\t\t\tawait updateTaskState?.({\n\t\t\t\t\t\tstate: TaskState.CONFIRMED,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst tokenMatch = url.match(/token=(\\d+)/);\n\t\t\t\t\tif (tokenMatch) token = tokenMatch[1];\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait page.waitForFunction(\n\t\t\t\t\t\t\t() => !!(window as unknown as Record<string, Record<string, unknown>>).wx?.commonData,\n\t\t\t\t\t\t\t{ timeout: 10000 }\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst commonData = await page.evaluate(\n\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\twindow as unknown as {\n\t\t\t\t\t\t\t\t\t\twx: {\n\t\t\t\t\t\t\t\t\t\t\tcommonData: {\n\t\t\t\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tnick_name: string;\n\t\t\t\t\t\t\t\t\t\t\t\t\tuser_name: string;\n\t\t\t\t\t\t\t\t\t\t\t\t\thead_img: string;\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t).wx.commonData\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tuserInfo = {\n\t\t\t\t\t\t\tname: commonData?.data?.nick_name ?? \"\",\n\t\t\t\t\t\t\tuniqueId: commonData?.data?.user_name ?? \"\",\n\t\t\t\t\t\t\tavatar: commonData?.data?.head_img ?? \"\",\n\t\t\t\t\t\t};\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\ttask.logger.warn(\"无法获取 commonData:\", { error: e });\n\t\t\t\t\t}\n\n\t\t\t\t\texecutionState = ExecutionState.SUCCESS;\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tcleanup();\n\t\t\t\treject(err);\n\t\t\t}\n\t\t};\n\n\t\t// 0=用户未扫码, 4=用户已扫码未确认, 1=用户已确认登录\n\t\tconst handleScanStatus = async (response: Response) => {\n\t\t\ttry {\n\t\t\t\tconst url = response.url();\n\t\t\t\tif (!url.includes(\"/cgi-bin/scanloginqrcode?action=ask\")) return;\n\n\t\t\t\tlet jsonResponse: Record<string, unknown>;\n\t\t\t\ttry {\n\t\t\t\t\tconst text = await response.text(); // 总是安全的\n\t\t\t\t\tif (!text) {\n\t\t\t\t\t\ttask.logger.warn(\"Empty response body:\", { url });\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tjsonResponse = JSON.parse(text); // 手动解析\n\t\t\t\t} catch (e) {\n\t\t\t\t\ttask.logger.warn(\"Failed to parse json:\", { url, error: e });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst status = jsonResponse.status;\n\n\t\t\t\t// 状态码说明:\n\t\t\t\t// 0=未扫码, 1=已确认登录, 4=已扫码未确认\n\t\t\t\tif (status === 1 || status === 4) {\n\t\t\t\t\tif (status === 4) {\n\t\t\t\t\t\tawait updateTaskState?.({\n\t\t\t\t\t\t\tstate: TaskState.SCANNED,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tpage.off(\"response\", handleScanStatus);\n\t\t\t\t\tpage.on(\"response\", handleAfterLogin);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tcleanup();\n\t\t\t\treject(err);\n\t\t\t}\n\t\t};\n\n\t\t// 在页面加载之前就注册监听,防止丢失请求\n\t\ttask.steelBrowser?.on(\"disconnected\", handleBrowserClosed);\n\t\tpage.on(\"response\", handleScanStatus);\n\t});\n\n\tif (executionState === undefined) return { code: 500, message: \"未知错误\", data: {} };\n\n\tswitch (executionState) {\n\t\tcase ExecutionState.BROWSER_CLOSED: {\n\t\t\tconst msg = \"浏览器已关闭,任务中断!\";\n\t\t\tawait updateTaskState?.({\n\t\t\t\tstate: TaskState.FAILED,\n\t\t\t\terror: \"浏览器已关闭\",\n\t\t\t});\n\t\t\treturn { code: 200, message: msg, data: {} };\n\t\t}\n\n\t\tcase ExecutionState.TIMEOUT: {\n\t\t\tconst msg = \"等待用户扫码登录超时!\";\n\t\t\tawait updateTaskState?.({\n\t\t\t\tstate: TaskState.TIMEOUT,\n\t\t\t\terror: msg,\n\t\t\t});\n\t\t\ttask.logger.info(msg);\n\t\t\treturn { code: 200, message: msg, data: {} };\n\t\t}\n\n\t\tcase ExecutionState.SUCCESS:\n\t\t\tawait updateTaskState?.({\n\t\t\t\tstate: TaskState.SUCCESS,\n result: {\n cookie: JSON.stringify(await task.steelBrowserContext?.cookies()),\n token,\n userInfo: userInfo,\n },\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tcode: 0,\n\t\t\t\tmessage: \"成功\",\n data:{\n cookie: JSON.stringify(await task.steelBrowserContext?.cookies()),\n token,\n userInfo,\n },\n\t\t\t};\n\t\tdefault:\n\t\t\t// 处理 RUNNING 和其他可能的状态\n\t\t\treturn { code: 500, message: \"任务执行中断\", data: {} };\n\t}\n};\n\n","import {CommonAction, success} from \"@iflyrpa/share\";\n\nimport { executeAction } from \"../../utils\";\nimport { rpaAction } from \"./rpa\";\nimport {ActionParams} from \"../../types\";\nimport {rpaServer} from \"./rpa-server\";\n\nexport type WeixinLoginParams = ActionParams;\n\nexport type SteelAction = CommonAction<ActionParams, Record<string, unknown>>;\n\nexport const weixinLogin: SteelAction = async (task, params) => {\n // params.actionType = \"rpa\";\n \n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn success({}, \"暂不支持mockApi\");\n\t} \n \n if( params.actionType === \"server\") {\n return rpaServer(task, params);\n }\n\n\treturn executeAction(rpaAction)(task, params);\n};\n","import type {SteelAction} from \"./index\";\nimport {type Page, success, type UserInfo} from \"@iflyrpa/share\";\nimport type {Response} from \"playwright-core\";\nconst encode_mnsv2 = require('../../utils/xhs_ob/x_s.encoder.js') as (mnsv2: string, platform: string, req_type: string) => string;\n\nconst scanRetryMaxCount = 60; // 二维码扫描重试次数\n// 等待二维码验证结果最长时间\nconst waitQrcodeResultMaxTime = scanRetryMaxCount * 2 * 1000;\n\ninterface InitialState {\n user?: {\n userInfo?: {\n _rawValue?: {\n id: number;\n nickname: string;\n images?: string;\n userId?: string;\n };\n };\n };\n}\n\nexport const rpaAction: SteelAction = async (task, params) => {\n const reporter = task.reportService?.reportLoginStatus ?? (() => Promise.resolve());\n\n let page: Page;\n let statusMachine = \"0\";\n let isSelfClosing = false;\n try {\n page = await task.createPage({\n url: \"https://www.xiaohongshu.com/login\",\n });\n if (!task._session?.id) throw new Error(\"Session ID 不存在\");\n task._steelBrowser?.on('disconnected', () => {\n if(task.debug && isSelfClosing){\n task.logger.info(\"执行结束,关闭浏览器!\")\n }else {\n task.logger.info(\"浏览器被手动释放或意外关闭!\")\n }\n });\n\n } catch (e) {\n task.logger.error(\"浏览器启动失败\", e);\n return {code: 500, message: `浏览器启动失败: ${e}`, data: {}};\n }\n \n\n const pageInfo = await task._client?.sessions.liveDetails(task._session.id);\n const pageId = pageInfo?.pages[0].id ?? \"\";\n\n const baseHost = task._session.websocketUrl?.replace(/^wss?:\\/\\//, \"\") ?? \"\";\n const debugParams = new URLSearchParams({baseHost, pageId});\n const connectAddress = debugParams.toString();\n\n task.reportService?.settingSessionID?.(task._session?.id || \"\");\n \n await reporter(0, '浏览器启动成功,请使用小红书App扫码登录......', {connectAddress});\n \n let userInfo: UserInfo = {uniqueId: \"\", avatar: \"\", name: \"\"}\n try {\n await new Promise<void>((resolve, reject) => {\n let finished = false;\n const timer = setTimeout(() => {\n cleanup(statusMachine);\n }, waitQrcodeResultMaxTime);\n\n const cleanup = (status?: unknown) => {\n if (finished) return; // 防止多次调用\n finished = true;\n clearTimeout(timer);\n page.off(\"response\", handleWebCommon);\n page.off(\"response\", handleCheckQR);\n if (status !== undefined) reject(status);\n };\n\n const handleWebCommon = async (resp: Response) => {\n try {\n const url = resp.url();\n\n // 登录成功后会触发 homefeed 请求\n if (url.includes(\"/explore\") && resp.request().method() === \"GET\" && resp.status() === 200) {\n cleanup();\n\n await page.waitForFunction(() => typeof (window as unknown as {mnsv2: unknown}).mnsv2 === 'function', {timeout: 10000});\n const ticket_mnsv2 = await page.evaluate( // 调用浏览器环境获取加密参数\n ({c, d}: { c: string; d: string }) => {\n if (typeof (window as unknown as {mnsv2: unknown}).mnsv2 === 'function') {\n return (window as unknown as { mnsv2: (...args: unknown[] ) => string}).mnsv2(c, d);\n }\n return 'mnsv2 未定义';\n },\n {\n c: '/api/cas/customer/web/service-ticket{\"service\":\"https://creator.xiaohongshu.com\",\"source\":\"official\",\"type\":\"tgt\"}',\n d: '71bcd9dc89f6c256ead6cbe2b0a9793c' // md5\n }\n );\n\n const XS = encode_mnsv2(ticket_mnsv2, \"Windows\", \"object\");\n\n const createrLogin = await page.request.post(\"https://customer.xiaohongshu.com/api/cas/customer/web/service-ticket\", {\n headers: {\n \"x-s\": XS,\n \"x-t\": Date.now().toString(),\n \"referer\": \"https://creator.xiaohongshu.com/\",\n \"origin\": \"https://creator.xiaohongshu.com\",\n \"cookie\": (await task._steelBrowserContext?.cookies())?.map(c => `${c.name}=${c.value}`).join(';')|| \"\",\n },\n data: {\n service: \"https://creator.xiaohongshu.com\",\n source: \"official\",\n type: \"tgt\"\n }\n });\n\n if (createrLogin.ok()) {\n userInfo = await page.evaluate(() => {\n const raw = (window as unknown as {\n __INITIAL_STATE__?: InitialState\n }).__INITIAL_STATE__\n ?.user?.userInfo?._rawValue;\n\n return {\n name: raw?.nickname ?? raw?.nickname ?? '',\n avatar: raw?.images ?? raw?.images ?? '',\n uniqueId: raw?.userId ?? raw?.userId ?? '',\n };\n });\n await reporter(0, \"扫码成功!\", {stage: 'scanQrcode', connectAddress});\n }\n\n resolve();\n }\n \n } catch (err) {\n task.logger.error(\"监听登录结果出现异常\", err);\n cleanup(err)\n }\n };\n\n // 0=用户未扫码,1=用户已扫码未确认,3=二维码过期\n const handleCheckQR = async (response: Response) => {\n try {\n const url = response.url();\n if (!url.includes(\"/login/qrcode/status\") || response.request().method() !== \"GET\") return;\n\n let jsonResponse : {code: number,data: {code_status: number, login_info: { user_id: string}}};\n try {\n const text = await response.text(); // 总是安全的\n if (!text) {\n console.warn(\"Empty response body:\", url);\n return;\n }\n\n jsonResponse = JSON.parse(text); // 手动解析\n } catch (e) {\n console.warn(\"Failed to parse json:\", url, e);\n return;\n }\n const codeStatus = jsonResponse.data?.code_status;\n\n // codeStatus : 1为小红书扫码成功,2为微信扫码成功,并且同时返回登陆信息\n if (jsonResponse.code === 0 && (codeStatus === 1 || codeStatus === 2)) {\n if(codeStatus === 2) userInfo.uniqueId = jsonResponse.data.login_info.user_id;\n task.debug && task.logger.info(\"扫码成功,开始监听用户信息...\")\n \n page.off(\"response\", handleCheckQR);\n page.on(\"response\", handleWebCommon);\n }\n statusMachine = String(codeStatus)\n\n } catch (err) {\n task.logger.error(\"用户信息获取错误\", err)\n cleanup(err);\n }\n };\n \n // 在页面加载之前就注册监听,防止丢失请求\n page.on(\"response\", handleCheckQR);\n\n });\n } catch (e) {\n const errMap = {\n \"0\": \"用户扫码已超时,请重试!\",\n \"1\": \"用户扫码后未点击确认,请重试!\",\n \"3\": \"二维码已过期,请重试!\"\n }\n isSelfClosing = true;\n // 如果是扫码状态错误,使用 errMap;否则直接反映实际错误\n const errorMessage = (typeof e === 'string' && errMap[e as keyof typeof errMap])\n ? errMap[e as keyof typeof errMap]\n : (e instanceof Error ? e.message : String(e));\n \n return {code: 500, message: errorMessage, data: {stage: 'scanQrcode', connectAddress}};\n }\n\n const cookie = JSON.stringify(await task._steelBrowserContext?.cookies())\n isSelfClosing = true; await page.close();\n\n return success({connectAddress, cookie, userInfo}, \"登陆成功!\");\n};","import type { SteelAction } from \"./index\";\nimport { TaskState, type UserInfo } from \"@iflyrpa/share\";\nimport type { Response } from \"playwright-core\";\nconst encode_mnsv2 = require(\"../../utils/xhs_ob/x_s.encoder.js\") as (\n\tmnsv2: string,\n\tplatform: string,\n\treq_type: string,\n) => string;\n\nimport {ExecutionState} from \"../../types\"\n\nconst scanRetryMaxCount = 60; // 二维码扫描重试\n// 等待二维码验证结果最长时间\nconst waitQrcodeResultMaxTime = scanRetryMaxCount * 2 * 1000;\n\ninterface InitialState {\n\tuser?: {\n\t\tuserInfo?: {\n\t\t\t_rawValue?: {\n\t\t\t\tid: number;\n\t\t\t\tnickname: string;\n\t\t\t\timages?: string;\n\t\t\t\tuserId?: string;\n\t\t\t};\n\t\t};\n\t};\n}\n\nexport const rpaServer: SteelAction = async (task, params) => {\n\tconst updateTaskState = task.taskStageStore?.update?.bind(task.taskStageStore, task.taskId || \"\");\n let executionState: ExecutionState| undefined = undefined;\n \n\tconst page = await task.createPage({\n\t\turl: \"https://www.xiaohongshu.com/login\",\n\t});\n \n\n task.steelBrowser?.on(\"disconnected\", () => {\n executionState = ExecutionState.BROWSER_CLOSED;\n })\n\n\tawait updateTaskState?.({\n\t\tstate: TaskState.WAIT_SCAN,\n\t\tconnectAddress: task.steelConnector?.getProxyUrl(task.sessionId || \"\", \"v1/sessions/debug\"),\n\t\tsessionId: task.sessionId,\n\t});\n\n\tlet userInfo: UserInfo = { uniqueId: \"\", avatar: \"\", name: \"\" };\n\tawait new Promise<void>((resolve, reject) => {\n\t\tlet finished = false;\n\n const timer = setTimeout(async () => {\n if (finished) return; // 检查是否已经完成\n cleanup();\n executionState = ExecutionState.TIMEOUT;\n await updateTaskState?.({\n state: TaskState.TIMEOUT,\n error: \"等待扫码登录超时\",\n });\n resolve();\n }, waitQrcodeResultMaxTime);\n\n\t\tconst cleanup = () => {\n\t\t\tif (finished) return; // 防止多次调用\n\t\t\tfinished = true;\n\t\t\tclearTimeout(timer);\n\t\t\tpage.off(\"response\", handleWebCommon);\n\t\t\tpage.off(\"response\", handleCheckQR);\n task.steelBrowser?.off(\"disconnected\", handleBrowserClosed);\n\t\t};\n\n const handleBrowserClosed = () => {\n cleanup();\n executionState = ExecutionState.BROWSER_CLOSED;\n resolve();\n };\n\n\t\tconst handleWebCommon = async (resp: Response) => {\n\t\t\ttry {\n\t\t\t\tconst url = resp.url();\n\n\t\t\t\t// 登录成功后会触发 homefeed 请求\n\t\t\t\tif (url.includes(\"/explore\") && resp.request().method() === \"GET\" && resp.status() === 200) {\n\t\t\t\t\tcleanup();\n await updateTaskState?.({\n state: TaskState.CONFIRMED,\n });\n\n\t\t\t\t\tawait page.waitForFunction(() => typeof (window as unknown as { mnsv2: unknown }).mnsv2 === \"function\", {\n\t\t\t\t\t\ttimeout: 10000,\n\t\t\t\t\t});\n\t\t\t\t\tconst ticket_mnsv2 = await page.evaluate(\n\t\t\t\t\t\t// 调用浏览器环境获取加密参数\n\t\t\t\t\t\t({ c, d }: { c: string; d: string }) => {\n\t\t\t\t\t\t\tif (typeof (window as unknown as { mnsv2: unknown }).mnsv2 === \"function\") {\n\t\t\t\t\t\t\t\treturn (window as unknown as { mnsv2: (...args: unknown[]) => string }).mnsv2(c, d);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn \"mnsv2 未定义\";\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tc: '/api/cas/customer/web/service-ticket{\"service\":\"https://creator.xiaohongshu.com\",\"source\":\"official\",\"type\":\"tgt\"}',\n\t\t\t\t\t\t\td: \"71bcd9dc89f6c256ead6cbe2b0a9793c\", // md5\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\tconst XS = encode_mnsv2(ticket_mnsv2, \"Windows\", \"object\");\n\n\t\t\t\t\tconst createrLogin = await page.request.post(\n\t\t\t\t\t\t\"https://customer.xiaohongshu.com/api/cas/customer/web/service-ticket\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\"x-s\": XS,\n\t\t\t\t\t\t\t\t\"x-t\": Date.now().toString(),\n\t\t\t\t\t\t\t\treferer: \"https://creator.xiaohongshu.com/\",\n\t\t\t\t\t\t\t\torigin: \"https://creator.xiaohongshu.com\",\n\t\t\t\t\t\t\t\tcookie:\n\t\t\t\t\t\t\t\t\t(await task._steelBrowserContext?.cookies())?.map((c) => `${c.name}=${c.value}`).join(\";\") || \"\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tservice: \"https://creator.xiaohongshu.com\",\n\t\t\t\t\t\t\t\tsource: \"official\",\n\t\t\t\t\t\t\t\ttype: \"tgt\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\tif (createrLogin.ok()) {\n\t\t\t\t\t\tuserInfo = await page.evaluate(() => {\n\t\t\t\t\t\t\tconst raw = (\n\t\t\t\t\t\t\t\twindow as unknown as {\n\t\t\t\t\t\t\t\t\t__INITIAL_STATE__?: InitialState;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t).__INITIAL_STATE__?.user?.userInfo?._rawValue;\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tname: raw?.nickname ?? raw?.nickname ?? \"\",\n\t\t\t\t\t\t\t\tavatar: raw?.images ?? raw?.images ?? \"\",\n\t\t\t\t\t\t\t\tuniqueId: raw?.userId ?? raw?.userId ?? \"\",\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n executionState = ExecutionState.SUCCESS;\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tcleanup();\n\t\t\t\treject(err);\n\t\t\t}\n\t\t};\n\n\t\t// 0=用户未扫码,1=用户已扫码未确认,3=二维码过期\n\t\tconst handleCheckQR = async (response: Response) => {\n\t\t\ttry {\n\t\t\t\tconst url = response.url();\n\t\t\t\tif (!url.includes(\"/login/qrcode/status\") || response.request().method() !== \"GET\") return;\n\n\t\t\t\tlet jsonResponse: { code: number; data: { code_status: number; login_info: { user_id: string } } };\n\t\t\t\ttry {\n\t\t\t\t\tconst text = await response.text(); // 总是安全的\n\t\t\t\t\tif (!text) {\n\t\t\t\t\t\ttask.logger.warn(\"Empty response body:\", {url});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tjsonResponse = JSON.parse(text); // 手动解析\n\t\t\t\t} catch (e) {\n\t\t\t\t\ttask.logger.warn(\"Failed to parse json:\", {url, erroe: e});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst codeStatus = jsonResponse.data?.code_status;\n\n\t\t\t\t// codeStatus : 1为小红书扫码成功,2为微信扫码成功,并且同时返回登陆信息\n\t\t\t\tif (jsonResponse.code === 0 && (codeStatus === 1 || codeStatus === 2)) {\n\t\t\t\t\tif (codeStatus === 2) userInfo.uniqueId = jsonResponse.data.login_info.user_id;\n\n await updateTaskState?.({\n state: TaskState.SCANNED,\n result: {\n userInfo,\n },\n });\n\n\t\t\t\t\tpage.off(\"response\", handleCheckQR);\n\t\t\t\t\tpage.on(\"response\", handleWebCommon);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tcleanup();\n\t\t\t\treject(err);\n\t\t\t}\n };\n\n // 在页面加载之前就注册监听,防止丢失请求\n task.steelBrowser?.on(\"disconnected\", handleBrowserClosed);\n page.on(\"response\", handleCheckQR);\n\t});\n\n if(executionState === undefined) return {code: 500, message: \"未知错误\", data: {}};\n \n switch (executionState) {\n case ExecutionState.BROWSER_CLOSED:{\n const msg = \"浏览器已关闭,任务中断!\"\n await updateTaskState?.({\n state: TaskState.FAILED,\n error: \"浏览器已关闭\",\n });\n return { code: 200, message: msg, data:{}};\n }\n\n case ExecutionState.TIMEOUT: {\n const msg = '等待用户扫码登录超时!'\n await updateTaskState?.({\n state: TaskState.TIMEOUT,\n error: msg,\n });\n task.logger.info(msg);\n return {code: 200, message: msg, data: {}};\n }\n\n case ExecutionState.SUCCESS:\n await updateTaskState?.({\n state: TaskState.SUCCESS,\n result: {\n cookie: JSON.stringify(await task.steelBrowserContext?.cookies()),\n userInfo: userInfo,\n },\n });\n return {\n code: 0,\n message: \"成功\",\n data: {\n cookie: JSON.stringify(await task.steelBrowserContext?.cookies()),\n userInfo,\n }\n };\n default:\n // 处理 RUNNING 和其他可能的状态\n return {code: 500, message: \"任务执行中断\", data: {}};\n }\n \n};\n","import {CommonAction, success} from \"@iflyrpa/share\";\n\nimport { executeAction } from \"../../utils\";\nimport { rpaAction } from \"./rpa\";\nimport {ActionParams} from \"../../types\";\nimport {rpaServer} from \"./rpa-server\";\n\nexport type XiaohongshuLoginParams = ActionParams;\n\nexport type SteelAction = CommonAction<ActionParams, Record<string, unknown>>;\n\nexport const xiaohongshuLogin: SteelAction = async (task, params) => {\n // params.actionType = \"rpa\";\n \n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn success({}, \"暂不支持mockApi\");\n\t}\n \n if( params.actionType === \"server\") {\n return rpaServer(task, params);\n }\n\n\treturn executeAction(rpaAction)(task, params);\n};\n","import {type CommonAction, response} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../types\";\nimport { Http } from \"../../utils/http\";\nimport { Xhshow } from \"../../utils/xhsXsEncrypt\";\n\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport interface xiaohongshuWebMsgReadParams extends ActiomCommonParams {\n\ttype: \"mentions\" | \"likes\" | \"connections\"; // 消息类型\n}\nexport interface ReadResponse {\n\tcode: number;\n\tsuccess: boolean;\n\tmsg: string;\n}\n\nexport type PublishAction = CommonAction<xiaohongshuWebMsgReadParams, ReadResponse | Record<string, never>>;\n\nexport const xiaohongshuWebMsgRead: PublishAction = async (_task, params) => {\n\tconst headers = {\n\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\treferer: \"https://www.xiaohongshu.com/\",\n\t\torigin: \"https://www.xiaohongshu.com/\",\n\t};\n\n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n\n\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\tif (!a1Cookie) return { code: 400, message: \"账号数据异常,请重新绑定账号后重试。\", data: [] };\n\tif (!params.type) {\n\t\treturn { code: 400, message: \"参数缺失,请检查后重试!\", data: {} };\n\t}\n \n\tconst replyParams = {\n\t\ttype: params.type,\n\t};\n\n\tconst fatchMentions = \"/api/sns/web/v1/message/read\";\n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n const fatchMentionsXsHeader = xsEncrypt.signHeadersPost(fatchMentions, recordCookie, \"xhs-pc-web\", replyParams);\n \n\tconst res = await http.api<ReadResponse>(\n\t\t{\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://edith.xiaohongshu.com/api/sns/web/v1/message/read\",\n\t\t\tdata: replyParams,\n\t\t\theaders: fatchMentionsXsHeader,\n\t\t},\n\t\t{ retries: 3, retryDelay: 20, timeout: 3000 },\n\t);\n\n const isSuccess = res.code === 0;\n const message = `Read指定Tab${isSuccess ? \"成功\" : `失败,原因:${res.msg}`}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n const data = isSuccess ? res.success : {};\n\n return response(isSuccess ? 0 : 400, message, data);\n};\n","import {type CommonAction, response} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../types\";\nimport {Http} from \"../../utils/http\";\nimport {Xhshow} from \"../../utils/xhsXsEncrypt\";\n\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport interface xiaohongshuWebMsgReplyParams extends ActiomCommonParams {\n\tat_users?: { user_id: string; nickname: string }[]; // 被@用户ID列表\n\tnote_id: string; // 笔记ID\n\ttarget_comment_id: string; // 目标评论ID\n\tcontent: string; // 回复内容\n}\n\nexport interface ReplyResponse {\n\tcode: number;\n\tsuccess: boolean;\n\tmsg: string;\n\tdata: ReplyDataDetail;\n}\n\nexport interface ReplyDataDetail {\n\ttime: number;\n\ttoast: string;\n\tcomment: {\n\t\tid: string;\n\t\tnote_id: string;\n\t\tstatus: number;\n\t\tcontent: string;\n\t\tliked: boolean;\n\t\tlike_count: string;\n\t\tshow_tags: string[];\n\t\tip_location: string;\n\t\ttarget_comment: {\n\t\t\tid: string;\n\t\t\tuser_info: {\n\t\t\t\tuser_id: string;\n\t\t\t\tnickname: string;\n\t\t\t\timage: string;\n\t\t\t};\n\t\t};\n\t\tuser_info: {\n\t\t\tnickname: string;\n\t\t\timage: string;\n\t\t\tuser_id: string;\n\t\t};\n\t\tcreate_time: number;\n\t};\n}\n\nexport type PublishAction = CommonAction<xiaohongshuWebMsgReplyParams, ReplyDataDetail | Record<string, never>>;\n\nexport const xiaohongshuWebMsgReply: PublishAction = async (_task, params) => {\n\tconst headers = {\n\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\treferer: \"https://www.xiaohongshu.com/\",\n\t\torigin: \"https://www.xiaohongshu.com/\",\n\t};\n \n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n\n\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\tif (!a1Cookie) return { code: 400, message: \"账号数据异常,请重新绑定账号后重试。\", data: [] };\n\tif (!params.note_id || !params.target_comment_id || !params.content) {\n\t\treturn { code: 400, message: \"参数缺失,请检查后重试!\", data: {} };\n\t}\n \n\tconst replyParams = {\n\t\tat_users: params.at_users ?? [],\n\t\tcontent: params.content,\n\t\tnote_id: params.note_id,\n\t\ttarget_comment_id: params.target_comment_id,\n\t};\n\n\tconst replyPath = \"/api/sns/web/v1/comment/post\";\n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n const replyXsHeader = xsEncrypt.signHeadersPost(replyPath, recordCookie, \"xhs-pc-web\", replyParams);\n \n\tconst res = await http\n\t\t.api<ReplyResponse>(\n\t\t\t{\n\t\t\t\tmethod: \"post\",\n\t\t\t\turl: \"https://edith.xiaohongshu.com/api/sns/web/v1/comment/post\",\n\t\t\t\tdata: replyParams,\n\t\t\t\theaders: replyXsHeader,\n\t\t\t},\n\t\t\t{ retries: 3, retryDelay: 20, timeout: 3000 },\n\t\t)\n\n const isSuccess = res.code === 0;\n const message = `评论回复${isSuccess ? \"成功\" : `失败,原因:${res.msg}`}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n const data = isSuccess ? res.data : {};\n\n return response(isSuccess ? 0 : 400, message, data);\n};\n","import {type CommonAction, response, success} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../types\";\nimport { Http } from \"../../utils/http\";\nimport { Xhshow } from \"../../utils/xhsXsEncrypt\";\n\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport interface xiaohongshuWebRelationParams extends ActiomCommonParams {\n\taction: \"follow\" | \"unfollow\"; // 关系操作类型\n\ttarget_user_id: string; // 目标用户ID\n}\n\nexport interface RelationResponse {\n\tcode: number;\n\tsuccess: boolean;\n\tmsg: string;\n\tdata: RelationDetail;\n}\n\nexport interface RelationDetail {\n\tfstatus: string | null;\n}\n\nexport type PublishAction = CommonAction<xiaohongshuWebRelationParams, RelationDetail | Record<string, never>>;\n\nexport const xiaohongshuWebRelationAction: PublishAction = async (_task, params) => {\n\tconst headers = {\n\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\treferer: \"https://www.xiaohongshu.com/\",\n\t\torigin: \"https://www.xiaohongshu.com/\",\n\t};\n\n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n\n\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\tif (!a1Cookie) return { code: 400, message: \"账号数据异常,请重新绑定账号后重试。\", data: {} };\n\tif (!params.action || !params.target_user_id) {\n\t\treturn { code: 400, message: \"参数缺失,请检查后重试!\", data: {} };\n\t}\n \n\tconst relationParams = {\n\t\ttarget_user_id: params.target_user_id,\n\t};\n\n\tlet relationActionRes: RelationResponse;\n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n\tswitch (params.action) {\n\t\tcase \"follow\": {\n\t\t\tconst followMentions = \"/api/sns/web/v1/user/follow\";\n const followXsHeader = xsEncrypt.signHeadersPost(followMentions, recordCookie, \"xhs-pc-web\", relationParams);\n\n\t\t\trelationActionRes = await http\n\t\t\t\t.api<RelationResponse>(\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\t\turl: \"https://edith.xiaohongshu.com/api/sns/web/v1/user/follow\",\n\t\t\t\t\t\tdata: relationParams,\n\t\t\t\t\t\theaders: followXsHeader,\n\t\t\t\t\t},\n\t\t\t\t\t{ retries: 3, retryDelay: 500, timeout: 3000 },\n\t\t\t\t)\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"unfollow\": {\n const unfllowMentions = \"/api/sns/web/v1/user/unfollow\";\n const unfllowXsHeader = xsEncrypt.signHeadersPost(unfllowMentions, recordCookie, \"xhs-pc-web\", relationParams);\n\n relationActionRes = await http\n\t\t\t\t.api<RelationResponse>(\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\t\turl: \"https://edith.xiaohongshu.com/api/sns/web/v1/user/unfollow\",\n\t\t\t\t\t\tdata: relationParams,\n\t\t\t\t\t\theaders: unfllowXsHeader,\n\t\t\t\t\t},\n\t\t\t\t\t{ retries: 3, retryDelay: 20, timeout: 3000 },\n\t\t\t\t)\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault:\n\t\t\treturn { code: 400, message: \"参数action错误,请重试!\", data: {} };\n\t}\n \n\tconst isSuccess = relationActionRes.code === 0;\n\tconst message = `用户关系操作${isSuccess ? \"成功\" : `失败,原因:${relationActionRes.msg}`}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n const data = isSuccess ? relationActionRes.data : { fstatus: null };\n \n\treturn response(isSuccess ? 0 : 400, message, data);\n};\n","import { type CommonAction, response, success } from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../types\";\nimport { Http } from \"../../utils/http\";\nimport { Xhshow } from \"../../utils/xhsXsEncrypt\";\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\nconst GenXSCommon = require(\"../../utils/XhsXsCommonEnc.js\") as (a1cookie: string, x_t: string|number, x_s:string) => string;\n\n\nexport interface xiaohongshuWebNoteFeedParams extends ActiomCommonParams {\n\tsource_note_id: string;\n\txsec_token: string;\n}\nexport interface FeedResponse {\n\tcode: number;\n\tsuccess: boolean;\n\tmsg: string;\n\tdata: {\n\t\titems: FeedRespomseDetail[];\n\t} | null;\n}\n\nexport interface FeedRespomseDetail {\n\tnote_card: Record<string, unknown>;\n}\n\nexport type PublishAction = CommonAction<xiaohongshuWebNoteFeedParams, FeedRespomseDetail[] | Record<string, unknown>>;\n\nexport const xiaohongshuWebNoteFeed: PublishAction = async (_task, params) => {\n\tconst headers = {\n\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\treferer: \"https://www.xiaohongshu.com/\",\n\t\torigin: \"https://www.xiaohongshu.com/\",\n\t};\n\n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n\n\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\tif (!a1Cookie) return { code: 400, message: \"账号数据异常,请重新绑定账号后重试。\", data: {} };\n\tif (!params.source_note_id && !params.xsec_token) {\n\t\treturn { code: 400, message: \"参数缺失,请检查后重试!\", data: {} };\n\t}\n \n\tconst feedParams = {\n\t\tsource_note_id: params.source_note_id,\n\t\timage_formats: [\"jpg\", \"webp\", \"avif\"],\n\t\textra: { need_body_topic: \"1\" },\n\t\txsec_source: \"pc_notice\",\n\t\txsec_token: params.xsec_token,\n\t};\n\n\tconst fatchFeed = \"/api/sns/web/v1/feed\";\n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n const fatchXsHeader = xsEncrypt.signHeadersPost(fatchFeed, recordCookie, \"xhs-pc-web\", feedParams);\n \n\tconst res = await http.api<FeedResponse>(\n\t\t{\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://edith.xiaohongshu.com/api/sns/web/v1/feed\",\n\t\t\tdata: feedParams,\n\t\t\theaders: fatchXsHeader,\n\t\t},\n\t\t{ retries: 3, retryDelay: 20, timeout: 3000 },\n\t);\n\n\tconst isSuccess = res.code === 0;\n\tconst message = `获取指定文章详情${isSuccess ? \"成功\" : `失败,原因:${res.msg}`}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n\tconst data = isSuccess ? res.data?.items[0].note_card || {} : {};\n\n\treturn response(isSuccess ? 0 : 400, message, data);\n};\n","import {type CommonAction, response, success} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../types\";\nimport { Http } from \"../../utils/http\";\nimport { Xhshow } from \"../../utils/xhsXsEncrypt\";\n\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport interface xiaohongshuWebCommentActionParams extends ActiomCommonParams {\n\tnote_id: string;\n\tcomment_id: string;\n\taction: \"like\" | \"dislike\";\n}\nexport interface ActionResponse {\n\tcode: number;\n\tsuccess: boolean;\n\tmsg: string;\n}\n\nexport type PublishAction = CommonAction<xiaohongshuWebCommentActionParams, ActionResponse | Record<string, never>>;\n\nexport const xiaohongshuWebCommentAction: PublishAction = async (_task, params) => {\n\tconst headers = {\n\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\treferer: \"https://www.xiaohongshu.com/\",\n\t\torigin: \"https://www.xiaohongshu.com/\",\n\t};\n\n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n\n\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\tif (!a1Cookie) return { code: 400, message: \"账号数据异常,请重新绑定账号后重试。\", data: [] };\n\tif (!params.note_id && !params.comment_id && !params.action) {\n\t\treturn { code: 400, message: \"参数缺失,请检查后重试!\", data: {} };\n\t}\n\n\tconst actionParams = {\n\t\tnote_id: params.note_id,\n\t\tcomment_id: params.comment_id,\n\t};\n\n\tlet likeActionRes: ActionResponse = { code: 500, success: false, msg: \"\" };\n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n\n\tswitch (params.action) {\n\t\tcase \"like\": {\n\t\t\tconst likeAction = \"/api/sns/web/v1/comment/like\";\n const likeActionXsHeader = xsEncrypt.signHeadersPost(likeAction, recordCookie, \"xhs-pc-web\", actionParams);\n \n\t\t\tlikeActionRes = await http.api<ActionResponse>(\n\t\t\t\t{\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://edith.xiaohongshu.com/api/sns/web/v1/comment/like\",\n\t\t\t\t\tdata: actionParams,\n\t\t\t\t\theaders: likeActionXsHeader,\n\t\t\t\t},\n\t\t\t\t{ retries: 3, retryDelay: 20, timeout: 3000 },\n\t\t\t);\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"dislike\": {\n\t\t\tconst dislikeMentions = \"/api/sns/web/v1/comment/dislike\";\n const dislikeXsHeader = xsEncrypt.signHeadersPost(dislikeMentions, recordCookie, \"xhs-pc-web\", actionParams);\n \n\t\t\tlikeActionRes = await http.api<ActionResponse>(\n\t\t\t\t{\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://edith.xiaohongshu.com/api/sns/web/v1/comment/dislike\",\n\t\t\t\t\tdata: actionParams,\n\t\t\t\t\theaders: dislikeXsHeader,\n\t\t\t\t},\n\t\t\t\t{ retries: 3, retryDelay: 20, timeout: 3000 },\n\t\t\t);\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault:\n\t\t\treturn { code: 400, message: \"参数action错误,请重试!\", data: {} };\n\t}\n\n const isSuccess = likeActionRes.code === 0;\n const message = `点赞相关操作${isSuccess ? \"成功\" : `失败,原因:${likeActionRes.msg}`}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n const data = isSuccess ? likeActionRes.success : {};\n\n return response(isSuccess ? 0 : 400, message, data);\n};\n","import { type CommonAction, response } from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, AxiosProxyParams} from \"../../types\";\nimport { Http } from \"../../utils/http\";\nimport { Xhshow } from \"../../utils/xhsXsEncrypt\";\n\n// 小红书参数加密器\nconst xsEncrypt = new Xhshow();\n\nexport interface XhsWebSearchParams extends ActiomCommonParams {\n\tkeyword: string;\n\tpage: number;\n\tpage_size: number;\n\tsort_type: \"general\" | \"time_descending\" | \"popular_descending\"; // 综合、时间降序、热门降序\n\ttime_filter: \"不限\" | \"一周内\";\n}\n\nexport interface SearchResponse {\n\tcode: number;\n\tsuccess: boolean;\n\tmsg: string;\n\tdata: {\n\t\thas_more: boolean;\n\t\titem: NoteDetail[];\n\t};\n}\n\nexport interface NoteDetail {\n\txsec_token: string;\n\tid: string;\n\tmodel_type: string;\n\tnote_card: {\n\t\ttype: string;\n\t\tdisplay_title: string;\n\t\tuser: {\n\t\t\tnick_name: string;\n\t\t\tavatar: string;\n\t\t\tuser_id: string;\n\t\t\tnickname: string;\n\t\t\txsec_token: string;\n\t\t};\n\t\tinteract_info: {\n\t\t\tshared_count: string;\n\t\t\tliked: boolean;\n\t\t\tliked_count: string;\n\t\t\tcollected: boolean;\n\t\t\tcollected_count: string;\n\t\t\tcomment_count: string;\n\t\t};\n\t\tcover: {\n\t\t\theight: number;\n\t\t\twidth: number;\n\t\t\turl_default: string;\n\t\t\turl_pre: string;\n\t\t};\n\t\timage_list: Array<{\n\t\t\theight: number;\n\t\t\twidth: number;\n\t\t\tinfo_list: Array<{\n\t\t\t\timage_scene: string;\n\t\t\t\turl: string;\n\t\t\t}>;\n\t\t}>;\n\t\tcorner_tag_info: Array<{\n\t\t\ttype: string;\n\t\t\ttext: string;\n\t\t}>;\n\t};\n}\n\nexport type PublishAction = CommonAction<XhsWebSearchParams, Record<string, unknown>>;\n\nconst createSearchId = () => {\n\tlet r: bigint = BigInt(Date.now());\n\tconst o: bigint = BigInt(Math.ceil(0x7ffffffe * Math.random()));\n\tr <<= BigInt(64);\n\tr += o;\n\treturn r.toString(36);\n};\n\nexport const xiaohongshuWebSearch: PublishAction = async (_task, params) => {\n\tconst headers = {\n\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\treferer: \"https://www.xiaohongshu.com/\",\n\t\torigin: \"https://www.xiaohongshu.com/\",\n\t};\n \n const args: AxiosProxyParams = [\n { headers },\n _task.logger,\n params.proxyLoc,\n params.localIP,\n // params.huiwenToken,\n params.accountId\n ]\n\tconst http = new Http(...args);\n \n\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\tif (!a1Cookie) return { code: 400, message: \"账号数据异常,请重新绑定账号后重试。\", data: {} };\n\tif (!params.keyword || !params.page || !params.page_size || !params.sort_type || !params.time_filter) {\n\t\tif (\n\t\t\tparams.sort_type !== \"general\" &&\n\t\t\tparams.sort_type !== \"time_descending\" &&\n\t\t\tparams.sort_type !== \"popular_descending\"\n\t\t) {\n\t\t\treturn { code: 400, message: \"排序类型参数错误,请检查后重试!\", data: {} };\n\t\t}\n\t\tif (params.time_filter !== \"不限\" && params.time_filter !== \"一周内\") {\n\t\t\treturn { code: 400, message: \"时间过滤参数错误,请检查后重试!\", data: {} };\n\t\t}\n\t\treturn { code: 400, message: \"参数缺失,请检查后重试!\", data: {} };\n\t}\n \n\tconst filterPath = \"/api/sns/web/v1/search/notes\";\n\tconst filterParams = {\n\t\text_flags: [],\n\t\tgeo: \"\",\n\t\timage_formats: [\"jpg\", \"webp\", \"avif\"],\n\t\tfilters: [\n\t\t\t{ tags: [params.sort_type], type: \"sort_type\" },\n\t\t\t{ tags: [\"不限\"], type: \"filter_note_type\" },\n\t\t\t{ tags: [params.time_filter], type: \"filter_note_time\" },\n\t\t\t{ tags: [\"不限\"], type: \"filter_note_range\" },\n\t\t\t{ tags: [\"不限\"], type: \"filter_pos_distance\" },\n\t\t],\n\t\tkeyword: params.keyword,\n\t\tnote_type: 0,\n\t\tpage: params.page,\n\t\tpage_size: params.page_size,\n\t\tsearch_id: createSearchId() + (params.sort_type || params.time_filter ? `@${createSearchId()}` : \"\"),\n\t\tsort: \"general\",\n\t};\n \n const recordCookie = params.cookies.reduce<Record<string, string>>((acc, cookie) => {\n if (cookie.name && cookie.value) {\n acc[cookie.name] = cookie.value;\n }\n return acc;\n }, {});\n const searchXsHeader = xsEncrypt.signHeadersPost(filterPath, recordCookie, \"xhs-pc-web\", filterParams);\n \n\tconst res = await http\n\t\t.api<SearchResponse>(\n\t\t\t{\n\t\t\t\tmethod: \"post\",\n\t\t\t\turl: \"https://edith.xiaohongshu.com/api/sns/web/v1/search/notes\",\n\t\t\t\tdata: filterParams,\n\t\t\t\theaders: searchXsHeader,\n\t\t\t},\n\t\t\t{ retries: 3, retryDelay: 20, timeout: 3000 },\n\t\t)\n\n\tconst isSuccess = res.code === 0;\n\tconst message = `Web笔记搜索${isSuccess ? \"成功\" : `失败,原因:${res.msg}`}${ _task.debug ? ` ${http.proxyInfo}`: \"\"}`;\n\tconst data = isSuccess ? res.data : {};\n\n\treturn response(isSuccess ? 0 : 400, message, data);\n};\n","import type { AutomateTask, CommonAction, ResponseData } from \"@iflyrpa/share\";\nimport { type BaijiahaoPublishParams, baijiahaoPublish } from \"./actions/baijiahaoPublish\";\nimport { TTFansExport } from \"./actions/common/FansTool\";\nimport { BjhFansExport } from \"./actions/common/FansTool\";\nimport { XhsFansExport } from \"./actions/common/FansTool\";\nimport { type GetWxFansSearchParams, WxFansExport } from \"./actions/common/FansTool\";\nimport { type GetBaijiahaoActivityParams, getBaijiahaoActivity } from \"./actions/getBaijiahaoActivity\";\nimport { type GetBaijiahaoConfigParams, getBaijiahaoConfig } from \"./actions/getBaijiaohaoConfig\";\nimport { type GetToutiaoConfigParams, getToutiaoConfig } from \"./actions/getToutiaoConfig\";\nimport { type SearchToutiaoLocationParams, searchToutiaoLocation } from \"./actions/searchToutiaoLocation\";\nimport { type SearchToutiaoTopicListParams, searchToutiaoTopicList } from \"./actions/searchToutiaoTopicList\";\nimport { type SearchToutiaoUserIDParams, searchToutiaoUserInfo } from \"./actions/searchToutiaoUserID\";\nimport { searchXiaohongshuLocation, type searchXiaohongshuLocationParams } from \"./actions/searchXiaohongshuLocation\";\nimport {\n\ttype SearchXiaohongshuTopicListParams,\n\tsearchXiaohongshuTopicList,\n} from \"./actions/searchXiaohongshuTopicList\";\nimport { type ToutiaoPublishParams, toutiaoPublish } from \"./actions/toutiaoPublish\";\n\nimport { TTSessionCheck } from \"./actions/common/sessionCheck\";\nimport { XhsSessionCheck } from \"./actions/common/sessionCheck\";\nimport { BjhSessionCheck, WxSessionCheck, type WxBjhSessionParams } from \"./actions/common/sessionCheck\";\n\nimport { type GetWeixinCollectionParams, getWeixinCollection } from \"./actions/getWeixinCollection\";\nimport { type GetWeixinConfigParams, getWeixinConfig } from \"./actions/getWeixinConfig\";\nimport { getXhsCollection } from \"./actions/getXhsCollection\";\nimport { SearchAccountInfo, type SearchAccountInfoParams } from \"./actions/searchAccountInfo\";\nimport { type SearchBjhTopicListParams, searchBjhTopicList } from \"./actions/searchBjhTopicList\";\nimport { FetchArticles, type FetchArticlesParams } from \"./actions/searchPublishInfo\";\nimport { type WeitoutiaoPublishParams, weitoutiaoPublish } from \"./actions/weitoutiaoPublish\";\nimport { type WeixinPublishParams, weixinPublish } from \"./actions/weixinPublish\";\nimport { type WeixinmpPublishParams, weixinmpPublish } from \"./actions/weixinmpPublish\";\nimport { type XiaohongshuPublishParams, xiaohongshuPublish } from \"./actions/xiaohongshuPublish\";\n\nimport { type BaijiahaoLoginParams, baijiahaoLogin } from \"./actions/baijiahaoLogin\";\nimport { type GetToutiaoCollectionParams, getToutiaoCollection } from \"./actions/getToutiaoCollection\";\nimport { getXhsGroup } from \"./actions/getXhsGroup\";\nimport { getXhsHotTopic } from \"./actions/getXhsHotTopic\";\nimport {type searchXhsWebIntimacyListParams, xiaohongshuWebIntimacySearch} from \"./actions/xiaohongshuWebIntimacySearch\";\nimport { getXhsUnreadCount } from \"./actions/getXhsWebUnreadCount\";\nimport { searchBjhUserArticle, type searchBjhUserArticleParams } from \"./actions/searchBjhUserArticle\";\nimport { searchWeixinAccountCard, type searchWeixinAccountCardParams } from \"./actions/searchWeixinAccountCard\";\nimport { searchWeixinUserArticle, type searchWeixinUserArticleParams } from \"./actions/searchWeixinUserArticle\";\nimport { type searchXhsConnectionsParams, searchXhsWebConnections } from \"./actions/searchXhsWebConnections\";\nimport { type searchXhsLikesParams, searchXhsWebLikes } from \"./actions/searchXhsWebLike\";\nimport { type searchXhsMentionsParams, searchXhsWebMentions } from \"./actions/searchXhsWebMentions\";\nimport {\n\tsearchXiaohongshuUserArticle,\n\ttype searchXiaohongshuUserArticleParams,\n} from \"./actions/searchXiaohongshuUserArticle\";\nimport { type ToutiaoLoginParams, toutiaoLogin } from \"./actions/toutiaoLogin\";\nimport { type WeixinLoginParams, weixinLogin } from \"./actions/weixinLogin\";\nimport { type XiaohongshuLoginParams, xiaohongshuLogin } from \"./actions/xiaohongshuLogin\";\nimport { xiaohongshuWebMsgRead, type xiaohongshuWebMsgReadParams } from \"./actions/xiaohongshuWebMsgRead\";\nimport { xiaohongshuWebMsgReply, type xiaohongshuWebMsgReplyParams } from \"./actions/xiaohongshuWebMsgReply\";\nimport {\n\txiaohongshuWebRelationAction,\n\ttype xiaohongshuWebRelationParams,\n} from \"./actions/xiaohongshuWebRelationAction\";\nimport type { ActiomCommonParams, ActionParams } from \"./types\";\nimport { stringifyError } from \"./utils\";\nimport { Http } from \"./utils/http\";\nimport {xiaohongshuWebNoteFeed, type xiaohongshuWebNoteFeedParams} from \"./actions/xiaohongshuWebNoteFeed\";\nimport {\n xiaohongshuWebCommentAction,\n type xiaohongshuWebCommentActionParams\n} from \"./actions/xiaohongshuWebCommentAction\";\nimport {type XhsWebSearchParams, xiaohongshuWebSearch} from \"./actions/xiaohongshuWebSearch\";\n\nexport const BetaFlag = \"HuiwenCanary\"; // 用于标记是否为测试版本\n\nexport class Action {\n\tconstructor(private task: AutomateTask) {}\n\n\t// 绑定 task, 并处理异常\n\tprivate async bindTask<T extends ActionParams, R>(func: CommonAction<T, R>, params: T) {\n\t\tlet responseData: ResponseData<R>;\n\n\t\t// 检查是否为测试版本\n\t\tthis.task.isBeta = this.task?.isFeatOn ? this.task?.isFeatOn(BetaFlag) : false;\n\n\t\t// 记录时间消耗\n\t\tthis.task._timerRecord.ActionStart = Date.now() ;\n\n\t\tif (this.task?.setArticleId) {\n\t\t\t// 给所有的日志添加 articleId 标签\n\t\t\tthis.task.setArticleId(params.articleId ?? \"\");\n\t\t}\n \n\t\tif (this.task?.setSaveType ?? false) {\n\t\t\t// 给所有的日志添加 saveType 标签\n\t\t\tthis.task.setSaveType(params.saveType ?? \"\");\n\t\t}\n\n\t\tif (this.task?.isInitializedGB !== undefined) {\n\t\t\tthis.task.setGbInitType(this.task.isInitializedGB);\n\t\t}\n\n\t\tif (typeof params === \"object\") {\n\t\t\t// 默认设置 cookies\n\t\t\tparams.cookies = params?.cookies ?? [];\n\t\t}\n\n\t\ttry {\n\t\t\tresponseData = await func(this.task, params);\n\t\t} catch (error) {\n\t\t\tresponseData = Http.handleApiError(error);\n\t\t} finally {\n\t\t\tthis.task._timerRecord.ActionEnd = Date.now();\n\t\t}\n\n\t\tif (this.task.setTimeConsuming) {\n\t\t\t// 收集各时间节点\n\t\t\tthis.task.setTimeConsuming(this.task._timerRecord);\n\t\t}\n\n\t\tif (responseData.code === 200 || responseData.code === 400) {\n\t\t\t// 表示是由于脚本输入信息错误导致的失败,不是脚本问题\n\t\t\tthis.task.logger.info(`${func.name} action params error`, responseData);\n\t\t} else if (responseData.code !== 0) {\n\t\t\tthis.task.logger.error(\n\t\t\t\tresponseData.message || `${func.name} 执行失败`,\n\t\t\t\tstringifyError(responseData.data),\n\t\t\t\tresponseData.extra,\n\t\t\t);\n\t\t\tthis.task.logger.info(`${func.name} action failed`);\n\t\t} else {\n\t\t\tthis.task.logger.info(`${func.name} action success`);\n\t\t}\n\n\t\tif (this.task.debug && this.task._timerRecord.PrePublish) {\n\t\t\tconsole.log(\n\t\t\t\t\"预处理图片耗时:\",\n\t\t\t\t(this.task._timerRecord.PrePublish - this.task._timerRecord.ActionStart) / 1000,\n\t\t\t\t\"s\",\n\t\t\t);\n\t\t\tconsole.log(\"发文接口耗时:\", (this.task._timerRecord.ActionEnd - this.task._timerRecord.PrePublish) / 1000, \"s\");\n\t\t}\n\t\tthis.task.debug &&\n\t\t\tconsole.log(\n\t\t\t\t\"Action整体耗时:\",\n\t\t\t\t(this.task._timerRecord.ActionEnd - this.task._timerRecord.ActionStart) / 1000,\n\t\t\t\t\"s\",\n\t\t\t);\n\n\t\treturn responseData;\n\t}\n \n // 小红书操作web笔记搜索\n\txiaohongshuWebSearch(params: XhsWebSearchParams) {\n\t\treturn this.bindTask(xiaohongshuWebSearch, params);\n\t}\n\n\t// 小红书操作指定web评论点赞/取消点赞\n\txiaohongshuWebCommentAction(params: xiaohongshuWebCommentActionParams) {\n\t\treturn this.bindTask(xiaohongshuWebCommentAction, params);\n\t}\n \n\t// 小红书获取指定文章详情\n\txiaohongshuWebNoteFeed(params: xiaohongshuWebNoteFeedParams) {\n\t\treturn this.bindTask(xiaohongshuWebNoteFeed, params);\n\t}\n \n\t// 小红书操作指定id用户关系(关注/取关)\n\txiaohongshuWebRelationAction(params: xiaohongshuWebRelationParams) {\n\t\treturn this.bindTask(xiaohongshuWebRelationAction, params);\n\t}\n\n\t// 小红书回复指定笔记评论\n\txiaohongshuWebMsgRead(params: xiaohongshuWebMsgReadParams) {\n\t\treturn this.bindTask(xiaohongshuWebMsgRead, params);\n\t}\n\n\t// 小红书获取@提及列表\n\txiaohongshuWebIntimacySearch(params: searchXhsWebIntimacyListParams) {\n\t\treturn this.bindTask(xiaohongshuWebIntimacySearch, params);\n\t}\n\n\t// 小红书回复指定笔记评论\n\txiaohongshuWebMsgReply(params: xiaohongshuWebMsgReplyParams) {\n\t\treturn this.bindTask(xiaohongshuWebMsgReply, params);\n\t}\n\n\t// 小红书获取新增关注列表\n\tsearchXhsWebConnections(params: searchXhsConnectionsParams) {\n\t\treturn this.bindTask(searchXhsWebConnections, params);\n\t}\n\n\t// 小红书获取赞和收藏列表\n\tsearchXhsWebLikes(params: searchXhsLikesParams) {\n\t\treturn this.bindTask(searchXhsWebLikes, params);\n\t}\n\n\t// 小红书获取评论与@提及列表\n\tsearchXhsWebMentions(params: searchXhsMentionsParams) {\n\t\treturn this.bindTask(searchXhsWebMentions, params);\n\t}\n\n\t// 小红书获取未读消息数\n\tgetXhsUnreadCount(params: ActiomCommonParams) {\n\t\treturn this.bindTask(getXhsUnreadCount, params);\n\t}\n\n\t// 百家号搜索用户文章\n\tsearchBjhUserArticle(params: searchBjhUserArticleParams) {\n\t\treturn this.bindTask(searchBjhUserArticle, params);\n\t}\n\n\t// 小红书搜索用户文章\n\tsearchXiaohongshuUserArticle(params: searchXiaohongshuUserArticleParams) {\n\t\treturn this.bindTask(searchXiaohongshuUserArticle, params);\n\t}\n\n\t// 微信搜索用户文章\n\tsearchWeixinUserArticle(params: searchWeixinUserArticleParams) {\n\t\treturn this.bindTask(searchWeixinUserArticle, params);\n\t}\n\n\t// 微信号搜索账号卡片\n\tsearchWeixinAccountCard(params: searchWeixinAccountCardParams) {\n\t\treturn this.bindTask(searchWeixinAccountCard, params);\n\t}\n\n\t// 微信登陆操作 仅用于Cli框架\n\tWxLogin(params: WeixinLoginParams) {\n\t\treturn this.bindTask(weixinLogin, params);\n\t}\n\n\t// 百家号登陆操作 仅用于Cli框架\n\tBaijiahaoLogin(params: BaijiahaoLoginParams) {\n\t\treturn this.bindTask(baijiahaoLogin, params);\n\t}\n\n\t// 头条号登陆操作 仅用于Cli框架\n\tToutiaoLogin(params: ToutiaoLoginParams) {\n\t\treturn this.bindTask(toutiaoLogin, params);\n\t}\n\n\t// 小红书登陆操作 仅用于Cli框架\n\tXhsLogin(params: XiaohongshuLoginParams) {\n\t\treturn this.bindTask(xiaohongshuLogin, params);\n\t}\n\n\t// 获取指定平台的文章数据\n\tFetchArticles(params: FetchArticlesParams) {\n\t\treturn this.bindTask(FetchArticles, params);\n\t}\n\n\t// 获取指定平台的分析数据\n\tSearchAccountInfo(params: SearchAccountInfoParams) {\n\t\treturn this.bindTask(SearchAccountInfo, params);\n\t}\n\n\t// 头条Session有效性检测\n\tTTSessionCheck(params: ActiomCommonParams) {\n\t\treturn this.bindTask(TTSessionCheck, params);\n\t}\n\n\t// 微信Session有效性检测\n\tWxSessionCheck(params: WxBjhSessionParams) {\n\t\treturn this.bindTask(WxSessionCheck, params);\n\t}\n\n\t// 小红书Session有效性检测\n\tXhsSessionCheck(params: ActiomCommonParams) {\n\t\treturn this.bindTask(XhsSessionCheck, params);\n\t}\n\n\t// 百家号Session有效性检测\n\tBjhSessionCheck(params: WxBjhSessionParams) {\n\t\treturn this.bindTask(BjhSessionCheck, params);\n\t}\n\n\t// 搜索头条话题列表\n\tsearchToutiaoTopicList(params: SearchToutiaoTopicListParams) {\n\t\treturn this.bindTask(searchToutiaoTopicList, params);\n\t}\n\n\t// 搜索头条粉丝\n\tTTFansExport(params: ActiomCommonParams) {\n\t\treturn this.bindTask(TTFansExport, params);\n\t}\n\n\t// 搜索小红书粉丝\n\tXhsFansExport(params: ActiomCommonParams) {\n\t\treturn this.bindTask(XhsFansExport, params);\n\t}\n\n\t// 搜索微信粉丝\n\tWxFansExport(params: GetWxFansSearchParams) {\n\t\treturn this.bindTask(WxFansExport, params);\n\t}\n\n\t// 搜索百家号粉丝\n\tBjhFansExport(params: ActiomCommonParams) {\n\t\treturn this.bindTask(BjhFansExport, params);\n\t}\n\n\tSearchBjhTopicList(params: SearchBjhTopicListParams) {\n\t\treturn this.bindTask(searchBjhTopicList, params);\n\t}\n\n\t// 搜索头条用户ID\n\tsearchToutiaoUserID(params: SearchToutiaoUserIDParams) {\n\t\treturn this.bindTask(searchToutiaoUserInfo, params);\n\t}\n\n\t// 搜索头条Location\n\tsearchToutiaoLocation(params: SearchToutiaoLocationParams) {\n\t\treturn this.bindTask(searchToutiaoLocation, params);\n\t}\n\n\t// 获取头条配置\n\tgetToutiaoConfig(params: GetToutiaoConfigParams) {\n\t\treturn this.bindTask(getToutiaoConfig, params);\n\t}\n\n\t// 获取头条合集\n\tgetToutiaoCollection(params: GetToutiaoCollectionParams) {\n\t\treturn this.bindTask(getToutiaoCollection, params);\n\t}\n\n\t// 获取微信配额\n\tgetWeixinConfig(params: GetWeixinConfigParams) {\n\t\treturn this.bindTask(getWeixinConfig, params);\n\t}\n\n\t// 获取微信合集\n\tgetWeixinCollection(params: GetWeixinCollectionParams) {\n\t\treturn this.bindTask(getWeixinCollection, params);\n\t}\n\n\tgetXhsCollection(params: ActiomCommonParams) {\n\t\treturn this.bindTask(getXhsCollection, params);\n\t}\n\n\tgetXhsGroup(params: ActiomCommonParams) {\n\t\treturn this.bindTask(getXhsGroup, params);\n\t}\n\n\tgetXhsHotTopic(params: ActiomCommonParams) {\n\t\treturn this.bindTask(getXhsHotTopic, params);\n\t}\n\n\t// 获取百家号配置\n\tgetBaijiahaoConfig(params: GetBaijiahaoConfigParams) {\n\t\treturn this.bindTask(getBaijiahaoConfig, params);\n\t}\n\n\t// 百家号发布\n\tbaijiahaoPublish(params: BaijiahaoPublishParams) {\n\t\treturn this.bindTask(baijiahaoPublish, params);\n\t}\n\n\t// 查询百家号活动投稿\n\tgetBaijiahaoActivity(params: GetBaijiahaoActivityParams) {\n\t\treturn this.bindTask(getBaijiahaoActivity, params);\n\t}\n\n\t// 小红书发布\n\txiaohongshuPublish(params: XiaohongshuPublishParams) {\n\t\treturn this.bindTask(xiaohongshuPublish, params);\n\t}\n\n\t// 搜索小红书话题\n\tsearchXiaohongshuTopicList(params: SearchXiaohongshuTopicListParams) {\n\t\treturn this.bindTask(searchXiaohongshuTopicList, params);\n\t}\n\t// 搜索小红书地址\n\tsearchXiaohongshuLocation(params: searchXiaohongshuLocationParams) {\n\t\treturn this.bindTask(searchXiaohongshuLocation, params);\n\t}\n\n\t// 小绿书发布\n\tweixinmpPublish(params: WeixinmpPublishParams) {\n\t\treturn this.bindTask(weixinmpPublish, params);\n\t}\n\n\t// 微头条发布\n\tweitoutiaoPublish(params: WeitoutiaoPublishParams) {\n\t\treturn this.bindTask(weitoutiaoPublish, params);\n\t}\n\n\t// 头条发布\n\ttoutiaoPublish(params: ToutiaoPublishParams) {\n\t\treturn this.bindTask(toutiaoPublish, params);\n\t}\n\n\t// 微信发布\n\tweixinPublish(params: WeixinPublishParams) {\n\t\treturn this.bindTask(weixinPublish, params);\n\t}\n}\n\ntype ActionInstance = InstanceType<typeof Action>;\n\n// 提取方法的参数类型\ntype MethodParams<T> = {\n\t// biome-ignore lint/suspicious/noExplicitAny: 有使用 any\n\t[K in keyof T]: T[K] extends (...args: any[]) => unknown ? Parameters<T[K]>[0] : never;\n};\n\n// 应用于 Action 类的实例\nexport type ActionMethodParams = MethodParams<ActionInstance>;\n\nexport { version } from \"../package.json\";\n\nexport { Http } from \"./utils/http\";\n\nexport { ProxyAgent } from './utils/proxy'\n\nexport { type ActiomCommonParams, ActionCommonParamsSchema } from \"./types\";\nexport { type WxBjhSessionParams, WxBjhSessionParamsSchema, SessionCheckResultSchema} from \"./actions/common/sessionCheck\";\nexport type { sessionCheckResult } from \"./actions/common/sessionCheck\";\n\nexport { XiaohongshuPublishParamsSchema, type XiaohongshuPublishParams } from \"./actions/xiaohongshuPublish\";\nexport { UnreadCountSchema, type UnreadCount} from \"./actions/getXhsWebUnreadCount\";\nexport { SearchAccountInfoParamsSchema, type SearchAccountInfoParams } from \"./actions/searchAccountInfo\";\nexport { bjhConfigDataSchema, wxConfigDataSchema, xhsConfigDataSchema, ttConfigDataSchema, type bjhConfigData, type wxConfigData, type xhsConfigData, type ttConfigData } from \"./actions/searchAccountInfo/types\";\nexport { FetchArticlesParamsSchema, type FetchArticlesParams } from \"./actions/searchPublishInfo\";\nexport { FetchArticlesDataSchema, type FetchArticlesData} from \"./actions/searchPublishInfo/types\";\nexport { CollectionDetailSchema, type CollectionDetail } from \"./actions/getXhsCollection\";\nexport { getFileState } from \"./utils\";\n// 内部测试方法\n\nexport { rpaAction_Server_Mock } from \"./actions/xiaohongshuPublish/rpa-server-mock\"\n"],"names":["__createBinding","Object","o","m","k","k2","undefined","desc","__setModuleDefault","v","__importStar","mod","result","exports","http","https","toBuffer","stream","length","chunks","chunk","Buffer","json","buf","str","JSON","_err","err","req","url","opts","href","promise","Promise","resolve","reject","__exportStar","p","net","https_1","INTERNAL","Symbol","Agent","options","stack","Error","l","name","Infinity","fakeSocket","socket","sockets","index","secureEndpoint","cb","connectOpts","formatArgs","save","load","useColors","localstorage","warned","console","window","navigator","document","parseInt","args","module","c","lastC","match","namespaces","error","r","process","localStorage","formatters","setup","env","createDebug","coerce","disable","enable","enabled","destroy","key","selectColor","namespace","hash","i","Math","prevTime","enableOverride","namespacesCache","enabledCache","debug","self","curr","Number","Date","ms","format","formatter","val","logFn","extend","delimiter","newDebug","split","Boolean","ns","matchesTemplate","search","template","searchIndex","templateIndex","starIndex","matchIndex","skip","tty","util","init","log","supportsColor","obj","prop","_","colorCode","prefix","getDate","keys","flag","argv","position","terminatorPosition","__importDefault","tls","assert_1","debug_1","agent_base_1","url_1","parse_proxy_response_1","setServernameFromNonIpHost","HttpsProxyAgent","proxy","host","port","omit","TypeError","headers","payload","auth","decodeURIComponent","proxyResponsePromise","connect","buffered","resume","s","ret","parseProxyResponse","buffersLength","buffers","read","b","ondata","cleanup","onend","onerror","endOfHeaders","headerParts","firstLine","firstLineParts","statusCode","statusText","header","firstColon","value","current","Array","h","d","w","y","type","parse","isFinite","fmtLong","fmtShort","String","n","parseFloat","msAbs","plural","isPlural","os","hasFlag","flagForceColor","envForceColor","translateLevel","level","haveStream","streamIsTTY","sniffFlags","noFlagForceColor","forceColor","min","osRelease","sign","version","getSupportLevel","encrypt_lookup","esm_typeof","t","encrypt_b64Encode","e","a","u","f","g","E","x","T","S","A","L","I","R","O","C","N","P","B","M","j","F","D","q","U","G","H","V","W","a0_0x10f4ac","X","z","Y","K","J","$","Q","Z","tt","encrypt_encodeChunk","encrypt_encodeUtf8","encodeURIComponent","sign_common","encrypt_tripletToBase64","a0_0x3693","encrypt_mcr","GenXSCommon","a1cookie","x_t","x_s","b1","a0_0x45db08","a0_0x4b0d","_0x2bd218","_0x316d6","_0x165410","a0_0x1654","_0x4b0d73","_0x5794db","_0x1859e3","_0x1b2596","_0x16c0e0","_0x1227f1","_0x46fb59","_0x383dd4","_0x4fc071","Random","Ts","Sm3DoneTs","xhrParaDoneTs","xhrReqDoneTs","_0x46e031","SM3Hasher","_0x468533","_0x11e792","_0x22d1ef","_0x182388","_0x2ded18","_0x5e491d","_0x12d911","_0x5795ab","_0x22d98b","_0x5659da","_0x357908","_0x5c0d1c","_0x2e8583","_0x28f42f","_0x4b2a85","_0xffe4ea","_0x34ff8d","_0xecf9f6","_0x3ddb20","_0x28ac8a","_0x117621","_0x335539","_0x450e58","_0x5b1ad8","_0x46ad66","_0xa844a0","_0x15bc36","_0x4a32f3","_0x36cc0b","_0xd7dcfe","_0x1e530c","_0x3c50af","_0x3da582","_0x14b06e","_0x4ec82e","_0x489962","_0x5dd43e","_0x744660","_0x197f71","_0x5e22dd","_0xfc800b","_0x1300f1","_0xed8891","_0x3414cb","_0x2f42fb","_0x326645","_0x2c63af","_0x558c0d","_0x4a902b","_0x493bba","_0x23a9bd","_0x7114f5","_0x49cf1f","_0x698c70","_0xe5328","_0x2b58f2","_0x17c086","_0x3621a2","_0x5959b9","_0x3b42ff","_0x50d411","_0x910e21","_0x459622","EnvData2CharCode","_0x58cd97","_0x23e1e0","_0x3ca6b2","_0x56cb93","_0x2d49d4","_0x3f2013","_0x4b8ded","_0x5bb315","_0x42b4c4","_0x1cdc95","_0x58aa5d","_0x26ee7a","_0xe2d586","_0x571095","_0x4dabdb","_0x4139e6","_0x339170","_0x56e1cd","_0x24b6d5","_0x196cf7","_0x2eb1f3","_0x2171ba","_0x925e58","_0x540dbd","_0x2fbb10","_0x41ebdd","_0x42a240","_0x49ec53","_0x3d9ba0","_0xeaa831","_0x477e24","_0x3bd924","_0xa7bf19","_0x23c273","_0x4d13ab","Base2Data","_0x348aa6","_0x2bc7c7","_0x874207","_0x224d00","_0x31697c","_0x235e4f","_0x29dde1","_0x4a74f1","_0xef36c2","_0x4120e4","_0x39cb62","_0x5cbaf6","_0x29a672","_0x96c5ae","_0x46c34b","_0x5d4cb4","_0x506f4f","Data2A_B","_0x19ca6d","_0x5d8d72","_0x225e7d","_0x4f0a28","_0x251d62","_0x2b8eea","_0x3fca04","_0xb85a46","_0x4e702d","_0x4382e1","_0x225aa0","_0x5607b9","_0x3fb7b7","_0x425784","GenAB","_0x315138","_0x1c32b3","_0x206982","_0x56536b","encodeUtf8","r2","tripletToBase64","encodeChunk","c2","b64Encode","encode_mnsv2","mnsv2","platform","req_type","ProxyAgent","ip","adr","accountId","refresh","Http","params","ProxyInfo","loggerInfo","config","logger","axios","interceptors","findError","response","foundError","errorResponse","serverError","retries","retryDelay","reqTimeout","agent","sessionRt","Rtimes","controller","AbortController","timeoutId","setTimeout","clearTimeout","handledError","isRetry","getRandomInRange","max","getFileState","filePath","filename","path","fileType","mime","stats","fs","fileSize","lastModifiedDate","calculateCropCoordinates","width","height","aspectRatio","targetRatio","cropWidth","cropHeight","x1","y1","x2","y2","extractImgTag","html","srcList","parser","Parser","attributes","TimeFormatter","timestamp","formatStr","date","map","replaceImgSrc","callback","lastedHtml","isImageTag","node","traverseDom","DomUtils","child","handler","DomHandler","dom","domSerializer","stringifyError","executeAction","actions","task","action","copyHtmlToClipboard","page","htmlContent","blob","Blob","ClipboardItem","div","range","selection","PopupListener","popupSelector","popKey","buttonSelector","checkInterval","stopAfterClick","popup","button","intervalId","setInterval","clearInterval","parseUrlQueryString","queryStringObject","queryString","queryWithoutHash","queryStringArray","item","equalIndex","defaultParams","defaults","generateTopicHtml","topic","id","sv_small_images","generateUid","topicBase","crypto","topicAttr","attrStr","errnoMap","mockAction","baijiahaoSingleCover","baijiahaoMultCover","baijiahaoCoverType","tmpCachePath","it","proxyHttp","msgType","errmsg","appIdInfo","appId","uploadImages","_images","images","fileName","getFilenameFromUrl","image","downloadImage","formData","FormData","res","originContentImages","targetContentImages","topicCheck","content","idx","horizontalCoverUrl","horizontalCoverRes","cover_images","_cover_images_map","isAi","activityList","cover_layout","activity_list","publishData","isDraft","saveUrl","success","rpaAction","commonCookies","titleInstance","coverFormItem","isSingleCover","coverSelector","coverCount","fileChooserPromise","fileChooser","abstractFormItem","settingFormItem","_settingFormItem","enent2NewsBtn","activity","activityFormItem","findActivity","articleId","message","handleResponse","jsonResponse","operatorContainer","scrollHourInfo","hourInner","hourElementHeight","hourMapsElem","hourMap","fistHourElem","fistHourElemH","lastHourElem","lastHourElemH","targetTimeH","scrollMinuteInfo","fistMinuteElem","fistMinuteElemH","lastMinuteElem","lastMinuteElemH","targetTimeM","baijiahaoPublish","generatorFormData","data","URLSearchParams","TTFansExport","_task","fans","userInfo","getToutiaoToken","userId","cookies","cookieStr","location","token","fansDetail","descriptionRes","XhsFansExport","WxFansExport","htmlStr","descMatch","BjhFansExport","getBaijiahaoActivity","getBaijiahaoConfig","_item","getToutiaoConfig","getSuggestWords","getCityDistrict","getUserRights","suggestWords","cityDistrict","userRights","searchToutiaoLocation","isSuccess","searchToutiaoTopicList","searchToutiaoUserInfo","searchXiaohongshuLocation","CryptoConfig","BitOperations","inputArray","keyBytes","Uint8Array","hexString","bytes","RandomGenerator","byteCount","minVal","maxVal","seq","part1","part2","Base64Encoder","dataToEncode","dataBytes","standardEncodedString","char","encodedString","standardString","base64String","RequestSignatureValidator","method","normalizedMethod","uri","a1Value","xsecAppid","CryptoProcessor","arr","ts","xorKey","sum1","sum2","mark","hexParameter","appIdentifier","stringParam","seed","seedBytes","seedByte0","tsMs","timeOffset","sequenceValue","windowPropsLength","uriLength","md5Bytes","a1Bytes","sourceBytes","CRC32","table","crc","input","signed","byte","code","FingerprintData","FingerprintHelpers","weights","totalWeight","sum","weight","random","rendererStr","vendor","renderer","resolutionStr","widthStr","heightStr","availWidth","availHeight","ARC4","keyByte","FingerprintGenerator","TextEncoder","userAgent","cookieString","screenConfig","isIncognitoMode","x78Y","fp","b1Fp","b1Json","cipher","ciphertext","latin1String","encodedUrl","parts","part","chars","XsCommonSigner","cookieDict","fingerprint","x9","signStruct","signJson","Xhshow","valueStr","dValue","payloadArray","xorResult","validatedMethod","validatedUri","validatedA1Value","validatedXsecAppid","validatedPayload","signatureData","signatureJson","cookieObj","methodUpper","requestData","xS","xSCommon","xT","xB3Traceid","xXrayTraceid","x3Signature","decodedBytes","xsSignature","jsonString","baseUrl","xsEncrypt","searchXiaohongshuTopicList","a1Cookie","topicData","fatchTopic","recordCookie","acc","cookie","fatchTopicXsHeader","require","encodedKey","encodedValue","get3101DetailError","errorList","saveType","toutiaoSingleCover","toutiaoMultCover","toutiaoCoverType","toutiaoOriginal","toutiaoExclusive","toutiaoClaim","coverUrl","coverRes","topics","topicContent","sourceData","extraData","COVER_TYPE","getAddTypeValue","msToken","publishOption","postHeaders","postData","a_bogus","publishResult","interceptUrls","route","request","URL","pattern","coverTypeValue","coverContainer","coverUrls","coverUploadEle","coverUploadCount","ele","drawerContainer","confirmBtn","locationContainer","poperInstance","adContainer","isAdOptionVisible","exclusiveContainer","claim","toutiaoAd","toutiaoPublish","$constructor","initializer","inst","def","_a","Set","Parent","Definition","fn","$ZodAsyncError","$ZodEncodeError","globalConfig","newConfig","entries","numericValues","values","joinValues","array","separator","stringifyPrimitive","jsonStringifyReplacer","cached","getter","set","nullish","cleanRegex","source","start","end","floatSafeRemainder","step","valDecCount","stepString","stepDecCount","decCount","valInt","stepInt","EVALUATING","defineLazy","object","assignProp","target","mergeDefs","defs","mergedDescriptors","descriptors","esc","captureStackTrace","_args","Function","isPlainObject","ctor","prot","shallowClone","propertyKeyTypes","escapeRegex","clone","cl","normalizeParams","_params","optionalKeys","shape","NUMBER_FORMAT_RANGES","pick","schema","mask","currDef","newShape","checks","hasChecks","_shape","safeExtend","merge","partial","Class","oldShape","required","aborted","startIndex","prefixIssues","issues","iss","unwrapMessage","finalizeIssue","ctx","full","getLengthableOrigin","$ZodError","$ZodRealError","flattenError","mapper","issue","fieldErrors","formErrors","sub","formatError","processError","el","terminal","_parse","_Err","_ctx","_parseAsync","_safeParse","safeParse","_safeParseAsync","safeParseAsync","_encode","_decode","_encodeAsync","_decodeAsync","_safeEncode","_safeDecode","_safeEncodeAsync","_safeDecodeAsync","cuid","cuid2","ulid","xid","ksuid","nanoid","duration","guid","RegExp","email","_emoji","emoji","ipv4","ipv6","cidrv4","cidrv6","hostname","e164","dateSource","timeSource","hhmm","regex","datetime","time","timeRegex","string","integer","_null","lowercase","uppercase","$ZodCheck","numericOriginMap","$ZodCheckLessThan","origin","bag","$ZodCheckGreaterThan","$ZodCheckMultipleOf","isMultiple","BigInt","$ZodCheckNumberFormat","isInt","minimum","maximum","$ZodCheckMaxLength","$ZodCheckMinLength","$ZodCheckLengthEquals","tooBig","$ZodCheckStringFormat","_b","$ZodCheckRegex","$ZodCheckLowerCase","$ZodCheckUpperCase","$ZodCheckIncludes","escapedRegex","$ZodCheckStartsWith","$ZodCheckEndsWith","$ZodCheckOverwrite","Doc","arg","lines","minIndent","dedented","line","$ZodType","ch","runChecks","isAborted","asyncResult","shouldRun","currLen","nextLen","handleCanaryResult","canary","checkResult","$ZodString","$ZodStringFormat","$ZodGUID","$ZodUUID","versionMap","$ZodEmail","$ZodURL","trimmed","$ZodEmoji","$ZodNanoID","$ZodCUID","$ZodCUID2","$ZodULID","$ZodXID","$ZodKSUID","$ZodISODateTime","$ZodISODate","$ZodISOTime","$ZodISODuration","$ZodIPv4","$ZodIPv6","$ZodCIDRv4","$ZodCIDRv6","address","prefixNum","isValidBase64","atob","$ZodBase64","isValidBase64URL","base64","padded","$ZodBase64URL","$ZodE164","isValidJWT","algorithm","tokensParts","parsedHeader","$ZodJWT","$ZodNumber","received","$ZodNumberFormat","$ZodBoolean","$ZodNull","$ZodUnknown","$ZodNever","handleArrayResult","final","$ZodArray","proms","handlePropertyResult","normalizeDef","okeys","handleCatchall","unrecognized","keySet","_catchall","$ZodObject","sh","newSh","_normalized","propValues","field","isObject","catchall","$ZodObjectJIT","superParse","generateFastpass","doc","normalized","parseStr","ids","counter","fastpass","jit","allowsEval","fastEnabled","handleUnionResults","results","nonaborted","$ZodUnion","option","patterns","single","first","async","$ZodIntersection","left","right","handleIntersectionResults","mergeValues","bKeys","sharedKeys","newObj","sharedValue","newArray","itemA","itemB","merged","$ZodEnum","valuesSet","$ZodLiteral","$ZodTransform","_out","output","handleOptionalResult","$ZodOptional","$ZodNullable","$ZodDefault","handleDefaultResult","$ZodPrefault","$ZodNonOptional","handleNonOptionalResult","$ZodCatch","$ZodPipe","handlePipeResult","next","$ZodReadonly","handleReadonlyResult","$ZodCustom","handleRefineResult","_iss","Sizable","getSizing","Nouns","adj","sizing","_issue","WeakMap","Map","_meta","meta","pm","registry","globalRegistry","_string","_email","_guid","_uuid","_uuidv4","_uuidv6","_uuidv7","_url","_nanoid","_cuid","_cuid2","_ulid","_xid","_ksuid","_ipv4","_ipv6","_cidrv4","_cidrv6","_base64","_base64url","_e164","_jwt","_isoDateTime","_isoDate","_isoTime","_isoDuration","_number","_int","_boolean","_unknown","_never","_lt","_lte","_gt","_gte","_multipleOf","_maxLength","_minLength","_length","_regex","_lowercase","_uppercase","_includes","includes","_startsWith","_endsWith","suffix","_overwrite","tx","_normalize","form","_trim","_toLowerCase","_toUpperCase","_array","element","_custom","norm","_refine","_superRefine","_check","ZodISODateTime","ZodISODate","ZodISOTime","ZodISODuration","ZodRealError","ZodType","reg","check","refine","refinement","superRefine","optional","nullable","nonoptional","union","intersection","pipe","transform","prefault","readonly","description","_ZodString","ZodString","ZodEmail","ZodURL","ZodJWT","ZodEmoji","ZodGUID","ZodUUID","ZodNanoID","ZodCUID","ZodCUID2","ZodULID","ZodBase64","ZodBase64URL","ZodXID","ZodKSUID","ZodIPv4","ZodIPv6","ZodCIDRv4","ZodCIDRv6","ZodE164","ZodStringFormat","ZodNumber","ZodNumberFormat","ZodBoolean","ZodNull","ZodUnknown","unknown","ZodNever","never","ZodArray","minLength","maxLength","len","ZodObject","incoming","other","ZodOptional","ZodNonOptional","ZodUnion","ZodIntersection","ZodEnum","newEntries","ZodLiteral","literal","ZodTransform","innerType","ZodNullable","ZodDefault","defaultValue","ZodPrefault","ZodCatch","catchValue","ZodPipe","in_","out","ZodReadonly","ZodCustom","custom","en","ActionCommonParamsSchema","CDPCookieSchema","ExecutionState","SessionCheckResultSchema","WxBjhSessionParamsSchema","TTSessionCheck","WxSessionCheck","XhsSessionCheck","loginBasePath","loginBaseXsHeader","_baseInfo","_web_session","baseInfo","web_session","BjhSessionCheck","getWeixinCollection","getWeixinConfig","filtered","CollectionDetailSchema","getXhsCollection","ttConfigDataSchema","xhsConfigDataSchema","wxConfigDataSchema","bjhConfigDataSchema","getBaijiahaoData","yesterday","fansData","readData","incomeData","yesterdayData","bjhData","getToutiaoData","totalData","contentDataYesterday","isReday","ttData","getWeixinData","userInfoHtml","originalMatch","totalUsersMatch","increaseMatch","readMatch","shareMatch","subscribeMatch","wxData","getXiaohongshuData","sevenDataUrl","sevenDataXsHeader","overAllData","sevenData","xhsData","SearchAccountInfoParamsSchema","SearchAccountInfo","searchBjhTopicList","BaseArticleSchema","ToutiaoArticleSchema","WeixinArticleSchema","BaijiahaoArticleSchema","XiaohongshuArticleSchema","FetchArticlesDataSchema","handleBaijiahaoData","pageNum","pageSize","showOriginalData","onlySuccess","containsArticle","fetchArticles","articleInfo","totalPage","currentPage","usedPages","validItems","getDetailContent","detailInfo","isCheckPass","jsonStr","articleCell","handleToutiaoData","visitedUid","api_base_info_json","handleWeixinData","cursor","lastPage","ParsePublishPage","body","parsedData","decodeEntities","decode","encodeMap","decodeMap","finalData","decoded","parsedInfo","begin","size","rawArticlesInfo","articlesInfo","totalFetched","nextPage","remaining","currentPageSize","_rawArticlesInfo","parsed","filteredList","cursorIndex","nextRawArticlesInfo","nextArticlesInfo","newFiltered","text","deatil","lastMsgId","handleXiaohongshuData","serveUrl","serveParams","serveXsHeader","hasNextpage","detailUrl","detailParams","detailxsHeader","FetchArticlesParamsSchema","FetchArticles","userInfoRes","imageList","extra","syncData","descInstance","addressFormItem","declarationFormItem","weitoutiaoPublish","scanRetryMaxCount","QuotaType","genTopicHTML","rn","aTags","GET_QRCODE_DEFAULT_ERROR","ignoreErrno","userTypeMap","checkCopyrightStat","resData","client_time_diff","reporter","responseData","cloudImages","localImages","ext","fileState","oriWhitelist","_oriWhitelist","white_list","white_list_user","_user","userInfo_res","userInfo_resJson","writerid","reply_id","getWriterList","getRewardText","_type","rewardbind","rewardBuffer","rewardFilePath","task_id","sleep","checkScanResult","_writer","_writer_item","rewardList","matchdID","reward","_reply_item","wxInteractionInfo","_wxInteraction","_opt","commentType","replyType","draftData","appMsgId","checkTimes","copyrightStatRes","copyrightStat","masssendpage","massSendRes","operation_seq","quota_detail_list","quotaDetail","copyrightStatData","lastData","checkCopyrightStatRes","getTicketResult","getUuidResult","uuid","qrcodeResult","qrcodeBuffer","qrcodeFilePath","randomString","waitQrcodeResultMaxTime","urlParams","urlRewardParams","wxRewardPage","reward_page","isAddRewarder","qrcodeSrc","errorMessage","isAddWord","cover","dialog","pic_msg","ori_dialog","ori_dialog_bd","ori_dialog_ft","_target","search_res","search_res_name","whrite_list","white_td_isadd","btn_isChecked","checkbox","reward_setting","reward_setting_bd","reward_setting_ft","userName","reward_setting_replay","switchAuto","maxAttempts","delayMs","nowCheckTime","attempt","isDisabled","isOneReplay","isCurrentReplay","wxInteraction_setting","wxInteraction_bd","wxInteraction_ft","comment_area","reply_area","commont_rply_opt","poperInput","query","dateD","nowD","dropMenu","timeDropMenu","times","originalCheckDialog","popMassend","startTime","imgUrl","weixinPublish","saveDraft","shareImageInfos","cropResult","colorResponseData","themeColor","cropFormData","cropRatios","cropCoordinates","cropCoordinate","cropResponse","sourceText","container","weixinmpPublish","fetchCoverUrl","fetchCoverParams","fetchCoverXsHeader","coverIdInfo","uploadInfos","fileId","availableBuckets","uploadFile","localUrl","fileBuffer","MAX_RETRIES","ossBucketIndex","currentInfo","ossFileId","ossToken","ossDomain","coverInfos","invalidUpload","topicXsHeader","createTopic","visibleRangeMap","userDeclarationBind","photoInfo","bizId","userData","business_binds","publishXsHeader","updateTaskState","TaskState","selectAddress","selector","instance","selectDate","getPoperInstance","elements","count","visibleElements","style","getDialogInstance","selfDeclarationInstance","selfDeclarationSecondaryMenuInstance","shootingDate","shootingLocation","selfShootingPopup","hasCustomContent","sourceMedia","releaseTimeInstance","rpaAction_Server","defaultPage","blockedPatterns","blocked","imagePromise","clickTimeout","collectionName","collectionBindInstance","collectionItemInstance","groupBindName","groupBindInstance","groupItemInstance","OriginalBindBtn","isOriginalBindBtnVisible","visibleText","setSwitch","label","switchUI","cls","isChecked","imgPreviewArea","toastDesc","msg","Md5","rpaAction_Server_Mock","pagePromise","encodeData","ticket_mnsv2","FictionalRendition","AIGenerated","SourceStatement","XiaohongshuPublishParamsSchema","xiaohongshuPublish","isSelfClosing","pageInfo","pageId","baseHost","debugParams","connectAddress","buffer","mimeType","dataUrl","img","timeoutTimer","handleCheckQR","handleWebCommon","isProcessing","resp","fetch","jsonUser","jsonPStr","channel_v","errMap","cookieJson","rpaServer","executionState","newStyle","finished","timer","handleBrowserClosed","baijiahaoLogin","getToutiaoCollection","getXhsGroup","groupListParams","fatchGroup","searchXsHeader","getXhsHotTopic","hotTopicParams","xiaohongshuWebIntimacySearch","intimacyDetail","UnreadCountSchema","getXhsUnreadCount","unreadCount","parseBjhDom","domString","searchBjhUserArticle","runtime","detailJson","searchWeixinAccountCard","accountCardList","searchWeixinUserArticle","publishInfo","publishPage","searchXhsWebConnections","connectionsParams","fatchConnections","fatchConnectionsXsHeader","searchXhsWebLikes","likesParams","fatchLikes","fatchLikesXsHeader","searchXhsWebMentions","mentionsParams","fatchMentions","fatchMentionsXsHeader","parseXhsDom","jsObjectStr","searchXiaohongshuUserArticle","INITIAL_STATE","statusMachine","status","xmst","mstExpirDate","jsonUserInfo","toutiaoLogin","handleAfterLogin","handleScanStatus","tokenMatch","commonData","weixinLogin","XS","createrLogin","raw","codeStatus","xiaohongshuLogin","xiaohongshuWebMsgRead","replyParams","xiaohongshuWebMsgReply","replyPath","replyXsHeader","xiaohongshuWebRelationAction","relationParams","relationActionRes","followMentions","followXsHeader","unfllowMentions","unfllowXsHeader","xiaohongshuWebNoteFeed","feedParams","fatchFeed","fatchXsHeader","xiaohongshuWebCommentAction","actionParams","likeActionRes","likeAction","likeActionXsHeader","dislikeMentions","dislikeXsHeader","createSearchId","xiaohongshuWebSearch","filterPath","filterParams","BetaFlag","Action","func"],"mappings":"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A;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,OAAOA,CAAC,CAAC2I,KAAK,IAAI;QACpB;QACA,SAAS8B,YAAY9B,CAAC,EAAEE,CAAC;YACvB,OAAO2C,UAAU3C,IAAI,MAAMF;QAC7B;QAEA,IAAI8C,cAAc,SAAU9C,CAAC;YAC3B,IAAIE,IAAI,IACJ7I,IAAI,IACJoH,IAAI,KACJ5L,IAAI,KACJwF,IAAI,KACJ8H,IAAI,IACJC,IAAI,KACJ3D,IAAI,IACJzF,IAAI,IACJv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AU,MAAM,CAAC,KAAII,YAAU;gBAAC;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;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BAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAM;gBAAK;gBAAK;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAM;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAS;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAQ;gBAAK;gBAAK;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;g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"}