@skrillex1224/playwright-toolkit 2.1.74 → 2.1.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/browser.js CHANGED
@@ -832,9 +832,9 @@ var Logger = {
832
832
  // src/browser-onlys/index.js
833
833
  var browser_onlys_exports = {};
834
834
  __export(browser_onlys_exports, {
835
+ AccountForm: () => AccountForm,
835
836
  ActorFeConfig: () => ActorFeConfig,
836
- PlatformSchema: () => PlatformSchema,
837
- TokenForm: () => TokenForm
837
+ PlatformSchema: () => PlatformSchema
838
838
  });
839
839
 
840
840
  // src/internals/utils.js
@@ -860,21 +860,20 @@ var parseCookies = (cookieString, domain) => {
860
860
  return cookies;
861
861
  };
862
862
 
863
- // src/browser-onlys/token-form.js
863
+ // src/browser-onlys/account-form.js
864
864
  var SharedFields = [
865
865
  { key: "account_id", label: "\u8D26\u53F7 ID", type: "text", required: true, placeholder: "\u4F8B\u5982\uFF1A\u624B\u673A\u53F7 / \u90AE\u7BB1" },
866
866
  { type: "divider" },
867
867
  { key: "owner_name", label: "\u6240\u5C5E\u4EBA", type: "text", required: true, placeholder: "\u4F8B\u5982\uFF1A\u767D\u6CFD", col: 12 },
868
- { key: "account_type", label: "\u8D26\u53F7\u7C7B\u578B", type: "autocomplete", required: true, placeholder: "\u4F8B\u5982\uFF1AEmail", options: ["Phone", "Google", "WeChat", "Email", "Other"], col: 12 },
868
+ { key: "account_type", label: "\u8D26\u53F7\u7C7B\u578B", type: "select", required: true, placeholder: "\u4F8B\u5982\uFF1AEmail", options: ["Phone", "Google", "Github", "Email", "WeChat", "Taobao", "ZhifuBao", "Other"], col: 12 },
869
869
  { key: "note", label: "\u5907\u6CE8", type: "textarea", required: false, placeholder: "\u5907\u6CE8" }
870
870
  ];
871
871
  var PlatformSchema = Object.fromEntries(
872
872
  Object.entries({
873
873
  moonshot: {
874
874
  name: "Kimi",
875
- match: ["kimi.moonshot.cn"],
875
+ domain: "www.kimi.ai",
876
876
  tokenNames: ["kimi_auth"],
877
- serviceUrl: "https://kimi.moonshot.cn/",
878
877
  tokenSource: "Cookie",
879
878
  parse: (token) => {
880
879
  const val = token ? token.trim() : "";
@@ -887,9 +886,8 @@ var PlatformSchema = Object.fromEntries(
887
886
  },
888
887
  doubao: {
889
888
  name: "\u8C46\u5305",
890
- match: ["doubao.com"],
889
+ domain: "www.doubao.com",
891
890
  tokenNames: ["sessionid"],
892
- serviceUrl: "https://www.doubao.com/",
893
891
  tokenSource: "Cookie",
894
892
  parse: (token) => {
895
893
  const val = token ? token.trim() : "";
@@ -902,9 +900,8 @@ var PlatformSchema = Object.fromEntries(
902
900
  },
903
901
  deepseek: {
904
902
  name: "DeepSeek",
905
- match: ["chat.deepseek.com"],
903
+ domain: "chat.deepseek.com",
906
904
  tokenNames: ["userToken"],
907
- serviceUrl: "https://chat.deepseek.com/",
908
905
  tokenSource: "LocalStorage",
909
906
  guide: '\u8BF7\u8F93\u5165\u5B8C\u6574 JSON\uFF0C\u4F8B\u5982 {"value":"xxxxx"}\uFF0C\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u63D0\u53D6 value\u3002',
910
907
  parse: (token) => {
@@ -928,9 +925,8 @@ var PlatformSchema = Object.fromEntries(
928
925
  },
929
926
  yuanbao: {
930
927
  name: "\u5143\u5B9D",
931
- match: ["yuanbao.tencent.com"],
928
+ domain: "yuanbao.tencent.com",
932
929
  tokenNames: ["hy_user", "hy_token"],
933
- serviceUrl: "https://yuanbao.tencent.com/",
934
930
  tokenSource: "Cookie",
935
931
  guide: "\u5206\u522B\u586B\u5165\u4ECE\u6D4F\u89C8\u5668\u83B7\u53D6\u7684 hy_user \u548C hy_token\uFF0C\u7CFB\u7EDF\u5C06\u81EA\u52A8\u62FC\u63A5\u3002",
936
932
  parse: (token) => {
@@ -953,9 +949,8 @@ var PlatformSchema = Object.fromEntries(
953
949
  },
954
950
  qwen: {
955
951
  name: "\u901A\u4E49\u5343\u95EE",
956
- match: ["tongyi.aliyun.com", "qwen.ai"],
952
+ domain: "www.qianwen.com",
957
953
  tokenNames: ["tongyi_sso_ticket"],
958
- serviceUrl: "https://tongyi.aliyun.com/",
959
954
  tokenSource: "Cookie",
960
955
  parse: (token) => {
961
956
  const val = token ? token.trim() : "";
@@ -968,9 +963,8 @@ var PlatformSchema = Object.fromEntries(
968
963
  },
969
964
  erine: {
970
965
  name: "\u6587\u5FC3\u4E00\u8A00 (Erine)",
971
- match: ["yiyan.baidu.com"],
966
+ domain: "yiyan.baidu.com",
972
967
  tokenNames: ["BDUSS"],
973
- serviceUrl: "https://yiyan.baidu.com/",
974
968
  tokenSource: "Cookie",
975
969
  parse: (token) => {
976
970
  const val = token ? token.trim() : "";
@@ -986,7 +980,7 @@ var PlatformSchema = Object.fromEntries(
986
980
  return [key, config];
987
981
  })
988
982
  );
989
- function createTokenForm() {
983
+ function createAccountForm() {
990
984
  return {
991
985
  /**
992
986
  * 自动识别 URL 所属平台
@@ -998,9 +992,9 @@ function createTokenForm() {
998
992
  try {
999
993
  const hostname = new URL(url).hostname;
1000
994
  for (const [key, config] of Object.entries(PlatformSchema)) {
1001
- if (config.match && config.match.some((pattern) => hostname.includes(pattern))) {
1002
- return key;
1003
- }
995
+ const domain = String(config.domain || "").trim().replace(/^https?:\/\//, "").replace(/\/.*$/, "");
996
+ if (!domain) continue;
997
+ if (hostname === domain || hostname.endsWith(`.${domain}`)) return key;
1004
998
  }
1005
999
  } catch (e) {
1006
1000
  return null;
@@ -1011,7 +1005,7 @@ function createTokenForm() {
1011
1005
  if (!key) throw new Error("Actor parameter is required to get platform config");
1012
1006
  const config = PlatformSchema[key];
1013
1007
  if (!config) {
1014
- throw new Error(`\u672A\u627E\u5230\u5E73\u53F0\u914D\u7F6E: ${key}. \u8BF7\u786E\u4FDD playwright-toolkit/browser-onlys/token-form.js \u4E2D\u5DF2\u5B9A\u4E49\u8BE5\u5E73\u53F0\u3002`);
1008
+ throw new Error(`\u672A\u627E\u5230\u5E73\u53F0\u914D\u7F6E: ${key}. \u8BF7\u786E\u4FDD playwright-toolkit/browser-onlys/account-form.js \u4E2D\u5DF2\u5B9A\u4E49\u8BE5\u5E73\u53F0\u3002`);
1015
1009
  }
1016
1010
  const schema = { ...config };
1017
1011
  const fields = [...SharedFields];
@@ -1097,14 +1091,14 @@ function createTokenForm() {
1097
1091
  };
1098
1092
  }
1099
1093
  var instance = null;
1100
- async function useTokenForm() {
1094
+ async function useAccountForm() {
1101
1095
  if (!instance) {
1102
- instance = createTokenForm();
1096
+ instance = createAccountForm();
1103
1097
  }
1104
1098
  return instance;
1105
1099
  }
1106
- var TokenForm = {
1107
- useTokenForm
1100
+ var AccountForm = {
1101
+ useAccountForm
1108
1102
  };
1109
1103
 
1110
1104
  // src/browser-onlys/actor-fe-config.js
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/internals/logger.js", "../src/logger.js", "../src/browser-onlys/index.js", "../src/internals/utils.js", "../src/browser-onlys/token-form.js", "../src/browser-onlys/actor-fe-config.js", "../entrys/browser.js"],
4
- "sourcesContent": ["\n// =============================================================================\n// Core Helpers & State\n// =============================================================================\n\nconst pad = (value, size = 2) => String(value).padStart(size, '0');\n\nconst formatTimestamp = (date = new Date()) => {\n const year = date.getFullYear();\n const month = pad(date.getMonth() + 1);\n const day = pad(date.getDate());\n const hours = pad(date.getHours());\n const minutes = pad(date.getMinutes());\n const seconds = pad(date.getSeconds());\n const millis = pad(date.getMilliseconds(), 3);\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${millis}`;\n};\n\nconst formatLine = (prefix, icon, message) => {\n const parts = [];\n if (prefix) parts.push(`[${prefix}]`);\n if (icon) parts.push(icon);\n if (message) parts.push(message);\n return parts.join(' ').trim();\n};\n\nconst fallbackLog = {\n info: (...args) => console.log(...args),\n warning: (...args) => (console.warn ? console.warn(...args) : console.log(...args)),\n error: (...args) => console.error(...args),\n debug: (...args) => (console.debug ? console.debug(...args) : console.log(...args)),\n};\n\nconst resolveLogMethod = (logger, name) => {\n if (logger && typeof logger[name] === 'function') {\n return logger[name].bind(logger);\n }\n if (name === 'warning' && logger && typeof logger.warn === 'function') {\n return logger.warn.bind(logger);\n }\n return fallbackLog[name];\n};\n\nlet defaultLogger = null;\n\nexport const setDefaultLogger = (logger) => {\n defaultLogger = logger;\n};\n\n// Lazy resolver: always checks current state\nconst resolveLogger = (explicitLogger) => {\n if (explicitLogger && typeof explicitLogger.info === 'function') {\n return explicitLogger;\n }\n if (defaultLogger && typeof defaultLogger.info === 'function') {\n return defaultLogger;\n }\n return fallbackLog;\n};\n\nconst ANSI = {\n reset: '\\x1b[0m',\n gray: '\\x1b[90m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n cyan: '\\x1b[36m',\n};\n\nconst colorize = (text, color) => {\n if (!text || !color) return text;\n return `${color}${text}${ANSI.reset}`;\n};\n\nexport const createBaseLogger = (prefix = '', explicitLogger) => {\n const name = prefix ? String(prefix) : '';\n\n const dispatch = (methodName, icon, message, color) => {\n const logger = resolveLogger(explicitLogger);\n const logFn = resolveLogMethod(logger, methodName);\n const timestamp = colorize(`[${formatTimestamp()}]`, ANSI.gray);\n const line = formatLine(name, icon, message);\n const coloredLine = colorize(line, color);\n logFn(`${timestamp} ${coloredLine}`.trim());\n };\n\n return {\n info: (message) => dispatch('info', '\uD83D\uDCD6', message, ANSI.cyan),\n success: (message) => dispatch('info', '\u2705', message, ANSI.green),\n warning: (message) => dispatch('warning', '\u26A0\uFE0F', message, ANSI.yellow),\n warn: (message) => dispatch('warning', '\u26A0\uFE0F', message, ANSI.yellow),\n error: (message) => dispatch('error', '\u274C', message, ANSI.red),\n debug: (message) => dispatch('debug', '\uD83D\uDD39', message, ANSI.gray),\n start: (message) => dispatch('info', '\uD83D\uDD37', message, ANSI.blue),\n };\n};\n\n/**\n * \u521B\u5EFA\u6A21\u5757\u7EA7\u65E5\u5FD7\u5668\n * @param {string} moduleName - \u6A21\u5757\u540D\u79F0\n * @param {object} [logger] - \u53EF\u9009\u7684\u663E\u5F0F\u65E5\u5FD7\u5668\uFF0C\u901A\u5E38\u4E0D\u9700\u8981\u4F20\uFF0C\u4F1A\u81EA\u52A8\u4F7F\u7528 setDefaultLogger \u8BBE\u7F6E\u7684\u5168\u5C40\u65E5\u5FD7\u5668\n */\nexport function createInternalLogger(moduleName, explicitLogger) {\n const baseLogger = createBaseLogger(moduleName, explicitLogger);\n\n return {\n start(methodName, params = '') {\n const paramStr = params ? ` (${params})` : '';\n baseLogger.start(`${methodName} \u5F00\u59CB${paramStr}`);\n },\n success(methodName, result = '') {\n const resultStr = result ? ` (${result})` : '';\n baseLogger.success(`${methodName} \u5B8C\u6210${resultStr}`);\n },\n fail(methodName, error) {\n const message = error instanceof Error ? error.message : error;\n baseLogger.error(`${methodName} \u5931\u8D25: ${message}`);\n },\n debug(message) {\n baseLogger.debug(message);\n },\n warn(message) {\n baseLogger.warning(message);\n },\n warning(message) {\n baseLogger.warning(message);\n },\n info(message) {\n baseLogger.info(message);\n }\n };\n}\n", "import { createBaseLogger, setDefaultLogger } from './internals/logger.js';\n\nexport const stripAnsi = (input) => {\n if (!input) return '';\n return String(input).replace(/\\x1b\\[[0-9;]*m/g, '');\n};\n\n// =============================================================================\n// Log Templates & Definitions\n// =============================================================================\n\nconst STEP_PREFIX = '\u6B65\u9AA4:';\nconst STEP_SEPARATOR = ' | ';\nconst STEP_EMOJIS = [\n { match: '\u4EFB\u52A1', emoji: '\uD83E\uDDED' },\n { match: '\u8FD0\u884C\u6A21\u5F0F', emoji: '\uD83E\uDDE9' },\n { match: '\u767B\u5F55', emoji: '\uD83D\uDD10' },\n { match: '\u73AF\u5883', emoji: '\uD83E\uDDEA' },\n { match: '\u8F93\u5165', emoji: '\u2328\uFE0F' },\n { match: '\u53D1\u9001', emoji: '\uD83D\uDCE4' },\n { match: '\u54CD\u5E94\u76D1\u542C', emoji: '\uD83D\uDCE1' },\n { match: '\u7B49\u5F85\u54CD\u5E94', emoji: '\u23F3' },\n { match: '\u6D41\u5F0F', emoji: '\uD83E\uDDF5' },\n { match: '\u5F15\u7528', emoji: '\uD83D\uDCCE' },\n { match: '\u622A\u56FE', emoji: '\uD83D\uDDBC\uFE0F' },\n { match: '\u5206\u4EAB\u94FE\u63A5', emoji: '\uD83D\uDD17' },\n { match: '\u6570\u636E\u63A8\u9001', emoji: '\uD83D\uDCE6' },\n { match: '\u5F39\u7A97', emoji: '\uD83E\uDE9F' },\n];\nconst STATUS_EMOJIS = [\n { match: '\u5F00\u59CB', emoji: '\uD83D\uDE80' },\n { match: '\u5B8C\u6210', emoji: '\u2705' },\n { match: '\u6210\u529F', emoji: '\u2705' },\n { match: '\u5931\u8D25', emoji: '\u274C' },\n { match: '\u8DF3\u8FC7', emoji: '\u23ED\uFE0F' },\n { match: '\u8D85\u65F6', emoji: '\u23F1\uFE0F' },\n { match: '\u91CD\u8BD5', emoji: '\uD83D\uDD01' },\n { match: '\u7ED3\u675F', emoji: '\uD83C\uDFC1' },\n { match: '\u5DF2\u914D\u7F6E', emoji: '\uD83E\uDDF7' },\n { match: '\u5DF2\u68C0\u6D4B', emoji: '\uD83D\uDD0E' },\n];\n\nconst toErrorMessage = (error) => {\n if (!error) return '';\n if (error instanceof Error) return error.message;\n if (typeof error === 'string') return error;\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n};\n\nconst decorateLabel = (label, mappings) => {\n if (!label) return '';\n const mapping = mappings.find((item) => label.includes(item.match));\n if (!mapping) return label;\n return `${mapping.emoji} ${label}`;\n};\n\nconst normalizeSnippet = (snippet, maxLen = 120) => {\n if (!snippet) return '';\n const text = String(snippet).replace(/\\s+/g, ' ').trim();\n if (!text) return '';\n const cleaned = text.replace(/\"/g, \"'\");\n if (cleaned.length <= maxLen) return cleaned;\n return `${cleaned.slice(0, maxLen)}...`;\n};\n\nconst LOG_TAG_PREFIX = '[#log:';\nconst LOG_TAG_SUFFIX = ']';\n\nconst buildLogTag = (key) => `${LOG_TAG_PREFIX}${key}${LOG_TAG_SUFFIX}`;\n\nconst escapeRegExp = (value) => String(value).replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst buildStepPattern = (step, status) => {\n if (!step) return null;\n let pattern = `\u6B65\u9AA4: .*${escapeRegExp(step)}`;\n if (status) {\n pattern += `.*${escapeRegExp(status)}`;\n }\n return new RegExp(pattern);\n};\n\nconst buildDefinitionPatterns = (definition) => {\n const patterns = [new RegExp(`\\\\[#log:${escapeRegExp(definition.key)}\\\\]`)];\n const fallback = buildStepPattern(definition.step, definition.status);\n if (fallback) patterns.push(fallback);\n if (Array.isArray(definition.extraPatterns)) {\n patterns.push(...definition.extraPatterns);\n }\n return patterns;\n};\n\nconst ATTENTION_RANK = {\n low: 1,\n medium: 2,\n high: 3,\n critical: 4,\n};\nconst DEFAULT_ATTENTION_RANK = ATTENTION_RANK.high;\n\nconst LOG_DEFINITIONS = [\n {\n key: 'task_start',\n method: 'taskStart',\n label: '\u4EFB\u52A1\u5F00\u59CB',\n group: '\u4EFB\u52A1',\n step: '\u4EFB\u52A1',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (url) => [url ? `url=${url}` : ''],\n },\n {\n key: 'task_success',\n method: 'taskSuccess',\n label: '\u4EFB\u52A1\u5B8C\u6210',\n group: '\u4EFB\u52A1',\n step: '\u4EFB\u52A1',\n status: '\u5B8C\u6210',\n level: 'success',\n attention: 'high',\n },\n {\n key: 'task_fail',\n method: 'taskFail',\n label: '\u4EFB\u52A1\u5931\u8D25',\n group: '\u4EFB\u52A1',\n step: '\u4EFB\u52A1',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'critical',\n buildDetails: (url, err) => [\n url ? `url=${url}` : '',\n err ? `err=${toErrorMessage(err)}` : ''\n ],\n },\n {\n key: 'runtime_headless',\n method: 'runtimeHeadless',\n label: '\u8FD0\u884C\u6A21\u5F0F\u5F3A\u5236\u65E0\u5934',\n group: '\u8FD0\u884C\u6A21\u5F0F',\n step: '\u8FD0\u884C\u6A21\u5F0F',\n status: 'Apify \u73AF\u5883\u5F3A\u5236\u65E0\u5934',\n level: 'warning',\n attention: 'medium',\n },\n {\n key: 'login_inject_success',\n method: 'loginInjectSuccess',\n label: '\u767B\u5F55\u6001\u6CE8\u5165\u6210\u529F',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u6001\u6CE8\u5165',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'medium',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'login_inject_skip',\n method: 'loginInjectSkip',\n label: '\u767B\u5F55\u6001\u6CE8\u5165\u8DF3\u8FC7',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u6001\u6CE8\u5165',\n status: '\u8DF3\u8FC7',\n level: 'warning',\n attention: 'medium',\n buildDetails: (reason) => [reason ? `\u539F\u56E0=${reason}` : ''],\n },\n {\n key: 'login_inject_fail',\n method: 'loginInjectFail',\n label: '\u767B\u5F55\u6001\u6CE8\u5165\u5931\u8D25',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u6001\u6CE8\u5165',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'login_verify_success',\n method: 'loginVerifySuccess',\n label: '\u767B\u5F55\u9A8C\u8BC1\u6210\u529F',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u9A8C\u8BC1',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'login_verify_skip',\n method: 'loginVerifySkip',\n label: '\u767B\u5F55\u9A8C\u8BC1\u8DF3\u8FC7',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u9A8C\u8BC1',\n status: '\u8DF3\u8FC7',\n level: 'warning',\n attention: 'medium',\n buildDetails: (reason) => [reason ? `\u539F\u56E0=${reason}` : ''],\n },\n {\n key: 'login_verify_fail',\n method: 'loginVerifyFail',\n label: '\u767B\u5F55\u9A8C\u8BC1\u5931\u8D25',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u9A8C\u8BC1',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'critical',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'env_check_success',\n method: 'envCheckSuccess',\n label: '\u73AF\u5883\u68C0\u67E5\u6210\u529F',\n group: '\u73AF\u5883',\n step: '\u73AF\u5883\u68C0\u67E5',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'medium',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'env_check_fail',\n method: 'envCheckFail',\n label: '\u73AF\u5883\u68C0\u67E5\u5931\u8D25',\n group: '\u73AF\u5883',\n step: '\u73AF\u5883\u68C0\u67E5',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'input_query_start',\n method: 'inputQuery',\n label: '\u8F93\u5165\u67E5\u8BE2\u5F00\u59CB',\n group: '\u8F93\u5165',\n step: '\u8F93\u5165\u67E5\u8BE2',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (query) => [query ? `query=${query}` : ''],\n },\n {\n key: 'send_action',\n method: 'sendAction',\n label: '\u53D1\u9001\u8BF7\u6C42',\n group: '\u53D1\u9001',\n step: '\u53D1\u9001\u8BF7\u6C42',\n status: '\u70B9\u51FB\u53D1\u9001',\n level: 'info',\n attention: 'low',\n },\n {\n key: 'response_listen_start',\n method: 'responseListenStart',\n label: '\u54CD\u5E94\u76D1\u542C\u5F00\u59CB',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (label, timeoutSec) => [\n label ? `\u76EE\u6807=${label}` : '',\n timeoutSec ? `timeout=${timeoutSec}s` : ''\n ],\n },\n {\n key: 'response_listen_ready',\n method: 'responseListenReady',\n label: '\u54CD\u5E94\u76D1\u542C\u5DF2\u914D\u7F6E',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u5DF2\u914D\u7F6E',\n level: 'info',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_listen_detected',\n method: 'responseListenDetected',\n label: '\u54CD\u5E94\u76D1\u542C\u5DF2\u68C0\u6D4B',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u5DF2\u68C0\u6D4B',\n level: 'success',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_listen_timeout',\n method: 'responseListenTimeout',\n label: '\u54CD\u5E94\u76D1\u542C\u8D85\u65F6',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u8D85\u65F6',\n level: 'error',\n attention: 'high',\n buildDetails: (label, err) => [\n label ? `\u76EE\u6807=${label}` : '',\n err ? `err=${toErrorMessage(err)}` : ''\n ],\n },\n {\n key: 'response_listen_end',\n method: 'responseListenEnd',\n label: '\u54CD\u5E94\u76D1\u542C\u7ED3\u675F',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u7ED3\u675F',\n level: 'info',\n attention: 'low',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_wait_start',\n method: 'responseWaitStart',\n label: '\u7B49\u5F85\u54CD\u5E94\u5F00\u59CB',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_wait_success',\n method: 'responseWaitSuccess',\n label: '\u7B49\u5F85\u54CD\u5E94\u5B8C\u6210',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u5B8C\u6210',\n level: 'success',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_wait_fail',\n method: 'responseWaitFail',\n label: '\u7B49\u5F85\u54CD\u5E94\u5931\u8D25',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'high',\n buildDetails: (label, err) => [\n label ? `\u76EE\u6807=${label}` : '',\n err ? `err=${toErrorMessage(err)}` : ''\n ],\n },\n {\n key: 'response_wait_retry',\n method: 'responseWaitRetry',\n label: '\u7B49\u5F85\u54CD\u5E94\u91CD\u8BD5',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u91CD\u8BD5',\n level: 'warning',\n attention: 'medium',\n buildDetails: (label, attempt) => [\n label ? `\u76EE\u6807=${label}` : '',\n attempt !== undefined ? `\u5C1D\u8BD5=${attempt}` : ''\n ],\n },\n {\n key: 'dom_chunk',\n method: 'domChunk',\n label: 'DOM\u7247\u6BB5',\n group: 'DOM',\n step: 'DOM\u7247\u6BB5',\n status: '',\n level: 'info',\n attention: 'low',\n throttleKey: 'dom-chunk',\n throttleMs: 2000,\n buildDetails: (length, snippet, paused) => [\n length !== undefined ? `len=${length}` : '',\n snippet ? `preview=\"${normalizeSnippet(snippet)}\"` : '',\n paused ? 'paused=1' : ''\n ],\n },\n {\n key: 'dom_complete',\n method: 'domComplete',\n label: 'DOM\u7A33\u5B9A\u5B8C\u6210',\n group: 'DOM',\n step: 'DOM\u7A33\u5B9A',\n status: '\u5B8C\u6210',\n level: 'success',\n attention: 'medium',\n buildDetails: (mutationCount, stableTime, wasPaused) => [\n mutationCount !== undefined ? `mutations=${mutationCount}` : '',\n stableTime !== undefined ? `stableTime=${stableTime}ms` : '',\n wasPaused ? 'paused=1' : ''\n ],\n },\n {\n key: 'stream_chunk',\n method: 'streamChunk',\n label: '\u6D41\u5F0F\u7247\u6BB5',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u7247\u6BB5',\n status: '',\n level: 'info',\n attention: 'low',\n throttleKey: 'stream-chunk',\n throttleMs: 2000,\n buildDetails: (length, snippet) => [\n length !== undefined ? `len=${length}` : '',\n snippet ? `preview=\"${normalizeSnippet(snippet)}\"` : ''\n ],\n },\n {\n key: 'stream_events_parsed',\n method: 'streamEventsParsed',\n label: '\u6D41\u5F0F\u4E8B\u4EF6\u89E3\u6790\u5B8C\u6210',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u4E8B\u4EF6\u89E3\u6790',\n status: '\u5B8C\u6210',\n level: 'info',\n attention: 'low',\n throttleKey: 'stream-events',\n throttleMs: 4000,\n buildDetails: (count) => [count !== undefined ? `count=${count}` : ''],\n },\n {\n key: 'stream_complete_event',\n method: 'streamCompleteEvent',\n label: '\u6D41\u5F0F\u5B8C\u6210\u4E8B\u4EF6\u6355\u83B7',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u4E8B\u4EF6',\n status: '\u5B8C\u6210\u4E8B\u4EF6\u5DF2\u6355\u83B7',\n level: 'success',\n attention: 'medium',\n },\n {\n key: 'stream_end',\n method: 'streamEnd',\n label: '\u6D41\u5F0F\u54CD\u5E94\u7ED3\u675F',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u54CD\u5E94',\n status: '\u7ED3\u675F',\n level: 'info',\n attention: 'low',\n },\n {\n key: 'reference_expand_start',\n method: 'referenceExpandStart',\n label: '\u5F15\u7528\u5C55\u5F00\u5F00\u59CB',\n group: '\u5F15\u7528',\n step: '\u5F15\u7528\u5C55\u5F00',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'reference_expand_fail',\n method: 'referenceExpandFail',\n label: '\u5F15\u7528\u5C55\u5F00\u5931\u8D25',\n group: '\u5F15\u7528',\n step: '\u5F15\u7528\u5C55\u5F00',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'medium',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'screenshot_start',\n method: 'screenshotStart',\n label: '\u622A\u56FE\u5F00\u59CB',\n group: '\u622A\u56FE',\n step: '\u622A\u56FE',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n },\n {\n key: 'screenshot_success',\n method: 'screenshotSuccess',\n label: '\u622A\u56FE\u6210\u529F',\n group: '\u622A\u56FE',\n step: '\u622A\u56FE',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n },\n {\n key: 'screenshot_fail',\n method: 'screenshotFail',\n label: '\u622A\u56FE\u5931\u8D25',\n group: '\u622A\u56FE',\n step: '\u622A\u56FE',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'share_start',\n method: 'shareStart',\n label: '\u5206\u4EAB\u94FE\u63A5\u5F00\u59CB',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n },\n {\n key: 'share_progress',\n method: 'shareProgress',\n label: '\u5206\u4EAB\u94FE\u63A5\u6B65\u9AA4',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u6B65\u9AA4',\n level: 'info',\n attention: 'low',\n buildDetails: (label) => [label ? `\u6B65\u9AA4=${label}` : ''],\n },\n {\n key: 'share_success',\n method: 'shareSuccess',\n label: '\u5206\u4EAB\u94FE\u63A5\u6210\u529F',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n buildDetails: (link) => [link ? `\u94FE\u63A5=${link}` : ''],\n },\n {\n key: 'share_fail',\n method: 'shareFail',\n label: '\u5206\u4EAB\u94FE\u63A5\u5931\u8D25',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'share_skip',\n method: 'shareSkip',\n label: '\u5206\u4EAB\u94FE\u63A5\u8DF3\u8FC7',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u8DF3\u8FC7',\n level: 'warning',\n attention: 'medium',\n buildDetails: (reason) => [reason ? `\u539F\u56E0=${reason}` : ''],\n },\n {\n key: 'data_push_success',\n method: 'dataPushSuccess',\n label: '\u6570\u636E\u63A8\u9001\u6210\u529F',\n group: '\u6570\u636E\u63A8\u9001',\n step: '\u6570\u636E\u63A8\u9001',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u8BF4\u660E=${label}` : ''],\n },\n {\n key: 'data_push_fail',\n method: 'dataPushFail',\n label: '\u6570\u636E\u63A8\u9001\u5931\u8D25',\n group: '\u6570\u636E\u63A8\u9001',\n step: '\u6570\u636E\u63A8\u9001',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'popup_detected',\n method: 'popupDetected',\n label: '\u5F39\u7A97\u68C0\u6D4B',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u68C0\u6D4B\u5230\u906E\u7F69',\n level: 'warning',\n attention: 'medium',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'popup_close_attempt',\n method: 'popupCloseAttempt',\n label: '\u5F39\u7A97\u5173\u95ED\u5C1D\u8BD5',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u5C1D\u8BD5\u5173\u95ED',\n level: 'info',\n attention: 'low',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'popup_close_success',\n method: 'popupCloseSuccess',\n label: '\u5F39\u7A97\u5173\u95ED\u5B8C\u6210',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u5173\u95ED\u5B8C\u6210',\n level: 'success',\n attention: 'medium',\n },\n {\n key: 'popup_close_fail',\n method: 'popupCloseFail',\n label: '\u5F39\u7A97\u5173\u95ED\u5931\u8D25',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u5173\u95ED\u5931\u8D25',\n level: 'warning',\n attention: 'medium',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n];\n\nexport const LOG_TEMPLATES = LOG_DEFINITIONS.map((definition) => {\n const attention = definition.attention || 'medium';\n const attentionRank = ATTENTION_RANK[attention] || ATTENTION_RANK.medium;\n const defaultSelected = attentionRank >= DEFAULT_ATTENTION_RANK;\n return {\n key: definition.key,\n label: definition.label,\n group: definition.group,\n attention,\n patterns: buildDefinitionPatterns(definition),\n defaultSelected,\n };\n});\n\nconst buildStepLine = (step, status, details = []) => {\n const parts = [];\n const decoratedStep = step ? decorateLabel(step, STEP_EMOJIS) : '';\n const base = decoratedStep ? `${STEP_PREFIX} ${decoratedStep}` : STEP_PREFIX;\n parts.push(base.trim());\n if (status) parts.push(decorateLabel(status, STATUS_EMOJIS));\n const detailParts = details.filter(Boolean);\n if (detailParts.length > 0) {\n parts.push(...detailParts);\n }\n return parts.join(STEP_SEPARATOR);\n};\n\nconst createThrottle = () => {\n const lastMap = new Map();\n return (key, intervalMs, fn) => {\n const now = Date.now();\n const last = lastMap.get(key) || 0;\n if (now - last >= intervalMs) {\n lastMap.set(key, now);\n fn();\n }\n };\n};\n\nexport const createTemplateLogger = (baseLogger = createBaseLogger()) => {\n const throttle = createThrottle();\n\n const info = (line) => baseLogger.info(line);\n const success = (line) => baseLogger.success(line);\n const warning = (line) => baseLogger.warning(line);\n const error = (line) => baseLogger.error(line);\n const debug = (line) => baseLogger.debug(line);\n const start = (line) => baseLogger.start(line);\n\n const stepInfo = (step, status, details = []) => info(buildStepLine(step, status, details));\n const stepSuccess = (step, status, details = []) => success(buildStepLine(step, status, details));\n const stepWarn = (step, status, details = []) => warning(buildStepLine(step, status, details));\n const stepError = (step, status, details = []) => error(buildStepLine(step, status, details));\n const stepStart = (step, status, details = []) => start(buildStepLine(step, status, details));\n\n const stepHandlers = {\n info: stepInfo,\n success: stepSuccess,\n warning: stepWarn,\n error: stepError,\n start: stepStart,\n };\n\n const logFromDefinition = (definition, details = []) => {\n const handler = stepHandlers[definition.level] || stepInfo;\n const payload = [...details, buildLogTag(definition.key)];\n const emit = () => handler(definition.step, definition.status, payload);\n if (definition.throttleMs) {\n throttle(definition.throttleKey || definition.key, definition.throttleMs, emit);\n return;\n }\n emit();\n };\n\n const definitionMethods = {};\n LOG_DEFINITIONS.forEach((definition) => {\n if (!definition.method) return;\n definitionMethods[definition.method] = (...args) => {\n const details = definition.buildDetails ? definition.buildDetails(...args) : [];\n logFromDefinition(definition, details);\n };\n });\n\n return {\n step: (step, status, details, level = 'info') => {\n if (level === 'error') return stepError(step, status, details);\n if (level === 'warn' || level === 'warning') return stepWarn(step, status, details);\n if (level === 'start') return stepStart(step, status, details);\n if (level === 'success') return stepSuccess(step, status, details);\n return stepInfo(step, status, details);\n },\n info: (message) => info(message),\n success: (message) => success(message),\n warning: (message) => warning(message),\n warn: (message) => warning(message),\n error: (message) => error(message),\n debug: (message) => debug(message),\n start: (message) => start(message),\n ...definitionMethods,\n };\n};\n\nconst getDefaultBaseLogger = () => createBaseLogger('');\n\nexport const Logger = {\n setLogger: (logger) => setDefaultLogger(logger),\n info: (message) => getDefaultBaseLogger().info(message),\n success: (message) => getDefaultBaseLogger().success(message),\n warning: (message) => getDefaultBaseLogger().warning(message),\n warn: (message) => getDefaultBaseLogger().warning(message),\n error: (message) => getDefaultBaseLogger().error(message),\n debug: (message) => getDefaultBaseLogger().debug(message),\n start: (message) => getDefaultBaseLogger().start(message),\n useTemplate: (logger) => {\n if (logger) return createTemplateLogger(createBaseLogger('', logger));\n return createTemplateLogger();\n },\n};\n", "export * from './token-form.js';\nexport * from './actor-fe-config.js';\n", "import { createInternalLogger } from './logger.js';\n\nconst logger = createInternalLogger('InternalUtils');\n\n/**\n * \u89E3\u6790 Cookie \u5B57\u7B26\u4E32\u4E3A Playwright \u683C\u5F0F\u7684 Cookie \u6570\u7EC4\n * @param {string} cookieString - Cookie \u5B57\u7B26\u4E32\n * @param {string} [domain] - Cookie \u57DF\u540D (\u53EF\u9009)\n * @returns {Array} Cookie \u6570\u7EC4\n */\nexport const parseCookies = (cookieString, domain) => {\n const cookies = [];\n const pairs = cookieString.split(';').map(c => c.trim());\n\n for (const pair of pairs) {\n const [name, ...valueParts] = pair.split('=');\n if (name && valueParts.length > 0) {\n const cookie = {\n name: name.trim(),\n value: valueParts.join('=').trim(),\n path: '/',\n };\n if (domain) {\n cookie.domain = domain;\n }\n cookies.push(cookie);\n }\n }\n logger.success('parseCookies', `parsed ${cookies.length} cookies`);\n return cookies;\n};\n", "/**\n * TokenForm: \u8D1F\u8D23\u5404\u5E73\u53F0 Token \u7684\u914D\u7F6E\u3001\u89E3\u6790\u4E0E\u683C\u5F0F\u5316\n * \u6838\u5FC3\u903B\u8F91\u76F4\u63A5\u5185\u805A\u4E8E Config \u5BF9\u8C61\u4E2D (Strategy Pattern)\n * \u65E0\u516C\u5171 default \u7B56\u7565\uFF0C\u5404\u5E73\u53F0\u72EC\u7ACB\u5B9E\u73B0\n */\n\nimport { parseCookies } from '../internals/utils.js';\n\n// --- Constants for Shared Configuration ---\n\nconst SharedFields = [\n { key: 'account_id', label: '\u8D26\u53F7 ID', type: 'text', required: true, placeholder: '\u4F8B\u5982\uFF1A\u624B\u673A\u53F7 / \u90AE\u7BB1', },\n { type: 'divider' },\n { key: 'owner_name', label: '\u6240\u5C5E\u4EBA', type: 'text', required: true, placeholder: '\u4F8B\u5982\uFF1A\u767D\u6CFD', col: 12 },\n { key: 'account_type', label: '\u8D26\u53F7\u7C7B\u578B', type: 'autocomplete', required: true, placeholder: '\u4F8B\u5982\uFF1AEmail', options: ['Phone', 'Google', 'WeChat', 'Email', 'Other'], col: 12 },\n { key: 'note', label: '\u5907\u6CE8', type: 'textarea', required: false, placeholder: '\u5907\u6CE8' }\n];\n\n// --- Config Definitions ---\n\nexport const PlatformSchema = Object.fromEntries(\n Object.entries({\n moonshot: {\n name: 'Kimi',\n match: ['kimi.moonshot.cn'],\n tokenNames: ['kimi_auth'],\n serviceUrl: 'https://kimi.moonshot.cn/',\n tokenSource: 'Cookie',\n parse: (token) => {\n const val = token ? token.trim() : '';\n return val ? { kimi_auth: val } : {};\n },\n format: (values) => {\n const val = values.kimi_auth;\n return (val === undefined || val === null) ? '' : String(val).trim();\n },\n },\n doubao: {\n name: '\u8C46\u5305',\n match: ['doubao.com'],\n tokenNames: ['sessionid'],\n serviceUrl: 'https://www.doubao.com/',\n tokenSource: 'Cookie',\n parse: (token) => {\n const val = token ? token.trim() : '';\n return val ? { sessionid: val } : {};\n },\n format: (values) => {\n const val = values.sessionid;\n return (val === undefined || val === null) ? '' : String(val).trim();\n },\n },\n deepseek: {\n name: 'DeepSeek',\n match: ['chat.deepseek.com'],\n tokenNames: ['userToken'],\n serviceUrl: 'https://chat.deepseek.com/',\n tokenSource: 'LocalStorage',\n guide: '\u8BF7\u8F93\u5165\u5B8C\u6574 JSON\uFF0C\u4F8B\u5982 {\"value\":\"xxxxx\"}\uFF0C\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u63D0\u53D6 value\u3002',\n parse: (token) => {\n const val = token ? token.trim() : '';\n return val ? { userToken: val } : {};\n },\n format: (values) => {\n const raw = values.userToken ? String(values.userToken).trim() : '';\n if (!raw) return '';\n\n // If looks like JSON, must be valid JSON with value\n if (raw.startsWith('{')) {\n try {\n const parsed = JSON.parse(raw);\n if (parsed && typeof parsed.value === 'string') return parsed.value.trim();\n } catch (e) {\n return ''; // Invalid JSON -> Empty\n }\n return ''; // JSON valid but no value field -> Empty\n }\n return raw;\n },\n },\n yuanbao: {\n name: '\u5143\u5B9D',\n match: ['yuanbao.tencent.com'],\n tokenNames: ['hy_user', 'hy_token'],\n serviceUrl: 'https://yuanbao.tencent.com/',\n tokenSource: 'Cookie',\n guide: '\u5206\u522B\u586B\u5165\u4ECE\u6D4F\u89C8\u5668\u83B7\u53D6\u7684 hy_user \u548C hy_token\uFF0C\u7CFB\u7EDF\u5C06\u81EA\u52A8\u62FC\u63A5\u3002',\n parse: (token) => {\n const cookieList = parseCookies(token || '');\n const pairs = {};\n cookieList.forEach(c => {\n pairs[c.name] = c.value;\n });\n return {\n hy_user: pairs['hy_user'] || '',\n hy_token: pairs['hy_token'] || ''\n };\n },\n format: (values) => {\n const u = values.hy_user ? String(values.hy_user).trim() : '';\n const t = values.hy_token ? String(values.hy_token).trim() : '';\n if (!u || !t) return '';\n return `hy_user=${u}; hy_token=${t}`;\n },\n },\n qwen: {\n name: '\u901A\u4E49\u5343\u95EE',\n match: ['tongyi.aliyun.com', 'qwen.ai'],\n tokenNames: ['tongyi_sso_ticket'],\n serviceUrl: 'https://tongyi.aliyun.com/',\n tokenSource: 'Cookie',\n parse: (token) => {\n const val = token ? token.trim() : '';\n return val ? { tongyi_sso_ticket: val } : {};\n },\n format: (values) => {\n const val = values.tongyi_sso_ticket;\n return (val === undefined || val === null) ? '' : String(val).trim();\n },\n },\n erine: {\n name: '\u6587\u5FC3\u4E00\u8A00 (Erine)',\n match: ['yiyan.baidu.com'],\n tokenNames: ['BDUSS'],\n serviceUrl: 'https://yiyan.baidu.com/',\n tokenSource: 'Cookie',\n parse: (token) => {\n const val = token ? token.trim() : '';\n return val ? { BDUSS: val } : {};\n },\n format: (values) => {\n const val = values.BDUSS;\n return (val === undefined || val === null) ? '' : String(val).trim();\n },\n },\n }).map(([key, config]) => {\n config.key = key;\n return [key, config];\n })\n);\n\nfunction createTokenForm() {\n return {\n /**\n * \u81EA\u52A8\u8BC6\u522B URL \u6240\u5C5E\u5E73\u53F0\n * @param {string} url \n * @returns {string|null} actor key\n */\n detectActor(url) {\n if (!url) return null;\n try {\n const hostname = new URL(url).hostname;\n for (const [key, config] of Object.entries(PlatformSchema)) {\n if (config.match && config.match.some(pattern => hostname.includes(pattern))) {\n return key;\n }\n }\n } catch (e) {\n return null;\n }\n return null;\n },\n getSchema(key) {\n if (!key) throw new Error('Actor parameter is required to get platform config');\n\n const config = PlatformSchema[key];\n\n if (!config) {\n throw new Error(`\u672A\u627E\u5230\u5E73\u53F0\u914D\u7F6E: ${key}. \u8BF7\u786E\u4FDD playwright-toolkit/browser-onlys/token-form.js \u4E2D\u5DF2\u5B9A\u4E49\u8BE5\u5E73\u53F0\u3002`);\n }\n\n // \u514B\u9686\u914D\u7F6E\u4EE5\u907F\u514D\u6C61\u67D3\u539F\u59CB\u5BF9\u8C61\n const schema = { ...config };\n\n // \u6D3E\u751F\u5B57\u6BB5\n const fields = [...SharedFields];\n const names = config.tokenNames || [];\n\n // token \u5B57\u6BB5\u524D\u6DFB\u52A0\u5206\u9694\u7EBF\n if (names.length > 0) {\n fields.push({ type: 'divider' });\n }\n\n names.forEach((name) => {\n fields.push({\n key: name,\n label: name,\n type: 'textarea',\n required: true,\n placeholder: `\u8BF7\u8F93\u5165 ${name} \u503C`,\n });\n });\n\n schema.fields = fields;\n return schema;\n },\n parseToken(token, config) {\n if (!config) return {};\n return config.parse(token);\n },\n formatToken(values, config) {\n if (!config) return '';\n return config.format(values);\n },\n validate(values, config) {\n if (!config || !config.fields) return { ok: false, message: '\u914D\u7F6E\u9519\u8BEF' };\n\n // 1. \u6821\u9A8C Schema \u4E2D\u5B9A\u4E49\u7684\u6240\u6709\u5FC5\u586B\u5B57\u6BB5\n for (const field of config.fields) {\n if (field.required) {\n const val = values[field.key];\n if (val === undefined || val === null || String(val).trim() === '') {\n return { ok: false, message: `\u8BF7\u8F93\u5165${field.label}` };\n }\n }\n }\n\n // 2. \u6821\u9A8C\u5E73\u53F0\u7279\u5B9A\u7684 Token \u683C\u5F0F\u5316\u7ED3\u679C\n const formatted = this.formatToken(values, config);\n if (!formatted) {\n return { ok: false, message: '\u51ED\u636E\u683C\u5F0F\u4E0D\u6B63\u786E\u6216\u4E0D\u5B8C\u6574' };\n }\n\n return { ok: true };\n },\n /**\n * \u83B7\u53D6 API \u9759\u6001\u914D\u7F6E\n * @returns {{ path: string, method: string, headers: object }}\n */\n getStaticConfig() {\n return {\n path: '/admin/accounts',\n method: 'POST',\n headers: { 'Content-Type': 'application/json' }\n };\n },\n /**\n * \u6784\u5EFA\u8D26\u53F7\u63D0\u4EA4\u53C2\u6570\n * @param {object} values - \u8868\u5355\u503C\n * @param {object} config - \u5E73\u53F0\u914D\u7F6E (\u6765\u81EA getSchema)\n * @returns {{ ok: boolean, error?: string, params?: object }}\n */\n buildParams(values, config) {\n // 1. \u6821\u9A8C\n const validation = this.validate(values, config);\n if (!validation.ok) {\n return { ok: false, error: validation.message };\n }\n\n // 2. \u683C\u5F0F\u5316 Token\n const token = this.formatToken(values, config);\n\n // 3. \u6784\u5EFA display_name\n const owner = values.owner_name || '';\n const type = values.account_type || '';\n const note = values.note || '';\n const displayParts = [owner, type, note].filter(Boolean);\n const displayName = displayParts.join(' \u00B7 ');\n\n // 4. \u4F7F\u7528 config.key \u786E\u5B9A actor \u540D\u79F0\n const actor = config.key || '';\n\n // 5. \u6784\u5EFA\u8BF7\u6C42\u53C2\u6570\n const params = {\n account_id: values.account_id,\n token,\n actor,\n display_name: displayName,\n status: 'active',\n ban_count: 0\n };\n\n return { ok: true, params };\n }\n };\n}\n\nlet instance = null;\n\nasync function useTokenForm() {\n if (!instance) {\n instance = createTokenForm();\n }\n return instance;\n}\n\nexport const TokenForm = {\n useTokenForm\n};\n\n", "const ConfigMapping = Object.fromEntries(Object.entries(\n {\n doubao: {\n icon: 'https://heartbitai.com/geo-front/20251128/platform/icon_doubao.svg',\n name: '\u8C46\u5305'\n },\n deepseek: {\n icon: 'https://heartbitai.com/geo-front/20251128/platform/icon_deepseek.svg',\n name: 'DeepSeek'\n },\n erine: {\n icon: 'https://heartbitai.com/geo-front/20251128/platform/icon_wenxin.png',\n name: '\u6587\u5FC3\u4E00\u8A00'\n },\n yuanbao: {\n icon: 'https://heartbitai.com/geo-front/20251128/platform/icon_yuanbao.svg',\n name: '\u817E\u8BAF\u5143\u5B9D'\n },\n moonshot: {\n icon: 'https://heartbitai.com/geo-front/20251128/platform/icon_kimi.svg',\n name: 'Kimi'\n },\n qwen: {\n icon: 'https://heartbitai.com/geo-front/20251128/platform/icon_qwen.png',\n name: '\u5343\u95EE'\n }\n }\n).map(([key, value]) => [key, { ...value, key }]));\n\nconst getMapping = (key) => ConfigMapping[key];\nconst list = () => Object.values(ConfigMapping);\n\nfunction createActorFeConfigInstance() {\n return {\n getMapping,\n list\n };\n}\n\nlet actorFeConfigInstance = null;\n\nasync function useActorFeConfig() {\n if (!actorFeConfigInstance) {\n actorFeConfigInstance = createActorFeConfigInstance();\n }\n return actorFeConfigInstance;\n}\n\nexport const ActorFeConfig = {\n useActorFeConfig\n}", "import { Logger, LOG_TEMPLATES, stripAnsi } from '../src/logger.js';\nimport * as BrowserOnlys from '../src/browser-onlys';\n\nexport const usePlaywrightToolKit = () => {\n return {\n Logger,\n ...BrowserOnlys,\n $Internals: {\n LOG_TEMPLATES,\n stripAnsi,\n },\n };\n};\n\n"],
5
- "mappings": "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",
3
+ "sources": ["../src/internals/logger.js", "../src/logger.js", "../src/browser-onlys/index.js", "../src/internals/utils.js", "../src/browser-onlys/account-form.js", "../src/browser-onlys/actor-fe-config.js", "../entrys/browser.js"],
4
+ "sourcesContent": ["\n// =============================================================================\n// Core Helpers & State\n// =============================================================================\n\nconst pad = (value, size = 2) => String(value).padStart(size, '0');\n\nconst formatTimestamp = (date = new Date()) => {\n const year = date.getFullYear();\n const month = pad(date.getMonth() + 1);\n const day = pad(date.getDate());\n const hours = pad(date.getHours());\n const minutes = pad(date.getMinutes());\n const seconds = pad(date.getSeconds());\n const millis = pad(date.getMilliseconds(), 3);\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${millis}`;\n};\n\nconst formatLine = (prefix, icon, message) => {\n const parts = [];\n if (prefix) parts.push(`[${prefix}]`);\n if (icon) parts.push(icon);\n if (message) parts.push(message);\n return parts.join(' ').trim();\n};\n\nconst fallbackLog = {\n info: (...args) => console.log(...args),\n warning: (...args) => (console.warn ? console.warn(...args) : console.log(...args)),\n error: (...args) => console.error(...args),\n debug: (...args) => (console.debug ? console.debug(...args) : console.log(...args)),\n};\n\nconst resolveLogMethod = (logger, name) => {\n if (logger && typeof logger[name] === 'function') {\n return logger[name].bind(logger);\n }\n if (name === 'warning' && logger && typeof logger.warn === 'function') {\n return logger.warn.bind(logger);\n }\n return fallbackLog[name];\n};\n\nlet defaultLogger = null;\n\nexport const setDefaultLogger = (logger) => {\n defaultLogger = logger;\n};\n\n// Lazy resolver: always checks current state\nconst resolveLogger = (explicitLogger) => {\n if (explicitLogger && typeof explicitLogger.info === 'function') {\n return explicitLogger;\n }\n if (defaultLogger && typeof defaultLogger.info === 'function') {\n return defaultLogger;\n }\n return fallbackLog;\n};\n\nconst ANSI = {\n reset: '\\x1b[0m',\n gray: '\\x1b[90m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n cyan: '\\x1b[36m',\n};\n\nconst colorize = (text, color) => {\n if (!text || !color) return text;\n return `${color}${text}${ANSI.reset}`;\n};\n\nexport const createBaseLogger = (prefix = '', explicitLogger) => {\n const name = prefix ? String(prefix) : '';\n\n const dispatch = (methodName, icon, message, color) => {\n const logger = resolveLogger(explicitLogger);\n const logFn = resolveLogMethod(logger, methodName);\n const timestamp = colorize(`[${formatTimestamp()}]`, ANSI.gray);\n const line = formatLine(name, icon, message);\n const coloredLine = colorize(line, color);\n logFn(`${timestamp} ${coloredLine}`.trim());\n };\n\n return {\n info: (message) => dispatch('info', '\uD83D\uDCD6', message, ANSI.cyan),\n success: (message) => dispatch('info', '\u2705', message, ANSI.green),\n warning: (message) => dispatch('warning', '\u26A0\uFE0F', message, ANSI.yellow),\n warn: (message) => dispatch('warning', '\u26A0\uFE0F', message, ANSI.yellow),\n error: (message) => dispatch('error', '\u274C', message, ANSI.red),\n debug: (message) => dispatch('debug', '\uD83D\uDD39', message, ANSI.gray),\n start: (message) => dispatch('info', '\uD83D\uDD37', message, ANSI.blue),\n };\n};\n\n/**\n * \u521B\u5EFA\u6A21\u5757\u7EA7\u65E5\u5FD7\u5668\n * @param {string} moduleName - \u6A21\u5757\u540D\u79F0\n * @param {object} [logger] - \u53EF\u9009\u7684\u663E\u5F0F\u65E5\u5FD7\u5668\uFF0C\u901A\u5E38\u4E0D\u9700\u8981\u4F20\uFF0C\u4F1A\u81EA\u52A8\u4F7F\u7528 setDefaultLogger \u8BBE\u7F6E\u7684\u5168\u5C40\u65E5\u5FD7\u5668\n */\nexport function createInternalLogger(moduleName, explicitLogger) {\n const baseLogger = createBaseLogger(moduleName, explicitLogger);\n\n return {\n start(methodName, params = '') {\n const paramStr = params ? ` (${params})` : '';\n baseLogger.start(`${methodName} \u5F00\u59CB${paramStr}`);\n },\n success(methodName, result = '') {\n const resultStr = result ? ` (${result})` : '';\n baseLogger.success(`${methodName} \u5B8C\u6210${resultStr}`);\n },\n fail(methodName, error) {\n const message = error instanceof Error ? error.message : error;\n baseLogger.error(`${methodName} \u5931\u8D25: ${message}`);\n },\n debug(message) {\n baseLogger.debug(message);\n },\n warn(message) {\n baseLogger.warning(message);\n },\n warning(message) {\n baseLogger.warning(message);\n },\n info(message) {\n baseLogger.info(message);\n }\n };\n}\n", "import { createBaseLogger, setDefaultLogger } from './internals/logger.js';\n\nexport const stripAnsi = (input) => {\n if (!input) return '';\n return String(input).replace(/\\x1b\\[[0-9;]*m/g, '');\n};\n\n// =============================================================================\n// Log Templates & Definitions\n// =============================================================================\n\nconst STEP_PREFIX = '\u6B65\u9AA4:';\nconst STEP_SEPARATOR = ' | ';\nconst STEP_EMOJIS = [\n { match: '\u4EFB\u52A1', emoji: '\uD83E\uDDED' },\n { match: '\u8FD0\u884C\u6A21\u5F0F', emoji: '\uD83E\uDDE9' },\n { match: '\u767B\u5F55', emoji: '\uD83D\uDD10' },\n { match: '\u73AF\u5883', emoji: '\uD83E\uDDEA' },\n { match: '\u8F93\u5165', emoji: '\u2328\uFE0F' },\n { match: '\u53D1\u9001', emoji: '\uD83D\uDCE4' },\n { match: '\u54CD\u5E94\u76D1\u542C', emoji: '\uD83D\uDCE1' },\n { match: '\u7B49\u5F85\u54CD\u5E94', emoji: '\u23F3' },\n { match: '\u6D41\u5F0F', emoji: '\uD83E\uDDF5' },\n { match: '\u5F15\u7528', emoji: '\uD83D\uDCCE' },\n { match: '\u622A\u56FE', emoji: '\uD83D\uDDBC\uFE0F' },\n { match: '\u5206\u4EAB\u94FE\u63A5', emoji: '\uD83D\uDD17' },\n { match: '\u6570\u636E\u63A8\u9001', emoji: '\uD83D\uDCE6' },\n { match: '\u5F39\u7A97', emoji: '\uD83E\uDE9F' },\n];\nconst STATUS_EMOJIS = [\n { match: '\u5F00\u59CB', emoji: '\uD83D\uDE80' },\n { match: '\u5B8C\u6210', emoji: '\u2705' },\n { match: '\u6210\u529F', emoji: '\u2705' },\n { match: '\u5931\u8D25', emoji: '\u274C' },\n { match: '\u8DF3\u8FC7', emoji: '\u23ED\uFE0F' },\n { match: '\u8D85\u65F6', emoji: '\u23F1\uFE0F' },\n { match: '\u91CD\u8BD5', emoji: '\uD83D\uDD01' },\n { match: '\u7ED3\u675F', emoji: '\uD83C\uDFC1' },\n { match: '\u5DF2\u914D\u7F6E', emoji: '\uD83E\uDDF7' },\n { match: '\u5DF2\u68C0\u6D4B', emoji: '\uD83D\uDD0E' },\n];\n\nconst toErrorMessage = (error) => {\n if (!error) return '';\n if (error instanceof Error) return error.message;\n if (typeof error === 'string') return error;\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n};\n\nconst decorateLabel = (label, mappings) => {\n if (!label) return '';\n const mapping = mappings.find((item) => label.includes(item.match));\n if (!mapping) return label;\n return `${mapping.emoji} ${label}`;\n};\n\nconst normalizeSnippet = (snippet, maxLen = 120) => {\n if (!snippet) return '';\n const text = String(snippet).replace(/\\s+/g, ' ').trim();\n if (!text) return '';\n const cleaned = text.replace(/\"/g, \"'\");\n if (cleaned.length <= maxLen) return cleaned;\n return `${cleaned.slice(0, maxLen)}...`;\n};\n\nconst LOG_TAG_PREFIX = '[#log:';\nconst LOG_TAG_SUFFIX = ']';\n\nconst buildLogTag = (key) => `${LOG_TAG_PREFIX}${key}${LOG_TAG_SUFFIX}`;\n\nconst escapeRegExp = (value) => String(value).replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst buildStepPattern = (step, status) => {\n if (!step) return null;\n let pattern = `\u6B65\u9AA4: .*${escapeRegExp(step)}`;\n if (status) {\n pattern += `.*${escapeRegExp(status)}`;\n }\n return new RegExp(pattern);\n};\n\nconst buildDefinitionPatterns = (definition) => {\n const patterns = [new RegExp(`\\\\[#log:${escapeRegExp(definition.key)}\\\\]`)];\n const fallback = buildStepPattern(definition.step, definition.status);\n if (fallback) patterns.push(fallback);\n if (Array.isArray(definition.extraPatterns)) {\n patterns.push(...definition.extraPatterns);\n }\n return patterns;\n};\n\nconst ATTENTION_RANK = {\n low: 1,\n medium: 2,\n high: 3,\n critical: 4,\n};\nconst DEFAULT_ATTENTION_RANK = ATTENTION_RANK.high;\n\nconst LOG_DEFINITIONS = [\n {\n key: 'task_start',\n method: 'taskStart',\n label: '\u4EFB\u52A1\u5F00\u59CB',\n group: '\u4EFB\u52A1',\n step: '\u4EFB\u52A1',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (url) => [url ? `url=${url}` : ''],\n },\n {\n key: 'task_success',\n method: 'taskSuccess',\n label: '\u4EFB\u52A1\u5B8C\u6210',\n group: '\u4EFB\u52A1',\n step: '\u4EFB\u52A1',\n status: '\u5B8C\u6210',\n level: 'success',\n attention: 'high',\n },\n {\n key: 'task_fail',\n method: 'taskFail',\n label: '\u4EFB\u52A1\u5931\u8D25',\n group: '\u4EFB\u52A1',\n step: '\u4EFB\u52A1',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'critical',\n buildDetails: (url, err) => [\n url ? `url=${url}` : '',\n err ? `err=${toErrorMessage(err)}` : ''\n ],\n },\n {\n key: 'runtime_headless',\n method: 'runtimeHeadless',\n label: '\u8FD0\u884C\u6A21\u5F0F\u5F3A\u5236\u65E0\u5934',\n group: '\u8FD0\u884C\u6A21\u5F0F',\n step: '\u8FD0\u884C\u6A21\u5F0F',\n status: 'Apify \u73AF\u5883\u5F3A\u5236\u65E0\u5934',\n level: 'warning',\n attention: 'medium',\n },\n {\n key: 'login_inject_success',\n method: 'loginInjectSuccess',\n label: '\u767B\u5F55\u6001\u6CE8\u5165\u6210\u529F',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u6001\u6CE8\u5165',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'medium',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'login_inject_skip',\n method: 'loginInjectSkip',\n label: '\u767B\u5F55\u6001\u6CE8\u5165\u8DF3\u8FC7',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u6001\u6CE8\u5165',\n status: '\u8DF3\u8FC7',\n level: 'warning',\n attention: 'medium',\n buildDetails: (reason) => [reason ? `\u539F\u56E0=${reason}` : ''],\n },\n {\n key: 'login_inject_fail',\n method: 'loginInjectFail',\n label: '\u767B\u5F55\u6001\u6CE8\u5165\u5931\u8D25',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u6001\u6CE8\u5165',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'login_verify_success',\n method: 'loginVerifySuccess',\n label: '\u767B\u5F55\u9A8C\u8BC1\u6210\u529F',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u9A8C\u8BC1',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'login_verify_skip',\n method: 'loginVerifySkip',\n label: '\u767B\u5F55\u9A8C\u8BC1\u8DF3\u8FC7',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u9A8C\u8BC1',\n status: '\u8DF3\u8FC7',\n level: 'warning',\n attention: 'medium',\n buildDetails: (reason) => [reason ? `\u539F\u56E0=${reason}` : ''],\n },\n {\n key: 'login_verify_fail',\n method: 'loginVerifyFail',\n label: '\u767B\u5F55\u9A8C\u8BC1\u5931\u8D25',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u9A8C\u8BC1',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'critical',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'env_check_success',\n method: 'envCheckSuccess',\n label: '\u73AF\u5883\u68C0\u67E5\u6210\u529F',\n group: '\u73AF\u5883',\n step: '\u73AF\u5883\u68C0\u67E5',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'medium',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'env_check_fail',\n method: 'envCheckFail',\n label: '\u73AF\u5883\u68C0\u67E5\u5931\u8D25',\n group: '\u73AF\u5883',\n step: '\u73AF\u5883\u68C0\u67E5',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'input_query_start',\n method: 'inputQuery',\n label: '\u8F93\u5165\u67E5\u8BE2\u5F00\u59CB',\n group: '\u8F93\u5165',\n step: '\u8F93\u5165\u67E5\u8BE2',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (query) => [query ? `query=${query}` : ''],\n },\n {\n key: 'send_action',\n method: 'sendAction',\n label: '\u53D1\u9001\u8BF7\u6C42',\n group: '\u53D1\u9001',\n step: '\u53D1\u9001\u8BF7\u6C42',\n status: '\u70B9\u51FB\u53D1\u9001',\n level: 'info',\n attention: 'low',\n },\n {\n key: 'response_listen_start',\n method: 'responseListenStart',\n label: '\u54CD\u5E94\u76D1\u542C\u5F00\u59CB',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (label, timeoutSec) => [\n label ? `\u76EE\u6807=${label}` : '',\n timeoutSec ? `timeout=${timeoutSec}s` : ''\n ],\n },\n {\n key: 'response_listen_ready',\n method: 'responseListenReady',\n label: '\u54CD\u5E94\u76D1\u542C\u5DF2\u914D\u7F6E',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u5DF2\u914D\u7F6E',\n level: 'info',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_listen_detected',\n method: 'responseListenDetected',\n label: '\u54CD\u5E94\u76D1\u542C\u5DF2\u68C0\u6D4B',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u5DF2\u68C0\u6D4B',\n level: 'success',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_listen_timeout',\n method: 'responseListenTimeout',\n label: '\u54CD\u5E94\u76D1\u542C\u8D85\u65F6',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u8D85\u65F6',\n level: 'error',\n attention: 'high',\n buildDetails: (label, err) => [\n label ? `\u76EE\u6807=${label}` : '',\n err ? `err=${toErrorMessage(err)}` : ''\n ],\n },\n {\n key: 'response_listen_end',\n method: 'responseListenEnd',\n label: '\u54CD\u5E94\u76D1\u542C\u7ED3\u675F',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u7ED3\u675F',\n level: 'info',\n attention: 'low',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_wait_start',\n method: 'responseWaitStart',\n label: '\u7B49\u5F85\u54CD\u5E94\u5F00\u59CB',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_wait_success',\n method: 'responseWaitSuccess',\n label: '\u7B49\u5F85\u54CD\u5E94\u5B8C\u6210',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u5B8C\u6210',\n level: 'success',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_wait_fail',\n method: 'responseWaitFail',\n label: '\u7B49\u5F85\u54CD\u5E94\u5931\u8D25',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'high',\n buildDetails: (label, err) => [\n label ? `\u76EE\u6807=${label}` : '',\n err ? `err=${toErrorMessage(err)}` : ''\n ],\n },\n {\n key: 'response_wait_retry',\n method: 'responseWaitRetry',\n label: '\u7B49\u5F85\u54CD\u5E94\u91CD\u8BD5',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u91CD\u8BD5',\n level: 'warning',\n attention: 'medium',\n buildDetails: (label, attempt) => [\n label ? `\u76EE\u6807=${label}` : '',\n attempt !== undefined ? `\u5C1D\u8BD5=${attempt}` : ''\n ],\n },\n {\n key: 'dom_chunk',\n method: 'domChunk',\n label: 'DOM\u7247\u6BB5',\n group: 'DOM',\n step: 'DOM\u7247\u6BB5',\n status: '',\n level: 'info',\n attention: 'low',\n throttleKey: 'dom-chunk',\n throttleMs: 2000,\n buildDetails: (length, snippet, paused) => [\n length !== undefined ? `len=${length}` : '',\n snippet ? `preview=\"${normalizeSnippet(snippet)}\"` : '',\n paused ? 'paused=1' : ''\n ],\n },\n {\n key: 'dom_complete',\n method: 'domComplete',\n label: 'DOM\u7A33\u5B9A\u5B8C\u6210',\n group: 'DOM',\n step: 'DOM\u7A33\u5B9A',\n status: '\u5B8C\u6210',\n level: 'success',\n attention: 'medium',\n buildDetails: (mutationCount, stableTime, wasPaused) => [\n mutationCount !== undefined ? `mutations=${mutationCount}` : '',\n stableTime !== undefined ? `stableTime=${stableTime}ms` : '',\n wasPaused ? 'paused=1' : ''\n ],\n },\n {\n key: 'stream_chunk',\n method: 'streamChunk',\n label: '\u6D41\u5F0F\u7247\u6BB5',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u7247\u6BB5',\n status: '',\n level: 'info',\n attention: 'low',\n throttleKey: 'stream-chunk',\n throttleMs: 2000,\n buildDetails: (length, snippet) => [\n length !== undefined ? `len=${length}` : '',\n snippet ? `preview=\"${normalizeSnippet(snippet)}\"` : ''\n ],\n },\n {\n key: 'stream_events_parsed',\n method: 'streamEventsParsed',\n label: '\u6D41\u5F0F\u4E8B\u4EF6\u89E3\u6790\u5B8C\u6210',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u4E8B\u4EF6\u89E3\u6790',\n status: '\u5B8C\u6210',\n level: 'info',\n attention: 'low',\n throttleKey: 'stream-events',\n throttleMs: 4000,\n buildDetails: (count) => [count !== undefined ? `count=${count}` : ''],\n },\n {\n key: 'stream_complete_event',\n method: 'streamCompleteEvent',\n label: '\u6D41\u5F0F\u5B8C\u6210\u4E8B\u4EF6\u6355\u83B7',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u4E8B\u4EF6',\n status: '\u5B8C\u6210\u4E8B\u4EF6\u5DF2\u6355\u83B7',\n level: 'success',\n attention: 'medium',\n },\n {\n key: 'stream_end',\n method: 'streamEnd',\n label: '\u6D41\u5F0F\u54CD\u5E94\u7ED3\u675F',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u54CD\u5E94',\n status: '\u7ED3\u675F',\n level: 'info',\n attention: 'low',\n },\n {\n key: 'reference_expand_start',\n method: 'referenceExpandStart',\n label: '\u5F15\u7528\u5C55\u5F00\u5F00\u59CB',\n group: '\u5F15\u7528',\n step: '\u5F15\u7528\u5C55\u5F00',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'reference_expand_fail',\n method: 'referenceExpandFail',\n label: '\u5F15\u7528\u5C55\u5F00\u5931\u8D25',\n group: '\u5F15\u7528',\n step: '\u5F15\u7528\u5C55\u5F00',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'medium',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'screenshot_start',\n method: 'screenshotStart',\n label: '\u622A\u56FE\u5F00\u59CB',\n group: '\u622A\u56FE',\n step: '\u622A\u56FE',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n },\n {\n key: 'screenshot_success',\n method: 'screenshotSuccess',\n label: '\u622A\u56FE\u6210\u529F',\n group: '\u622A\u56FE',\n step: '\u622A\u56FE',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n },\n {\n key: 'screenshot_fail',\n method: 'screenshotFail',\n label: '\u622A\u56FE\u5931\u8D25',\n group: '\u622A\u56FE',\n step: '\u622A\u56FE',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'share_start',\n method: 'shareStart',\n label: '\u5206\u4EAB\u94FE\u63A5\u5F00\u59CB',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n },\n {\n key: 'share_progress',\n method: 'shareProgress',\n label: '\u5206\u4EAB\u94FE\u63A5\u6B65\u9AA4',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u6B65\u9AA4',\n level: 'info',\n attention: 'low',\n buildDetails: (label) => [label ? `\u6B65\u9AA4=${label}` : ''],\n },\n {\n key: 'share_success',\n method: 'shareSuccess',\n label: '\u5206\u4EAB\u94FE\u63A5\u6210\u529F',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n buildDetails: (link) => [link ? `\u94FE\u63A5=${link}` : ''],\n },\n {\n key: 'share_fail',\n method: 'shareFail',\n label: '\u5206\u4EAB\u94FE\u63A5\u5931\u8D25',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'share_skip',\n method: 'shareSkip',\n label: '\u5206\u4EAB\u94FE\u63A5\u8DF3\u8FC7',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u8DF3\u8FC7',\n level: 'warning',\n attention: 'medium',\n buildDetails: (reason) => [reason ? `\u539F\u56E0=${reason}` : ''],\n },\n {\n key: 'data_push_success',\n method: 'dataPushSuccess',\n label: '\u6570\u636E\u63A8\u9001\u6210\u529F',\n group: '\u6570\u636E\u63A8\u9001',\n step: '\u6570\u636E\u63A8\u9001',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u8BF4\u660E=${label}` : ''],\n },\n {\n key: 'data_push_fail',\n method: 'dataPushFail',\n label: '\u6570\u636E\u63A8\u9001\u5931\u8D25',\n group: '\u6570\u636E\u63A8\u9001',\n step: '\u6570\u636E\u63A8\u9001',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'popup_detected',\n method: 'popupDetected',\n label: '\u5F39\u7A97\u68C0\u6D4B',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u68C0\u6D4B\u5230\u906E\u7F69',\n level: 'warning',\n attention: 'medium',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'popup_close_attempt',\n method: 'popupCloseAttempt',\n label: '\u5F39\u7A97\u5173\u95ED\u5C1D\u8BD5',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u5C1D\u8BD5\u5173\u95ED',\n level: 'info',\n attention: 'low',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'popup_close_success',\n method: 'popupCloseSuccess',\n label: '\u5F39\u7A97\u5173\u95ED\u5B8C\u6210',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u5173\u95ED\u5B8C\u6210',\n level: 'success',\n attention: 'medium',\n },\n {\n key: 'popup_close_fail',\n method: 'popupCloseFail',\n label: '\u5F39\u7A97\u5173\u95ED\u5931\u8D25',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u5173\u95ED\u5931\u8D25',\n level: 'warning',\n attention: 'medium',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n];\n\nexport const LOG_TEMPLATES = LOG_DEFINITIONS.map((definition) => {\n const attention = definition.attention || 'medium';\n const attentionRank = ATTENTION_RANK[attention] || ATTENTION_RANK.medium;\n const defaultSelected = attentionRank >= DEFAULT_ATTENTION_RANK;\n return {\n key: definition.key,\n label: definition.label,\n group: definition.group,\n attention,\n patterns: buildDefinitionPatterns(definition),\n defaultSelected,\n };\n});\n\nconst buildStepLine = (step, status, details = []) => {\n const parts = [];\n const decoratedStep = step ? decorateLabel(step, STEP_EMOJIS) : '';\n const base = decoratedStep ? `${STEP_PREFIX} ${decoratedStep}` : STEP_PREFIX;\n parts.push(base.trim());\n if (status) parts.push(decorateLabel(status, STATUS_EMOJIS));\n const detailParts = details.filter(Boolean);\n if (detailParts.length > 0) {\n parts.push(...detailParts);\n }\n return parts.join(STEP_SEPARATOR);\n};\n\nconst createThrottle = () => {\n const lastMap = new Map();\n return (key, intervalMs, fn) => {\n const now = Date.now();\n const last = lastMap.get(key) || 0;\n if (now - last >= intervalMs) {\n lastMap.set(key, now);\n fn();\n }\n };\n};\n\nexport const createTemplateLogger = (baseLogger = createBaseLogger()) => {\n const throttle = createThrottle();\n\n const info = (line) => baseLogger.info(line);\n const success = (line) => baseLogger.success(line);\n const warning = (line) => baseLogger.warning(line);\n const error = (line) => baseLogger.error(line);\n const debug = (line) => baseLogger.debug(line);\n const start = (line) => baseLogger.start(line);\n\n const stepInfo = (step, status, details = []) => info(buildStepLine(step, status, details));\n const stepSuccess = (step, status, details = []) => success(buildStepLine(step, status, details));\n const stepWarn = (step, status, details = []) => warning(buildStepLine(step, status, details));\n const stepError = (step, status, details = []) => error(buildStepLine(step, status, details));\n const stepStart = (step, status, details = []) => start(buildStepLine(step, status, details));\n\n const stepHandlers = {\n info: stepInfo,\n success: stepSuccess,\n warning: stepWarn,\n error: stepError,\n start: stepStart,\n };\n\n const logFromDefinition = (definition, details = []) => {\n const handler = stepHandlers[definition.level] || stepInfo;\n const payload = [...details, buildLogTag(definition.key)];\n const emit = () => handler(definition.step, definition.status, payload);\n if (definition.throttleMs) {\n throttle(definition.throttleKey || definition.key, definition.throttleMs, emit);\n return;\n }\n emit();\n };\n\n const definitionMethods = {};\n LOG_DEFINITIONS.forEach((definition) => {\n if (!definition.method) return;\n definitionMethods[definition.method] = (...args) => {\n const details = definition.buildDetails ? definition.buildDetails(...args) : [];\n logFromDefinition(definition, details);\n };\n });\n\n return {\n step: (step, status, details, level = 'info') => {\n if (level === 'error') return stepError(step, status, details);\n if (level === 'warn' || level === 'warning') return stepWarn(step, status, details);\n if (level === 'start') return stepStart(step, status, details);\n if (level === 'success') return stepSuccess(step, status, details);\n return stepInfo(step, status, details);\n },\n info: (message) => info(message),\n success: (message) => success(message),\n warning: (message) => warning(message),\n warn: (message) => warning(message),\n error: (message) => error(message),\n debug: (message) => debug(message),\n start: (message) => start(message),\n ...definitionMethods,\n };\n};\n\nconst getDefaultBaseLogger = () => createBaseLogger('');\n\nexport const Logger = {\n setLogger: (logger) => setDefaultLogger(logger),\n info: (message) => getDefaultBaseLogger().info(message),\n success: (message) => getDefaultBaseLogger().success(message),\n warning: (message) => getDefaultBaseLogger().warning(message),\n warn: (message) => getDefaultBaseLogger().warning(message),\n error: (message) => getDefaultBaseLogger().error(message),\n debug: (message) => getDefaultBaseLogger().debug(message),\n start: (message) => getDefaultBaseLogger().start(message),\n useTemplate: (logger) => {\n if (logger) return createTemplateLogger(createBaseLogger('', logger));\n return createTemplateLogger();\n },\n};\n", "export * from './account-form.js';\nexport * from './actor-fe-config.js';\n", "import { createInternalLogger } from './logger.js';\n\nconst logger = createInternalLogger('InternalUtils');\n\n/**\n * \u89E3\u6790 Cookie \u5B57\u7B26\u4E32\u4E3A Playwright \u683C\u5F0F\u7684 Cookie \u6570\u7EC4\n * @param {string} cookieString - Cookie \u5B57\u7B26\u4E32\n * @param {string} [domain] - Cookie \u57DF\u540D (\u53EF\u9009)\n * @returns {Array} Cookie \u6570\u7EC4\n */\nexport const parseCookies = (cookieString, domain) => {\n const cookies = [];\n const pairs = cookieString.split(';').map(c => c.trim());\n\n for (const pair of pairs) {\n const [name, ...valueParts] = pair.split('=');\n if (name && valueParts.length > 0) {\n const cookie = {\n name: name.trim(),\n value: valueParts.join('=').trim(),\n path: '/',\n };\n if (domain) {\n cookie.domain = domain;\n }\n cookies.push(cookie);\n }\n }\n logger.success('parseCookies', `parsed ${cookies.length} cookies`);\n return cookies;\n};\n", "/**\n * AccountForm: \u8D1F\u8D23\u5404\u5E73\u53F0 Token \u7684\u914D\u7F6E\u3001\u89E3\u6790\u4E0E\u683C\u5F0F\u5316\n * \u6838\u5FC3\u903B\u8F91\u76F4\u63A5\u5185\u805A\u4E8E Config \u5BF9\u8C61\u4E2D (Strategy Pattern)\n * \u65E0\u516C\u5171 default \u7B56\u7565\uFF0C\u5404\u5E73\u53F0\u72EC\u7ACB\u5B9E\u73B0\n */\n\nimport { parseCookies } from '../internals/utils.js';\n\n// --- Constants for Shared Configuration ---\n\nconst SharedFields = [\n { key: 'account_id', label: '\u8D26\u53F7 ID', type: 'text', required: true, placeholder: '\u4F8B\u5982\uFF1A\u624B\u673A\u53F7 / \u90AE\u7BB1', },\n { type: 'divider' },\n { key: 'owner_name', label: '\u6240\u5C5E\u4EBA', type: 'text', required: true, placeholder: '\u4F8B\u5982\uFF1A\u767D\u6CFD', col: 12 },\n { key: 'account_type', label: '\u8D26\u53F7\u7C7B\u578B', type: 'select', required: true, placeholder: '\u4F8B\u5982\uFF1AEmail', options: ['Phone', 'Google', 'Github', 'Email', 'WeChat', 'Taobao', 'ZhifuBao', 'Other'], col: 12 },\n { key: 'note', label: '\u5907\u6CE8', type: 'textarea', required: false, placeholder: '\u5907\u6CE8' }\n];\n\n// --- Config Definitions ---\n\nexport const PlatformSchema = Object.fromEntries(\n Object.entries({\n moonshot: {\n name: 'Kimi',\n domain: 'www.kimi.ai',\n tokenNames: ['kimi_auth'],\n tokenSource: 'Cookie',\n parse: (token) => {\n const val = token ? token.trim() : '';\n return val ? { kimi_auth: val } : {};\n },\n format: (values) => {\n const val = values.kimi_auth;\n return (val === undefined || val === null) ? '' : String(val).trim();\n },\n },\n doubao: {\n name: '\u8C46\u5305',\n domain: 'www.doubao.com',\n tokenNames: ['sessionid'],\n tokenSource: 'Cookie',\n parse: (token) => {\n const val = token ? token.trim() : '';\n return val ? { sessionid: val } : {};\n },\n format: (values) => {\n const val = values.sessionid;\n return (val === undefined || val === null) ? '' : String(val).trim();\n },\n },\n deepseek: {\n name: 'DeepSeek',\n domain: 'chat.deepseek.com',\n tokenNames: ['userToken'],\n tokenSource: 'LocalStorage',\n guide: '\u8BF7\u8F93\u5165\u5B8C\u6574 JSON\uFF0C\u4F8B\u5982 {\"value\":\"xxxxx\"}\uFF0C\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u63D0\u53D6 value\u3002',\n parse: (token) => {\n const val = token ? token.trim() : '';\n return val ? { userToken: val } : {};\n },\n format: (values) => {\n const raw = values.userToken ? String(values.userToken).trim() : '';\n if (!raw) return '';\n\n // If looks like JSON, must be valid JSON with value\n if (raw.startsWith('{')) {\n try {\n const parsed = JSON.parse(raw);\n if (parsed && typeof parsed.value === 'string') return parsed.value.trim();\n } catch (e) {\n return ''; // Invalid JSON -> Empty\n }\n return ''; // JSON valid but no value field -> Empty\n }\n return raw;\n },\n },\n yuanbao: {\n name: '\u5143\u5B9D',\n domain: 'yuanbao.tencent.com',\n tokenNames: ['hy_user', 'hy_token'],\n tokenSource: 'Cookie',\n guide: '\u5206\u522B\u586B\u5165\u4ECE\u6D4F\u89C8\u5668\u83B7\u53D6\u7684 hy_user \u548C hy_token\uFF0C\u7CFB\u7EDF\u5C06\u81EA\u52A8\u62FC\u63A5\u3002',\n parse: (token) => {\n const cookieList = parseCookies(token || '');\n const pairs = {};\n cookieList.forEach(c => {\n pairs[c.name] = c.value;\n });\n return {\n hy_user: pairs['hy_user'] || '',\n hy_token: pairs['hy_token'] || ''\n };\n },\n format: (values) => {\n const u = values.hy_user ? String(values.hy_user).trim() : '';\n const t = values.hy_token ? String(values.hy_token).trim() : '';\n if (!u || !t) return '';\n return `hy_user=${u}; hy_token=${t}`;\n },\n },\n qwen: {\n name: '\u901A\u4E49\u5343\u95EE',\n domain: 'www.qianwen.com',\n tokenNames: ['tongyi_sso_ticket'],\n tokenSource: 'Cookie',\n parse: (token) => {\n const val = token ? token.trim() : '';\n return val ? { tongyi_sso_ticket: val } : {};\n },\n format: (values) => {\n const val = values.tongyi_sso_ticket;\n return (val === undefined || val === null) ? '' : String(val).trim();\n },\n },\n erine: {\n name: '\u6587\u5FC3\u4E00\u8A00 (Erine)',\n domain: 'yiyan.baidu.com',\n tokenNames: ['BDUSS'],\n tokenSource: 'Cookie',\n parse: (token) => {\n const val = token ? token.trim() : '';\n return val ? { BDUSS: val } : {};\n },\n format: (values) => {\n const val = values.BDUSS;\n return (val === undefined || val === null) ? '' : String(val).trim();\n },\n },\n }).map(([key, config]) => {\n config.key = key;\n return [key, config];\n })\n);\n\nfunction createAccountForm() {\n return {\n /**\n * \u81EA\u52A8\u8BC6\u522B URL \u6240\u5C5E\u5E73\u53F0\n * @param {string} url \n * @returns {string|null} actor key\n */\n detectActor(url) {\n if (!url) return null;\n try {\n const hostname = new URL(url).hostname;\n for (const [key, config] of Object.entries(PlatformSchema)) {\n const domain = String(config.domain || '').trim().replace(/^https?:\\/\\//, '').replace(/\\/.*$/, '');\n if (!domain) continue;\n if (hostname === domain || hostname.endsWith(`.${domain}`)) return key;\n }\n } catch (e) {\n return null;\n }\n return null;\n },\n getSchema(key) {\n if (!key) throw new Error('Actor parameter is required to get platform config');\n\n const config = PlatformSchema[key];\n\n if (!config) {\n throw new Error(`\u672A\u627E\u5230\u5E73\u53F0\u914D\u7F6E: ${key}. \u8BF7\u786E\u4FDD playwright-toolkit/browser-onlys/account-form.js \u4E2D\u5DF2\u5B9A\u4E49\u8BE5\u5E73\u53F0\u3002`);\n }\n\n // \u514B\u9686\u914D\u7F6E\u4EE5\u907F\u514D\u6C61\u67D3\u539F\u59CB\u5BF9\u8C61\n const schema = { ...config };\n\n // \u6D3E\u751F\u5B57\u6BB5\n const fields = [...SharedFields];\n const names = config.tokenNames || [];\n\n // token \u5B57\u6BB5\u524D\u6DFB\u52A0\u5206\u9694\u7EBF\n if (names.length > 0) {\n fields.push({ type: 'divider' });\n }\n\n names.forEach((name) => {\n fields.push({\n key: name,\n label: name,\n type: 'textarea',\n required: true,\n placeholder: `\u8BF7\u8F93\u5165 ${name} \u503C`,\n });\n });\n\n schema.fields = fields;\n return schema;\n },\n parseToken(token, config) {\n if (!config) return {};\n return config.parse(token);\n },\n formatToken(values, config) {\n if (!config) return '';\n return config.format(values);\n },\n validate(values, config) {\n if (!config || !config.fields) return { ok: false, message: '\u914D\u7F6E\u9519\u8BEF' };\n\n // 1. \u6821\u9A8C Schema \u4E2D\u5B9A\u4E49\u7684\u6240\u6709\u5FC5\u586B\u5B57\u6BB5\n for (const field of config.fields) {\n if (field.required) {\n const val = values[field.key];\n if (val === undefined || val === null || String(val).trim() === '') {\n return { ok: false, message: `\u8BF7\u8F93\u5165${field.label}` };\n }\n }\n }\n\n // 2. \u6821\u9A8C\u5E73\u53F0\u7279\u5B9A\u7684 Token \u683C\u5F0F\u5316\u7ED3\u679C\n const formatted = this.formatToken(values, config);\n if (!formatted) {\n return { ok: false, message: '\u51ED\u636E\u683C\u5F0F\u4E0D\u6B63\u786E\u6216\u4E0D\u5B8C\u6574' };\n }\n\n return { ok: true };\n },\n /**\n * \u83B7\u53D6 API \u9759\u6001\u914D\u7F6E\n * @returns {{ path: string, method: string, headers: object }}\n */\n getStaticConfig() {\n return {\n path: '/admin/accounts',\n method: 'POST',\n headers: { 'Content-Type': 'application/json' }\n };\n },\n /**\n * \u6784\u5EFA\u8D26\u53F7\u63D0\u4EA4\u53C2\u6570\n * @param {object} values - \u8868\u5355\u503C\n * @param {object} config - \u5E73\u53F0\u914D\u7F6E (\u6765\u81EA getSchema)\n * @returns {{ ok: boolean, error?: string, params?: object }}\n */\n buildParams(values, config) {\n // 1. \u6821\u9A8C\n const validation = this.validate(values, config);\n if (!validation.ok) {\n return { ok: false, error: validation.message };\n }\n\n // 2. \u683C\u5F0F\u5316 Token\n const token = this.formatToken(values, config);\n\n // 3. \u6784\u5EFA display_name\n const owner = values.owner_name || '';\n const type = values.account_type || '';\n const note = values.note || '';\n const displayParts = [owner, type, note].filter(Boolean);\n const displayName = displayParts.join(' \u00B7 ');\n\n // 4. \u4F7F\u7528 config.key \u786E\u5B9A actor \u540D\u79F0\n const actor = config.key || '';\n\n // 5. \u6784\u5EFA\u8BF7\u6C42\u53C2\u6570\n const params = {\n account_id: values.account_id,\n token,\n actor,\n display_name: displayName,\n status: 'active',\n ban_count: 0\n };\n\n return { ok: true, params };\n }\n };\n}\n\nlet instance = null;\n\nasync function useAccountForm() {\n if (!instance) {\n instance = createAccountForm();\n }\n return instance;\n}\n\nexport const AccountForm = {\n useAccountForm\n};\n", "const ConfigMapping = Object.fromEntries(Object.entries(\n {\n doubao: {\n icon: 'https://heartbitai.com/geo-front/20251128/platform/icon_doubao.svg',\n name: '\u8C46\u5305'\n },\n deepseek: {\n icon: 'https://heartbitai.com/geo-front/20251128/platform/icon_deepseek.svg',\n name: 'DeepSeek'\n },\n erine: {\n icon: 'https://heartbitai.com/geo-front/20251128/platform/icon_wenxin.png',\n name: '\u6587\u5FC3\u4E00\u8A00'\n },\n yuanbao: {\n icon: 'https://heartbitai.com/geo-front/20251128/platform/icon_yuanbao.svg',\n name: '\u817E\u8BAF\u5143\u5B9D'\n },\n moonshot: {\n icon: 'https://heartbitai.com/geo-front/20251128/platform/icon_kimi.svg',\n name: 'Kimi'\n },\n qwen: {\n icon: 'https://heartbitai.com/geo-front/20251128/platform/icon_qwen.png',\n name: '\u5343\u95EE'\n }\n }\n).map(([key, value]) => [key, { ...value, key }]));\n\nconst getMapping = (key) => ConfigMapping[key];\nconst list = () => Object.values(ConfigMapping);\n\nfunction createActorFeConfigInstance() {\n return {\n getMapping,\n list\n };\n}\n\nlet actorFeConfigInstance = null;\n\nasync function useActorFeConfig() {\n if (!actorFeConfigInstance) {\n actorFeConfigInstance = createActorFeConfigInstance();\n }\n return actorFeConfigInstance;\n}\n\nexport const ActorFeConfig = {\n useActorFeConfig\n}", "import { Logger, LOG_TEMPLATES, stripAnsi } from '../src/logger.js';\nimport * as BrowserOnlys from '../src/browser-onlys';\n\nexport const usePlaywrightToolKit = () => {\n return {\n Logger,\n ...BrowserOnlys,\n $Internals: {\n LOG_TEMPLATES,\n stripAnsi,\n },\n };\n};\n\n"],
5
+ "mappings": ";;;;;;;AAKA,IAAM,MAAM,CAAC,OAAO,OAAO,MAAM,OAAO,KAAK,EAAE,SAAS,MAAM,GAAG;AAEjE,IAAM,kBAAkB,CAAC,OAAO,oBAAI,KAAK,MAAM;AAC3C,QAAM,OAAO,KAAK,YAAY;AAC9B,QAAM,QAAQ,IAAI,KAAK,SAAS,IAAI,CAAC;AACrC,QAAM,MAAM,IAAI,KAAK,QAAQ,CAAC;AAC9B,QAAM,QAAQ,IAAI,KAAK,SAAS,CAAC;AACjC,QAAM,UAAU,IAAI,KAAK,WAAW,CAAC;AACrC,QAAM,UAAU,IAAI,KAAK,WAAW,CAAC;AACrC,QAAM,SAAS,IAAI,KAAK,gBAAgB,GAAG,CAAC;AAC5C,SAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO,IAAI,MAAM;AAC3E;AAEA,IAAM,aAAa,CAAC,QAAQ,MAAM,YAAY;AAC1C,QAAM,QAAQ,CAAC;AACf,MAAI,OAAQ,OAAM,KAAK,IAAI,MAAM,GAAG;AACpC,MAAI,KAAM,OAAM,KAAK,IAAI;AACzB,MAAI,QAAS,OAAM,KAAK,OAAO;AAC/B,SAAO,MAAM,KAAK,GAAG,EAAE,KAAK;AAChC;AAEA,IAAM,cAAc;AAAA,EAChB,MAAM,IAAI,SAAS,QAAQ,IAAI,GAAG,IAAI;AAAA,EACtC,SAAS,IAAI,SAAU,QAAQ,OAAO,QAAQ,KAAK,GAAG,IAAI,IAAI,QAAQ,IAAI,GAAG,IAAI;AAAA,EACjF,OAAO,IAAI,SAAS,QAAQ,MAAM,GAAG,IAAI;AAAA,EACzC,OAAO,IAAI,SAAU,QAAQ,QAAQ,QAAQ,MAAM,GAAG,IAAI,IAAI,QAAQ,IAAI,GAAG,IAAI;AACrF;AAEA,IAAM,mBAAmB,CAACA,SAAQ,SAAS;AACvC,MAAIA,WAAU,OAAOA,QAAO,IAAI,MAAM,YAAY;AAC9C,WAAOA,QAAO,IAAI,EAAE,KAAKA,OAAM;AAAA,EACnC;AACA,MAAI,SAAS,aAAaA,WAAU,OAAOA,QAAO,SAAS,YAAY;AACnE,WAAOA,QAAO,KAAK,KAAKA,OAAM;AAAA,EAClC;AACA,SAAO,YAAY,IAAI;AAC3B;AAEA,IAAI,gBAAgB;AAEb,IAAM,mBAAmB,CAACA,YAAW;AACxC,kBAAgBA;AACpB;AAGA,IAAM,gBAAgB,CAAC,mBAAmB;AACtC,MAAI,kBAAkB,OAAO,eAAe,SAAS,YAAY;AAC7D,WAAO;AAAA,EACX;AACA,MAAI,iBAAiB,OAAO,cAAc,SAAS,YAAY;AAC3D,WAAO;AAAA,EACX;AACA,SAAO;AACX;AAEA,IAAM,OAAO;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AACV;AAEA,IAAM,WAAW,CAAC,MAAM,UAAU;AAC9B,MAAI,CAAC,QAAQ,CAAC,MAAO,QAAO;AAC5B,SAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,KAAK;AACvC;AAEO,IAAM,mBAAmB,CAAC,SAAS,IAAI,mBAAmB;AAC7D,QAAM,OAAO,SAAS,OAAO,MAAM,IAAI;AAEvC,QAAM,WAAW,CAAC,YAAY,MAAM,SAAS,UAAU;AACnD,UAAMA,UAAS,cAAc,cAAc;AAC3C,UAAM,QAAQ,iBAAiBA,SAAQ,UAAU;AACjD,UAAM,YAAY,SAAS,IAAI,gBAAgB,CAAC,KAAK,KAAK,IAAI;AAC9D,UAAM,OAAO,WAAW,MAAM,MAAM,OAAO;AAC3C,UAAM,cAAc,SAAS,MAAM,KAAK;AACxC,UAAM,GAAG,SAAS,IAAI,WAAW,GAAG,KAAK,CAAC;AAAA,EAC9C;AAEA,SAAO;AAAA,IACH,MAAM,CAAC,YAAY,SAAS,QAAQ,aAAM,SAAS,KAAK,IAAI;AAAA,IAC5D,SAAS,CAAC,YAAY,SAAS,QAAQ,UAAK,SAAS,KAAK,KAAK;AAAA,IAC/D,SAAS,CAAC,YAAY,SAAS,WAAW,gBAAM,SAAS,KAAK,MAAM;AAAA,IACpE,MAAM,CAAC,YAAY,SAAS,WAAW,gBAAM,SAAS,KAAK,MAAM;AAAA,IACjE,OAAO,CAAC,YAAY,SAAS,SAAS,UAAK,SAAS,KAAK,GAAG;AAAA,IAC5D,OAAO,CAAC,YAAY,SAAS,SAAS,aAAM,SAAS,KAAK,IAAI;AAAA,IAC9D,OAAO,CAAC,YAAY,SAAS,QAAQ,aAAM,SAAS,KAAK,IAAI;AAAA,EACjE;AACJ;AAOO,SAAS,qBAAqB,YAAY,gBAAgB;AAC7D,QAAM,aAAa,iBAAiB,YAAY,cAAc;AAE9D,SAAO;AAAA,IACH,MAAM,YAAY,SAAS,IAAI;AAC3B,YAAM,WAAW,SAAS,KAAK,MAAM,MAAM;AAC3C,iBAAW,MAAM,GAAG,UAAU,gBAAM,QAAQ,EAAE;AAAA,IAClD;AAAA,IACA,QAAQ,YAAY,SAAS,IAAI;AAC7B,YAAM,YAAY,SAAS,KAAK,MAAM,MAAM;AAC5C,iBAAW,QAAQ,GAAG,UAAU,gBAAM,SAAS,EAAE;AAAA,IACrD;AAAA,IACA,KAAK,YAAY,OAAO;AACpB,YAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AACzD,iBAAW,MAAM,GAAG,UAAU,kBAAQ,OAAO,EAAE;AAAA,IACnD;AAAA,IACA,MAAM,SAAS;AACX,iBAAW,MAAM,OAAO;AAAA,IAC5B;AAAA,IACA,KAAK,SAAS;AACV,iBAAW,QAAQ,OAAO;AAAA,IAC9B;AAAA,IACA,QAAQ,SAAS;AACb,iBAAW,QAAQ,OAAO;AAAA,IAC9B;AAAA,IACA,KAAK,SAAS;AACV,iBAAW,KAAK,OAAO;AAAA,IAC3B;AAAA,EACJ;AACJ;;;AClIO,IAAM,YAAY,CAAC,UAAU;AAChC,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,OAAO,KAAK,EAAE,QAAQ,mBAAmB,EAAE;AACtD;AAMA,IAAM,cAAc;AACpB,IAAM,iBAAiB;AACvB,IAAM,cAAc;AAAA,EAChB,EAAE,OAAO,gBAAM,OAAO,YAAK;AAAA,EAC3B,EAAE,OAAO,4BAAQ,OAAO,YAAK;AAAA,EAC7B,EAAE,OAAO,gBAAM,OAAO,YAAK;AAAA,EAC3B,EAAE,OAAO,gBAAM,OAAO,YAAK;AAAA,EAC3B,EAAE,OAAO,gBAAM,OAAO,eAAK;AAAA,EAC3B,EAAE,OAAO,gBAAM,OAAO,YAAK;AAAA,EAC3B,EAAE,OAAO,4BAAQ,OAAO,YAAK;AAAA,EAC7B,EAAE,OAAO,4BAAQ,OAAO,SAAI;AAAA,EAC5B,EAAE,OAAO,gBAAM,OAAO,YAAK;AAAA,EAC3B,EAAE,OAAO,gBAAM,OAAO,YAAK;AAAA,EAC3B,EAAE,OAAO,gBAAM,OAAO,kBAAM;AAAA,EAC5B,EAAE,OAAO,4BAAQ,OAAO,YAAK;AAAA,EAC7B,EAAE,OAAO,4BAAQ,OAAO,YAAK;AAAA,EAC7B,EAAE,OAAO,gBAAM,OAAO,YAAK;AAC/B;AACA,IAAM,gBAAgB;AAAA,EAClB,EAAE,OAAO,gBAAM,OAAO,YAAK;AAAA,EAC3B,EAAE,OAAO,gBAAM,OAAO,SAAI;AAAA,EAC1B,EAAE,OAAO,gBAAM,OAAO,SAAI;AAAA,EAC1B,EAAE,OAAO,gBAAM,OAAO,SAAI;AAAA,EAC1B,EAAE,OAAO,gBAAM,OAAO,eAAK;AAAA,EAC3B,EAAE,OAAO,gBAAM,OAAO,eAAK;AAAA,EAC3B,EAAE,OAAO,gBAAM,OAAO,YAAK;AAAA,EAC3B,EAAE,OAAO,gBAAM,OAAO,YAAK;AAAA,EAC3B,EAAE,OAAO,sBAAO,OAAO,YAAK;AAAA,EAC5B,EAAE,OAAO,sBAAO,OAAO,YAAK;AAChC;AAEA,IAAM,iBAAiB,CAAC,UAAU;AAC9B,MAAI,CAAC,MAAO,QAAO;AACnB,MAAI,iBAAiB,MAAO,QAAO,MAAM;AACzC,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI;AACA,WAAO,KAAK,UAAU,KAAK;AAAA,EAC/B,QAAQ;AACJ,WAAO,OAAO,KAAK;AAAA,EACvB;AACJ;AAEA,IAAM,gBAAgB,CAAC,OAAO,aAAa;AACvC,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,UAAU,SAAS,KAAK,CAAC,SAAS,MAAM,SAAS,KAAK,KAAK,CAAC;AAClE,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,GAAG,QAAQ,KAAK,IAAI,KAAK;AACpC;AAEA,IAAM,mBAAmB,CAAC,SAAS,SAAS,QAAQ;AAChD,MAAI,CAAC,QAAS,QAAO;AACrB,QAAM,OAAO,OAAO,OAAO,EAAE,QAAQ,QAAQ,GAAG,EAAE,KAAK;AACvD,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,UAAU,KAAK,QAAQ,MAAM,GAAG;AACtC,MAAI,QAAQ,UAAU,OAAQ,QAAO;AACrC,SAAO,GAAG,QAAQ,MAAM,GAAG,MAAM,CAAC;AACtC;AAEA,IAAM,iBAAiB;AACvB,IAAM,iBAAiB;AAEvB,IAAM,cAAc,CAAC,QAAQ,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc;AAErE,IAAM,eAAe,CAAC,UAAU,OAAO,KAAK,EAAE,QAAQ,uBAAuB,MAAM;AAEnF,IAAM,mBAAmB,CAAC,MAAM,WAAW;AACvC,MAAI,CAAC,KAAM,QAAO;AAClB,MAAI,UAAU,mBAAS,aAAa,IAAI,CAAC;AACzC,MAAI,QAAQ;AACR,eAAW,KAAK,aAAa,MAAM,CAAC;AAAA,EACxC;AACA,SAAO,IAAI,OAAO,OAAO;AAC7B;AAEA,IAAM,0BAA0B,CAAC,eAAe;AAC5C,QAAM,WAAW,CAAC,IAAI,OAAO,WAAW,aAAa,WAAW,GAAG,CAAC,KAAK,CAAC;AAC1E,QAAM,WAAW,iBAAiB,WAAW,MAAM,WAAW,MAAM;AACpE,MAAI,SAAU,UAAS,KAAK,QAAQ;AACpC,MAAI,MAAM,QAAQ,WAAW,aAAa,GAAG;AACzC,aAAS,KAAK,GAAG,WAAW,aAAa;AAAA,EAC7C;AACA,SAAO;AACX;AAEA,IAAM,iBAAiB;AAAA,EACnB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AACd;AACA,IAAM,yBAAyB,eAAe;AAE9C,IAAM,kBAAkB;AAAA,EACpB;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,QAAQ,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE;AAAA,EACnD;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,EACf;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,KAAK,QAAQ;AAAA,MACxB,MAAM,OAAO,GAAG,KAAK;AAAA,MACrB,MAAM,OAAO,eAAe,GAAG,CAAC,KAAK;AAAA,IACzC;AAAA,EACJ;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,EACf;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,WAAW,CAAC,SAAS,UAAU,MAAM,KAAK,EAAE;AAAA,EAC/D;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,WAAW,CAAC,SAAS,gBAAM,MAAM,KAAK,EAAE;AAAA,EAC3D;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,QAAQ,CAAC,MAAM,OAAO,eAAe,GAAG,CAAC,KAAK,EAAE;AAAA,EACnE;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,WAAW,CAAC,SAAS,UAAU,MAAM,KAAK,EAAE;AAAA,EAC/D;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,WAAW,CAAC,SAAS,gBAAM,MAAM,KAAK,EAAE;AAAA,EAC3D;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,QAAQ,CAAC,MAAM,OAAO,eAAe,GAAG,CAAC,KAAK,EAAE;AAAA,EACnE;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,WAAW,CAAC,SAAS,UAAU,MAAM,KAAK,EAAE;AAAA,EAC/D;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,QAAQ,CAAC,MAAM,OAAO,eAAe,GAAG,CAAC,KAAK,EAAE;AAAA,EACnE;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,UAAU,CAAC,QAAQ,SAAS,KAAK,KAAK,EAAE;AAAA,EAC3D;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,EACf;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,OAAO,eAAe;AAAA,MACjC,QAAQ,gBAAM,KAAK,KAAK;AAAA,MACxB,aAAa,WAAW,UAAU,MAAM;AAAA,IAC5C;AAAA,EACJ;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,UAAU,CAAC,QAAQ,gBAAM,KAAK,KAAK,EAAE;AAAA,EACxD;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,UAAU,CAAC,QAAQ,gBAAM,KAAK,KAAK,EAAE;AAAA,EACxD;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,OAAO,QAAQ;AAAA,MAC1B,QAAQ,gBAAM,KAAK,KAAK;AAAA,MACxB,MAAM,OAAO,eAAe,GAAG,CAAC,KAAK;AAAA,IACzC;AAAA,EACJ;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,UAAU,CAAC,QAAQ,gBAAM,KAAK,KAAK,EAAE;AAAA,EACxD;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,UAAU,CAAC,QAAQ,gBAAM,KAAK,KAAK,EAAE;AAAA,EACxD;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,UAAU,CAAC,QAAQ,gBAAM,KAAK,KAAK,EAAE;AAAA,EACxD;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,OAAO,QAAQ;AAAA,MAC1B,QAAQ,gBAAM,KAAK,KAAK;AAAA,MACxB,MAAM,OAAO,eAAe,GAAG,CAAC,KAAK;AAAA,IACzC;AAAA,EACJ;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,OAAO,YAAY;AAAA,MAC9B,QAAQ,gBAAM,KAAK,KAAK;AAAA,MACxB,YAAY,SAAY,gBAAM,OAAO,KAAK;AAAA,IAC9C;AAAA,EACJ;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,cAAc,CAAC,QAAQ,SAAS,WAAW;AAAA,MACvC,WAAW,SAAY,OAAO,MAAM,KAAK;AAAA,MACzC,UAAU,YAAY,iBAAiB,OAAO,CAAC,MAAM;AAAA,MACrD,SAAS,aAAa;AAAA,IAC1B;AAAA,EACJ;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,eAAe,YAAY,cAAc;AAAA,MACpD,kBAAkB,SAAY,aAAa,aAAa,KAAK;AAAA,MAC7D,eAAe,SAAY,cAAc,UAAU,OAAO;AAAA,MAC1D,YAAY,aAAa;AAAA,IAC7B;AAAA,EACJ;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,cAAc,CAAC,QAAQ,YAAY;AAAA,MAC/B,WAAW,SAAY,OAAO,MAAM,KAAK;AAAA,MACzC,UAAU,YAAY,iBAAiB,OAAO,CAAC,MAAM;AAAA,IACzD;AAAA,EACJ;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,cAAc,CAAC,UAAU,CAAC,UAAU,SAAY,SAAS,KAAK,KAAK,EAAE;AAAA,EACzE;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,EACf;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,EACf;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,UAAU,CAAC,QAAQ,gBAAM,KAAK,KAAK,EAAE;AAAA,EACxD;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,QAAQ,CAAC,MAAM,OAAO,eAAe,GAAG,CAAC,KAAK,EAAE;AAAA,EACnE;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,EACf;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,EACf;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,QAAQ,CAAC,MAAM,OAAO,eAAe,GAAG,CAAC,KAAK,EAAE;AAAA,EACnE;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,EACf;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,UAAU,CAAC,QAAQ,gBAAM,KAAK,KAAK,EAAE;AAAA,EACxD;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,SAAS,CAAC,OAAO,gBAAM,IAAI,KAAK,EAAE;AAAA,EACrD;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,QAAQ,CAAC,MAAM,OAAO,eAAe,GAAG,CAAC,KAAK,EAAE;AAAA,EACnE;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,WAAW,CAAC,SAAS,gBAAM,MAAM,KAAK,EAAE;AAAA,EAC3D;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,UAAU,CAAC,QAAQ,gBAAM,KAAK,KAAK,EAAE;AAAA,EACxD;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,QAAQ,CAAC,MAAM,OAAO,eAAe,GAAG,CAAC,KAAK,EAAE;AAAA,EACnE;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,WAAW,CAAC,SAAS,UAAU,MAAM,KAAK,EAAE;AAAA,EAC/D;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,WAAW,CAAC,SAAS,UAAU,MAAM,KAAK,EAAE;AAAA,EAC/D;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,EACf;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc,CAAC,QAAQ,CAAC,MAAM,OAAO,eAAe,GAAG,CAAC,KAAK,EAAE;AAAA,EACnE;AACJ;AAEO,IAAM,gBAAgB,gBAAgB,IAAI,CAAC,eAAe;AAC7D,QAAM,YAAY,WAAW,aAAa;AAC1C,QAAM,gBAAgB,eAAe,SAAS,KAAK,eAAe;AAClE,QAAM,kBAAkB,iBAAiB;AACzC,SAAO;AAAA,IACH,KAAK,WAAW;AAAA,IAChB,OAAO,WAAW;AAAA,IAClB,OAAO,WAAW;AAAA,IAClB;AAAA,IACA,UAAU,wBAAwB,UAAU;AAAA,IAC5C;AAAA,EACJ;AACJ,CAAC;AAED,IAAM,gBAAgB,CAAC,MAAM,QAAQ,UAAU,CAAC,MAAM;AAClD,QAAM,QAAQ,CAAC;AACf,QAAM,gBAAgB,OAAO,cAAc,MAAM,WAAW,IAAI;AAChE,QAAM,OAAO,gBAAgB,GAAG,WAAW,IAAI,aAAa,KAAK;AACjE,QAAM,KAAK,KAAK,KAAK,CAAC;AACtB,MAAI,OAAQ,OAAM,KAAK,cAAc,QAAQ,aAAa,CAAC;AAC3D,QAAM,cAAc,QAAQ,OAAO,OAAO;AAC1C,MAAI,YAAY,SAAS,GAAG;AACxB,UAAM,KAAK,GAAG,WAAW;AAAA,EAC7B;AACA,SAAO,MAAM,KAAK,cAAc;AACpC;AAEA,IAAM,iBAAiB,MAAM;AACzB,QAAM,UAAU,oBAAI,IAAI;AACxB,SAAO,CAAC,KAAK,YAAY,OAAO;AAC5B,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,OAAO,QAAQ,IAAI,GAAG,KAAK;AACjC,QAAI,MAAM,QAAQ,YAAY;AAC1B,cAAQ,IAAI,KAAK,GAAG;AACpB,SAAG;AAAA,IACP;AAAA,EACJ;AACJ;AAEO,IAAM,uBAAuB,CAAC,aAAa,iBAAiB,MAAM;AACrE,QAAM,WAAW,eAAe;AAEhC,QAAM,OAAO,CAAC,SAAS,WAAW,KAAK,IAAI;AAC3C,QAAM,UAAU,CAAC,SAAS,WAAW,QAAQ,IAAI;AACjD,QAAM,UAAU,CAAC,SAAS,WAAW,QAAQ,IAAI;AACjD,QAAM,QAAQ,CAAC,SAAS,WAAW,MAAM,IAAI;AAC7C,QAAM,QAAQ,CAAC,SAAS,WAAW,MAAM,IAAI;AAC7C,QAAM,QAAQ,CAAC,SAAS,WAAW,MAAM,IAAI;AAE7C,QAAM,WAAW,CAAC,MAAM,QAAQ,UAAU,CAAC,MAAM,KAAK,cAAc,MAAM,QAAQ,OAAO,CAAC;AAC1F,QAAM,cAAc,CAAC,MAAM,QAAQ,UAAU,CAAC,MAAM,QAAQ,cAAc,MAAM,QAAQ,OAAO,CAAC;AAChG,QAAM,WAAW,CAAC,MAAM,QAAQ,UAAU,CAAC,MAAM,QAAQ,cAAc,MAAM,QAAQ,OAAO,CAAC;AAC7F,QAAM,YAAY,CAAC,MAAM,QAAQ,UAAU,CAAC,MAAM,MAAM,cAAc,MAAM,QAAQ,OAAO,CAAC;AAC5F,QAAM,YAAY,CAAC,MAAM,QAAQ,UAAU,CAAC,MAAM,MAAM,cAAc,MAAM,QAAQ,OAAO,CAAC;AAE5F,QAAM,eAAe;AAAA,IACjB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,IACP,OAAO;AAAA,EACX;AAEA,QAAM,oBAAoB,CAAC,YAAY,UAAU,CAAC,MAAM;AACpD,UAAM,UAAU,aAAa,WAAW,KAAK,KAAK;AAClD,UAAM,UAAU,CAAC,GAAG,SAAS,YAAY,WAAW,GAAG,CAAC;AACxD,UAAM,OAAO,MAAM,QAAQ,WAAW,MAAM,WAAW,QAAQ,OAAO;AACtE,QAAI,WAAW,YAAY;AACvB,eAAS,WAAW,eAAe,WAAW,KAAK,WAAW,YAAY,IAAI;AAC9E;AAAA,IACJ;AACA,SAAK;AAAA,EACT;AAEA,QAAM,oBAAoB,CAAC;AAC3B,kBAAgB,QAAQ,CAAC,eAAe;AACpC,QAAI,CAAC,WAAW,OAAQ;AACxB,sBAAkB,WAAW,MAAM,IAAI,IAAI,SAAS;AAChD,YAAM,UAAU,WAAW,eAAe,WAAW,aAAa,GAAG,IAAI,IAAI,CAAC;AAC9E,wBAAkB,YAAY,OAAO;AAAA,IACzC;AAAA,EACJ,CAAC;AAED,SAAO;AAAA,IACH,MAAM,CAAC,MAAM,QAAQ,SAAS,QAAQ,WAAW;AAC7C,UAAI,UAAU,QAAS,QAAO,UAAU,MAAM,QAAQ,OAAO;AAC7D,UAAI,UAAU,UAAU,UAAU,UAAW,QAAO,SAAS,MAAM,QAAQ,OAAO;AAClF,UAAI,UAAU,QAAS,QAAO,UAAU,MAAM,QAAQ,OAAO;AAC7D,UAAI,UAAU,UAAW,QAAO,YAAY,MAAM,QAAQ,OAAO;AACjE,aAAO,SAAS,MAAM,QAAQ,OAAO;AAAA,IACzC;AAAA,IACA,MAAM,CAAC,YAAY,KAAK,OAAO;AAAA,IAC/B,SAAS,CAAC,YAAY,QAAQ,OAAO;AAAA,IACrC,SAAS,CAAC,YAAY,QAAQ,OAAO;AAAA,IACrC,MAAM,CAAC,YAAY,QAAQ,OAAO;AAAA,IAClC,OAAO,CAAC,YAAY,MAAM,OAAO;AAAA,IACjC,OAAO,CAAC,YAAY,MAAM,OAAO;AAAA,IACjC,OAAO,CAAC,YAAY,MAAM,OAAO;AAAA,IACjC,GAAG;AAAA,EACP;AACJ;AAEA,IAAM,uBAAuB,MAAM,iBAAiB,EAAE;AAE/C,IAAM,SAAS;AAAA,EAClB,WAAW,CAACC,YAAW,iBAAiBA,OAAM;AAAA,EAC9C,MAAM,CAAC,YAAY,qBAAqB,EAAE,KAAK,OAAO;AAAA,EACtD,SAAS,CAAC,YAAY,qBAAqB,EAAE,QAAQ,OAAO;AAAA,EAC5D,SAAS,CAAC,YAAY,qBAAqB,EAAE,QAAQ,OAAO;AAAA,EAC5D,MAAM,CAAC,YAAY,qBAAqB,EAAE,QAAQ,OAAO;AAAA,EACzD,OAAO,CAAC,YAAY,qBAAqB,EAAE,MAAM,OAAO;AAAA,EACxD,OAAO,CAAC,YAAY,qBAAqB,EAAE,MAAM,OAAO;AAAA,EACxD,OAAO,CAAC,YAAY,qBAAqB,EAAE,MAAM,OAAO;AAAA,EACxD,aAAa,CAACA,YAAW;AACrB,QAAIA,QAAQ,QAAO,qBAAqB,iBAAiB,IAAIA,OAAM,CAAC;AACpE,WAAO,qBAAqB;AAAA,EAChC;AACJ;;;ACruBA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,IAAM,SAAS,qBAAqB,eAAe;AAQ5C,IAAM,eAAe,CAAC,cAAc,WAAW;AAClD,QAAM,UAAU,CAAC;AACjB,QAAM,QAAQ,aAAa,MAAM,GAAG,EAAE,IAAI,OAAK,EAAE,KAAK,CAAC;AAEvD,aAAW,QAAQ,OAAO;AACtB,UAAM,CAAC,MAAM,GAAG,UAAU,IAAI,KAAK,MAAM,GAAG;AAC5C,QAAI,QAAQ,WAAW,SAAS,GAAG;AAC/B,YAAM,SAAS;AAAA,QACX,MAAM,KAAK,KAAK;AAAA,QAChB,OAAO,WAAW,KAAK,GAAG,EAAE,KAAK;AAAA,QACjC,MAAM;AAAA,MACV;AACA,UAAI,QAAQ;AACR,eAAO,SAAS;AAAA,MACpB;AACA,cAAQ,KAAK,MAAM;AAAA,IACvB;AAAA,EACJ;AACA,SAAO,QAAQ,gBAAgB,UAAU,QAAQ,MAAM,UAAU;AACjE,SAAO;AACX;;;ACpBA,IAAM,eAAe;AAAA,EACjB,EAAE,KAAK,cAAc,OAAO,mBAAS,MAAM,QAAQ,UAAU,MAAM,aAAa,sDAAe;AAAA,EAC/F,EAAE,MAAM,UAAU;AAAA,EAClB,EAAE,KAAK,cAAc,OAAO,sBAAO,MAAM,QAAQ,UAAU,MAAM,aAAa,kCAAS,KAAK,GAAG;AAAA,EAC/F,EAAE,KAAK,gBAAgB,OAAO,4BAAQ,MAAM,UAAU,UAAU,MAAM,aAAa,2BAAY,SAAS,CAAC,SAAS,UAAU,UAAU,SAAS,UAAU,UAAU,YAAY,OAAO,GAAG,KAAK,GAAG;AAAA,EACjM,EAAE,KAAK,QAAQ,OAAO,gBAAM,MAAM,YAAY,UAAU,OAAO,aAAa,eAAK;AACrF;AAIO,IAAM,iBAAiB,OAAO;AAAA,EACjC,OAAO,QAAQ;AAAA,IACX,UAAU;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,YAAY,CAAC,WAAW;AAAA,MACxB,aAAa;AAAA,MACb,OAAO,CAAC,UAAU;AACd,cAAM,MAAM,QAAQ,MAAM,KAAK,IAAI;AACnC,eAAO,MAAM,EAAE,WAAW,IAAI,IAAI,CAAC;AAAA,MACvC;AAAA,MACA,QAAQ,CAAC,WAAW;AAChB,cAAM,MAAM,OAAO;AACnB,eAAQ,QAAQ,UAAa,QAAQ,OAAQ,KAAK,OAAO,GAAG,EAAE,KAAK;AAAA,MACvE;AAAA,IACJ;AAAA,IACA,QAAQ;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,YAAY,CAAC,WAAW;AAAA,MACxB,aAAa;AAAA,MACb,OAAO,CAAC,UAAU;AACd,cAAM,MAAM,QAAQ,MAAM,KAAK,IAAI;AACnC,eAAO,MAAM,EAAE,WAAW,IAAI,IAAI,CAAC;AAAA,MACvC;AAAA,MACA,QAAQ,CAAC,WAAW;AAChB,cAAM,MAAM,OAAO;AACnB,eAAQ,QAAQ,UAAa,QAAQ,OAAQ,KAAK,OAAO,GAAG,EAAE,KAAK;AAAA,MACvE;AAAA,IACJ;AAAA,IACA,UAAU;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,YAAY,CAAC,WAAW;AAAA,MACxB,aAAa;AAAA,MACb,OAAO;AAAA,MACP,OAAO,CAAC,UAAU;AACd,cAAM,MAAM,QAAQ,MAAM,KAAK,IAAI;AACnC,eAAO,MAAM,EAAE,WAAW,IAAI,IAAI,CAAC;AAAA,MACvC;AAAA,MACA,QAAQ,CAAC,WAAW;AAChB,cAAM,MAAM,OAAO,YAAY,OAAO,OAAO,SAAS,EAAE,KAAK,IAAI;AACjE,YAAI,CAAC,IAAK,QAAO;AAGjB,YAAI,IAAI,WAAW,GAAG,GAAG;AACrB,cAAI;AACA,kBAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,gBAAI,UAAU,OAAO,OAAO,UAAU,SAAU,QAAO,OAAO,MAAM,KAAK;AAAA,UAC7E,SAAS,GAAG;AACR,mBAAO;AAAA,UACX;AACA,iBAAO;AAAA,QACX;AACA,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,YAAY,CAAC,WAAW,UAAU;AAAA,MAClC,aAAa;AAAA,MACb,OAAO;AAAA,MACP,OAAO,CAAC,UAAU;AACd,cAAM,aAAa,aAAa,SAAS,EAAE;AAC3C,cAAM,QAAQ,CAAC;AACf,mBAAW,QAAQ,OAAK;AACpB,gBAAM,EAAE,IAAI,IAAI,EAAE;AAAA,QACtB,CAAC;AACD,eAAO;AAAA,UACH,SAAS,MAAM,SAAS,KAAK;AAAA,UAC7B,UAAU,MAAM,UAAU,KAAK;AAAA,QACnC;AAAA,MACJ;AAAA,MACA,QAAQ,CAAC,WAAW;AAChB,cAAM,IAAI,OAAO,UAAU,OAAO,OAAO,OAAO,EAAE,KAAK,IAAI;AAC3D,cAAM,IAAI,OAAO,WAAW,OAAO,OAAO,QAAQ,EAAE,KAAK,IAAI;AAC7D,YAAI,CAAC,KAAK,CAAC,EAAG,QAAO;AACrB,eAAO,WAAW,CAAC,cAAc,CAAC;AAAA,MACtC;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,YAAY,CAAC,mBAAmB;AAAA,MAChC,aAAa;AAAA,MACb,OAAO,CAAC,UAAU;AACd,cAAM,MAAM,QAAQ,MAAM,KAAK,IAAI;AACnC,eAAO,MAAM,EAAE,mBAAmB,IAAI,IAAI,CAAC;AAAA,MAC/C;AAAA,MACA,QAAQ,CAAC,WAAW;AAChB,cAAM,MAAM,OAAO;AACnB,eAAQ,QAAQ,UAAa,QAAQ,OAAQ,KAAK,OAAO,GAAG,EAAE,KAAK;AAAA,MACvE;AAAA,IACJ;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,YAAY,CAAC,OAAO;AAAA,MACpB,aAAa;AAAA,MACb,OAAO,CAAC,UAAU;AACd,cAAM,MAAM,QAAQ,MAAM,KAAK,IAAI;AACnC,eAAO,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC;AAAA,MACnC;AAAA,MACA,QAAQ,CAAC,WAAW;AAChB,cAAM,MAAM,OAAO;AACnB,eAAQ,QAAQ,UAAa,QAAQ,OAAQ,KAAK,OAAO,GAAG,EAAE,KAAK;AAAA,MACvE;AAAA,IACJ;AAAA,EACJ,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,MAAM;AACtB,WAAO,MAAM;AACb,WAAO,CAAC,KAAK,MAAM;AAAA,EACvB,CAAC;AACL;AAEA,SAAS,oBAAoB;AACzB,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMH,YAAY,KAAK;AACb,UAAI,CAAC,IAAK,QAAO;AACjB,UAAI;AACA,cAAM,WAAW,IAAI,IAAI,GAAG,EAAE;AAC9B,mBAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,cAAc,GAAG;AACxD,gBAAM,SAAS,OAAO,OAAO,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,gBAAgB,EAAE,EAAE,QAAQ,SAAS,EAAE;AACjG,cAAI,CAAC,OAAQ;AACb,cAAI,aAAa,UAAU,SAAS,SAAS,IAAI,MAAM,EAAE,EAAG,QAAO;AAAA,QACvE;AAAA,MACJ,SAAS,GAAG;AACR,eAAO;AAAA,MACX;AACA,aAAO;AAAA,IACX;AAAA,IACA,UAAU,KAAK;AACX,UAAI,CAAC,IAAK,OAAM,IAAI,MAAM,oDAAoD;AAE9E,YAAM,SAAS,eAAe,GAAG;AAEjC,UAAI,CAAC,QAAQ;AACT,cAAM,IAAI,MAAM,+CAAY,GAAG,wHAAiE;AAAA,MACpG;AAGA,YAAM,SAAS,EAAE,GAAG,OAAO;AAG3B,YAAM,SAAS,CAAC,GAAG,YAAY;AAC/B,YAAM,QAAQ,OAAO,cAAc,CAAC;AAGpC,UAAI,MAAM,SAAS,GAAG;AAClB,eAAO,KAAK,EAAE,MAAM,UAAU,CAAC;AAAA,MACnC;AAEA,YAAM,QAAQ,CAAC,SAAS;AACpB,eAAO,KAAK;AAAA,UACR,KAAK;AAAA,UACL,OAAO;AAAA,UACP,MAAM;AAAA,UACN,UAAU;AAAA,UACV,aAAa,sBAAO,IAAI;AAAA,QAC5B,CAAC;AAAA,MACL,CAAC;AAED,aAAO,SAAS;AAChB,aAAO;AAAA,IACX;AAAA,IACA,WAAW,OAAO,QAAQ;AACtB,UAAI,CAAC,OAAQ,QAAO,CAAC;AACrB,aAAO,OAAO,MAAM,KAAK;AAAA,IAC7B;AAAA,IACA,YAAY,QAAQ,QAAQ;AACxB,UAAI,CAAC,OAAQ,QAAO;AACpB,aAAO,OAAO,OAAO,MAAM;AAAA,IAC/B;AAAA,IACA,SAAS,QAAQ,QAAQ;AACrB,UAAI,CAAC,UAAU,CAAC,OAAO,OAAQ,QAAO,EAAE,IAAI,OAAO,SAAS,2BAAO;AAGnE,iBAAW,SAAS,OAAO,QAAQ;AAC/B,YAAI,MAAM,UAAU;AAChB,gBAAM,MAAM,OAAO,MAAM,GAAG;AAC5B,cAAI,QAAQ,UAAa,QAAQ,QAAQ,OAAO,GAAG,EAAE,KAAK,MAAM,IAAI;AAChE,mBAAO,EAAE,IAAI,OAAO,SAAS,qBAAM,MAAM,KAAK,GAAG;AAAA,UACrD;AAAA,QACJ;AAAA,MACJ;AAGA,YAAM,YAAY,KAAK,YAAY,QAAQ,MAAM;AACjD,UAAI,CAAC,WAAW;AACZ,eAAO,EAAE,IAAI,OAAO,SAAS,qEAAc;AAAA,MAC/C;AAEA,aAAO,EAAE,IAAI,KAAK;AAAA,IACtB;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB;AACd,aAAO;AAAA,QACH,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAClD;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,YAAY,QAAQ,QAAQ;AAExB,YAAM,aAAa,KAAK,SAAS,QAAQ,MAAM;AAC/C,UAAI,CAAC,WAAW,IAAI;AAChB,eAAO,EAAE,IAAI,OAAO,OAAO,WAAW,QAAQ;AAAA,MAClD;AAGA,YAAM,QAAQ,KAAK,YAAY,QAAQ,MAAM;AAG7C,YAAM,QAAQ,OAAO,cAAc;AACnC,YAAM,OAAO,OAAO,gBAAgB;AACpC,YAAM,OAAO,OAAO,QAAQ;AAC5B,YAAM,eAAe,CAAC,OAAO,MAAM,IAAI,EAAE,OAAO,OAAO;AACvD,YAAM,cAAc,aAAa,KAAK,QAAK;AAG3C,YAAM,QAAQ,OAAO,OAAO;AAG5B,YAAM,SAAS;AAAA,QACX,YAAY,OAAO;AAAA,QACnB;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd,QAAQ;AAAA,QACR,WAAW;AAAA,MACf;AAEA,aAAO,EAAE,IAAI,MAAM,OAAO;AAAA,IAC9B;AAAA,EACJ;AACJ;AAEA,IAAI,WAAW;AAEf,eAAe,iBAAiB;AAC5B,MAAI,CAAC,UAAU;AACX,eAAW,kBAAkB;AAAA,EACjC;AACA,SAAO;AACX;AAEO,IAAM,cAAc;AAAA,EACvB;AACJ;;;AC1RA,IAAM,gBAAgB,OAAO,YAAY,OAAO;AAAA,EAC5C;AAAA,IACI,QAAQ;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAAA,IACA,UAAU;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAAA,IACA,SAAS;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAAA,IACA,UAAU;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAAA,EACJ;AACJ,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC;AAEjD,IAAM,aAAa,CAAC,QAAQ,cAAc,GAAG;AAC7C,IAAM,OAAO,MAAM,OAAO,OAAO,aAAa;AAE9C,SAAS,8BAA8B;AACnC,SAAO;AAAA,IACH;AAAA,IACA;AAAA,EACJ;AACJ;AAEA,IAAI,wBAAwB;AAE5B,eAAe,mBAAmB;AAC9B,MAAI,CAAC,uBAAuB;AACxB,4BAAwB,4BAA4B;AAAA,EACxD;AACA,SAAO;AACX;AAEO,IAAM,gBAAgB;AAAA,EACzB;AACJ;;;AC/CO,IAAM,uBAAuB,MAAM;AACtC,SAAO;AAAA,IACH;AAAA,IACA,GAAG;AAAA,IACH,YAAY;AAAA,MACR;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACJ;",
6
6
  "names": ["logger", "logger"]
7
7
  }
package/index.d.ts CHANGED
@@ -431,12 +431,12 @@ export interface MutationModule {
431
431
  useMonitor(page: Page, selectors: string | string[], options?: useMonitorOptions): Promise<MutationMonitor>;
432
432
  }
433
433
 
434
- // TokenForm
434
+ // AccountForm
435
435
  // =============================================================================
436
- export interface TokenFormField {
436
+ export interface AccountFormField {
437
437
  key?: string;
438
438
  label?: string;
439
- type: 'text' | 'textarea' | 'autocomplete' | 'password' | 'divider';
439
+ type: 'text' | 'textarea' | 'autocomplete' | 'select' | 'password' | 'divider';
440
440
  required?: boolean;
441
441
  placeholder?: string;
442
442
  options?: string[];
@@ -449,10 +449,10 @@ export interface PlatformSchema {
449
449
  key: ActorKey;
450
450
  name: string;
451
451
  tokenNames: string[];
452
- serviceUrl: string;
452
+ domain: string;
453
453
  tokenSource: 'Cookie' | 'LocalStorage';
454
454
  guide?: string;
455
- fields: TokenFormField[];
455
+ fields: AccountFormField[];
456
456
  parse(token: string): Record<string, string>;
457
457
  format(values: Record<string, any>): string;
458
458
  }
@@ -476,7 +476,7 @@ export interface BuildParamsResult {
476
476
  };
477
477
  }
478
478
 
479
- export interface TokenFormInstance {
479
+ export interface AccountFormInstance {
480
480
  getSchema(key: ActorKey): PlatformSchema;
481
481
  parseToken(token: string, config: PlatformSchema): Record<string, string>;
482
482
  formatToken(values: Record<string, any>, config: PlatformSchema): string;
@@ -493,8 +493,8 @@ export interface TokenFormInstance {
493
493
  buildParams(values: Record<string, any>, config: PlatformSchema): BuildParamsResult;
494
494
  }
495
495
 
496
- export interface TokenFormModule {
497
- useTokenForm(): Promise<TokenFormInstance>;
496
+ export interface AccountFormModule {
497
+ useAccountForm(): Promise<AccountFormInstance>;
498
498
  }
499
499
 
500
500
 
@@ -543,7 +543,7 @@ export interface PlaywrightToolKit {
543
543
  /** Browser/Extension version of the toolkit */
544
544
  export interface BrowserPlaywrightToolKit {
545
545
  Logger: LoggerModule;
546
- TokenForm: TokenFormModule;
546
+ AccountForm: AccountFormModule;
547
547
  ActorFeConfig: ActorFeConfigModule;
548
548
  $Internals: {
549
549
  LOG_TEMPLATES: LogTemplate[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skrillex1224/playwright-toolkit",
3
- "version": "2.1.74",
3
+ "version": "2.1.76",
4
4
  "description": "一个在 Apify/Crawlee Actor 中启用实时截图视图的实用工具库。",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",