@weapp-vite/web 1.3.19 → 1.3.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/compiler/wxml/attributes.mjs.map +1 -1
  2. package/dist/compiler/wxml/compile.mjs.map +1 -1
  3. package/dist/compiler/wxml/dependency.mjs.map +1 -1
  4. package/dist/compiler/wxml/interpolation.mjs.map +1 -1
  5. package/dist/compiler/wxml/navigation.mjs.map +1 -1
  6. package/dist/compiler/wxml/parser.mjs.map +1 -1
  7. package/dist/compiler/wxml/renderer.mjs.map +1 -1
  8. package/dist/compiler/wxml/specialNodes.mjs.map +1 -1
  9. package/dist/compiler/wxs.mjs.map +1 -1
  10. package/dist/css/wxss.mjs.map +1 -1
  11. package/dist/index.d.mts +1 -1
  12. package/dist/plugin/constants.mjs.map +1 -1
  13. package/dist/plugin/entry.mjs.map +1 -1
  14. package/dist/plugin/files.mjs.map +1 -1
  15. package/dist/plugin/index.mjs.map +1 -1
  16. package/dist/plugin/navigation.mjs.map +1 -1
  17. package/dist/plugin/path.mjs.map +1 -1
  18. package/dist/plugin/register.mjs.map +1 -1
  19. package/dist/plugin/scan.mjs.map +1 -1
  20. package/dist/plugin/scanConfig.mjs.map +1 -1
  21. package/dist/plugin/state.mjs.map +1 -1
  22. package/dist/runtime/button/helpers.mjs.map +1 -1
  23. package/dist/runtime/button/index.mjs.map +1 -1
  24. package/dist/runtime/button/style.mjs.map +1 -1
  25. package/dist/runtime/component/behavior.mjs.map +1 -1
  26. package/dist/runtime/component/constants.mjs.map +1 -1
  27. package/dist/runtime/component/dom.mjs.map +1 -1
  28. package/dist/runtime/component/element.mjs +3 -2
  29. package/dist/runtime/component/element.mjs.map +1 -1
  30. package/dist/runtime/component/events.mjs.map +1 -1
  31. package/dist/runtime/component/index.mjs.map +1 -1
  32. package/dist/runtime/component/state.mjs +2 -1
  33. package/dist/runtime/component/state.mjs.map +1 -1
  34. package/dist/runtime/component/utils.mjs.map +1 -1
  35. package/dist/runtime/execution.mjs.map +1 -1
  36. package/dist/runtime/legacyTemplate/dom.mjs.map +1 -1
  37. package/dist/runtime/legacyTemplate/expression.mjs.map +1 -1
  38. package/dist/runtime/legacyTemplate/index.mjs.map +1 -1
  39. package/dist/runtime/navigationBar/index.mjs.map +1 -1
  40. package/dist/runtime/polyfill/ad.mjs.map +1 -1
  41. package/dist/runtime/polyfill/appState.mjs.map +1 -1
  42. package/dist/runtime/polyfill/async.mjs.map +1 -1
  43. package/dist/runtime/polyfill/auth.mjs.map +1 -1
  44. package/dist/runtime/polyfill/authApi.mjs.map +1 -1
  45. package/dist/runtime/polyfill/background.mjs.map +1 -1
  46. package/dist/runtime/polyfill/canvasContext.mjs.map +1 -1
  47. package/dist/runtime/polyfill/capability.mjs.map +1 -1
  48. package/dist/runtime/polyfill/cloud.mjs.map +1 -1
  49. package/dist/runtime/polyfill/device.mjs.map +1 -1
  50. package/dist/runtime/polyfill/deviceApi.mjs.map +1 -1
  51. package/dist/runtime/polyfill/deviceAuthSystemApi.mjs.map +1 -1
  52. package/dist/runtime/polyfill/filePicker.mjs.map +1 -1
  53. package/dist/runtime/polyfill/fileSystemManager.mjs.map +1 -1
  54. package/dist/runtime/polyfill/files.mjs.map +1 -1
  55. package/dist/runtime/polyfill/index.mjs.map +1 -1
  56. package/dist/runtime/polyfill/interaction.mjs.map +1 -1
  57. package/dist/runtime/polyfill/interactionApi.mjs.map +1 -1
  58. package/dist/runtime/polyfill/location.mjs.map +1 -1
  59. package/dist/runtime/polyfill/locationApi.mjs.map +1 -1
  60. package/dist/runtime/polyfill/mediaActions.mjs.map +1 -1
  61. package/dist/runtime/polyfill/mediaApi/file.mjs.map +1 -1
  62. package/dist/runtime/polyfill/mediaApi/info.mjs.map +1 -1
  63. package/dist/runtime/polyfill/mediaApi/picker.mjs.map +1 -1
  64. package/dist/runtime/polyfill/mediaApi/preview.mjs.map +1 -1
  65. package/dist/runtime/polyfill/mediaApi/process.mjs.map +1 -1
  66. package/dist/runtime/polyfill/mediaInfo.mjs.map +1 -1
  67. package/dist/runtime/polyfill/mediaPicker.mjs.map +1 -1
  68. package/dist/runtime/polyfill/mediaProcess.mjs.map +1 -1
  69. package/dist/runtime/polyfill/menuApi.mjs.map +1 -1
  70. package/dist/runtime/polyfill/navigationBarRuntime.mjs.map +1 -1
  71. package/dist/runtime/polyfill/network/request.mjs.map +1 -1
  72. package/dist/runtime/polyfill/network/requestBridge.mjs.map +1 -1
  73. package/dist/runtime/polyfill/network/status.mjs.map +1 -1
  74. package/dist/runtime/polyfill/platformApi.mjs.map +1 -1
  75. package/dist/runtime/polyfill/platformRuntime.mjs.map +1 -1
  76. package/dist/runtime/polyfill/routeRuntime/dom.mjs.map +1 -1
  77. package/dist/runtime/polyfill/routeRuntime/lifecycle.mjs.map +1 -1
  78. package/dist/runtime/polyfill/routeRuntime/options.mjs.map +1 -1
  79. package/dist/runtime/polyfill/routeRuntime/url.mjs.map +1 -1
  80. package/dist/runtime/polyfill/routeRuntime.mjs.map +1 -1
  81. package/dist/runtime/polyfill/runtimeCapabilityApi.mjs.map +1 -1
  82. package/dist/runtime/polyfill/runtimeDataApi.mjs.map +1 -1
  83. package/dist/runtime/polyfill/runtimeInfra.mjs.map +1 -1
  84. package/dist/runtime/polyfill/runtimeOps.mjs.map +1 -1
  85. package/dist/runtime/polyfill/selectorQuery.mjs.map +1 -1
  86. package/dist/runtime/polyfill/storage.mjs.map +1 -1
  87. package/dist/runtime/polyfill/storageAsync.mjs.map +1 -1
  88. package/dist/runtime/polyfill/subscribe.mjs.map +1 -1
  89. package/dist/runtime/polyfill/system.mjs.map +1 -1
  90. package/dist/runtime/polyfill/systemApi.mjs.map +1 -1
  91. package/dist/runtime/polyfill/ui.mjs.map +1 -1
  92. package/dist/runtime/polyfill/uiFeedback.mjs.map +1 -1
  93. package/dist/runtime/polyfill/uiMediaApi.mjs.map +1 -1
  94. package/dist/runtime/polyfill/videoContext.mjs.map +1 -1
  95. package/dist/runtime/polyfill/vkSession.mjs.map +1 -1
  96. package/dist/runtime/polyfill/windowResize.mjs.map +1 -1
  97. package/dist/runtime/polyfill/worker.mjs.map +1 -1
  98. package/dist/runtime/renderContext.mjs.map +1 -1
  99. package/dist/runtime/rpx.mjs.map +1 -1
  100. package/dist/runtime/style.mjs.map +1 -1
  101. package/dist/runtime/utils/object.mjs +8 -0
  102. package/dist/runtime/utils/object.mjs.map +1 -0
  103. package/dist/runtime/warning.mjs.map +1 -1
  104. package/dist/shared/slugify.mjs.map +1 -1
  105. package/dist/shared/wxml.mjs.map +1 -1
  106. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"dom.mjs","names":[],"sources":["../../../src/runtime/legacyTemplate/dom.ts"],"sourcesContent":["import type { Element, Node } from 'domhandler'\nimport type { ExtractForResult, LegacyTemplateScope } from './types'\nimport {\n CONTROL_ATTRS,\n hasControlAttribute,\n normalizeAttributeName,\n resolveControlAttributeValue,\n} from '../../shared/wxml'\nimport {\n MINI_PROGRAM_EVENT_ATTRIBUTE_PREFIX,\n MINI_PROGRAM_EVENT_FLAG_ATTRIBUTE_PREFIX,\n} from '../component/constants'\nimport { escapeAttribute, resolveAttributeValue } from './expression'\n\nconst EVENT_PREFIX_RE = /^(bind|catch|mut-bind|capture-bind|capture-catch)([\\w-]+)$/\nconst EVENT_KIND_ALIAS: Record<string, string> = {\n tap: 'click',\n longtap: 'contextmenu',\n longpress: 'contextmenu',\n}\n\nconst EVENT_PREFIX_FLAGS: Record<string, { catch?: boolean, capture?: boolean }> = {\n 'bind': {},\n 'catch': { catch: true },\n 'mut-bind': {},\n 'capture-bind': { capture: true },\n 'capture-catch': { capture: true, catch: true },\n}\n\nexport function extractFor(attribs: Record<string, string>): ExtractForResult {\n const expr = resolveControlAttributeValue(attribs, 'for')\n const restAttribs: Record<string, string> = {}\n const itemName = resolveControlAttributeValue(attribs, 'for-item')?.trim() || 'item'\n let indexName = resolveControlAttributeValue(attribs, 'for-index')?.trim() || 'index'\n\n for (const [key, val] of Object.entries(attribs)) {\n if (CONTROL_ATTRS.has(key)) {\n continue\n }\n restAttribs[key] = val\n }\n\n if (itemName === indexName) {\n indexName = `${indexName}Index`\n }\n\n return {\n expr,\n itemName,\n indexName,\n restAttribs,\n }\n}\n\nexport function buildAttributeString(\n attribs: Record<string, string>,\n scope: LegacyTemplateScope,\n) {\n let result = ''\n for (const [name, rawValue] of Object.entries(attribs)) {\n if (CONTROL_ATTRS.has(name)) {\n continue\n }\n\n const eventMatch = EVENT_PREFIX_RE.exec(name)\n if (eventMatch) {\n const [, prefix, rawEvent] = eventMatch\n const event = rawEvent.toLowerCase()\n const handlerName = resolveAttributeValue(rawValue, scope).trim()\n if (!handlerName) {\n continue\n }\n const runtimeEvent = EVENT_KIND_ALIAS[event] ?? event\n const flags = EVENT_PREFIX_FLAGS[prefix] ?? {}\n result += ` ${MINI_PROGRAM_EVENT_ATTRIBUTE_PREFIX}${runtimeEvent}=\"${escapeAttribute(handlerName)}\"`\n const flagTokens = [\n flags.capture ? 'capture' : '',\n flags.catch ? 'catch' : '',\n ].filter(Boolean)\n if (flagTokens.length) {\n result += ` ${MINI_PROGRAM_EVENT_FLAG_ATTRIBUTE_PREFIX}${runtimeEvent}=\"${flagTokens.join(',')}\"`\n }\n continue\n }\n\n const value = resolveAttributeValue(rawValue, scope)\n if (value === '') {\n continue\n }\n const normalizedName = normalizeAttributeName(name)\n result += ` ${normalizedName}=\"${escapeAttribute(value)}\"`\n }\n return result\n}\n\nexport function stripControlAttributes(attribs: Record<string, string>) {\n const result: Record<string, string> = {}\n for (const [name, value] of Object.entries(attribs)) {\n if (!CONTROL_ATTRS.has(name)) {\n result[name] = value\n }\n }\n return result\n}\n\nexport function isConditionalElement(node: Node): node is Element {\n if (node.type !== 'tag') {\n return false\n }\n const attribs = (node as Element).attribs ?? {}\n return hasControlAttribute(attribs, 'if')\n || hasControlAttribute(attribs, 'elif')\n || hasControlAttribute(attribs, 'else')\n}\n"],"mappings":";;;;;AAcA,MAAM,kBAAkB;AACxB,MAAM,mBAA2C;CAC/C,KAAK;CACL,SAAS;CACT,WAAW;CACZ;AAED,MAAM,qBAA6E;CACjF,QAAQ,EAAE;CACV,SAAS,EAAE,OAAO,MAAM;CACxB,YAAY,EAAE;CACd,gBAAgB,EAAE,SAAS,MAAM;CACjC,iBAAiB;EAAE,SAAS;EAAM,OAAO;EAAM;CAChD;AAED,SAAgB,WAAW,SAAmD;CAC5E,MAAM,OAAO,6BAA6B,SAAS,MAAM;CACzD,MAAM,cAAsC,EAAE;CAC9C,MAAM,WAAW,6BAA6B,SAAS,WAAW,EAAE,MAAM,IAAI;CAC9E,IAAI,YAAY,6BAA6B,SAAS,YAAY,EAAE,MAAM,IAAI;AAE9E,MAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,QAAQ,EAAE;AAChD,MAAI,cAAc,IAAI,IAAI,CACxB;AAEF,cAAY,OAAO;;AAGrB,KAAI,aAAa,UACf,aAAY,GAAG,UAAU;AAG3B,QAAO;EACL;EACA;EACA;EACA;EACD;;AAGH,SAAgB,qBACd,SACA,OACA;CACA,IAAI,SAAS;AACb,MAAK,MAAM,CAAC,MAAM,aAAa,OAAO,QAAQ,QAAQ,EAAE;AACtD,MAAI,cAAc,IAAI,KAAK,CACzB;EAGF,MAAM,aAAa,gBAAgB,KAAK,KAAK;AAC7C,MAAI,YAAY;GACd,MAAM,GAAG,QAAQ,YAAY;GAC7B,MAAM,QAAQ,SAAS,aAAa;GACpC,MAAM,cAAc,sBAAsB,UAAU,MAAM,CAAC,MAAM;AACjE,OAAI,CAAC,YACH;GAEF,MAAM,eAAe,iBAAiB,UAAU;GAChD,MAAM,QAAQ,mBAAmB,WAAW,EAAE;AAC9C,aAAU,IAAI,sCAAsC,aAAa,IAAI,gBAAgB,YAAY,CAAC;GAClG,MAAM,aAAa,CACjB,MAAM,UAAU,YAAY,IAC5B,MAAM,QAAQ,UAAU,GACzB,CAAC,OAAO,QAAQ;AACjB,OAAI,WAAW,OACb,WAAU,IAAI,2CAA2C,aAAa,IAAI,WAAW,KAAK,IAAI,CAAC;AAEjG;;EAGF,MAAM,QAAQ,sBAAsB,UAAU,MAAM;AACpD,MAAI,UAAU,GACZ;EAEF,MAAM,iBAAiB,uBAAuB,KAAK;AACnD,YAAU,IAAI,eAAe,IAAI,gBAAgB,MAAM,CAAC;;AAE1D,QAAO;;AAGT,SAAgB,uBAAuB,SAAiC;CACtE,MAAM,SAAiC,EAAE;AACzC,MAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,QAAQ,CACjD,KAAI,CAAC,cAAc,IAAI,KAAK,CAC1B,QAAO,QAAQ;AAGnB,QAAO;;AAGT,SAAgB,qBAAqB,MAA6B;AAChE,KAAI,KAAK,SAAS,MAChB,QAAO;CAET,MAAM,UAAW,KAAiB,WAAW,EAAE;AAC/C,QAAO,oBAAoB,SAAS,KAAK,IACpC,oBAAoB,SAAS,OAAO,IACpC,oBAAoB,SAAS,OAAO"}
1
+ {"version":3,"file":"dom.mjs","names":[],"sources":["../../../src/runtime/legacyTemplate/dom.ts"],"sourcesContent":["import type { Element, Node } from 'domhandler'\nimport type { ExtractForResult, LegacyTemplateScope } from './types'\nimport {\n CONTROL_ATTRS,\n hasControlAttribute,\n normalizeAttributeName,\n resolveControlAttributeValue,\n} from '../../shared/wxml'\nimport {\n MINI_PROGRAM_EVENT_ATTRIBUTE_PREFIX,\n MINI_PROGRAM_EVENT_FLAG_ATTRIBUTE_PREFIX,\n} from '../component/constants'\nimport { escapeAttribute, resolveAttributeValue } from './expression'\n\nconst EVENT_PREFIX_RE = /^(bind|catch|mut-bind|capture-bind|capture-catch)([\\w-]+)$/\nconst EVENT_KIND_ALIAS: Record<string, string> = {\n tap: 'click',\n longtap: 'contextmenu',\n longpress: 'contextmenu',\n}\n\nconst EVENT_PREFIX_FLAGS: Record<string, { catch?: boolean, capture?: boolean }> = {\n 'bind': {},\n 'catch': { catch: true },\n 'mut-bind': {},\n 'capture-bind': { capture: true },\n 'capture-catch': { capture: true, catch: true },\n}\n\nexport function extractFor(attribs: Record<string, string>): ExtractForResult {\n const expr = resolveControlAttributeValue(attribs, 'for')\n const restAttribs: Record<string, string> = {}\n const itemName = resolveControlAttributeValue(attribs, 'for-item')?.trim() || 'item'\n let indexName = resolveControlAttributeValue(attribs, 'for-index')?.trim() || 'index'\n\n for (const [key, val] of Object.entries(attribs)) {\n if (CONTROL_ATTRS.has(key)) {\n continue\n }\n restAttribs[key] = val\n }\n\n if (itemName === indexName) {\n indexName = `${indexName}Index`\n }\n\n return {\n expr,\n itemName,\n indexName,\n restAttribs,\n }\n}\n\nexport function buildAttributeString(\n attribs: Record<string, string>,\n scope: LegacyTemplateScope,\n) {\n let result = ''\n for (const [name, rawValue] of Object.entries(attribs)) {\n if (CONTROL_ATTRS.has(name)) {\n continue\n }\n\n const eventMatch = EVENT_PREFIX_RE.exec(name)\n if (eventMatch) {\n const [, prefix, rawEvent] = eventMatch\n const event = rawEvent.toLowerCase()\n const handlerName = resolveAttributeValue(rawValue, scope).trim()\n if (!handlerName) {\n continue\n }\n const runtimeEvent = EVENT_KIND_ALIAS[event] ?? event\n const flags = EVENT_PREFIX_FLAGS[prefix] ?? {}\n result += ` ${MINI_PROGRAM_EVENT_ATTRIBUTE_PREFIX}${runtimeEvent}=\"${escapeAttribute(handlerName)}\"`\n const flagTokens = [\n flags.capture ? 'capture' : '',\n flags.catch ? 'catch' : '',\n ].filter(Boolean)\n if (flagTokens.length) {\n result += ` ${MINI_PROGRAM_EVENT_FLAG_ATTRIBUTE_PREFIX}${runtimeEvent}=\"${flagTokens.join(',')}\"`\n }\n continue\n }\n\n const value = resolveAttributeValue(rawValue, scope)\n if (value === '') {\n continue\n }\n const normalizedName = normalizeAttributeName(name)\n result += ` ${normalizedName}=\"${escapeAttribute(value)}\"`\n }\n return result\n}\n\nexport function stripControlAttributes(attribs: Record<string, string>) {\n const result: Record<string, string> = {}\n for (const [name, value] of Object.entries(attribs)) {\n if (!CONTROL_ATTRS.has(name)) {\n result[name] = value\n }\n }\n return result\n}\n\nexport function isConditionalElement(node: Node): node is Element {\n if (node.type !== 'tag') {\n return false\n }\n const attribs = (node as Element).attribs ?? {}\n return hasControlAttribute(attribs, 'if')\n || hasControlAttribute(attribs, 'elif')\n || hasControlAttribute(attribs, 'else')\n}\n"],"mappings":";;;;;AAcA,MAAM,kBAAkB;AACxB,MAAM,mBAA2C;CAC/C,KAAK;CACL,SAAS;CACT,WAAW;AACb;AAEA,MAAM,qBAA6E;CACjF,QAAQ,CAAC;CACT,SAAS,EAAE,OAAO,KAAK;CACvB,YAAY,CAAC;CACb,gBAAgB,EAAE,SAAS,KAAK;CAChC,iBAAiB;EAAE,SAAS;EAAM,OAAO;CAAK;AAChD;AAEA,SAAgB,WAAW,SAAmD;CAC5E,MAAM,OAAO,6BAA6B,SAAS,KAAK;CACxD,MAAM,cAAsC,CAAC;CAC7C,MAAM,WAAW,6BAA6B,SAAS,UAAU,GAAG,KAAK,KAAK;CAC9E,IAAI,YAAY,6BAA6B,SAAS,WAAW,GAAG,KAAK,KAAK;CAE9E,KAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,OAAO,GAAG;EAChD,IAAI,cAAc,IAAI,GAAG,GACvB;EAEF,YAAY,OAAO;CACrB;CAEA,IAAI,aAAa,WACf,YAAY,GAAG,UAAU;CAG3B,OAAO;EACL;EACA;EACA;EACA;CACF;AACF;AAEA,SAAgB,qBACd,SACA,OACA;CACA,IAAI,SAAS;CACb,KAAK,MAAM,CAAC,MAAM,aAAa,OAAO,QAAQ,OAAO,GAAG;EACtD,IAAI,cAAc,IAAI,IAAI,GACxB;EAGF,MAAM,aAAa,gBAAgB,KAAK,IAAI;EAC5C,IAAI,YAAY;GACd,MAAM,GAAG,QAAQ,YAAY;GAC7B,MAAM,QAAQ,SAAS,YAAY;GACnC,MAAM,cAAc,sBAAsB,UAAU,KAAK,EAAE,KAAK;GAChE,IAAI,CAAC,aACH;GAEF,MAAM,eAAe,iBAAiB,UAAU;GAChD,MAAM,QAAQ,mBAAmB,WAAW,CAAC;GAC7C,UAAU,IAAI,sCAAsC,aAAa,IAAI,gBAAgB,WAAW,EAAE;GAClG,MAAM,aAAa,CACjB,MAAM,UAAU,YAAY,IAC5B,MAAM,QAAQ,UAAU,EAC1B,EAAE,OAAO,OAAO;GAChB,IAAI,WAAW,QACb,UAAU,IAAI,2CAA2C,aAAa,IAAI,WAAW,KAAK,GAAG,EAAE;GAEjG;EACF;EAEA,MAAM,QAAQ,sBAAsB,UAAU,KAAK;EACnD,IAAI,UAAU,IACZ;EAEF,MAAM,iBAAiB,uBAAuB,IAAI;EAClD,UAAU,IAAI,eAAe,IAAI,gBAAgB,KAAK,EAAE;CAC1D;CACA,OAAO;AACT;AAEA,SAAgB,uBAAuB,SAAiC;CACtE,MAAM,SAAiC,CAAC;CACxC,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,OAAO,GAChD,IAAI,CAAC,cAAc,IAAI,IAAI,GACzB,OAAO,QAAQ;CAGnB,OAAO;AACT;AAEA,SAAgB,qBAAqB,MAA6B;CAChE,IAAI,KAAK,SAAS,OAChB,OAAO;CAET,MAAM,UAAW,KAAiB,WAAW,CAAC;CAC9C,OAAO,oBAAoB,SAAS,IAAI,KACnC,oBAAoB,SAAS,MAAM,KACnC,oBAAoB,SAAS,MAAM;AAC1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"expression.mjs","names":[],"sources":["../../../src/runtime/legacyTemplate/expression.ts"],"sourcesContent":["import type { LegacyTemplateScope } from './types'\nimport { getRuntimeExecutionMode, warnRuntimeExecutionOnce } from '../execution'\n\nconst expressionCache = new Map<string, (scope: LegacyTemplateScope) => any>()\n\nexport function createScope(initial?: LegacyTemplateScope) {\n return Object.assign(Object.create(null), initial ?? {})\n}\n\nexport function createChildScope(parent: LegacyTemplateScope) {\n return Object.assign(Object.create(parent), {})\n}\n\nexport function normalizeList(value: any): any[] {\n if (Array.isArray(value)) {\n return value\n }\n if (value == null) {\n return []\n }\n if (typeof value === 'number' && Number.isFinite(value)) {\n const length = Math.max(0, Math.floor(value))\n return Array.from({ length }, (_, index) => index)\n }\n if (typeof value === 'object') {\n return Object.values(value)\n }\n return []\n}\n\nexport function escapeHtml(value: string) {\n return value.replace(/[&<>\"']/g, (match) => {\n switch (match) {\n case '&':\n return '&amp;'\n case '<':\n return '&lt;'\n case '>':\n return '&gt;'\n case '\"':\n return '&quot;'\n case '\\'':\n return '&#39;'\n default:\n return match\n }\n })\n}\n\nexport function escapeAttribute(value: string) {\n return escapeHtml(value)\n}\n\nfunction toDisplayString(value: any) {\n if (value == null) {\n return ''\n }\n if (typeof value === 'object') {\n if (value instanceof Date) {\n return value.toISOString()\n }\n try {\n return JSON.stringify(value)\n }\n catch {\n return String(value)\n }\n }\n return String(value)\n}\n\nfunction unwrapExpression(expression: string) {\n const trimmed = expression.trim()\n if (trimmed.startsWith('{{') && trimmed.endsWith('}}')) {\n return trimmed.slice(2, -2).trim()\n }\n return trimmed\n}\n\nexport function evaluateExpression(expression: string, scope: LegacyTemplateScope) {\n if (!expression) {\n return undefined\n }\n const trimmed = unwrapExpression(expression)\n if (!trimmed) {\n return undefined\n }\n let evaluator = expressionCache.get(trimmed)\n if (!evaluator) {\n try {\n // eslint-disable-next-line no-new-func -- dynamic expressions are required for template evaluation\n evaluator = new Function('scope', `with(scope){ return (${trimmed}); }`) as (scope: LegacyTemplateScope) => any\n }\n catch (error) {\n const reason = error instanceof Error ? error.message : String(error)\n const mode = getRuntimeExecutionMode()\n if (mode === 'safe') {\n warnRuntimeExecutionOnce(\n `safe-legacy-expression-parse:${trimmed}`,\n `[@weapp-vite/web] safe 模式下忽略表达式解析错误 \"${trimmed}\": ${reason}`,\n )\n evaluator = () => undefined\n }\n else {\n throw new SyntaxError(`[@weapp-vite/web] 无法解析表达式 \"${trimmed}\": ${reason}`)\n }\n }\n if (evaluator) {\n expressionCache.set(trimmed, evaluator)\n }\n }\n try {\n return evaluator?.(scope)\n }\n catch (error) {\n const mode = getRuntimeExecutionMode()\n if (mode === 'strict') {\n const reason = error instanceof Error ? error.message : String(error)\n throw new Error(`[@weapp-vite/web] strict 模式下表达式执行失败 \"${trimmed}\": ${reason}`)\n }\n if (mode === 'safe') {\n const reason = error instanceof Error ? error.message : String(error)\n warnRuntimeExecutionOnce(\n `safe-legacy-expression-runtime:${trimmed}`,\n `[@weapp-vite/web] safe 模式下忽略表达式执行错误 \"${trimmed}\": ${reason}`,\n )\n }\n return undefined\n }\n}\n\nexport function interpolateText(source: string, scope: LegacyTemplateScope, escapeResult: boolean) {\n if (!source.includes('{{')) {\n return escapeResult ? escapeHtml(source) : source\n }\n\n let cursor = 0\n let buffer = ''\n\n while (cursor < source.length) {\n const start = source.indexOf('{{', cursor)\n if (start === -1) {\n buffer += source.slice(cursor)\n break\n }\n\n buffer += source.slice(cursor, start)\n\n const end = source.indexOf('}}', start + 2)\n if (end === -1) {\n buffer += source.slice(start)\n break\n }\n\n const expression = source.slice(start + 2, end).trim()\n const evaluated = toDisplayString(evaluateExpression(expression, scope))\n buffer += evaluated\n cursor = end + 2\n }\n\n return escapeResult ? escapeHtml(buffer) : buffer\n}\n\nexport function resolveAttributeValue(value: string, scope: LegacyTemplateScope) {\n return interpolateText(value ?? '', scope, false)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"expression.mjs","names":[],"sources":["../../../src/runtime/legacyTemplate/expression.ts"],"sourcesContent":["import type { LegacyTemplateScope } from './types'\nimport { getRuntimeExecutionMode, warnRuntimeExecutionOnce } from '../execution'\n\nconst expressionCache = new Map<string, (scope: LegacyTemplateScope) => any>()\n\nexport function createScope(initial?: LegacyTemplateScope) {\n return Object.assign(Object.create(null), initial ?? {})\n}\n\nexport function createChildScope(parent: LegacyTemplateScope) {\n return Object.assign(Object.create(parent), {})\n}\n\nexport function normalizeList(value: any): any[] {\n if (Array.isArray(value)) {\n return value\n }\n if (value == null) {\n return []\n }\n if (typeof value === 'number' && Number.isFinite(value)) {\n const length = Math.max(0, Math.floor(value))\n return Array.from({ length }, (_, index) => index)\n }\n if (typeof value === 'object') {\n return Object.values(value)\n }\n return []\n}\n\nexport function escapeHtml(value: string) {\n return value.replace(/[&<>\"']/g, (match) => {\n switch (match) {\n case '&':\n return '&amp;'\n case '<':\n return '&lt;'\n case '>':\n return '&gt;'\n case '\"':\n return '&quot;'\n case '\\'':\n return '&#39;'\n default:\n return match\n }\n })\n}\n\nexport function escapeAttribute(value: string) {\n return escapeHtml(value)\n}\n\nfunction toDisplayString(value: any) {\n if (value == null) {\n return ''\n }\n if (typeof value === 'object') {\n if (value instanceof Date) {\n return value.toISOString()\n }\n try {\n return JSON.stringify(value)\n }\n catch {\n return String(value)\n }\n }\n return String(value)\n}\n\nfunction unwrapExpression(expression: string) {\n const trimmed = expression.trim()\n if (trimmed.startsWith('{{') && trimmed.endsWith('}}')) {\n return trimmed.slice(2, -2).trim()\n }\n return trimmed\n}\n\nexport function evaluateExpression(expression: string, scope: LegacyTemplateScope) {\n if (!expression) {\n return undefined\n }\n const trimmed = unwrapExpression(expression)\n if (!trimmed) {\n return undefined\n }\n let evaluator = expressionCache.get(trimmed)\n if (!evaluator) {\n try {\n // eslint-disable-next-line no-new-func -- dynamic expressions are required for template evaluation\n evaluator = new Function('scope', `with(scope){ return (${trimmed}); }`) as (scope: LegacyTemplateScope) => any\n }\n catch (error) {\n const reason = error instanceof Error ? error.message : String(error)\n const mode = getRuntimeExecutionMode()\n if (mode === 'safe') {\n warnRuntimeExecutionOnce(\n `safe-legacy-expression-parse:${trimmed}`,\n `[@weapp-vite/web] safe 模式下忽略表达式解析错误 \"${trimmed}\": ${reason}`,\n )\n evaluator = () => undefined\n }\n else {\n throw new SyntaxError(`[@weapp-vite/web] 无法解析表达式 \"${trimmed}\": ${reason}`)\n }\n }\n if (evaluator) {\n expressionCache.set(trimmed, evaluator)\n }\n }\n try {\n return evaluator?.(scope)\n }\n catch (error) {\n const mode = getRuntimeExecutionMode()\n if (mode === 'strict') {\n const reason = error instanceof Error ? error.message : String(error)\n throw new Error(`[@weapp-vite/web] strict 模式下表达式执行失败 \"${trimmed}\": ${reason}`)\n }\n if (mode === 'safe') {\n const reason = error instanceof Error ? error.message : String(error)\n warnRuntimeExecutionOnce(\n `safe-legacy-expression-runtime:${trimmed}`,\n `[@weapp-vite/web] safe 模式下忽略表达式执行错误 \"${trimmed}\": ${reason}`,\n )\n }\n return undefined\n }\n}\n\nexport function interpolateText(source: string, scope: LegacyTemplateScope, escapeResult: boolean) {\n if (!source.includes('{{')) {\n return escapeResult ? escapeHtml(source) : source\n }\n\n let cursor = 0\n let buffer = ''\n\n while (cursor < source.length) {\n const start = source.indexOf('{{', cursor)\n if (start === -1) {\n buffer += source.slice(cursor)\n break\n }\n\n buffer += source.slice(cursor, start)\n\n const end = source.indexOf('}}', start + 2)\n if (end === -1) {\n buffer += source.slice(start)\n break\n }\n\n const expression = source.slice(start + 2, end).trim()\n const evaluated = toDisplayString(evaluateExpression(expression, scope))\n buffer += evaluated\n cursor = end + 2\n }\n\n return escapeResult ? escapeHtml(buffer) : buffer\n}\n\nexport function resolveAttributeValue(value: string, scope: LegacyTemplateScope) {\n return interpolateText(value ?? '', scope, false)\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/runtime/legacyTemplate/index.ts"],"sourcesContent":["import type { ChildNode, DataNode, Element, Node } from 'domhandler'\nimport type {\n LegacyTemplateRenderer,\n LegacyTemplateScope,\n RenderOptions,\n} from './types'\nimport { parseDocument } from 'htmlparser2'\nimport {\n hasControlAttribute,\n normalizeTagName,\n resolveControlAttributeValue,\n SELF_CLOSING_TAGS,\n} from '../../shared/wxml'\nimport {\n buildAttributeString,\n extractFor,\n isConditionalElement,\n stripControlAttributes,\n} from './dom'\nimport {\n createChildScope,\n createScope,\n evaluateExpression,\n interpolateText,\n normalizeList,\n} from './expression'\n\nconst templateCache = new Map<string, ChildNode[]>()\n\nfunction filterRenderableNode(node: Node) {\n if (node.type === 'directive' || node.type === 'comment') {\n return false\n }\n if (node.type === 'text') {\n const data = (node as DataNode).data ?? ''\n return data.trim().length > 0\n }\n return true\n}\n\nfunction getOrParseTemplate(source: string) {\n let cached = templateCache.get(source)\n if (!cached) {\n const document = parseDocument(source, {\n xmlMode: true,\n decodeEntities: true,\n recognizeSelfClosing: true,\n })\n cached = (document.children ?? []).filter(filterRenderableNode)\n templateCache.set(source, cached)\n }\n return cached\n}\n\nfunction renderConditionalSequence(\n nodes: ChildNode[],\n startIndex: number,\n scope: LegacyTemplateScope,\n renderChildren: (input: ChildNode[] | ChildNode | undefined, scope: LegacyTemplateScope) => string,\n) {\n const branches: Array<{ node: Element, attribs: Record<string, string> }> = []\n let cursor = startIndex\n\n while (cursor < nodes.length) {\n const candidate = nodes[cursor]\n if (!isConditionalElement(candidate)) {\n break\n }\n const element = candidate as Element\n const attribs = element.attribs ?? {}\n if (branches.length === 0 && !hasControlAttribute(attribs, 'if')) {\n break\n }\n if (branches.length > 0 && !hasControlAttribute(attribs, 'elif') && !hasControlAttribute(attribs, 'else')) {\n break\n }\n branches.push({ node: element, attribs })\n cursor += 1\n if (hasControlAttribute(attribs, 'else')) {\n break\n }\n }\n\n if (!branches.length) {\n const node = nodes[startIndex]\n return {\n rendered: renderChildren(node, scope),\n endIndex: startIndex,\n }\n }\n\n for (const { node, attribs } of branches) {\n if (hasControlAttribute(attribs, 'else')) {\n return {\n // eslint-disable-next-line ts/no-use-before-define -- 条件分支与普通节点复用同一元素渲染逻辑。\n rendered: renderElement(\n node,\n scope,\n renderChildren,\n { overrideAttribs: stripControlAttributes(attribs) },\n ),\n endIndex: startIndex + branches.length - 1,\n }\n }\n const conditionExpr = resolveControlAttributeValue(attribs, 'if')\n ?? resolveControlAttributeValue(attribs, 'elif')\n if (!conditionExpr) {\n continue\n }\n const condition = evaluateExpression(conditionExpr, scope)\n if (condition) {\n return {\n // eslint-disable-next-line ts/no-use-before-define -- 条件分支与普通节点复用同一元素渲染逻辑。\n rendered: renderElement(\n node,\n scope,\n renderChildren,\n { overrideAttribs: stripControlAttributes(attribs) },\n ),\n endIndex: startIndex + branches.length - 1,\n }\n }\n }\n\n return {\n rendered: '',\n endIndex: startIndex + branches.length - 1,\n }\n}\n\nfunction renderElement(\n node: Element,\n scope: LegacyTemplateScope,\n renderChildren: (nodes: ChildNode[] | undefined, scope: LegacyTemplateScope) => string,\n options: RenderOptions = {},\n) {\n const attribs = node.attribs ?? {}\n if (!options.skipFor) {\n const forExtract = extractFor(attribs)\n if (forExtract.expr) {\n const list = normalizeList(evaluateExpression(forExtract.expr, scope))\n if (!list.length) {\n return ''\n }\n let buffer = ''\n for (let idx = 0; idx < list.length; idx++) {\n const item = list[idx]\n const childScope = createChildScope(scope)\n childScope[forExtract.itemName] = item\n childScope[forExtract.indexName] = idx\n buffer += renderElement(node, childScope, renderChildren, {\n skipFor: true,\n overrideAttribs: forExtract.restAttribs,\n })\n }\n return buffer\n }\n }\n\n const effectiveAttribs = options.overrideAttribs ?? attribs\n const normalizedTag = normalizeTagName(node.name)\n if (normalizedTag === '#fragment') {\n return renderChildren(node.children, scope)\n }\n\n const attrs = buildAttributeString(effectiveAttribs, scope)\n const children = renderChildren(node.children, scope)\n\n if (SELF_CLOSING_TAGS.has(normalizedTag) && !children) {\n return `<${normalizedTag}${attrs} />`\n }\n\n return `<${normalizedTag}${attrs}>${children}</${normalizedTag}>`\n}\n\nfunction renderTextNode(node: DataNode, scope: LegacyTemplateScope) {\n const value = node.data ?? ''\n if (!value.trim()) {\n return ''\n }\n return interpolateText(value, scope, true)\n}\n\nfunction renderTree(\n input: ChildNode[] | ChildNode | undefined,\n scope: LegacyTemplateScope,\n): string {\n if (!input) {\n return ''\n }\n\n if (Array.isArray(input)) {\n let buffer = ''\n for (let index = 0; index < input.length; index++) {\n const node = input[index]\n if (isConditionalElement(node)) {\n const { rendered, endIndex } = renderConditionalSequence(input, index, scope, renderTree)\n buffer += rendered\n index = endIndex\n continue\n }\n buffer += renderTree(node, scope)\n }\n return buffer\n }\n\n const node = input\n if (node.type === 'text') {\n return renderTextNode(node as DataNode, scope)\n }\n if (node.type === 'tag' || node.type === 'script' || node.type === 'style') {\n return renderElement(node as Element, scope, renderTree)\n }\n if ('children' in node && node.children?.length) {\n return renderTree(node.children, scope)\n }\n return ''\n}\n\nexport function renderTemplate(nodes: ChildNode[], scope?: LegacyTemplateScope) {\n const renderScope = createScope(scope)\n return renderTree(nodes, renderScope)\n}\n\nexport function createTemplate(source: string): LegacyTemplateRenderer {\n const nodes = getOrParseTemplate(source)\n return (scope?: LegacyTemplateScope) => renderTemplate(nodes, scope)\n}\n\nexport type { LegacyTemplateRenderer, LegacyTemplateScope } from './types'\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/runtime/legacyTemplate/index.ts"],"sourcesContent":["import type { ChildNode, DataNode, Element, Node } from 'domhandler'\nimport type {\n LegacyTemplateRenderer,\n LegacyTemplateScope,\n RenderOptions,\n} from './types'\nimport { parseDocument } from 'htmlparser2'\nimport {\n hasControlAttribute,\n normalizeTagName,\n resolveControlAttributeValue,\n SELF_CLOSING_TAGS,\n} from '../../shared/wxml'\nimport {\n buildAttributeString,\n extractFor,\n isConditionalElement,\n stripControlAttributes,\n} from './dom'\nimport {\n createChildScope,\n createScope,\n evaluateExpression,\n interpolateText,\n normalizeList,\n} from './expression'\n\nconst templateCache = new Map<string, ChildNode[]>()\n\nfunction filterRenderableNode(node: Node) {\n if (node.type === 'directive' || node.type === 'comment') {\n return false\n }\n if (node.type === 'text') {\n const data = (node as DataNode).data ?? ''\n return data.trim().length > 0\n }\n return true\n}\n\nfunction getOrParseTemplate(source: string) {\n let cached = templateCache.get(source)\n if (!cached) {\n const document = parseDocument(source, {\n xmlMode: true,\n decodeEntities: true,\n recognizeSelfClosing: true,\n })\n cached = (document.children ?? []).filter(filterRenderableNode)\n templateCache.set(source, cached)\n }\n return cached\n}\n\nfunction renderConditionalSequence(\n nodes: ChildNode[],\n startIndex: number,\n scope: LegacyTemplateScope,\n renderChildren: (input: ChildNode[] | ChildNode | undefined, scope: LegacyTemplateScope) => string,\n) {\n const branches: Array<{ node: Element, attribs: Record<string, string> }> = []\n let cursor = startIndex\n\n while (cursor < nodes.length) {\n const candidate = nodes[cursor]\n if (!isConditionalElement(candidate)) {\n break\n }\n const element = candidate as Element\n const attribs = element.attribs ?? {}\n if (branches.length === 0 && !hasControlAttribute(attribs, 'if')) {\n break\n }\n if (branches.length > 0 && !hasControlAttribute(attribs, 'elif') && !hasControlAttribute(attribs, 'else')) {\n break\n }\n branches.push({ node: element, attribs })\n cursor += 1\n if (hasControlAttribute(attribs, 'else')) {\n break\n }\n }\n\n if (!branches.length) {\n const node = nodes[startIndex]\n return {\n rendered: renderChildren(node, scope),\n endIndex: startIndex,\n }\n }\n\n for (const { node, attribs } of branches) {\n if (hasControlAttribute(attribs, 'else')) {\n return {\n // eslint-disable-next-line ts/no-use-before-define -- 条件分支与普通节点复用同一元素渲染逻辑。\n rendered: renderElement(\n node,\n scope,\n renderChildren,\n { overrideAttribs: stripControlAttributes(attribs) },\n ),\n endIndex: startIndex + branches.length - 1,\n }\n }\n const conditionExpr = resolveControlAttributeValue(attribs, 'if')\n ?? resolveControlAttributeValue(attribs, 'elif')\n if (!conditionExpr) {\n continue\n }\n const condition = evaluateExpression(conditionExpr, scope)\n if (condition) {\n return {\n // eslint-disable-next-line ts/no-use-before-define -- 条件分支与普通节点复用同一元素渲染逻辑。\n rendered: renderElement(\n node,\n scope,\n renderChildren,\n { overrideAttribs: stripControlAttributes(attribs) },\n ),\n endIndex: startIndex + branches.length - 1,\n }\n }\n }\n\n return {\n rendered: '',\n endIndex: startIndex + branches.length - 1,\n }\n}\n\nfunction renderElement(\n node: Element,\n scope: LegacyTemplateScope,\n renderChildren: (nodes: ChildNode[] | undefined, scope: LegacyTemplateScope) => string,\n options: RenderOptions = {},\n) {\n const attribs = node.attribs ?? {}\n if (!options.skipFor) {\n const forExtract = extractFor(attribs)\n if (forExtract.expr) {\n const list = normalizeList(evaluateExpression(forExtract.expr, scope))\n if (!list.length) {\n return ''\n }\n let buffer = ''\n for (let idx = 0; idx < list.length; idx++) {\n const item = list[idx]\n const childScope = createChildScope(scope)\n childScope[forExtract.itemName] = item\n childScope[forExtract.indexName] = idx\n buffer += renderElement(node, childScope, renderChildren, {\n skipFor: true,\n overrideAttribs: forExtract.restAttribs,\n })\n }\n return buffer\n }\n }\n\n const effectiveAttribs = options.overrideAttribs ?? attribs\n const normalizedTag = normalizeTagName(node.name)\n if (normalizedTag === '#fragment') {\n return renderChildren(node.children, scope)\n }\n\n const attrs = buildAttributeString(effectiveAttribs, scope)\n const children = renderChildren(node.children, scope)\n\n if (SELF_CLOSING_TAGS.has(normalizedTag) && !children) {\n return `<${normalizedTag}${attrs} />`\n }\n\n return `<${normalizedTag}${attrs}>${children}</${normalizedTag}>`\n}\n\nfunction renderTextNode(node: DataNode, scope: LegacyTemplateScope) {\n const value = node.data ?? ''\n if (!value.trim()) {\n return ''\n }\n return interpolateText(value, scope, true)\n}\n\nfunction renderTree(\n input: ChildNode[] | ChildNode | undefined,\n scope: LegacyTemplateScope,\n): string {\n if (!input) {\n return ''\n }\n\n if (Array.isArray(input)) {\n let buffer = ''\n for (let index = 0; index < input.length; index++) {\n const node = input[index]\n if (isConditionalElement(node)) {\n const { rendered, endIndex } = renderConditionalSequence(input, index, scope, renderTree)\n buffer += rendered\n index = endIndex\n continue\n }\n buffer += renderTree(node, scope)\n }\n return buffer\n }\n\n const node = input\n if (node.type === 'text') {\n return renderTextNode(node as DataNode, scope)\n }\n if (node.type === 'tag' || node.type === 'script' || node.type === 'style') {\n return renderElement(node as Element, scope, renderTree)\n }\n if ('children' in node && node.children?.length) {\n return renderTree(node.children, scope)\n }\n return ''\n}\n\nexport function renderTemplate(nodes: ChildNode[], scope?: LegacyTemplateScope) {\n const renderScope = createScope(scope)\n return renderTree(nodes, renderScope)\n}\n\nexport function createTemplate(source: string): LegacyTemplateRenderer {\n const nodes = getOrParseTemplate(source)\n return (scope?: LegacyTemplateScope) => renderTemplate(nodes, scope)\n}\n\nexport type { LegacyTemplateRenderer, LegacyTemplateScope } from './types'\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["#renderShell","#bindResize","#resizeHandler","#nav","#title","#loading"],"sources":["../../../src/runtime/navigationBar/index.ts"],"sourcesContent":["import { NAVBAR_STYLE } from './style'\n\ninterface NavigationBarMetrics {\n statusBarHeight?: number\n navContentHeight?: number\n safeAreaTop?: number\n}\n\nconst NAVIGATION_BAR_TAG = 'weapp-navigation-bar'\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\nconst navigationBarInstances = new Set<WeappNavigationBar>()\nlet navigationBarMetrics: NavigationBarMetrics = {}\nconst IOS_DEVICE_RE = /iphone|ipad|ipod/i\n\nfunction isIOS() {\n if (typeof navigator === 'undefined') {\n return false\n }\n return IOS_DEVICE_RE.test(navigator.userAgent)\n}\n\nfunction getDefaultHeights() {\n if (isIOS()) {\n return { statusBarHeight: 20, navContentHeight: 44 }\n }\n return { statusBarHeight: 24, navContentHeight: 48 }\n}\n\nfunction readSafeAreaTop() {\n if (typeof document === 'undefined' || !document.body) {\n return 0\n }\n const probe = document.createElement('div')\n probe.style.cssText = [\n 'position: absolute',\n 'top: 0',\n 'height: env(safe-area-inset-top)',\n 'height: constant(safe-area-inset-top)',\n 'pointer-events: none',\n 'visibility: hidden',\n ].join(';')\n document.body.appendChild(probe)\n const height = Math.max(0, probe.getBoundingClientRect().height)\n probe.remove()\n return height\n}\n\nfunction resolveNavigationBarMetrics(): Required<NavigationBarMetrics> & { navHeight: number } {\n const defaults = getDefaultHeights()\n const safeAreaTop = navigationBarMetrics.safeAreaTop !== undefined\n ? navigationBarMetrics.safeAreaTop\n : readSafeAreaTop()\n const statusBarHeight = navigationBarMetrics.statusBarHeight !== undefined\n ? navigationBarMetrics.statusBarHeight\n : (safeAreaTop > 0 ? safeAreaTop : defaults.statusBarHeight)\n const navContentHeight = navigationBarMetrics.navContentHeight !== undefined\n ? navigationBarMetrics.navContentHeight\n : defaults.navContentHeight\n return {\n safeAreaTop,\n statusBarHeight,\n navContentHeight,\n navHeight: statusBarHeight + navContentHeight,\n }\n}\n\nfunction isTransparentColor(value: string | null) {\n if (!value) {\n return false\n }\n const normalized = value.trim().toLowerCase()\n return normalized === 'transparent'\n || normalized === 'rgba(0,0,0,0)'\n || normalized === 'rgba(0, 0, 0, 0)'\n || normalized === 'hsla(0,0%,0%,0)'\n}\n\nexport function setNavigationBarMetrics(next: NavigationBarMetrics) {\n navigationBarMetrics = { ...navigationBarMetrics, ...next }\n for (const instance of navigationBarInstances) {\n instance.applyMetrics()\n }\n}\n\nclass WeappNavigationBar extends BaseElement {\n static observedAttributes = ['title', 'background-color', 'text-style', 'front-color', 'loading']\n\n #nav?: HTMLDivElement\n #title?: HTMLSpanElement\n #loading?: HTMLSpanElement\n #resizeHandler?: () => void\n\n connectedCallback() {\n if (!this.shadowRoot) {\n this.attachShadow({ mode: 'open' })\n }\n if (this.shadowRoot && !this.shadowRoot.hasChildNodes()) {\n this.#renderShell()\n }\n navigationBarInstances.add(this)\n this.applyMetrics()\n this.applyAppearance()\n this.#bindResize()\n }\n\n disconnectedCallback() {\n navigationBarInstances.delete(this)\n if (this.#resizeHandler) {\n const target = typeof window !== 'undefined' ? (window.visualViewport ?? window) : undefined\n target?.removeEventListener('resize', this.#resizeHandler)\n this.#resizeHandler = undefined\n }\n }\n\n attributeChangedCallback() {\n this.applyAppearance()\n }\n\n applyMetrics() {\n const metrics = resolveNavigationBarMetrics()\n this.style.setProperty('--weapp-status-bar-height', `${metrics.statusBarHeight}px`)\n this.style.setProperty('--weapp-nav-content-height', `${metrics.navContentHeight}px`)\n this.style.setProperty('--weapp-nav-height', `${metrics.navHeight}px`)\n }\n\n applyAppearance() {\n if (!this.#nav || !this.#title || !this.#loading) {\n return\n }\n const title = this.getAttribute('title') ?? ''\n this.#title.textContent = title\n const background = this.getAttribute('background-color') ?? '#ffffff'\n const frontColor = this.getAttribute('front-color')\n const textStyle = (this.getAttribute('text-style') ?? '').toLowerCase()\n const color = frontColor || (textStyle === 'white' ? '#ffffff' : '#000000')\n const loadingAttr = this.getAttribute('loading')\n const loading = loadingAttr !== null && loadingAttr !== 'false' && loadingAttr !== '0'\n this.style.setProperty('--weapp-nav-bg', background)\n this.style.setProperty('--weapp-nav-color', color)\n this.#loading.toggleAttribute('hidden', !loading)\n this.#nav.classList.toggle('weapp-nav--transparent', isTransparentColor(background))\n }\n\n #bindResize() {\n if (this.#resizeHandler || typeof window === 'undefined') {\n return\n }\n const target = window.visualViewport ?? window\n this.#resizeHandler = () => {\n this.applyMetrics()\n }\n target.addEventListener('resize', this.#resizeHandler)\n }\n\n #renderShell() {\n const root = this.shadowRoot!\n root.innerHTML = ''\n const style = document.createElement('style')\n style.textContent = NAVBAR_STYLE\n const spacer = document.createElement('div')\n spacer.className = 'weapp-nav__spacer'\n const nav = document.createElement('div')\n nav.className = 'weapp-nav'\n const status = document.createElement('div')\n status.className = 'weapp-nav__status'\n const content = document.createElement('div')\n content.className = 'weapp-nav__content'\n const left = document.createElement('div')\n left.className = 'weapp-nav__left'\n const right = document.createElement('div')\n right.className = 'weapp-nav__right'\n const title = document.createElement('span')\n title.className = 'weapp-nav__title'\n const loading = document.createElement('span')\n loading.className = 'weapp-nav__loading'\n loading.setAttribute('hidden', '')\n const titleText = document.createElement('span')\n titleText.className = 'weapp-nav__title-text'\n title.append(loading, titleText)\n content.append(left, title, right)\n nav.append(status, content)\n root.append(style, spacer, nav)\n this.#nav = nav\n this.#title = titleText\n this.#loading = loading\n }\n}\n\nexport function ensureNavigationBarDefined() {\n if (typeof customElements === 'undefined') {\n return\n }\n if (!customElements.get(NAVIGATION_BAR_TAG)) {\n customElements.define(NAVIGATION_BAR_TAG, WeappNavigationBar)\n }\n}\n\nexport type { NavigationBarMetrics }\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["#renderShell","#bindResize","#resizeHandler","#nav","#title","#loading"],"sources":["../../../src/runtime/navigationBar/index.ts"],"sourcesContent":["import { NAVBAR_STYLE } from './style'\n\ninterface NavigationBarMetrics {\n statusBarHeight?: number\n navContentHeight?: number\n safeAreaTop?: number\n}\n\nconst NAVIGATION_BAR_TAG = 'weapp-navigation-bar'\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\nconst navigationBarInstances = new Set<WeappNavigationBar>()\nlet navigationBarMetrics: NavigationBarMetrics = {}\nconst IOS_DEVICE_RE = /iphone|ipad|ipod/i\n\nfunction isIOS() {\n if (typeof navigator === 'undefined') {\n return false\n }\n return IOS_DEVICE_RE.test(navigator.userAgent)\n}\n\nfunction getDefaultHeights() {\n if (isIOS()) {\n return { statusBarHeight: 20, navContentHeight: 44 }\n }\n return { statusBarHeight: 24, navContentHeight: 48 }\n}\n\nfunction readSafeAreaTop() {\n if (typeof document === 'undefined' || !document.body) {\n return 0\n }\n const probe = document.createElement('div')\n probe.style.cssText = [\n 'position: absolute',\n 'top: 0',\n 'height: env(safe-area-inset-top)',\n 'height: constant(safe-area-inset-top)',\n 'pointer-events: none',\n 'visibility: hidden',\n ].join(';')\n document.body.appendChild(probe)\n const height = Math.max(0, probe.getBoundingClientRect().height)\n probe.remove()\n return height\n}\n\nfunction resolveNavigationBarMetrics(): Required<NavigationBarMetrics> & { navHeight: number } {\n const defaults = getDefaultHeights()\n const safeAreaTop = navigationBarMetrics.safeAreaTop !== undefined\n ? navigationBarMetrics.safeAreaTop\n : readSafeAreaTop()\n const statusBarHeight = navigationBarMetrics.statusBarHeight !== undefined\n ? navigationBarMetrics.statusBarHeight\n : (safeAreaTop > 0 ? safeAreaTop : defaults.statusBarHeight)\n const navContentHeight = navigationBarMetrics.navContentHeight !== undefined\n ? navigationBarMetrics.navContentHeight\n : defaults.navContentHeight\n return {\n safeAreaTop,\n statusBarHeight,\n navContentHeight,\n navHeight: statusBarHeight + navContentHeight,\n }\n}\n\nfunction isTransparentColor(value: string | null) {\n if (!value) {\n return false\n }\n const normalized = value.trim().toLowerCase()\n return normalized === 'transparent'\n || normalized === 'rgba(0,0,0,0)'\n || normalized === 'rgba(0, 0, 0, 0)'\n || normalized === 'hsla(0,0%,0%,0)'\n}\n\nexport function setNavigationBarMetrics(next: NavigationBarMetrics) {\n navigationBarMetrics = { ...navigationBarMetrics, ...next }\n for (const instance of navigationBarInstances) {\n instance.applyMetrics()\n }\n}\n\nclass WeappNavigationBar extends BaseElement {\n static observedAttributes = ['title', 'background-color', 'text-style', 'front-color', 'loading']\n\n #nav?: HTMLDivElement\n #title?: HTMLSpanElement\n #loading?: HTMLSpanElement\n #resizeHandler?: () => void\n\n connectedCallback() {\n if (!this.shadowRoot) {\n this.attachShadow({ mode: 'open' })\n }\n if (this.shadowRoot && !this.shadowRoot.hasChildNodes()) {\n this.#renderShell()\n }\n navigationBarInstances.add(this)\n this.applyMetrics()\n this.applyAppearance()\n this.#bindResize()\n }\n\n disconnectedCallback() {\n navigationBarInstances.delete(this)\n if (this.#resizeHandler) {\n const target = typeof window !== 'undefined' ? (window.visualViewport ?? window) : undefined\n target?.removeEventListener('resize', this.#resizeHandler)\n this.#resizeHandler = undefined\n }\n }\n\n attributeChangedCallback() {\n this.applyAppearance()\n }\n\n applyMetrics() {\n const metrics = resolveNavigationBarMetrics()\n this.style.setProperty('--weapp-status-bar-height', `${metrics.statusBarHeight}px`)\n this.style.setProperty('--weapp-nav-content-height', `${metrics.navContentHeight}px`)\n this.style.setProperty('--weapp-nav-height', `${metrics.navHeight}px`)\n }\n\n applyAppearance() {\n if (!this.#nav || !this.#title || !this.#loading) {\n return\n }\n const title = this.getAttribute('title') ?? ''\n this.#title.textContent = title\n const background = this.getAttribute('background-color') ?? '#ffffff'\n const frontColor = this.getAttribute('front-color')\n const textStyle = (this.getAttribute('text-style') ?? '').toLowerCase()\n const color = frontColor || (textStyle === 'white' ? '#ffffff' : '#000000')\n const loadingAttr = this.getAttribute('loading')\n const loading = loadingAttr !== null && loadingAttr !== 'false' && loadingAttr !== '0'\n this.style.setProperty('--weapp-nav-bg', background)\n this.style.setProperty('--weapp-nav-color', color)\n this.#loading.toggleAttribute('hidden', !loading)\n this.#nav.classList.toggle('weapp-nav--transparent', isTransparentColor(background))\n }\n\n #bindResize() {\n if (this.#resizeHandler || typeof window === 'undefined') {\n return\n }\n const target = window.visualViewport ?? window\n this.#resizeHandler = () => {\n this.applyMetrics()\n }\n target.addEventListener('resize', this.#resizeHandler)\n }\n\n #renderShell() {\n const root = this.shadowRoot!\n root.innerHTML = ''\n const style = document.createElement('style')\n style.textContent = NAVBAR_STYLE\n const spacer = document.createElement('div')\n spacer.className = 'weapp-nav__spacer'\n const nav = document.createElement('div')\n nav.className = 'weapp-nav'\n const status = document.createElement('div')\n status.className = 'weapp-nav__status'\n const content = document.createElement('div')\n content.className = 'weapp-nav__content'\n const left = document.createElement('div')\n left.className = 'weapp-nav__left'\n const right = document.createElement('div')\n right.className = 'weapp-nav__right'\n const title = document.createElement('span')\n title.className = 'weapp-nav__title'\n const loading = document.createElement('span')\n loading.className = 'weapp-nav__loading'\n loading.setAttribute('hidden', '')\n const titleText = document.createElement('span')\n titleText.className = 'weapp-nav__title-text'\n title.append(loading, titleText)\n content.append(left, title, right)\n nav.append(status, content)\n root.append(style, spacer, nav)\n this.#nav = nav\n this.#title = titleText\n this.#loading = loading\n }\n}\n\nexport function ensureNavigationBarDefined() {\n if (typeof customElements === 'undefined') {\n return\n }\n if (!customElements.get(NAVIGATION_BAR_TAG)) {\n customElements.define(NAVIGATION_BAR_TAG, WeappNavigationBar)\n }\n}\n\nexport type { NavigationBarMetrics }\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ad.mjs","names":[],"sources":["../../../src/runtime/polyfill/ad.ts"],"sourcesContent":["interface AdBaseOptions {\n adUnitId?: string\n}\n\ninterface AdError {\n errMsg: string\n errCode: number\n}\n\ninterface RewardedVideoAdCloseResult {\n isEnded: boolean\n}\n\ninterface RewardedVideoAd {\n load: () => Promise<{ errMsg: string }>\n show: () => Promise<{ errMsg: string }>\n destroy: () => void\n onLoad: (callback: () => void) => void\n offLoad: (callback?: () => void) => void\n onError: (callback: (error: AdError) => void) => void\n offError: (callback?: (error: AdError) => void) => void\n onClose: (callback: (result: RewardedVideoAdCloseResult) => void) => void\n offClose: (callback?: (result: RewardedVideoAdCloseResult) => void) => void\n}\n\ninterface InterstitialAd {\n load: () => Promise<{ errMsg: string }>\n show: () => Promise<{ errMsg: string }>\n destroy: () => void\n onLoad: (callback: () => void) => void\n offLoad: (callback?: () => void) => void\n onError: (callback: (error: AdError) => void) => void\n offError: (callback?: (error: AdError) => void) => void\n onClose: (callback: () => void) => void\n offClose: (callback?: () => void) => void\n}\n\nfunction createAdError(errMsg: string): AdError {\n return {\n errMsg,\n errCode: -1,\n }\n}\n\nfunction normalizeAdUnitId(options?: AdBaseOptions) {\n if (typeof options?.adUnitId !== 'string') {\n return ''\n }\n return options.adUnitId.trim()\n}\n\nexport function createRewardedVideoAdImpl(options?: AdBaseOptions): RewardedVideoAd {\n let loaded = false\n let destroyed = false\n const loadCallbacks = new Set<() => void>()\n const errorCallbacks = new Set<(error: AdError) => void>()\n const closeCallbacks = new Set<(result: RewardedVideoAdCloseResult) => void>()\n const adUnitId = normalizeAdUnitId(options)\n\n const emitError = (error: AdError) => {\n for (const callback of errorCallbacks) {\n callback(error)\n }\n }\n\n const fail = (message: string) => {\n const error = createAdError(message)\n emitError(error)\n return Promise.reject(error)\n }\n\n return {\n load() {\n if (destroyed) {\n return fail('RewardedVideoAd.load:fail ad is destroyed')\n }\n if (!adUnitId) {\n return fail('RewardedVideoAd.load:fail invalid adUnitId')\n }\n loaded = true\n for (const callback of loadCallbacks) {\n callback()\n }\n return Promise.resolve({ errMsg: 'RewardedVideoAd.load:ok' })\n },\n show() {\n if (destroyed) {\n return fail('RewardedVideoAd.show:fail ad is destroyed')\n }\n if (!loaded) {\n return this.load().then(() => this.show())\n }\n const result: RewardedVideoAdCloseResult = { isEnded: true }\n for (const callback of closeCallbacks) {\n callback(result)\n }\n return Promise.resolve({ errMsg: 'RewardedVideoAd.show:ok' })\n },\n destroy() {\n destroyed = true\n loadCallbacks.clear()\n errorCallbacks.clear()\n closeCallbacks.clear()\n },\n onLoad(callback: () => void) {\n if (typeof callback === 'function') {\n loadCallbacks.add(callback)\n }\n },\n offLoad(callback?: () => void) {\n if (typeof callback !== 'function') {\n loadCallbacks.clear()\n return\n }\n loadCallbacks.delete(callback)\n },\n onError(callback: (error: AdError) => void) {\n if (typeof callback === 'function') {\n errorCallbacks.add(callback)\n }\n },\n offError(callback?: (error: AdError) => void) {\n if (typeof callback !== 'function') {\n errorCallbacks.clear()\n return\n }\n errorCallbacks.delete(callback)\n },\n onClose(callback: (result: RewardedVideoAdCloseResult) => void) {\n if (typeof callback === 'function') {\n closeCallbacks.add(callback)\n }\n },\n offClose(callback?: (result: RewardedVideoAdCloseResult) => void) {\n if (typeof callback !== 'function') {\n closeCallbacks.clear()\n return\n }\n closeCallbacks.delete(callback)\n },\n }\n}\n\nexport function createInterstitialAdImpl(options?: AdBaseOptions): InterstitialAd {\n let loaded = false\n let destroyed = false\n const loadCallbacks = new Set<() => void>()\n const errorCallbacks = new Set<(error: AdError) => void>()\n const closeCallbacks = new Set<() => void>()\n const adUnitId = normalizeAdUnitId(options)\n\n const emitError = (error: AdError) => {\n for (const callback of errorCallbacks) {\n callback(error)\n }\n }\n\n const fail = (message: string) => {\n const error = createAdError(message)\n emitError(error)\n return Promise.reject(error)\n }\n\n return {\n load() {\n if (destroyed) {\n return fail('InterstitialAd.load:fail ad is destroyed')\n }\n if (!adUnitId) {\n return fail('InterstitialAd.load:fail invalid adUnitId')\n }\n loaded = true\n for (const callback of loadCallbacks) {\n callback()\n }\n return Promise.resolve({ errMsg: 'InterstitialAd.load:ok' })\n },\n show() {\n if (destroyed) {\n return fail('InterstitialAd.show:fail ad is destroyed')\n }\n if (!loaded) {\n return this.load().then(() => this.show())\n }\n for (const callback of closeCallbacks) {\n callback()\n }\n return Promise.resolve({ errMsg: 'InterstitialAd.show:ok' })\n },\n destroy() {\n destroyed = true\n loadCallbacks.clear()\n errorCallbacks.clear()\n closeCallbacks.clear()\n },\n onLoad(callback: () => void) {\n if (typeof callback === 'function') {\n loadCallbacks.add(callback)\n }\n },\n offLoad(callback?: () => void) {\n if (typeof callback !== 'function') {\n loadCallbacks.clear()\n return\n }\n loadCallbacks.delete(callback)\n },\n onError(callback: (error: AdError) => void) {\n if (typeof callback === 'function') {\n errorCallbacks.add(callback)\n }\n },\n offError(callback?: (error: AdError) => void) {\n if (typeof callback !== 'function') {\n errorCallbacks.clear()\n return\n }\n errorCallbacks.delete(callback)\n },\n onClose(callback: () => void) {\n if (typeof callback === 'function') {\n closeCallbacks.add(callback)\n }\n },\n offClose(callback?: () => void) {\n if (typeof callback !== 'function') {\n closeCallbacks.clear()\n return\n }\n closeCallbacks.delete(callback)\n },\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ad.mjs","names":[],"sources":["../../../src/runtime/polyfill/ad.ts"],"sourcesContent":["interface AdBaseOptions {\n adUnitId?: string\n}\n\ninterface AdError {\n errMsg: string\n errCode: number\n}\n\ninterface RewardedVideoAdCloseResult {\n isEnded: boolean\n}\n\ninterface RewardedVideoAd {\n load: () => Promise<{ errMsg: string }>\n show: () => Promise<{ errMsg: string }>\n destroy: () => void\n onLoad: (callback: () => void) => void\n offLoad: (callback?: () => void) => void\n onError: (callback: (error: AdError) => void) => void\n offError: (callback?: (error: AdError) => void) => void\n onClose: (callback: (result: RewardedVideoAdCloseResult) => void) => void\n offClose: (callback?: (result: RewardedVideoAdCloseResult) => void) => void\n}\n\ninterface InterstitialAd {\n load: () => Promise<{ errMsg: string }>\n show: () => Promise<{ errMsg: string }>\n destroy: () => void\n onLoad: (callback: () => void) => void\n offLoad: (callback?: () => void) => void\n onError: (callback: (error: AdError) => void) => void\n offError: (callback?: (error: AdError) => void) => void\n onClose: (callback: () => void) => void\n offClose: (callback?: () => void) => void\n}\n\nfunction createAdError(errMsg: string): AdError {\n return {\n errMsg,\n errCode: -1,\n }\n}\n\nfunction normalizeAdUnitId(options?: AdBaseOptions) {\n if (typeof options?.adUnitId !== 'string') {\n return ''\n }\n return options.adUnitId.trim()\n}\n\nexport function createRewardedVideoAdImpl(options?: AdBaseOptions): RewardedVideoAd {\n let loaded = false\n let destroyed = false\n const loadCallbacks = new Set<() => void>()\n const errorCallbacks = new Set<(error: AdError) => void>()\n const closeCallbacks = new Set<(result: RewardedVideoAdCloseResult) => void>()\n const adUnitId = normalizeAdUnitId(options)\n\n const emitError = (error: AdError) => {\n for (const callback of errorCallbacks) {\n callback(error)\n }\n }\n\n const fail = (message: string) => {\n const error = createAdError(message)\n emitError(error)\n return Promise.reject(error)\n }\n\n return {\n load() {\n if (destroyed) {\n return fail('RewardedVideoAd.load:fail ad is destroyed')\n }\n if (!adUnitId) {\n return fail('RewardedVideoAd.load:fail invalid adUnitId')\n }\n loaded = true\n for (const callback of loadCallbacks) {\n callback()\n }\n return Promise.resolve({ errMsg: 'RewardedVideoAd.load:ok' })\n },\n show() {\n if (destroyed) {\n return fail('RewardedVideoAd.show:fail ad is destroyed')\n }\n if (!loaded) {\n return this.load().then(() => this.show())\n }\n const result: RewardedVideoAdCloseResult = { isEnded: true }\n for (const callback of closeCallbacks) {\n callback(result)\n }\n return Promise.resolve({ errMsg: 'RewardedVideoAd.show:ok' })\n },\n destroy() {\n destroyed = true\n loadCallbacks.clear()\n errorCallbacks.clear()\n closeCallbacks.clear()\n },\n onLoad(callback: () => void) {\n if (typeof callback === 'function') {\n loadCallbacks.add(callback)\n }\n },\n offLoad(callback?: () => void) {\n if (typeof callback !== 'function') {\n loadCallbacks.clear()\n return\n }\n loadCallbacks.delete(callback)\n },\n onError(callback: (error: AdError) => void) {\n if (typeof callback === 'function') {\n errorCallbacks.add(callback)\n }\n },\n offError(callback?: (error: AdError) => void) {\n if (typeof callback !== 'function') {\n errorCallbacks.clear()\n return\n }\n errorCallbacks.delete(callback)\n },\n onClose(callback: (result: RewardedVideoAdCloseResult) => void) {\n if (typeof callback === 'function') {\n closeCallbacks.add(callback)\n }\n },\n offClose(callback?: (result: RewardedVideoAdCloseResult) => void) {\n if (typeof callback !== 'function') {\n closeCallbacks.clear()\n return\n }\n closeCallbacks.delete(callback)\n },\n }\n}\n\nexport function createInterstitialAdImpl(options?: AdBaseOptions): InterstitialAd {\n let loaded = false\n let destroyed = false\n const loadCallbacks = new Set<() => void>()\n const errorCallbacks = new Set<(error: AdError) => void>()\n const closeCallbacks = new Set<() => void>()\n const adUnitId = normalizeAdUnitId(options)\n\n const emitError = (error: AdError) => {\n for (const callback of errorCallbacks) {\n callback(error)\n }\n }\n\n const fail = (message: string) => {\n const error = createAdError(message)\n emitError(error)\n return Promise.reject(error)\n }\n\n return {\n load() {\n if (destroyed) {\n return fail('InterstitialAd.load:fail ad is destroyed')\n }\n if (!adUnitId) {\n return fail('InterstitialAd.load:fail invalid adUnitId')\n }\n loaded = true\n for (const callback of loadCallbacks) {\n callback()\n }\n return Promise.resolve({ errMsg: 'InterstitialAd.load:ok' })\n },\n show() {\n if (destroyed) {\n return fail('InterstitialAd.show:fail ad is destroyed')\n }\n if (!loaded) {\n return this.load().then(() => this.show())\n }\n for (const callback of closeCallbacks) {\n callback()\n }\n return Promise.resolve({ errMsg: 'InterstitialAd.show:ok' })\n },\n destroy() {\n destroyed = true\n loadCallbacks.clear()\n errorCallbacks.clear()\n closeCallbacks.clear()\n },\n onLoad(callback: () => void) {\n if (typeof callback === 'function') {\n loadCallbacks.add(callback)\n }\n },\n offLoad(callback?: () => void) {\n if (typeof callback !== 'function') {\n loadCallbacks.clear()\n return\n }\n loadCallbacks.delete(callback)\n },\n onError(callback: (error: AdError) => void) {\n if (typeof callback === 'function') {\n errorCallbacks.add(callback)\n }\n },\n offError(callback?: (error: AdError) => void) {\n if (typeof callback !== 'function') {\n errorCallbacks.clear()\n return\n }\n errorCallbacks.delete(callback)\n },\n onClose(callback: () => void) {\n if (typeof callback === 'function') {\n closeCallbacks.add(callback)\n }\n },\n offClose(callback?: () => void) {\n if (typeof callback !== 'function') {\n closeCallbacks.clear()\n return\n }\n closeCallbacks.delete(callback)\n },\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"appState.mjs","names":[],"sources":["../../../src/runtime/polyfill/appState.ts"],"sourcesContent":["import type { AppLaunchOptions } from './routeRuntime/options'\n\nexport function resolveCurrentPages<T>(navigationHistory: Array<{ instance?: T }>) {\n return navigationHistory\n .map(entry => entry.instance)\n .filter((instance): instance is T => Boolean(instance))\n}\n\nexport function cloneLaunchOptions(options: AppLaunchOptions): AppLaunchOptions {\n return {\n path: options.path,\n scene: options.scene,\n query: { ...options.query },\n referrerInfo: { ...options.referrerInfo },\n }\n}\n\nexport function resolveFallbackLaunchOptions(\n navigationHistory: Array<{ id: string, query: Record<string, string> }>,\n): AppLaunchOptions {\n const entry = navigationHistory[navigationHistory.length - 1] ?? navigationHistory[0]\n if (!entry) {\n return {\n path: '',\n scene: 0,\n query: {},\n referrerInfo: {},\n }\n }\n return {\n path: entry.id,\n scene: 0,\n query: { ...entry.query },\n referrerInfo: {},\n }\n}\n"],"mappings":";AAEA,SAAgB,oBAAuB,mBAA4C;AACjF,QAAO,kBACJ,KAAI,UAAS,MAAM,SAAS,CAC5B,QAAQ,aAA4B,QAAQ,SAAS,CAAC;;AAG3D,SAAgB,mBAAmB,SAA6C;AAC9E,QAAO;EACL,MAAM,QAAQ;EACd,OAAO,QAAQ;EACf,OAAO,EAAE,GAAG,QAAQ,OAAO;EAC3B,cAAc,EAAE,GAAG,QAAQ,cAAc;EAC1C;;AAGH,SAAgB,6BACd,mBACkB;CAClB,MAAM,QAAQ,kBAAkB,kBAAkB,SAAS,MAAM,kBAAkB;AACnF,KAAI,CAAC,MACH,QAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO,EAAE;EACT,cAAc,EAAE;EACjB;AAEH,QAAO;EACL,MAAM,MAAM;EACZ,OAAO;EACP,OAAO,EAAE,GAAG,MAAM,OAAO;EACzB,cAAc,EAAE;EACjB"}
1
+ {"version":3,"file":"appState.mjs","names":[],"sources":["../../../src/runtime/polyfill/appState.ts"],"sourcesContent":["import type { AppLaunchOptions } from './routeRuntime/options'\n\nexport function resolveCurrentPages<T>(navigationHistory: Array<{ instance?: T }>) {\n return navigationHistory\n .map(entry => entry.instance)\n .filter((instance): instance is T => Boolean(instance))\n}\n\nexport function cloneLaunchOptions(options: AppLaunchOptions): AppLaunchOptions {\n return {\n path: options.path,\n scene: options.scene,\n query: { ...options.query },\n referrerInfo: { ...options.referrerInfo },\n }\n}\n\nexport function resolveFallbackLaunchOptions(\n navigationHistory: Array<{ id: string, query: Record<string, string> }>,\n): AppLaunchOptions {\n const entry = navigationHistory[navigationHistory.length - 1] ?? navigationHistory[0]\n if (!entry) {\n return {\n path: '',\n scene: 0,\n query: {},\n referrerInfo: {},\n }\n }\n return {\n path: entry.id,\n scene: 0,\n query: { ...entry.query },\n referrerInfo: {},\n }\n}\n"],"mappings":";AAEA,SAAgB,oBAAuB,mBAA4C;CACjF,OAAO,kBACJ,KAAI,UAAS,MAAM,QAAQ,EAC3B,QAAQ,aAA4B,QAAQ,QAAQ,CAAC;AAC1D;AAEA,SAAgB,mBAAmB,SAA6C;CAC9E,OAAO;EACL,MAAM,QAAQ;EACd,OAAO,QAAQ;EACf,OAAO,EAAE,GAAG,QAAQ,MAAM;EAC1B,cAAc,EAAE,GAAG,QAAQ,aAAa;CAC1C;AACF;AAEA,SAAgB,6BACd,mBACkB;CAClB,MAAM,QAAQ,kBAAkB,kBAAkB,SAAS,MAAM,kBAAkB;CACnF,IAAI,CAAC,OACH,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO,CAAC;EACR,cAAc,CAAC;CACjB;CAEF,OAAO;EACL,MAAM,MAAM;EACZ,OAAO;EACP,OAAO,EAAE,GAAG,MAAM,MAAM;EACxB,cAAc,CAAC;CACjB;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"async.mjs","names":[],"sources":["../../../src/runtime/polyfill/async.ts"],"sourcesContent":["interface MiniProgramBaseResultLike {\n errMsg: string\n}\n\ninterface MiniProgramAsyncOptionsLike<SuccessResult extends MiniProgramBaseResultLike> {\n success?: (result: SuccessResult) => void\n fail?: (result: MiniProgramBaseResultLike) => void\n complete?: (result: SuccessResult | MiniProgramBaseResultLike) => void\n}\n\nexport function callMiniProgramAsyncSuccess<SuccessResult extends MiniProgramBaseResultLike>(\n options: MiniProgramAsyncOptionsLike<SuccessResult> | undefined,\n result: SuccessResult,\n) {\n options?.success?.(result)\n options?.complete?.(result)\n return result\n}\n\nexport function callMiniProgramAsyncFailure<SuccessResult extends MiniProgramBaseResultLike>(\n options: MiniProgramAsyncOptionsLike<SuccessResult> | undefined,\n errMsg: string,\n) {\n const result: MiniProgramBaseResultLike = { errMsg }\n options?.fail?.(result)\n options?.complete?.(result)\n return result\n}\n\nexport const callWxAsyncSuccess = callMiniProgramAsyncSuccess\nexport const callWxAsyncFailure = callMiniProgramAsyncFailure\n\nexport function normalizeDuration(duration: number | undefined, fallback: number) {\n if (typeof duration !== 'number' || Number.isNaN(duration)) {\n return fallback\n }\n return Math.max(0, duration)\n}\n\nexport function scheduleMicrotask(task: () => void) {\n if (typeof queueMicrotask === 'function') {\n queueMicrotask(task)\n return\n }\n Promise.resolve()\n .then(task)\n .catch((error) => {\n setTimeout(() => {\n throw error\n }, 0)\n })\n}\n"],"mappings":";AAUA,SAAgB,4BACd,SACA,QACA;AACA,UAAS,UAAU,OAAO;AAC1B,UAAS,WAAW,OAAO;AAC3B,QAAO;;AAGT,SAAgB,4BACd,SACA,QACA;CACA,MAAM,SAAoC,EAAE,QAAQ;AACpD,UAAS,OAAO,OAAO;AACvB,UAAS,WAAW,OAAO;AAC3B,QAAO;;AAMT,SAAgB,kBAAkB,UAA8B,UAAkB;AAChF,KAAI,OAAO,aAAa,YAAY,OAAO,MAAM,SAAS,CACxD,QAAO;AAET,QAAO,KAAK,IAAI,GAAG,SAAS;;AAG9B,SAAgB,kBAAkB,MAAkB;AAClD,KAAI,OAAO,mBAAmB,YAAY;AACxC,iBAAe,KAAK;AACpB;;AAEF,SAAQ,SAAS,CACd,KAAK,KAAK,CACV,OAAO,UAAU;AAChB,mBAAiB;AACf,SAAM;KACL,EAAE;GACL"}
1
+ {"version":3,"file":"async.mjs","names":[],"sources":["../../../src/runtime/polyfill/async.ts"],"sourcesContent":["interface MiniProgramBaseResultLike {\n errMsg: string\n}\n\ninterface MiniProgramAsyncOptionsLike<SuccessResult extends MiniProgramBaseResultLike> {\n success?: (result: SuccessResult) => void\n fail?: (result: MiniProgramBaseResultLike) => void\n complete?: (result: SuccessResult | MiniProgramBaseResultLike) => void\n}\n\nexport function callMiniProgramAsyncSuccess<SuccessResult extends MiniProgramBaseResultLike>(\n options: MiniProgramAsyncOptionsLike<SuccessResult> | undefined,\n result: SuccessResult,\n) {\n options?.success?.(result)\n options?.complete?.(result)\n return result\n}\n\nexport function callMiniProgramAsyncFailure<SuccessResult extends MiniProgramBaseResultLike>(\n options: MiniProgramAsyncOptionsLike<SuccessResult> | undefined,\n errMsg: string,\n) {\n const result: MiniProgramBaseResultLike = { errMsg }\n options?.fail?.(result)\n options?.complete?.(result)\n return result\n}\n\nexport const callWxAsyncSuccess = callMiniProgramAsyncSuccess\nexport const callWxAsyncFailure = callMiniProgramAsyncFailure\n\nexport function normalizeDuration(duration: number | undefined, fallback: number) {\n if (typeof duration !== 'number' || Number.isNaN(duration)) {\n return fallback\n }\n return Math.max(0, duration)\n}\n\nexport function scheduleMicrotask(task: () => void) {\n if (typeof queueMicrotask === 'function') {\n queueMicrotask(task)\n return\n }\n Promise.resolve()\n .then(task)\n .catch((error) => {\n setTimeout(() => {\n throw error\n }, 0)\n })\n}\n"],"mappings":";AAUA,SAAgB,4BACd,SACA,QACA;CACA,SAAS,UAAU,MAAM;CACzB,SAAS,WAAW,MAAM;CAC1B,OAAO;AACT;AAEA,SAAgB,4BACd,SACA,QACA;CACA,MAAM,SAAoC,EAAE,OAAO;CACnD,SAAS,OAAO,MAAM;CACtB,SAAS,WAAW,MAAM;CAC1B,OAAO;AACT;AAKA,SAAgB,kBAAkB,UAA8B,UAAkB;CAChF,IAAI,OAAO,aAAa,YAAY,OAAO,MAAM,QAAQ,GACvD,OAAO;CAET,OAAO,KAAK,IAAI,GAAG,QAAQ;AAC7B;AAEA,SAAgB,kBAAkB,MAAkB;CAClD,IAAI,OAAO,mBAAmB,YAAY;EACxC,eAAe,IAAI;EACnB;CACF;CACA,QAAQ,QAAQ,EACb,KAAK,IAAI,EACT,OAAO,UAAU;EAChB,iBAAiB;GACf,MAAM;EACR,GAAG,CAAC;CACN,CAAC;AACL"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.mjs","names":["runtimeGlobal"],"sources":["../../../src/runtime/polyfill/auth.ts"],"sourcesContent":["import {\n WEAPP_VITE_WEB_AUTHORIZE_DECISION_KEY,\n WEAPP_VITE_WEB_CHECK_SESSION_KEY,\n WEAPP_VITE_WEB_GET_USER_PROFILE_DECISION_KEY,\n WEAPP_VITE_WEB_OPEN_APP_AUTHORIZE_SETTING_KEY,\n WEAPP_VITE_WEB_OPEN_SETTING_AUTH_KEY,\n WEAPP_VITE_WEB_USER_INFO_KEY,\n WEAPP_VITE_WEB_USER_PROFILE_KEY,\n} from '@weapp-core/constants'\n\nexport type AppAuthorizeStatusLike = 'authorized' | 'denied' | 'not determined'\n\ntype UserLanguageLike = 'en' | 'zh_CN' | 'zh_TW'\n\ninterface UserInfoLike {\n nickName: string\n avatarUrl: string\n gender: 0 | 1 | 2\n country: string\n province: string\n city: string\n language: UserLanguageLike\n}\n\nexport function normalizeAuthScope(scope: unknown) {\n if (typeof scope !== 'string') {\n return ''\n }\n return scope.trim()\n}\n\nexport function buildAuthSettingSnapshot(authorizeState: Map<string, AppAuthorizeStatusLike>) {\n const authSetting: Record<string, boolean> = {}\n for (const [scope, status] of authorizeState.entries()) {\n authSetting[scope] = status === 'authorized'\n }\n return authSetting\n}\n\nexport function normalizeAuthorizeDecision(decision: unknown): AppAuthorizeStatusLike {\n if (decision === true) {\n return 'authorized'\n }\n if (decision === false) {\n return 'denied'\n }\n if (decision === 'authorized' || decision === 'denied' || decision === 'not determined') {\n return decision\n }\n return 'authorized'\n}\n\nexport function resolveAuthorizeDecision(scope: string): AppAuthorizeStatusLike {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const decisionSource = runtimeGlobal[WEAPP_VITE_WEB_AUTHORIZE_DECISION_KEY]\n if (typeof decisionSource === 'function') {\n try {\n return normalizeAuthorizeDecision((decisionSource as (value: string) => unknown)(scope))\n }\n catch {\n return 'authorized'\n }\n }\n if (decisionSource && typeof decisionSource === 'object') {\n return normalizeAuthorizeDecision((decisionSource as Record<string, unknown>)[scope])\n }\n return 'authorized'\n}\n\nexport function syncOpenSettingPreset(\n authorizeState: Map<string, AppAuthorizeStatusLike>,\n supportedAuthScopes: Set<string>,\n) {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_OPEN_SETTING_AUTH_KEY]\n if (!preset || typeof preset !== 'object') {\n return\n }\n for (const [scope, value] of Object.entries(preset as Record<string, unknown>)) {\n if (!supportedAuthScopes.has(scope)) {\n continue\n }\n authorizeState.set(scope, value ? 'authorized' : 'denied')\n }\n}\n\nexport function normalizeAppAuthorizeStatus(value: unknown): AppAuthorizeStatusLike {\n if (value === true) {\n return 'authorized'\n }\n if (value === false) {\n return 'denied'\n }\n if (value === 'authorized' || value === 'denied' || value === 'not determined') {\n return value\n }\n return 'not determined'\n}\n\nexport function syncOpenAppAuthorizeSettingPreset(\n authorizeState: Map<string, AppAuthorizeStatusLike>,\n scopeMap: Partial<Record<string, string>>,\n) {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_OPEN_APP_AUTHORIZE_SETTING_KEY]\n if (!preset || typeof preset !== 'object') {\n return\n }\n for (const [key, scope] of Object.entries(scopeMap)) {\n if (!scope) {\n continue\n }\n const status = normalizeAppAuthorizeStatus((preset as Record<string, unknown>)[key])\n authorizeState.set(scope, status)\n }\n}\n\nexport function generateLoginCode() {\n const now = Date.now().toString(36)\n const random = Math.random().toString(36).slice(2, 10)\n return `web_${now}_${random}`\n}\n\nexport function normalizeUserLanguage(value: unknown): UserLanguageLike {\n if (value === 'en' || value === 'zh_CN' || value === 'zh_TW') {\n return value\n }\n const runtimeNavigator = typeof navigator !== 'undefined' ? navigator : undefined\n const language = runtimeNavigator?.language?.toLowerCase() ?? ''\n if (language.startsWith('zh-tw') || language.startsWith('zh-hk')) {\n return 'zh_TW'\n }\n if (language.startsWith('zh')) {\n return 'zh_CN'\n }\n return 'en'\n}\n\nfunction normalizeUserGender(value: unknown): UserInfoLike['gender'] {\n if (value === 1 || value === 2) {\n return value\n }\n return 0\n}\n\nfunction normalizeUserInfoValue(value: unknown, lang: UserLanguageLike) {\n if (!value || typeof value !== 'object') {\n return null\n }\n const info = value as Record<string, unknown>\n return {\n nickName: typeof info.nickName === 'string' && info.nickName.trim() ? info.nickName : 'Web User',\n avatarUrl: typeof info.avatarUrl === 'string' ? info.avatarUrl : '',\n gender: normalizeUserGender(info.gender),\n country: typeof info.country === 'string' ? info.country : '',\n province: typeof info.province === 'string' ? info.province : '',\n city: typeof info.city === 'string' ? info.city : '',\n language: normalizeUserLanguage(info.language ?? lang),\n } satisfies UserInfoLike\n}\n\nfunction resolveUserInfoPreset(\n source: typeof WEAPP_VITE_WEB_USER_INFO_KEY | typeof WEAPP_VITE_WEB_USER_PROFILE_KEY,\n lang: UserLanguageLike,\n) {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[source]\n if (typeof preset === 'function') {\n return normalizeUserInfoValue((preset as () => unknown)(), lang)\n }\n return normalizeUserInfoValue(preset, lang)\n}\n\nexport function buildUserProfilePayload(errMsg: 'getUserInfo:ok' | 'getUserProfile:ok', optionsLang?: unknown) {\n const language = normalizeUserLanguage(optionsLang)\n const userInfo = resolveUserInfoPreset(WEAPP_VITE_WEB_USER_PROFILE_KEY, language)\n ?? resolveUserInfoPreset(WEAPP_VITE_WEB_USER_INFO_KEY, language)\n ?? {\n nickName: 'Web User',\n avatarUrl: '',\n gender: 0 as const,\n country: '',\n province: '',\n city: '',\n language,\n }\n const rawData = JSON.stringify(userInfo)\n return {\n errMsg,\n userInfo,\n rawData,\n signature: `web-signature-${rawData.length}`,\n encryptedData: '',\n iv: '',\n }\n}\n\nexport function resolveCheckSessionState() {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_CHECK_SESSION_KEY]\n if (typeof preset === 'boolean') {\n return preset\n }\n if (typeof preset === 'string') {\n return preset.trim() !== 'fail'\n }\n if (preset && typeof preset === 'object' && 'valid' in preset) {\n return Boolean((preset as { valid?: unknown }).valid)\n }\n return true\n}\n\nexport function resolveUserProfileDecision(): AppAuthorizeStatusLike {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_GET_USER_PROFILE_DECISION_KEY]\n if (typeof preset === 'function') {\n return normalizeAuthorizeDecision((preset as () => unknown)())\n }\n return normalizeAuthorizeDecision(preset)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"auth.mjs","names":["runtimeGlobal"],"sources":["../../../src/runtime/polyfill/auth.ts"],"sourcesContent":["import {\n WEAPP_VITE_WEB_AUTHORIZE_DECISION_KEY,\n WEAPP_VITE_WEB_CHECK_SESSION_KEY,\n WEAPP_VITE_WEB_GET_USER_PROFILE_DECISION_KEY,\n WEAPP_VITE_WEB_OPEN_APP_AUTHORIZE_SETTING_KEY,\n WEAPP_VITE_WEB_OPEN_SETTING_AUTH_KEY,\n WEAPP_VITE_WEB_USER_INFO_KEY,\n WEAPP_VITE_WEB_USER_PROFILE_KEY,\n} from '@weapp-core/constants'\n\nexport type AppAuthorizeStatusLike = 'authorized' | 'denied' | 'not determined'\n\ntype UserLanguageLike = 'en' | 'zh_CN' | 'zh_TW'\n\ninterface UserInfoLike {\n nickName: string\n avatarUrl: string\n gender: 0 | 1 | 2\n country: string\n province: string\n city: string\n language: UserLanguageLike\n}\n\nexport function normalizeAuthScope(scope: unknown) {\n if (typeof scope !== 'string') {\n return ''\n }\n return scope.trim()\n}\n\nexport function buildAuthSettingSnapshot(authorizeState: Map<string, AppAuthorizeStatusLike>) {\n const authSetting: Record<string, boolean> = {}\n for (const [scope, status] of authorizeState.entries()) {\n authSetting[scope] = status === 'authorized'\n }\n return authSetting\n}\n\nexport function normalizeAuthorizeDecision(decision: unknown): AppAuthorizeStatusLike {\n if (decision === true) {\n return 'authorized'\n }\n if (decision === false) {\n return 'denied'\n }\n if (decision === 'authorized' || decision === 'denied' || decision === 'not determined') {\n return decision\n }\n return 'authorized'\n}\n\nexport function resolveAuthorizeDecision(scope: string): AppAuthorizeStatusLike {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const decisionSource = runtimeGlobal[WEAPP_VITE_WEB_AUTHORIZE_DECISION_KEY]\n if (typeof decisionSource === 'function') {\n try {\n return normalizeAuthorizeDecision((decisionSource as (value: string) => unknown)(scope))\n }\n catch {\n return 'authorized'\n }\n }\n if (decisionSource && typeof decisionSource === 'object') {\n return normalizeAuthorizeDecision((decisionSource as Record<string, unknown>)[scope])\n }\n return 'authorized'\n}\n\nexport function syncOpenSettingPreset(\n authorizeState: Map<string, AppAuthorizeStatusLike>,\n supportedAuthScopes: Set<string>,\n) {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_OPEN_SETTING_AUTH_KEY]\n if (!preset || typeof preset !== 'object') {\n return\n }\n for (const [scope, value] of Object.entries(preset as Record<string, unknown>)) {\n if (!supportedAuthScopes.has(scope)) {\n continue\n }\n authorizeState.set(scope, value ? 'authorized' : 'denied')\n }\n}\n\nexport function normalizeAppAuthorizeStatus(value: unknown): AppAuthorizeStatusLike {\n if (value === true) {\n return 'authorized'\n }\n if (value === false) {\n return 'denied'\n }\n if (value === 'authorized' || value === 'denied' || value === 'not determined') {\n return value\n }\n return 'not determined'\n}\n\nexport function syncOpenAppAuthorizeSettingPreset(\n authorizeState: Map<string, AppAuthorizeStatusLike>,\n scopeMap: Partial<Record<string, string>>,\n) {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_OPEN_APP_AUTHORIZE_SETTING_KEY]\n if (!preset || typeof preset !== 'object') {\n return\n }\n for (const [key, scope] of Object.entries(scopeMap)) {\n if (!scope) {\n continue\n }\n const status = normalizeAppAuthorizeStatus((preset as Record<string, unknown>)[key])\n authorizeState.set(scope, status)\n }\n}\n\nexport function generateLoginCode() {\n const now = Date.now().toString(36)\n const random = Math.random().toString(36).slice(2, 10)\n return `web_${now}_${random}`\n}\n\nexport function normalizeUserLanguage(value: unknown): UserLanguageLike {\n if (value === 'en' || value === 'zh_CN' || value === 'zh_TW') {\n return value\n }\n const runtimeNavigator = typeof navigator !== 'undefined' ? navigator : undefined\n const language = runtimeNavigator?.language?.toLowerCase() ?? ''\n if (language.startsWith('zh-tw') || language.startsWith('zh-hk')) {\n return 'zh_TW'\n }\n if (language.startsWith('zh')) {\n return 'zh_CN'\n }\n return 'en'\n}\n\nfunction normalizeUserGender(value: unknown): UserInfoLike['gender'] {\n if (value === 1 || value === 2) {\n return value\n }\n return 0\n}\n\nfunction normalizeUserInfoValue(value: unknown, lang: UserLanguageLike) {\n if (!value || typeof value !== 'object') {\n return null\n }\n const info = value as Record<string, unknown>\n return {\n nickName: typeof info.nickName === 'string' && info.nickName.trim() ? info.nickName : 'Web User',\n avatarUrl: typeof info.avatarUrl === 'string' ? info.avatarUrl : '',\n gender: normalizeUserGender(info.gender),\n country: typeof info.country === 'string' ? info.country : '',\n province: typeof info.province === 'string' ? info.province : '',\n city: typeof info.city === 'string' ? info.city : '',\n language: normalizeUserLanguage(info.language ?? lang),\n } satisfies UserInfoLike\n}\n\nfunction resolveUserInfoPreset(\n source: typeof WEAPP_VITE_WEB_USER_INFO_KEY | typeof WEAPP_VITE_WEB_USER_PROFILE_KEY,\n lang: UserLanguageLike,\n) {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[source]\n if (typeof preset === 'function') {\n return normalizeUserInfoValue((preset as () => unknown)(), lang)\n }\n return normalizeUserInfoValue(preset, lang)\n}\n\nexport function buildUserProfilePayload(errMsg: 'getUserInfo:ok' | 'getUserProfile:ok', optionsLang?: unknown) {\n const language = normalizeUserLanguage(optionsLang)\n const userInfo = resolveUserInfoPreset(WEAPP_VITE_WEB_USER_PROFILE_KEY, language)\n ?? resolveUserInfoPreset(WEAPP_VITE_WEB_USER_INFO_KEY, language)\n ?? {\n nickName: 'Web User',\n avatarUrl: '',\n gender: 0 as const,\n country: '',\n province: '',\n city: '',\n language,\n }\n const rawData = JSON.stringify(userInfo)\n return {\n errMsg,\n userInfo,\n rawData,\n signature: `web-signature-${rawData.length}`,\n encryptedData: '',\n iv: '',\n }\n}\n\nexport function resolveCheckSessionState() {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_CHECK_SESSION_KEY]\n if (typeof preset === 'boolean') {\n return preset\n }\n if (typeof preset === 'string') {\n return preset.trim() !== 'fail'\n }\n if (preset && typeof preset === 'object' && 'valid' in preset) {\n return Boolean((preset as { valid?: unknown }).valid)\n }\n return true\n}\n\nexport function resolveUserProfileDecision(): AppAuthorizeStatusLike {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_GET_USER_PROFILE_DECISION_KEY]\n if (typeof preset === 'function') {\n return normalizeAuthorizeDecision((preset as () => unknown)())\n }\n return normalizeAuthorizeDecision(preset)\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"authApi.mjs","names":[],"sources":["../../../src/runtime/polyfill/authApi.ts"],"sourcesContent":["import type { AppAuthorizeStatusLike } from './auth'\nimport {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport {\n buildAuthSettingSnapshot,\n buildUserProfilePayload,\n generateLoginCode,\n normalizeAuthScope,\n resolveAuthorizeDecision,\n resolveCheckSessionState,\n resolveUserProfileDecision,\n syncOpenAppAuthorizeSettingPreset,\n syncOpenSettingPreset,\n} from './auth'\n\ntype AuthState = Map<string, AppAuthorizeStatusLike>\n\nexport function getSettingBridge(options: any, authState: AuthState) {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'getSetting:ok',\n authSetting: buildAuthSettingSnapshot(authState),\n }))\n}\n\nexport function authorizeBridge(options: any, authState: AuthState, supportedScopes: Set<string>) {\n const scope = normalizeAuthScope(options?.scope)\n if (!scope) {\n const failure = callMiniProgramAsyncFailure(options, 'authorize:fail invalid scope')\n return Promise.reject(failure)\n }\n if (!supportedScopes.has(scope)) {\n const failure = callMiniProgramAsyncFailure(options, 'authorize:fail unsupported scope')\n return Promise.reject(failure)\n }\n const decision = resolveAuthorizeDecision(scope)\n authState.set(scope, decision)\n if (decision !== 'authorized') {\n const reason = decision === 'denied' ? 'auth deny' : 'auth canceled'\n const failure = callMiniProgramAsyncFailure(options, `authorize:fail ${reason}`)\n return Promise.reject(failure)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'authorize:ok' }))\n}\n\nexport function openSettingBridge(options: any, authState: AuthState, supportedScopes: Set<string>) {\n syncOpenSettingPreset(authState, supportedScopes)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'openSetting:ok',\n authSetting: buildAuthSettingSnapshot(authState),\n }))\n}\n\nexport function openAppAuthorizeSettingBridge(\n options: any,\n authState: AuthState,\n scopeMap: Record<string, string>,\n resolveAppAuthorizeSetting: () => object,\n) {\n syncOpenAppAuthorizeSettingPreset(authState, scopeMap)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'openAppAuthorizeSetting:ok',\n ...resolveAppAuthorizeSetting(),\n }))\n}\n\nexport function getSystemSettingBridge(authState: AuthState, resolveOrientation: () => 'portrait' | 'landscape') {\n const locationAuthorized = authState.get('scope.userLocation') === 'authorized'\n return {\n bluetoothEnabled: false,\n wifiEnabled: true,\n locationEnabled: locationAuthorized,\n locationReducedAccuracy: false,\n deviceOrientation: resolveOrientation(),\n }\n}\n\nexport function getAppAuthorizeSettingBridge(authState: AuthState) {\n const resolveStatus = (scope: string) => authState.get(scope) ?? 'not determined'\n return {\n albumAuthorized: resolveStatus('scope.writePhotosAlbum'),\n bluetoothAuthorized: 'not determined',\n cameraAuthorized: resolveStatus('scope.camera'),\n locationAuthorized: resolveStatus('scope.userLocation'),\n microphoneAuthorized: resolveStatus('scope.record'),\n notificationAuthorized: 'not determined',\n phoneCalendarAuthorized: 'not determined',\n }\n}\n\nexport function loginBridge(options: any) {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'login:ok',\n code: generateLoginCode(),\n }))\n}\n\nexport function checkSessionBridge(options: any) {\n if (!resolveCheckSessionState()) {\n const failure = callMiniProgramAsyncFailure(options, 'checkSession:fail session expired')\n return Promise.reject(failure)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'checkSession:ok' }))\n}\n\nexport function getUserInfoBridge(options: any, authState: AuthState) {\n if (authState.get('scope.userInfo') === 'denied') {\n const failure = callMiniProgramAsyncFailure(options, 'getUserInfo:fail auth deny')\n return Promise.reject(failure)\n }\n authState.set('scope.userInfo', 'authorized')\n return Promise.resolve(callMiniProgramAsyncSuccess(options, buildUserProfilePayload('getUserInfo:ok', options?.lang)))\n}\n\nexport function getUserProfileBridge(options: any, authState: AuthState) {\n const desc = typeof options?.desc === 'string' ? options.desc.trim() : ''\n if (!desc) {\n const failure = callMiniProgramAsyncFailure(options, 'getUserProfile:fail invalid desc')\n return Promise.reject(failure)\n }\n const decision = resolveUserProfileDecision()\n authState.set('scope.userInfo', decision)\n if (decision !== 'authorized') {\n const reason = decision === 'denied' ? 'auth deny' : 'auth canceled'\n const failure = callMiniProgramAsyncFailure(options, `getUserProfile:fail ${reason}`)\n return Promise.reject(failure)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, buildUserProfilePayload('getUserProfile:ok', options?.lang)))\n}\n"],"mappings":";;;;AAmBA,SAAgB,iBAAiB,SAAc,WAAsB;AACnE,QAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR,aAAa,yBAAyB,UAAU;EACjD,CAAC,CAAC;;AAGL,SAAgB,gBAAgB,SAAc,WAAsB,iBAA8B;CAChG,MAAM,QAAQ,mBAAmB,SAAS,MAAM;AAChD,KAAI,CAAC,OAAO;EACV,MAAM,UAAU,4BAA4B,SAAS,+BAA+B;AACpF,SAAO,QAAQ,OAAO,QAAQ;;AAEhC,KAAI,CAAC,gBAAgB,IAAI,MAAM,EAAE;EAC/B,MAAM,UAAU,4BAA4B,SAAS,mCAAmC;AACxF,SAAO,QAAQ,OAAO,QAAQ;;CAEhC,MAAM,WAAW,yBAAyB,MAAM;AAChD,WAAU,IAAI,OAAO,SAAS;AAC9B,KAAI,aAAa,cAAc;EAE7B,MAAM,UAAU,4BAA4B,SAAS,kBADtC,aAAa,WAAW,cAAc,kBAC2B;AAChF,SAAO,QAAQ,OAAO,QAAQ;;AAEhC,QAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,gBAAgB,CAAC,CAAC;;AAG1F,SAAgB,kBAAkB,SAAc,WAAsB,iBAA8B;AAClG,uBAAsB,WAAW,gBAAgB;AACjD,QAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR,aAAa,yBAAyB,UAAU;EACjD,CAAC,CAAC;;AAGL,SAAgB,8BACd,SACA,WACA,UACA,4BACA;AACA,mCAAkC,WAAW,SAAS;AACtD,QAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR,GAAG,4BAA4B;EAChC,CAAC,CAAC;;AAGL,SAAgB,uBAAuB,WAAsB,oBAAoD;AAE/G,QAAO;EACL,kBAAkB;EAClB,aAAa;EACb,iBAJyB,UAAU,IAAI,qBAAqB,KAAK;EAKjE,yBAAyB;EACzB,mBAAmB,oBAAoB;EACxC;;AAGH,SAAgB,6BAA6B,WAAsB;CACjE,MAAM,iBAAiB,UAAkB,UAAU,IAAI,MAAM,IAAI;AACjE,QAAO;EACL,iBAAiB,cAAc,yBAAyB;EACxD,qBAAqB;EACrB,kBAAkB,cAAc,eAAe;EAC/C,oBAAoB,cAAc,qBAAqB;EACvD,sBAAsB,cAAc,eAAe;EACnD,wBAAwB;EACxB,yBAAyB;EAC1B;;AAGH,SAAgB,YAAY,SAAc;AACxC,QAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR,MAAM,mBAAmB;EAC1B,CAAC,CAAC;;AAGL,SAAgB,mBAAmB,SAAc;AAC/C,KAAI,CAAC,0BAA0B,EAAE;EAC/B,MAAM,UAAU,4BAA4B,SAAS,oCAAoC;AACzF,SAAO,QAAQ,OAAO,QAAQ;;AAEhC,QAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,mBAAmB,CAAC,CAAC;;AAG7F,SAAgB,kBAAkB,SAAc,WAAsB;AACpE,KAAI,UAAU,IAAI,iBAAiB,KAAK,UAAU;EAChD,MAAM,UAAU,4BAA4B,SAAS,6BAA6B;AAClF,SAAO,QAAQ,OAAO,QAAQ;;AAEhC,WAAU,IAAI,kBAAkB,aAAa;AAC7C,QAAO,QAAQ,QAAQ,4BAA4B,SAAS,wBAAwB,kBAAkB,SAAS,KAAK,CAAC,CAAC;;AAGxH,SAAgB,qBAAqB,SAAc,WAAsB;AAEvE,KAAI,EADS,OAAO,SAAS,SAAS,WAAW,QAAQ,KAAK,MAAM,GAAG,KAC5D;EACT,MAAM,UAAU,4BAA4B,SAAS,mCAAmC;AACxF,SAAO,QAAQ,OAAO,QAAQ;;CAEhC,MAAM,WAAW,4BAA4B;AAC7C,WAAU,IAAI,kBAAkB,SAAS;AACzC,KAAI,aAAa,cAAc;EAE7B,MAAM,UAAU,4BAA4B,SAAS,uBADtC,aAAa,WAAW,cAAc,kBACgC;AACrF,SAAO,QAAQ,OAAO,QAAQ;;AAEhC,QAAO,QAAQ,QAAQ,4BAA4B,SAAS,wBAAwB,qBAAqB,SAAS,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"authApi.mjs","names":[],"sources":["../../../src/runtime/polyfill/authApi.ts"],"sourcesContent":["import type { AppAuthorizeStatusLike } from './auth'\nimport {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport {\n buildAuthSettingSnapshot,\n buildUserProfilePayload,\n generateLoginCode,\n normalizeAuthScope,\n resolveAuthorizeDecision,\n resolveCheckSessionState,\n resolveUserProfileDecision,\n syncOpenAppAuthorizeSettingPreset,\n syncOpenSettingPreset,\n} from './auth'\n\ntype AuthState = Map<string, AppAuthorizeStatusLike>\n\nexport function getSettingBridge(options: any, authState: AuthState) {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'getSetting:ok',\n authSetting: buildAuthSettingSnapshot(authState),\n }))\n}\n\nexport function authorizeBridge(options: any, authState: AuthState, supportedScopes: Set<string>) {\n const scope = normalizeAuthScope(options?.scope)\n if (!scope) {\n const failure = callMiniProgramAsyncFailure(options, 'authorize:fail invalid scope')\n return Promise.reject(failure)\n }\n if (!supportedScopes.has(scope)) {\n const failure = callMiniProgramAsyncFailure(options, 'authorize:fail unsupported scope')\n return Promise.reject(failure)\n }\n const decision = resolveAuthorizeDecision(scope)\n authState.set(scope, decision)\n if (decision !== 'authorized') {\n const reason = decision === 'denied' ? 'auth deny' : 'auth canceled'\n const failure = callMiniProgramAsyncFailure(options, `authorize:fail ${reason}`)\n return Promise.reject(failure)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'authorize:ok' }))\n}\n\nexport function openSettingBridge(options: any, authState: AuthState, supportedScopes: Set<string>) {\n syncOpenSettingPreset(authState, supportedScopes)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'openSetting:ok',\n authSetting: buildAuthSettingSnapshot(authState),\n }))\n}\n\nexport function openAppAuthorizeSettingBridge(\n options: any,\n authState: AuthState,\n scopeMap: Record<string, string>,\n resolveAppAuthorizeSetting: () => object,\n) {\n syncOpenAppAuthorizeSettingPreset(authState, scopeMap)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'openAppAuthorizeSetting:ok',\n ...resolveAppAuthorizeSetting(),\n }))\n}\n\nexport function getSystemSettingBridge(authState: AuthState, resolveOrientation: () => 'portrait' | 'landscape') {\n const locationAuthorized = authState.get('scope.userLocation') === 'authorized'\n return {\n bluetoothEnabled: false,\n wifiEnabled: true,\n locationEnabled: locationAuthorized,\n locationReducedAccuracy: false,\n deviceOrientation: resolveOrientation(),\n }\n}\n\nexport function getAppAuthorizeSettingBridge(authState: AuthState) {\n const resolveStatus = (scope: string) => authState.get(scope) ?? 'not determined'\n return {\n albumAuthorized: resolveStatus('scope.writePhotosAlbum'),\n bluetoothAuthorized: 'not determined',\n cameraAuthorized: resolveStatus('scope.camera'),\n locationAuthorized: resolveStatus('scope.userLocation'),\n microphoneAuthorized: resolveStatus('scope.record'),\n notificationAuthorized: 'not determined',\n phoneCalendarAuthorized: 'not determined',\n }\n}\n\nexport function loginBridge(options: any) {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'login:ok',\n code: generateLoginCode(),\n }))\n}\n\nexport function checkSessionBridge(options: any) {\n if (!resolveCheckSessionState()) {\n const failure = callMiniProgramAsyncFailure(options, 'checkSession:fail session expired')\n return Promise.reject(failure)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'checkSession:ok' }))\n}\n\nexport function getUserInfoBridge(options: any, authState: AuthState) {\n if (authState.get('scope.userInfo') === 'denied') {\n const failure = callMiniProgramAsyncFailure(options, 'getUserInfo:fail auth deny')\n return Promise.reject(failure)\n }\n authState.set('scope.userInfo', 'authorized')\n return Promise.resolve(callMiniProgramAsyncSuccess(options, buildUserProfilePayload('getUserInfo:ok', options?.lang)))\n}\n\nexport function getUserProfileBridge(options: any, authState: AuthState) {\n const desc = typeof options?.desc === 'string' ? options.desc.trim() : ''\n if (!desc) {\n const failure = callMiniProgramAsyncFailure(options, 'getUserProfile:fail invalid desc')\n return Promise.reject(failure)\n }\n const decision = resolveUserProfileDecision()\n authState.set('scope.userInfo', decision)\n if (decision !== 'authorized') {\n const reason = decision === 'denied' ? 'auth deny' : 'auth canceled'\n const failure = callMiniProgramAsyncFailure(options, `getUserProfile:fail ${reason}`)\n return Promise.reject(failure)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, buildUserProfilePayload('getUserProfile:ok', options?.lang)))\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"background.mjs","names":[],"sources":["../../../src/runtime/polyfill/background.ts"],"sourcesContent":["import type { SetBackgroundColorOptions, SetBackgroundTextStyleOptions } from './types/locationRuntime'\nimport {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\n\nfunction normalizeBackgroundColorValue(color: unknown) {\n if (typeof color !== 'string') {\n return ''\n }\n return color.trim()\n}\n\nexport function setBackgroundColorBridge(options?: SetBackgroundColorOptions) {\n const backgroundColor = normalizeBackgroundColorValue(options?.backgroundColor)\n const backgroundColorTop = normalizeBackgroundColorValue(options?.backgroundColorTop)\n const backgroundColorBottom = normalizeBackgroundColorValue(options?.backgroundColorBottom)\n const runtimeDocument = typeof document !== 'undefined' ? document : undefined\n const rootElement = runtimeDocument?.documentElement\n const body = runtimeDocument?.body\n\n if (body && backgroundColor) {\n body.style.backgroundColor = backgroundColor\n }\n if (rootElement && backgroundColorTop && backgroundColorBottom) {\n rootElement.style.setProperty(\n '--weapp-web-background-gradient',\n `linear-gradient(${backgroundColorTop}, ${backgroundColorBottom})`,\n )\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'setBackgroundColor:ok' }))\n}\n\nexport function setBackgroundTextStyleBridge(options?: SetBackgroundTextStyleOptions) {\n const textStyle = options?.textStyle\n if (textStyle !== undefined && textStyle !== 'dark' && textStyle !== 'light') {\n const failure = callMiniProgramAsyncFailure(options, 'setBackgroundTextStyle:fail invalid textStyle')\n return Promise.reject(failure)\n }\n if (typeof document !== 'undefined' && document.documentElement && textStyle) {\n document.documentElement.setAttribute('data-weapp-background-text-style', textStyle)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'setBackgroundTextStyle:ok' }))\n}\n"],"mappings":";;;AAMA,SAAS,8BAA8B,OAAgB;AACrD,KAAI,OAAO,UAAU,SACnB,QAAO;AAET,QAAO,MAAM,MAAM;;AAGrB,SAAgB,yBAAyB,SAAqC;CAC5E,MAAM,kBAAkB,8BAA8B,SAAS,gBAAgB;CAC/E,MAAM,qBAAqB,8BAA8B,SAAS,mBAAmB;CACrF,MAAM,wBAAwB,8BAA8B,SAAS,sBAAsB;CAC3F,MAAM,kBAAkB,OAAO,aAAa,cAAc,WAAW;CACrE,MAAM,cAAc,iBAAiB;CACrC,MAAM,OAAO,iBAAiB;AAE9B,KAAI,QAAQ,gBACV,MAAK,MAAM,kBAAkB;AAE/B,KAAI,eAAe,sBAAsB,sBACvC,aAAY,MAAM,YAChB,mCACA,mBAAmB,mBAAmB,IAAI,sBAAsB,GACjE;AAEH,QAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,yBAAyB,CAAC,CAAC;;AAGnG,SAAgB,6BAA6B,SAAyC;CACpF,MAAM,YAAY,SAAS;AAC3B,KAAI,cAAc,UAAa,cAAc,UAAU,cAAc,SAAS;EAC5E,MAAM,UAAU,4BAA4B,SAAS,gDAAgD;AACrG,SAAO,QAAQ,OAAO,QAAQ;;AAEhC,KAAI,OAAO,aAAa,eAAe,SAAS,mBAAmB,UACjE,UAAS,gBAAgB,aAAa,oCAAoC,UAAU;AAEtF,QAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,6BAA6B,CAAC,CAAC"}
1
+ {"version":3,"file":"background.mjs","names":[],"sources":["../../../src/runtime/polyfill/background.ts"],"sourcesContent":["import type { SetBackgroundColorOptions, SetBackgroundTextStyleOptions } from './types/locationRuntime'\nimport {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\n\nfunction normalizeBackgroundColorValue(color: unknown) {\n if (typeof color !== 'string') {\n return ''\n }\n return color.trim()\n}\n\nexport function setBackgroundColorBridge(options?: SetBackgroundColorOptions) {\n const backgroundColor = normalizeBackgroundColorValue(options?.backgroundColor)\n const backgroundColorTop = normalizeBackgroundColorValue(options?.backgroundColorTop)\n const backgroundColorBottom = normalizeBackgroundColorValue(options?.backgroundColorBottom)\n const runtimeDocument = typeof document !== 'undefined' ? document : undefined\n const rootElement = runtimeDocument?.documentElement\n const body = runtimeDocument?.body\n\n if (body && backgroundColor) {\n body.style.backgroundColor = backgroundColor\n }\n if (rootElement && backgroundColorTop && backgroundColorBottom) {\n rootElement.style.setProperty(\n '--weapp-web-background-gradient',\n `linear-gradient(${backgroundColorTop}, ${backgroundColorBottom})`,\n )\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'setBackgroundColor:ok' }))\n}\n\nexport function setBackgroundTextStyleBridge(options?: SetBackgroundTextStyleOptions) {\n const textStyle = options?.textStyle\n if (textStyle !== undefined && textStyle !== 'dark' && textStyle !== 'light') {\n const failure = callMiniProgramAsyncFailure(options, 'setBackgroundTextStyle:fail invalid textStyle')\n return Promise.reject(failure)\n }\n if (typeof document !== 'undefined' && document.documentElement && textStyle) {\n document.documentElement.setAttribute('data-weapp-background-text-style', textStyle)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'setBackgroundTextStyle:ok' }))\n}\n"],"mappings":";;;AAMA,SAAS,8BAA8B,OAAgB;CACrD,IAAI,OAAO,UAAU,UACnB,OAAO;CAET,OAAO,MAAM,KAAK;AACpB;AAEA,SAAgB,yBAAyB,SAAqC;CAC5E,MAAM,kBAAkB,8BAA8B,SAAS,eAAe;CAC9E,MAAM,qBAAqB,8BAA8B,SAAS,kBAAkB;CACpF,MAAM,wBAAwB,8BAA8B,SAAS,qBAAqB;CAC1F,MAAM,kBAAkB,OAAO,aAAa,cAAc,WAAW;CACrE,MAAM,cAAc,iBAAiB;CACrC,MAAM,OAAO,iBAAiB;CAE9B,IAAI,QAAQ,iBACV,KAAK,MAAM,kBAAkB;CAE/B,IAAI,eAAe,sBAAsB,uBACvC,YAAY,MAAM,YAChB,mCACA,mBAAmB,mBAAmB,IAAI,sBAAsB,EAClE;CAEF,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,wBAAwB,CAAC,CAAC;AAClG;AAEA,SAAgB,6BAA6B,SAAyC;CACpF,MAAM,YAAY,SAAS;CAC3B,IAAI,cAAc,UAAa,cAAc,UAAU,cAAc,SAAS;EAC5E,MAAM,UAAU,4BAA4B,SAAS,+CAA+C;EACpG,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,IAAI,OAAO,aAAa,eAAe,SAAS,mBAAmB,WACjE,SAAS,gBAAgB,aAAa,oCAAoC,SAAS;CAErF,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,4BAA4B,CAAC,CAAC;AACtG"}
@@ -1 +1 @@
1
- {"version":3,"file":"canvasContext.mjs","names":[],"sources":["../../../src/runtime/polyfill/canvasContext.ts"],"sourcesContent":["import type { CanvasContext } from './types/platformRuntime'\n\nfunction normalizeCanvasNumber(value: unknown) {\n if (typeof value !== 'number' || Number.isNaN(value)) {\n return 0\n }\n return value\n}\n\nfunction resolveCanvasById(canvasId: string) {\n if (typeof document === 'undefined') {\n return undefined\n }\n const runtimeDocument = document as Document & {\n querySelectorAll?: (selector: string) => ArrayLike<Element>\n body?: {\n querySelectorAll?: (selector: string) => ArrayLike<Element>\n }\n }\n const normalized = canvasId.trim()\n if (!normalized) {\n return undefined\n }\n const canvasList = runtimeDocument.querySelectorAll?.('canvas')\n ?? runtimeDocument.body?.querySelectorAll?.('canvas')\n ?? []\n for (const candidate of Array.from(canvasList)) {\n const canvas = candidate as HTMLCanvasElement\n if (!canvas) {\n continue\n }\n if ((canvas as { id?: string }).id === normalized) {\n return canvas\n }\n if (typeof canvas.getAttribute === 'function' && canvas.getAttribute('canvas-id') === normalized) {\n return canvas\n }\n }\n return undefined\n}\n\nfunction createCanvasCommandQueue(canvasId: string) {\n const commands: Array<(ctx: CanvasRenderingContext2D) => void> = []\n\n const pushCommand = (command: (ctx: CanvasRenderingContext2D) => void) => {\n commands.push(command)\n }\n\n const draw: CanvasContext['draw'] = (reserveOrCallback?: boolean | (() => void), callback?: () => void) => {\n const reserve = typeof reserveOrCallback === 'boolean' ? reserveOrCallback : false\n const done = typeof reserveOrCallback === 'function' ? reserveOrCallback : callback\n const canvas = resolveCanvasById(canvasId)\n const context = canvas?.getContext?.('2d') as CanvasRenderingContext2D | null | undefined\n if (!context) {\n commands.length = 0\n done?.()\n return\n }\n if (!reserve) {\n context.clearRect(0, 0, normalizeCanvasNumber(canvas?.width), normalizeCanvasNumber(canvas?.height))\n }\n for (const command of commands) {\n command(context)\n }\n commands.length = 0\n done?.()\n }\n\n const api: CanvasContext = {\n setFillStyle(color: string) {\n pushCommand((ctx) => {\n ctx.fillStyle = color\n })\n },\n setStrokeStyle(color: string) {\n pushCommand((ctx) => {\n ctx.strokeStyle = color\n })\n },\n setLineWidth(width: number) {\n pushCommand((ctx) => {\n ctx.lineWidth = normalizeCanvasNumber(width)\n })\n },\n setFontSize(size: number) {\n pushCommand((ctx) => {\n const normalized = Math.max(1, normalizeCanvasNumber(size))\n ctx.font = `${normalized}px sans-serif`\n })\n },\n fillRect(x: number, y: number, width: number, height: number) {\n pushCommand((ctx) => {\n ctx.fillRect(\n normalizeCanvasNumber(x),\n normalizeCanvasNumber(y),\n normalizeCanvasNumber(width),\n normalizeCanvasNumber(height),\n )\n })\n },\n strokeRect(x: number, y: number, width: number, height: number) {\n pushCommand((ctx) => {\n ctx.strokeRect(\n normalizeCanvasNumber(x),\n normalizeCanvasNumber(y),\n normalizeCanvasNumber(width),\n normalizeCanvasNumber(height),\n )\n })\n },\n clearRect(x: number, y: number, width: number, height: number) {\n pushCommand((ctx) => {\n ctx.clearRect(\n normalizeCanvasNumber(x),\n normalizeCanvasNumber(y),\n normalizeCanvasNumber(width),\n normalizeCanvasNumber(height),\n )\n })\n },\n fillText(text: string, x: number, y: number, maxWidth?: number) {\n pushCommand((ctx) => {\n const normalizedText = String(text ?? '')\n const normalizedX = normalizeCanvasNumber(x)\n const normalizedY = normalizeCanvasNumber(y)\n if (typeof maxWidth === 'number' && Number.isFinite(maxWidth)) {\n ctx.fillText(normalizedText, normalizedX, normalizedY, normalizeCanvasNumber(maxWidth))\n return\n }\n ctx.fillText(normalizedText, normalizedX, normalizedY)\n })\n },\n beginPath() {\n pushCommand(ctx => ctx.beginPath())\n },\n closePath() {\n pushCommand(ctx => ctx.closePath())\n },\n moveTo(x: number, y: number) {\n pushCommand((ctx) => {\n ctx.moveTo(normalizeCanvasNumber(x), normalizeCanvasNumber(y))\n })\n },\n lineTo(x: number, y: number) {\n pushCommand((ctx) => {\n ctx.lineTo(normalizeCanvasNumber(x), normalizeCanvasNumber(y))\n })\n },\n stroke() {\n pushCommand(ctx => ctx.stroke())\n },\n draw,\n }\n return api\n}\n\nexport function createCanvasContextBridge(canvasId: string) {\n return createCanvasCommandQueue(String(canvasId ?? ''))\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"canvasContext.mjs","names":[],"sources":["../../../src/runtime/polyfill/canvasContext.ts"],"sourcesContent":["import type { CanvasContext } from './types/platformRuntime'\n\nfunction normalizeCanvasNumber(value: unknown) {\n if (typeof value !== 'number' || Number.isNaN(value)) {\n return 0\n }\n return value\n}\n\nfunction resolveCanvasById(canvasId: string) {\n if (typeof document === 'undefined') {\n return undefined\n }\n const runtimeDocument = document as Document & {\n querySelectorAll?: (selector: string) => ArrayLike<Element>\n body?: {\n querySelectorAll?: (selector: string) => ArrayLike<Element>\n }\n }\n const normalized = canvasId.trim()\n if (!normalized) {\n return undefined\n }\n const canvasList = runtimeDocument.querySelectorAll?.('canvas')\n ?? runtimeDocument.body?.querySelectorAll?.('canvas')\n ?? []\n for (const candidate of Array.from(canvasList)) {\n const canvas = candidate as HTMLCanvasElement\n if (!canvas) {\n continue\n }\n if ((canvas as { id?: string }).id === normalized) {\n return canvas\n }\n if (typeof canvas.getAttribute === 'function' && canvas.getAttribute('canvas-id') === normalized) {\n return canvas\n }\n }\n return undefined\n}\n\nfunction createCanvasCommandQueue(canvasId: string) {\n const commands: Array<(ctx: CanvasRenderingContext2D) => void> = []\n\n const pushCommand = (command: (ctx: CanvasRenderingContext2D) => void) => {\n commands.push(command)\n }\n\n const draw: CanvasContext['draw'] = (reserveOrCallback?: boolean | (() => void), callback?: () => void) => {\n const reserve = typeof reserveOrCallback === 'boolean' ? reserveOrCallback : false\n const done = typeof reserveOrCallback === 'function' ? reserveOrCallback : callback\n const canvas = resolveCanvasById(canvasId)\n const context = canvas?.getContext?.('2d') as CanvasRenderingContext2D | null | undefined\n if (!context) {\n commands.length = 0\n done?.()\n return\n }\n if (!reserve) {\n context.clearRect(0, 0, normalizeCanvasNumber(canvas?.width), normalizeCanvasNumber(canvas?.height))\n }\n for (const command of commands) {\n command(context)\n }\n commands.length = 0\n done?.()\n }\n\n const api: CanvasContext = {\n setFillStyle(color: string) {\n pushCommand((ctx) => {\n ctx.fillStyle = color\n })\n },\n setStrokeStyle(color: string) {\n pushCommand((ctx) => {\n ctx.strokeStyle = color\n })\n },\n setLineWidth(width: number) {\n pushCommand((ctx) => {\n ctx.lineWidth = normalizeCanvasNumber(width)\n })\n },\n setFontSize(size: number) {\n pushCommand((ctx) => {\n const normalized = Math.max(1, normalizeCanvasNumber(size))\n ctx.font = `${normalized}px sans-serif`\n })\n },\n fillRect(x: number, y: number, width: number, height: number) {\n pushCommand((ctx) => {\n ctx.fillRect(\n normalizeCanvasNumber(x),\n normalizeCanvasNumber(y),\n normalizeCanvasNumber(width),\n normalizeCanvasNumber(height),\n )\n })\n },\n strokeRect(x: number, y: number, width: number, height: number) {\n pushCommand((ctx) => {\n ctx.strokeRect(\n normalizeCanvasNumber(x),\n normalizeCanvasNumber(y),\n normalizeCanvasNumber(width),\n normalizeCanvasNumber(height),\n )\n })\n },\n clearRect(x: number, y: number, width: number, height: number) {\n pushCommand((ctx) => {\n ctx.clearRect(\n normalizeCanvasNumber(x),\n normalizeCanvasNumber(y),\n normalizeCanvasNumber(width),\n normalizeCanvasNumber(height),\n )\n })\n },\n fillText(text: string, x: number, y: number, maxWidth?: number) {\n pushCommand((ctx) => {\n const normalizedText = String(text ?? '')\n const normalizedX = normalizeCanvasNumber(x)\n const normalizedY = normalizeCanvasNumber(y)\n if (typeof maxWidth === 'number' && Number.isFinite(maxWidth)) {\n ctx.fillText(normalizedText, normalizedX, normalizedY, normalizeCanvasNumber(maxWidth))\n return\n }\n ctx.fillText(normalizedText, normalizedX, normalizedY)\n })\n },\n beginPath() {\n pushCommand(ctx => ctx.beginPath())\n },\n closePath() {\n pushCommand(ctx => ctx.closePath())\n },\n moveTo(x: number, y: number) {\n pushCommand((ctx) => {\n ctx.moveTo(normalizeCanvasNumber(x), normalizeCanvasNumber(y))\n })\n },\n lineTo(x: number, y: number) {\n pushCommand((ctx) => {\n ctx.lineTo(normalizeCanvasNumber(x), normalizeCanvasNumber(y))\n })\n },\n stroke() {\n pushCommand(ctx => ctx.stroke())\n },\n draw,\n }\n return api\n}\n\nexport function createCanvasContextBridge(canvasId: string) {\n return createCanvasCommandQueue(String(canvasId ?? ''))\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"capability.mjs","names":[],"sources":["../../../src/runtime/polyfill/capability.ts"],"sourcesContent":["import { getMiniProgramRuntimeGlobalKeys } from '@weapp-core/shared'\n\nconst MINI_PROGRAM_CAPABILITY_SCHEMA_PREFIX_RE = new RegExp(`^(?:${getMiniProgramRuntimeGlobalKeys().join('|')})\\\\.`)\n\nexport function checkRuntimeCapability(\n miniProgramBridge: Record<string, unknown> | undefined,\n schema: string,\n) {\n const normalized = String(schema ?? '').trim().replace(MINI_PROGRAM_CAPABILITY_SCHEMA_PREFIX_RE, '')\n if (!normalized) {\n return false\n }\n const path = normalized.split(/[.[\\]]/g).filter(Boolean)\n if (!path.length) {\n return false\n }\n let cursor: unknown = miniProgramBridge\n for (const segment of path) {\n if (!cursor || typeof cursor !== 'object') {\n return false\n }\n cursor = (cursor as Record<string, unknown>)[segment]\n }\n return typeof cursor === 'function' || (typeof cursor === 'object' && cursor !== null)\n}\n"],"mappings":";;;AAEA,MAAM,2CAA2C,IAAI,OAAO,OAAO,iCAAiC,CAAC,KAAK,IAAI,CAAC,MAAM;AAErH,SAAgB,uBACd,mBACA,QACA;CACA,MAAM,aAAa,OAAO,UAAU,GAAG,CAAC,MAAM,CAAC,QAAQ,0CAA0C,GAAG;AACpG,KAAI,CAAC,WACH,QAAO;CAET,MAAM,OAAO,WAAW,MAAM,UAAU,CAAC,OAAO,QAAQ;AACxD,KAAI,CAAC,KAAK,OACR,QAAO;CAET,IAAI,SAAkB;AACtB,MAAK,MAAM,WAAW,MAAM;AAC1B,MAAI,CAAC,UAAU,OAAO,WAAW,SAC/B,QAAO;AAET,WAAU,OAAmC;;AAE/C,QAAO,OAAO,WAAW,cAAe,OAAO,WAAW,YAAY,WAAW"}
1
+ {"version":3,"file":"capability.mjs","names":[],"sources":["../../../src/runtime/polyfill/capability.ts"],"sourcesContent":["import { getMiniProgramRuntimeGlobalKeys } from '@weapp-core/shared'\n\nconst MINI_PROGRAM_CAPABILITY_SCHEMA_PREFIX_RE = new RegExp(`^(?:${getMiniProgramRuntimeGlobalKeys().join('|')})\\\\.`)\n\nexport function checkRuntimeCapability(\n miniProgramBridge: Record<string, unknown> | undefined,\n schema: string,\n) {\n const normalized = String(schema ?? '').trim().replace(MINI_PROGRAM_CAPABILITY_SCHEMA_PREFIX_RE, '')\n if (!normalized) {\n return false\n }\n const path = normalized.split(/[.[\\]]/g).filter(Boolean)\n if (!path.length) {\n return false\n }\n let cursor: unknown = miniProgramBridge\n for (const segment of path) {\n if (!cursor || typeof cursor !== 'object') {\n return false\n }\n cursor = (cursor as Record<string, unknown>)[segment]\n }\n return typeof cursor === 'function' || (typeof cursor === 'object' && cursor !== null)\n}\n"],"mappings":";;;AAEA,MAAM,2CAA2C,IAAI,OAAO,OAAO,gCAAgC,EAAE,KAAK,GAAG,EAAE,KAAK;AAEpH,SAAgB,uBACd,mBACA,QACA;CACA,MAAM,aAAa,OAAO,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,0CAA0C,EAAE;CACnG,IAAI,CAAC,YACH,OAAO;CAET,MAAM,OAAO,WAAW,MAAM,SAAS,EAAE,OAAO,OAAO;CACvD,IAAI,CAAC,KAAK,QACR,OAAO;CAET,IAAI,SAAkB;CACtB,KAAK,MAAM,WAAW,MAAM;EAC1B,IAAI,CAAC,UAAU,OAAO,WAAW,UAC/B,OAAO;EAET,SAAU,OAAmC;CAC/C;CACA,OAAO,OAAO,WAAW,cAAe,OAAO,WAAW,YAAY,WAAW;AACnF"}
@@ -1 +1 @@
1
- {"version":3,"file":"cloud.mjs","names":[],"sources":["../../../src/runtime/polyfill/cloud.ts"],"sourcesContent":["interface MiniProgramBaseResult {\n errMsg: string\n}\n\ninterface CloudInitOptions {\n env?: string\n traceUser?: boolean\n}\n\ninterface CloudCallFunctionOptions {\n name?: string\n data?: Record<string, unknown>\n}\n\ninterface CloudBridge {\n init: (options?: CloudInitOptions) => void\n callFunction: (options?: CloudCallFunctionOptions) => Promise<unknown>\n}\n\ntype CallMiniProgramAsyncSuccess = (options: unknown, result: Record<string, unknown> & MiniProgramBaseResult) => unknown\ntype CallMiniProgramAsyncFailure = (options: unknown, errMsg: string) => MiniProgramBaseResult\n\nfunction createCloudRequestId() {\n return `web_cloud_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`\n}\n\nexport function createCloudBridge(\n callMiniProgramAsyncSuccess: CallMiniProgramAsyncSuccess,\n callMiniProgramAsyncFailure: CallMiniProgramAsyncFailure,\n): CloudBridge {\n const cloudRuntimeState = {\n env: '',\n traceUser: false,\n }\n return {\n init(options?: CloudInitOptions) {\n cloudRuntimeState.env = typeof options?.env === 'string' ? options.env : ''\n cloudRuntimeState.traceUser = Boolean(options?.traceUser)\n },\n callFunction(options?: CloudCallFunctionOptions) {\n const name = typeof options?.name === 'string' ? options.name.trim() : ''\n if (!name) {\n const failure = callMiniProgramAsyncFailure(options, 'cloud.callFunction:fail invalid function name')\n return Promise.reject(failure)\n }\n const result = callMiniProgramAsyncSuccess(options, {\n errMsg: 'cloud.callFunction:ok',\n result: {\n name,\n data: { ...(options?.data ?? {}) },\n env: cloudRuntimeState.env,\n traceUser: cloudRuntimeState.traceUser,\n mock: true,\n },\n requestID: createCloudRequestId(),\n })\n return Promise.resolve(result)\n },\n }\n}\n"],"mappings":";AAsBA,SAAS,uBAAuB;AAC9B,QAAO,aAAa,KAAK,KAAK,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,GAAG,GAAG;;AAGxF,SAAgB,kBACd,6BACA,6BACa;CACb,MAAM,oBAAoB;EACxB,KAAK;EACL,WAAW;EACZ;AACD,QAAO;EACL,KAAK,SAA4B;AAC/B,qBAAkB,MAAM,OAAO,SAAS,QAAQ,WAAW,QAAQ,MAAM;AACzE,qBAAkB,YAAY,QAAQ,SAAS,UAAU;;EAE3D,aAAa,SAAoC;GAC/C,MAAM,OAAO,OAAO,SAAS,SAAS,WAAW,QAAQ,KAAK,MAAM,GAAG;AACvE,OAAI,CAAC,MAAM;IACT,MAAM,UAAU,4BAA4B,SAAS,gDAAgD;AACrG,WAAO,QAAQ,OAAO,QAAQ;;GAEhC,MAAM,SAAS,4BAA4B,SAAS;IAClD,QAAQ;IACR,QAAQ;KACN;KACA,MAAM,EAAE,GAAI,SAAS,QAAQ,EAAE,EAAG;KAClC,KAAK,kBAAkB;KACvB,WAAW,kBAAkB;KAC7B,MAAM;KACP;IACD,WAAW,sBAAsB;IAClC,CAAC;AACF,UAAO,QAAQ,QAAQ,OAAO;;EAEjC"}
1
+ {"version":3,"file":"cloud.mjs","names":[],"sources":["../../../src/runtime/polyfill/cloud.ts"],"sourcesContent":["interface MiniProgramBaseResult {\n errMsg: string\n}\n\ninterface CloudInitOptions {\n env?: string\n traceUser?: boolean\n}\n\ninterface CloudCallFunctionOptions {\n name?: string\n data?: Record<string, unknown>\n}\n\ninterface CloudBridge {\n init: (options?: CloudInitOptions) => void\n callFunction: (options?: CloudCallFunctionOptions) => Promise<unknown>\n}\n\ntype CallMiniProgramAsyncSuccess = (options: unknown, result: Record<string, unknown> & MiniProgramBaseResult) => unknown\ntype CallMiniProgramAsyncFailure = (options: unknown, errMsg: string) => MiniProgramBaseResult\n\nfunction createCloudRequestId() {\n return `web_cloud_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`\n}\n\nexport function createCloudBridge(\n callMiniProgramAsyncSuccess: CallMiniProgramAsyncSuccess,\n callMiniProgramAsyncFailure: CallMiniProgramAsyncFailure,\n): CloudBridge {\n const cloudRuntimeState = {\n env: '',\n traceUser: false,\n }\n return {\n init(options?: CloudInitOptions) {\n cloudRuntimeState.env = typeof options?.env === 'string' ? options.env : ''\n cloudRuntimeState.traceUser = Boolean(options?.traceUser)\n },\n callFunction(options?: CloudCallFunctionOptions) {\n const name = typeof options?.name === 'string' ? options.name.trim() : ''\n if (!name) {\n const failure = callMiniProgramAsyncFailure(options, 'cloud.callFunction:fail invalid function name')\n return Promise.reject(failure)\n }\n const result = callMiniProgramAsyncSuccess(options, {\n errMsg: 'cloud.callFunction:ok',\n result: {\n name,\n data: { ...(options?.data ?? {}) },\n env: cloudRuntimeState.env,\n traceUser: cloudRuntimeState.traceUser,\n mock: true,\n },\n requestID: createCloudRequestId(),\n })\n return Promise.resolve(result)\n },\n }\n}\n"],"mappings":";AAsBA,SAAS,uBAAuB;CAC9B,OAAO,aAAa,KAAK,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,EAAE;AACvF;AAEA,SAAgB,kBACd,6BACA,6BACa;CACb,MAAM,oBAAoB;EACxB,KAAK;EACL,WAAW;CACb;CACA,OAAO;EACL,KAAK,SAA4B;GAC/B,kBAAkB,MAAM,OAAO,SAAS,QAAQ,WAAW,QAAQ,MAAM;GACzE,kBAAkB,YAAY,QAAQ,SAAS,SAAS;EAC1D;EACA,aAAa,SAAoC;GAC/C,MAAM,OAAO,OAAO,SAAS,SAAS,WAAW,QAAQ,KAAK,KAAK,IAAI;GACvE,IAAI,CAAC,MAAM;IACT,MAAM,UAAU,4BAA4B,SAAS,+CAA+C;IACpG,OAAO,QAAQ,OAAO,OAAO;GAC/B;GACA,MAAM,SAAS,4BAA4B,SAAS;IAClD,QAAQ;IACR,QAAQ;KACN;KACA,MAAM,EAAE,GAAI,SAAS,QAAQ,CAAC,EAAG;KACjC,KAAK,kBAAkB;KACvB,WAAW,kBAAkB;KAC7B,MAAM;IACR;IACA,WAAW,qBAAqB;GAClC,CAAC;GACD,OAAO,QAAQ,QAAQ,MAAM;EAC/B;CACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"device.mjs","names":[],"sources":["../../../src/runtime/polyfill/device.ts"],"sourcesContent":["type VibrateType = 'heavy' | 'medium' | 'light' | undefined\n\ninterface BatterySnapshot {\n level: number\n isCharging: boolean\n}\n\nfunction resolveVibrateDuration(type: VibrateType) {\n if (type === 'heavy') {\n return 30\n }\n if (type === 'medium') {\n return 20\n }\n return 15\n}\n\nexport function vibrateDevice(type: VibrateType) {\n const runtimeNavigator = (typeof navigator !== 'undefined' ? navigator : undefined) as (Navigator & {\n vibrate?: (pattern: number | number[]) => boolean\n }) | undefined\n if (!runtimeNavigator || typeof runtimeNavigator.vibrate !== 'function') {\n throw new Error('vibrate is unavailable')\n }\n runtimeNavigator.vibrate(resolveVibrateDuration(type))\n}\n\nfunction normalizeBatteryLevel(level: unknown) {\n if (typeof level !== 'number' || Number.isNaN(level)) {\n return 100\n }\n const value = Math.round(level * 100)\n return Math.min(100, Math.max(0, value))\n}\n\nlet cachedBatteryInfo: BatterySnapshot = {\n level: 100,\n isCharging: false,\n}\n\nasync function readRuntimeBatteryInfoInternal() {\n const runtimeNavigator = (typeof navigator !== 'undefined' ? navigator : undefined) as (Navigator & {\n getBattery?: () => Promise<{ charging?: boolean, level?: number }>\n }) | undefined\n if (runtimeNavigator && typeof runtimeNavigator.getBattery === 'function') {\n const battery = await runtimeNavigator.getBattery()\n const nextInfo: BatterySnapshot = {\n level: normalizeBatteryLevel(battery?.level),\n isCharging: Boolean(battery?.charging),\n }\n cachedBatteryInfo = nextInfo\n return nextInfo\n }\n return cachedBatteryInfo\n}\n\nexport function readBatteryInfoSyncSnapshot() {\n void readRuntimeBatteryInfoInternal().catch(() => {})\n return {\n ...cachedBatteryInfo,\n }\n}\n\nexport function readBatteryInfoSnapshot() {\n return readRuntimeBatteryInfoInternal()\n}\n"],"mappings":";AAOA,SAAS,uBAAuB,MAAmB;AACjD,KAAI,SAAS,QACX,QAAO;AAET,KAAI,SAAS,SACX,QAAO;AAET,QAAO;;AAGT,SAAgB,cAAc,MAAmB;CAC/C,MAAM,mBAAoB,OAAO,cAAc,cAAc,YAAY;AAGzE,KAAI,CAAC,oBAAoB,OAAO,iBAAiB,YAAY,WAC3D,OAAM,IAAI,MAAM,yBAAyB;AAE3C,kBAAiB,QAAQ,uBAAuB,KAAK,CAAC;;AAGxD,SAAS,sBAAsB,OAAgB;AAC7C,KAAI,OAAO,UAAU,YAAY,OAAO,MAAM,MAAM,CAClD,QAAO;CAET,MAAM,QAAQ,KAAK,MAAM,QAAQ,IAAI;AACrC,QAAO,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,MAAM,CAAC;;AAG1C,IAAI,oBAAqC;CACvC,OAAO;CACP,YAAY;CACb;AAED,eAAe,iCAAiC;CAC9C,MAAM,mBAAoB,OAAO,cAAc,cAAc,YAAY;AAGzE,KAAI,oBAAoB,OAAO,iBAAiB,eAAe,YAAY;EACzE,MAAM,UAAU,MAAM,iBAAiB,YAAY;EACnD,MAAM,WAA4B;GAChC,OAAO,sBAAsB,SAAS,MAAM;GAC5C,YAAY,QAAQ,SAAS,SAAS;GACvC;AACD,sBAAoB;AACpB,SAAO;;AAET,QAAO;;AAGT,SAAgB,8BAA8B;AAC5C,CAAK,gCAAgC,CAAC,YAAY,GAAG;AACrD,QAAO,EACL,GAAG,mBACJ;;AAGH,SAAgB,0BAA0B;AACxC,QAAO,gCAAgC"}
1
+ {"version":3,"file":"device.mjs","names":[],"sources":["../../../src/runtime/polyfill/device.ts"],"sourcesContent":["type VibrateType = 'heavy' | 'medium' | 'light' | undefined\n\ninterface BatterySnapshot {\n level: number\n isCharging: boolean\n}\n\nfunction resolveVibrateDuration(type: VibrateType) {\n if (type === 'heavy') {\n return 30\n }\n if (type === 'medium') {\n return 20\n }\n return 15\n}\n\nexport function vibrateDevice(type: VibrateType) {\n const runtimeNavigator = (typeof navigator !== 'undefined' ? navigator : undefined) as (Navigator & {\n vibrate?: (pattern: number | number[]) => boolean\n }) | undefined\n if (!runtimeNavigator || typeof runtimeNavigator.vibrate !== 'function') {\n throw new Error('vibrate is unavailable')\n }\n runtimeNavigator.vibrate(resolveVibrateDuration(type))\n}\n\nfunction normalizeBatteryLevel(level: unknown) {\n if (typeof level !== 'number' || Number.isNaN(level)) {\n return 100\n }\n const value = Math.round(level * 100)\n return Math.min(100, Math.max(0, value))\n}\n\nlet cachedBatteryInfo: BatterySnapshot = {\n level: 100,\n isCharging: false,\n}\n\nasync function readRuntimeBatteryInfoInternal() {\n const runtimeNavigator = (typeof navigator !== 'undefined' ? navigator : undefined) as (Navigator & {\n getBattery?: () => Promise<{ charging?: boolean, level?: number }>\n }) | undefined\n if (runtimeNavigator && typeof runtimeNavigator.getBattery === 'function') {\n const battery = await runtimeNavigator.getBattery()\n const nextInfo: BatterySnapshot = {\n level: normalizeBatteryLevel(battery?.level),\n isCharging: Boolean(battery?.charging),\n }\n cachedBatteryInfo = nextInfo\n return nextInfo\n }\n return cachedBatteryInfo\n}\n\nexport function readBatteryInfoSyncSnapshot() {\n void readRuntimeBatteryInfoInternal().catch(() => {})\n return {\n ...cachedBatteryInfo,\n }\n}\n\nexport function readBatteryInfoSnapshot() {\n return readRuntimeBatteryInfoInternal()\n}\n"],"mappings":";AAOA,SAAS,uBAAuB,MAAmB;CACjD,IAAI,SAAS,SACX,OAAO;CAET,IAAI,SAAS,UACX,OAAO;CAET,OAAO;AACT;AAEA,SAAgB,cAAc,MAAmB;CAC/C,MAAM,mBAAoB,OAAO,cAAc,cAAc,YAAY;CAGzE,IAAI,CAAC,oBAAoB,OAAO,iBAAiB,YAAY,YAC3D,MAAM,IAAI,MAAM,wBAAwB;CAE1C,iBAAiB,QAAQ,uBAAuB,IAAI,CAAC;AACvD;AAEA,SAAS,sBAAsB,OAAgB;CAC7C,IAAI,OAAO,UAAU,YAAY,OAAO,MAAM,KAAK,GACjD,OAAO;CAET,MAAM,QAAQ,KAAK,MAAM,QAAQ,GAAG;CACpC,OAAO,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC;AACzC;AAEA,IAAI,oBAAqC;CACvC,OAAO;CACP,YAAY;AACd;AAEA,eAAe,iCAAiC;CAC9C,MAAM,mBAAoB,OAAO,cAAc,cAAc,YAAY;CAGzE,IAAI,oBAAoB,OAAO,iBAAiB,eAAe,YAAY;EACzE,MAAM,UAAU,MAAM,iBAAiB,WAAW;EAClD,MAAM,WAA4B;GAChC,OAAO,sBAAsB,SAAS,KAAK;GAC3C,YAAY,QAAQ,SAAS,QAAQ;EACvC;EACA,oBAAoB;EACpB,OAAO;CACT;CACA,OAAO;AACT;AAEA,SAAgB,8BAA8B;CAC5C,AAAK,+BAA+B,EAAE,YAAY,CAAC,CAAC;CACpD,OAAO,EACL,GAAG,kBACL;AACF;AAEA,SAAgB,0BAA0B;CACxC,OAAO,+BAA+B;AACxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deviceApi.mjs","names":[],"sources":["../../../src/runtime/polyfill/deviceApi.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport {\n readBatteryInfoSnapshot,\n readBatteryInfoSyncSnapshot,\n vibrateDevice,\n} from './device'\n\nexport function vibrateShortBridge(options?: any) {\n try {\n vibrateDevice(options?.type)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'vibrateShort:ok' }))\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `vibrateShort:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n\nexport function getBatteryInfoSyncBridge() {\n return readBatteryInfoSyncSnapshot()\n}\n\nexport async function getBatteryInfoBridge(options?: any) {\n try {\n const batteryInfo = await readBatteryInfoSnapshot()\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'getBatteryInfo:ok',\n ...batteryInfo,\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `getBatteryInfo:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n"],"mappings":";;;;AAUA,SAAgB,mBAAmB,SAAe;AAChD,KAAI;AACF,gBAAc,SAAS,KAAK;AAC5B,SAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,mBAAmB,CAAC,CAAC;UAEtF,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,qBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACc;AACpF,SAAO,QAAQ,OAAO,QAAQ;;;AAIlC,SAAgB,2BAA2B;AACzC,QAAO,6BAA6B;;AAGtC,eAAsB,qBAAqB,SAAe;AACxD,KAAI;AAEF,SAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,GAAG,MAHqB,yBAAyB;GAIlD,CAAC;UAEG,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,uBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACgB;AACtF,SAAO,QAAQ,OAAO,QAAQ"}
1
+ {"version":3,"file":"deviceApi.mjs","names":[],"sources":["../../../src/runtime/polyfill/deviceApi.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport {\n readBatteryInfoSnapshot,\n readBatteryInfoSyncSnapshot,\n vibrateDevice,\n} from './device'\n\nexport function vibrateShortBridge(options?: any) {\n try {\n vibrateDevice(options?.type)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'vibrateShort:ok' }))\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `vibrateShort:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n\nexport function getBatteryInfoSyncBridge() {\n return readBatteryInfoSyncSnapshot()\n}\n\nexport async function getBatteryInfoBridge(options?: any) {\n try {\n const batteryInfo = await readBatteryInfoSnapshot()\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'getBatteryInfo:ok',\n ...batteryInfo,\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `getBatteryInfo:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n"],"mappings":";;;;AAUA,SAAgB,mBAAmB,SAAe;CAChD,IAAI;EACF,cAAc,SAAS,IAAI;EAC3B,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,kBAAkB,CAAC,CAAC;CAC5F,SACO,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,qBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GACc;EACnF,OAAO,QAAQ,OAAO,OAAO;CAC/B;AACF;AAEA,SAAgB,2BAA2B;CACzC,OAAO,4BAA4B;AACrC;AAEA,eAAsB,qBAAqB,SAAe;CACxD,IAAI;EAEF,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,GAAG,MAHqB,wBAAwB;EAIlD,CAAC;CACH,SACO,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,uBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GACgB;EACrF,OAAO,QAAQ,OAAO,OAAO;CAC/B;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"deviceAuthSystemApi.mjs","names":[],"sources":["../../../src/runtime/polyfill/deviceAuthSystemApi.ts"],"sourcesContent":["import type {\n AccountInfoSync,\n AppAuthorizeSetting,\n AppAuthorizeStatus,\n AppBaseInfo,\n AuthorizeOptions,\n BatteryInfo,\n CheckSessionOptions,\n DeviceInfo,\n GetBatteryInfoSuccessResult,\n GetFuzzyLocationOptions,\n GetLocationOptions,\n GetNetworkTypeOptions,\n GetSettingOptions,\n GetSystemInfoOptions,\n GetUserInfoOptions,\n GetUserProfileOptions,\n LoginOptions,\n MenuButtonBoundingClientRect,\n MiniProgramAsyncOptions,\n NetworkStatusChangeCallback,\n OpenAppAuthorizeSettingOptions,\n OpenSettingOptions,\n SystemInfo,\n SystemSetting,\n VibrateShortOptions,\n WindowInfo,\n WindowResizeCallback,\n} from './types'\nimport {\n authorizeBridge,\n checkSessionBridge,\n getAppAuthorizeSettingBridge,\n getSettingBridge,\n getSystemSettingBridge,\n getUserInfoBridge,\n getUserProfileBridge,\n loginBridge,\n openAppAuthorizeSettingBridge,\n openSettingBridge,\n} from './authApi'\nimport {\n getBatteryInfoBridge,\n getBatteryInfoSyncBridge,\n vibrateShortBridge,\n} from './deviceApi'\nimport {\n getFuzzyLocationBridge,\n getLocationBridge,\n} from './locationApi'\nimport { getNetworkTypeBridge } from './menuApi'\nimport {\n offNetworkStatusChangeBridge,\n offWindowResizeBridge,\n onNetworkStatusChangeBridge,\n onWindowResizeBridge,\n} from './runtimeCapabilityApi'\nimport { resolveDeviceOrientation } from './system'\nimport {\n getAccountInfoSyncBridge,\n getAppBaseInfoBridge,\n getDeviceInfoBridge,\n getMenuButtonBoundingClientRectBridge,\n getSystemInfoBridge,\n getSystemInfoSyncBridge,\n getWindowInfoBridge,\n} from './systemApi'\n\nconst WEB_SUPPORTED_AUTH_SCOPES = new Set([\n 'scope.userInfo',\n 'scope.userLocation',\n 'scope.userLocationBackground',\n 'scope.address',\n 'scope.invoiceTitle',\n 'scope.invoice',\n 'scope.werun',\n 'scope.record',\n 'scope.writePhotosAlbum',\n 'scope.camera',\n])\nconst APP_AUTHORIZE_SCOPE_MAP: Partial<Record<keyof AppAuthorizeSetting, string>> = {\n albumAuthorized: 'scope.writePhotosAlbum',\n cameraAuthorized: 'scope.camera',\n locationAuthorized: 'scope.userLocation',\n microphoneAuthorized: 'scope.record',\n}\nconst webAuthorizeState = new Map<string, AppAuthorizeStatus>()\nfor (const scope of WEB_SUPPORTED_AUTH_SCOPES) {\n webAuthorizeState.set(scope, 'not determined')\n}\n\nexport function vibrateShort(options?: VibrateShortOptions) {\n return vibrateShortBridge(options)\n}\n\nexport function getBatteryInfoSync(): BatteryInfo {\n return getBatteryInfoSyncBridge()\n}\n\nexport async function getBatteryInfo(options?: MiniProgramAsyncOptions<GetBatteryInfoSuccessResult>) {\n return getBatteryInfoBridge(options)\n}\n\nexport function getLocation(options?: GetLocationOptions) {\n return getLocationBridge(options)\n}\n\nexport async function getFuzzyLocation(options?: GetFuzzyLocationOptions) {\n return getFuzzyLocationBridge(options)\n}\n\nexport function getSetting(options?: GetSettingOptions) {\n return getSettingBridge(options, webAuthorizeState)\n}\n\nexport function authorize(options?: AuthorizeOptions) {\n return authorizeBridge(options, webAuthorizeState, WEB_SUPPORTED_AUTH_SCOPES)\n}\n\nexport function openSetting(options?: OpenSettingOptions) {\n return openSettingBridge(options, webAuthorizeState, WEB_SUPPORTED_AUTH_SCOPES)\n}\n\nexport function getAppAuthorizeSetting(): AppAuthorizeSetting {\n return getAppAuthorizeSettingBridge(webAuthorizeState) as AppAuthorizeSetting\n}\n\nexport function openAppAuthorizeSetting(options?: OpenAppAuthorizeSettingOptions) {\n return openAppAuthorizeSettingBridge(\n options,\n webAuthorizeState,\n APP_AUTHORIZE_SCOPE_MAP as Record<string, string>,\n getAppAuthorizeSetting,\n )\n}\n\nexport function getNetworkType(options?: GetNetworkTypeOptions) {\n return getNetworkTypeBridge(options)\n}\n\nexport function onNetworkStatusChange(callback: NetworkStatusChangeCallback) {\n return onNetworkStatusChangeBridge(callback)\n}\n\nexport function offNetworkStatusChange(callback?: NetworkStatusChangeCallback) {\n return offNetworkStatusChangeBridge(callback)\n}\n\nexport function getWindowInfo(): WindowInfo {\n return getWindowInfoBridge()\n}\n\nexport function onWindowResize(callback: WindowResizeCallback) {\n return onWindowResizeBridge(callback, getWindowInfo)\n}\n\nexport function offWindowResize(callback?: WindowResizeCallback) {\n return offWindowResizeBridge(callback)\n}\n\nexport function getSystemInfoSync(): SystemInfo {\n return getSystemInfoSyncBridge()\n}\n\nexport function getSystemInfo(options?: GetSystemInfoOptions) {\n return getSystemInfoBridge(options)\n}\n\nexport function getDeviceInfo(): DeviceInfo {\n return getDeviceInfoBridge() as DeviceInfo\n}\n\nexport function getSystemSetting(): SystemSetting {\n return getSystemSettingBridge(webAuthorizeState, resolveDeviceOrientation)\n}\n\nexport function login(options?: LoginOptions) {\n return loginBridge(options)\n}\n\nexport function checkSession(options?: CheckSessionOptions) {\n return checkSessionBridge(options)\n}\n\nexport function getUserInfo(options?: GetUserInfoOptions) {\n return getUserInfoBridge(options, webAuthorizeState)\n}\n\nexport function getUserProfile(options?: GetUserProfileOptions) {\n return getUserProfileBridge(options, webAuthorizeState)\n}\n\nexport function getAccountInfoSync(): AccountInfoSync {\n return getAccountInfoSyncBridge() as AccountInfoSync\n}\n\nexport function getAppBaseInfo(): AppBaseInfo {\n return getAppBaseInfoBridge() as AppBaseInfo\n}\n\nexport function getMenuButtonBoundingClientRect(): MenuButtonBoundingClientRect {\n return getMenuButtonBoundingClientRectBridge() as MenuButtonBoundingClientRect\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoEA,MAAM,4BAA4B,IAAI,IAAI;CACxC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AACF,MAAM,0BAA8E;CAClF,iBAAiB;CACjB,kBAAkB;CAClB,oBAAoB;CACpB,sBAAsB;CACvB;AACD,MAAM,oCAAoB,IAAI,KAAiC;AAC/D,KAAK,MAAM,SAAS,0BAClB,mBAAkB,IAAI,OAAO,iBAAiB;AAGhD,SAAgB,aAAa,SAA+B;AAC1D,QAAO,mBAAmB,QAAQ;;AAGpC,SAAgB,qBAAkC;AAChD,QAAO,0BAA0B;;AAGnC,eAAsB,eAAe,SAAgE;AACnG,QAAO,qBAAqB,QAAQ;;AAGtC,SAAgB,YAAY,SAA8B;AACxD,QAAO,kBAAkB,QAAQ;;AAGnC,eAAsB,iBAAiB,SAAmC;AACxE,QAAO,uBAAuB,QAAQ;;AAGxC,SAAgB,WAAW,SAA6B;AACtD,QAAO,iBAAiB,SAAS,kBAAkB;;AAGrD,SAAgB,UAAU,SAA4B;AACpD,QAAO,gBAAgB,SAAS,mBAAmB,0BAA0B;;AAG/E,SAAgB,YAAY,SAA8B;AACxD,QAAO,kBAAkB,SAAS,mBAAmB,0BAA0B;;AAGjF,SAAgB,yBAA8C;AAC5D,QAAO,6BAA6B,kBAAkB;;AAGxD,SAAgB,wBAAwB,SAA0C;AAChF,QAAO,8BACL,SACA,mBACA,yBACA,uBACD;;AAGH,SAAgB,eAAe,SAAiC;AAC9D,QAAO,qBAAqB,QAAQ;;AAGtC,SAAgB,sBAAsB,UAAuC;AAC3E,QAAO,4BAA4B,SAAS;;AAG9C,SAAgB,uBAAuB,UAAwC;AAC7E,QAAO,6BAA6B,SAAS;;AAG/C,SAAgB,gBAA4B;AAC1C,QAAO,qBAAqB;;AAG9B,SAAgB,eAAe,UAAgC;AAC7D,QAAO,qBAAqB,UAAU,cAAc;;AAGtD,SAAgB,gBAAgB,UAAiC;AAC/D,QAAO,sBAAsB,SAAS;;AAGxC,SAAgB,oBAAgC;AAC9C,QAAO,yBAAyB;;AAGlC,SAAgB,cAAc,SAAgC;AAC5D,QAAO,oBAAoB,QAAQ;;AAGrC,SAAgB,gBAA4B;AAC1C,QAAO,qBAAqB;;AAG9B,SAAgB,mBAAkC;AAChD,QAAO,uBAAuB,mBAAmB,yBAAyB;;AAG5E,SAAgB,MAAM,SAAwB;AAC5C,QAAO,YAAY,QAAQ;;AAG7B,SAAgB,aAAa,SAA+B;AAC1D,QAAO,mBAAmB,QAAQ;;AAGpC,SAAgB,YAAY,SAA8B;AACxD,QAAO,kBAAkB,SAAS,kBAAkB;;AAGtD,SAAgB,eAAe,SAAiC;AAC9D,QAAO,qBAAqB,SAAS,kBAAkB;;AAGzD,SAAgB,qBAAsC;AACpD,QAAO,0BAA0B;;AAGnC,SAAgB,iBAA8B;AAC5C,QAAO,sBAAsB;;AAG/B,SAAgB,kCAAgE;AAC9E,QAAO,uCAAuC"}
1
+ {"version":3,"file":"deviceAuthSystemApi.mjs","names":[],"sources":["../../../src/runtime/polyfill/deviceAuthSystemApi.ts"],"sourcesContent":["import type {\n AccountInfoSync,\n AppAuthorizeSetting,\n AppAuthorizeStatus,\n AppBaseInfo,\n AuthorizeOptions,\n BatteryInfo,\n CheckSessionOptions,\n DeviceInfo,\n GetBatteryInfoSuccessResult,\n GetFuzzyLocationOptions,\n GetLocationOptions,\n GetNetworkTypeOptions,\n GetSettingOptions,\n GetSystemInfoOptions,\n GetUserInfoOptions,\n GetUserProfileOptions,\n LoginOptions,\n MenuButtonBoundingClientRect,\n MiniProgramAsyncOptions,\n NetworkStatusChangeCallback,\n OpenAppAuthorizeSettingOptions,\n OpenSettingOptions,\n SystemInfo,\n SystemSetting,\n VibrateShortOptions,\n WindowInfo,\n WindowResizeCallback,\n} from './types'\nimport {\n authorizeBridge,\n checkSessionBridge,\n getAppAuthorizeSettingBridge,\n getSettingBridge,\n getSystemSettingBridge,\n getUserInfoBridge,\n getUserProfileBridge,\n loginBridge,\n openAppAuthorizeSettingBridge,\n openSettingBridge,\n} from './authApi'\nimport {\n getBatteryInfoBridge,\n getBatteryInfoSyncBridge,\n vibrateShortBridge,\n} from './deviceApi'\nimport {\n getFuzzyLocationBridge,\n getLocationBridge,\n} from './locationApi'\nimport { getNetworkTypeBridge } from './menuApi'\nimport {\n offNetworkStatusChangeBridge,\n offWindowResizeBridge,\n onNetworkStatusChangeBridge,\n onWindowResizeBridge,\n} from './runtimeCapabilityApi'\nimport { resolveDeviceOrientation } from './system'\nimport {\n getAccountInfoSyncBridge,\n getAppBaseInfoBridge,\n getDeviceInfoBridge,\n getMenuButtonBoundingClientRectBridge,\n getSystemInfoBridge,\n getSystemInfoSyncBridge,\n getWindowInfoBridge,\n} from './systemApi'\n\nconst WEB_SUPPORTED_AUTH_SCOPES = new Set([\n 'scope.userInfo',\n 'scope.userLocation',\n 'scope.userLocationBackground',\n 'scope.address',\n 'scope.invoiceTitle',\n 'scope.invoice',\n 'scope.werun',\n 'scope.record',\n 'scope.writePhotosAlbum',\n 'scope.camera',\n])\nconst APP_AUTHORIZE_SCOPE_MAP: Partial<Record<keyof AppAuthorizeSetting, string>> = {\n albumAuthorized: 'scope.writePhotosAlbum',\n cameraAuthorized: 'scope.camera',\n locationAuthorized: 'scope.userLocation',\n microphoneAuthorized: 'scope.record',\n}\nconst webAuthorizeState = new Map<string, AppAuthorizeStatus>()\nfor (const scope of WEB_SUPPORTED_AUTH_SCOPES) {\n webAuthorizeState.set(scope, 'not determined')\n}\n\nexport function vibrateShort(options?: VibrateShortOptions) {\n return vibrateShortBridge(options)\n}\n\nexport function getBatteryInfoSync(): BatteryInfo {\n return getBatteryInfoSyncBridge()\n}\n\nexport async function getBatteryInfo(options?: MiniProgramAsyncOptions<GetBatteryInfoSuccessResult>) {\n return getBatteryInfoBridge(options)\n}\n\nexport function getLocation(options?: GetLocationOptions) {\n return getLocationBridge(options)\n}\n\nexport async function getFuzzyLocation(options?: GetFuzzyLocationOptions) {\n return getFuzzyLocationBridge(options)\n}\n\nexport function getSetting(options?: GetSettingOptions) {\n return getSettingBridge(options, webAuthorizeState)\n}\n\nexport function authorize(options?: AuthorizeOptions) {\n return authorizeBridge(options, webAuthorizeState, WEB_SUPPORTED_AUTH_SCOPES)\n}\n\nexport function openSetting(options?: OpenSettingOptions) {\n return openSettingBridge(options, webAuthorizeState, WEB_SUPPORTED_AUTH_SCOPES)\n}\n\nexport function getAppAuthorizeSetting(): AppAuthorizeSetting {\n return getAppAuthorizeSettingBridge(webAuthorizeState) as AppAuthorizeSetting\n}\n\nexport function openAppAuthorizeSetting(options?: OpenAppAuthorizeSettingOptions) {\n return openAppAuthorizeSettingBridge(\n options,\n webAuthorizeState,\n APP_AUTHORIZE_SCOPE_MAP as Record<string, string>,\n getAppAuthorizeSetting,\n )\n}\n\nexport function getNetworkType(options?: GetNetworkTypeOptions) {\n return getNetworkTypeBridge(options)\n}\n\nexport function onNetworkStatusChange(callback: NetworkStatusChangeCallback) {\n return onNetworkStatusChangeBridge(callback)\n}\n\nexport function offNetworkStatusChange(callback?: NetworkStatusChangeCallback) {\n return offNetworkStatusChangeBridge(callback)\n}\n\nexport function getWindowInfo(): WindowInfo {\n return getWindowInfoBridge()\n}\n\nexport function onWindowResize(callback: WindowResizeCallback) {\n return onWindowResizeBridge(callback, getWindowInfo)\n}\n\nexport function offWindowResize(callback?: WindowResizeCallback) {\n return offWindowResizeBridge(callback)\n}\n\nexport function getSystemInfoSync(): SystemInfo {\n return getSystemInfoSyncBridge()\n}\n\nexport function getSystemInfo(options?: GetSystemInfoOptions) {\n return getSystemInfoBridge(options)\n}\n\nexport function getDeviceInfo(): DeviceInfo {\n return getDeviceInfoBridge() as DeviceInfo\n}\n\nexport function getSystemSetting(): SystemSetting {\n return getSystemSettingBridge(webAuthorizeState, resolveDeviceOrientation)\n}\n\nexport function login(options?: LoginOptions) {\n return loginBridge(options)\n}\n\nexport function checkSession(options?: CheckSessionOptions) {\n return checkSessionBridge(options)\n}\n\nexport function getUserInfo(options?: GetUserInfoOptions) {\n return getUserInfoBridge(options, webAuthorizeState)\n}\n\nexport function getUserProfile(options?: GetUserProfileOptions) {\n return getUserProfileBridge(options, webAuthorizeState)\n}\n\nexport function getAccountInfoSync(): AccountInfoSync {\n return getAccountInfoSyncBridge() as AccountInfoSync\n}\n\nexport function getAppBaseInfo(): AppBaseInfo {\n return getAppBaseInfoBridge() as AppBaseInfo\n}\n\nexport function getMenuButtonBoundingClientRect(): MenuButtonBoundingClientRect {\n return getMenuButtonBoundingClientRectBridge() as MenuButtonBoundingClientRect\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoEA,MAAM,4BAA4B,IAAI,IAAI;CACxC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AACD,MAAM,0BAA8E;CAClF,iBAAiB;CACjB,kBAAkB;CAClB,oBAAoB;CACpB,sBAAsB;AACxB;AACA,MAAM,oCAAoB,IAAI,IAAgC;AAC9D,KAAK,MAAM,SAAS,2BAClB,kBAAkB,IAAI,OAAO,gBAAgB;AAG/C,SAAgB,aAAa,SAA+B;CAC1D,OAAO,mBAAmB,OAAO;AACnC;AAEA,SAAgB,qBAAkC;CAChD,OAAO,yBAAyB;AAClC;AAEA,eAAsB,eAAe,SAAgE;CACnG,OAAO,qBAAqB,OAAO;AACrC;AAEA,SAAgB,YAAY,SAA8B;CACxD,OAAO,kBAAkB,OAAO;AAClC;AAEA,eAAsB,iBAAiB,SAAmC;CACxE,OAAO,uBAAuB,OAAO;AACvC;AAEA,SAAgB,WAAW,SAA6B;CACtD,OAAO,iBAAiB,SAAS,iBAAiB;AACpD;AAEA,SAAgB,UAAU,SAA4B;CACpD,OAAO,gBAAgB,SAAS,mBAAmB,yBAAyB;AAC9E;AAEA,SAAgB,YAAY,SAA8B;CACxD,OAAO,kBAAkB,SAAS,mBAAmB,yBAAyB;AAChF;AAEA,SAAgB,yBAA8C;CAC5D,OAAO,6BAA6B,iBAAiB;AACvD;AAEA,SAAgB,wBAAwB,SAA0C;CAChF,OAAO,8BACL,SACA,mBACA,yBACA,sBACF;AACF;AAEA,SAAgB,eAAe,SAAiC;CAC9D,OAAO,qBAAqB,OAAO;AACrC;AAEA,SAAgB,sBAAsB,UAAuC;CAC3E,OAAO,4BAA4B,QAAQ;AAC7C;AAEA,SAAgB,uBAAuB,UAAwC;CAC7E,OAAO,6BAA6B,QAAQ;AAC9C;AAEA,SAAgB,gBAA4B;CAC1C,OAAO,oBAAoB;AAC7B;AAEA,SAAgB,eAAe,UAAgC;CAC7D,OAAO,qBAAqB,UAAU,aAAa;AACrD;AAEA,SAAgB,gBAAgB,UAAiC;CAC/D,OAAO,sBAAsB,QAAQ;AACvC;AAEA,SAAgB,oBAAgC;CAC9C,OAAO,wBAAwB;AACjC;AAEA,SAAgB,cAAc,SAAgC;CAC5D,OAAO,oBAAoB,OAAO;AACpC;AAEA,SAAgB,gBAA4B;CAC1C,OAAO,oBAAoB;AAC7B;AAEA,SAAgB,mBAAkC;CAChD,OAAO,uBAAuB,mBAAmB,wBAAwB;AAC3E;AAEA,SAAgB,MAAM,SAAwB;CAC5C,OAAO,YAAY,OAAO;AAC5B;AAEA,SAAgB,aAAa,SAA+B;CAC1D,OAAO,mBAAmB,OAAO;AACnC;AAEA,SAAgB,YAAY,SAA8B;CACxD,OAAO,kBAAkB,SAAS,iBAAiB;AACrD;AAEA,SAAgB,eAAe,SAAiC;CAC9D,OAAO,qBAAqB,SAAS,iBAAiB;AACxD;AAEA,SAAgB,qBAAsC;CACpD,OAAO,yBAAyB;AAClC;AAEA,SAAgB,iBAA8B;CAC5C,OAAO,qBAAqB;AAC9B;AAEA,SAAgB,kCAAgE;CAC9E,OAAO,sCAAsC;AAC/C"}