diff --git a/.gitignore b/.gitignore index 94b98d5..490d8ac 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ node_modules cache-file -dist \ No newline at end of file +dist +cache \ No newline at end of file diff --git a/.vitepress/config.ts b/.vitepress/config.ts new file mode 100644 index 0000000..942c94c --- /dev/null +++ b/.vitepress/config.ts @@ -0,0 +1,45 @@ +import { defineConfig } from 'vitepress' + +const isDev = process.env.NODE_ENV === 'development' +const base = isDev ? '/' : '/root/frontend-starter-skill/' +// https://vitepress.dev/reference/site-config +export default defineConfig({ + srcDir: "docs", + base: base, + title: "frontend-starter-skill", + description: "展示网页或者互动性网页的初始化模块", + themeConfig: { + // https://vitepress.dev/reference/default-theme-config + nav: [ + { text: '首页', link: '/' }, + { text: '展示型模板', link: '/website-features-breakdown' }, + { text: '互动型模板', link: '/enterprise-website-features' } + ], + + sidebar: [ + { + text: '展示型模板 (Astro)', + items: [ + { text: '功能拆分', link: '/website-features-breakdown' } + ] + }, + { + text: '互动型模板 (Next.js)', + items: [ + { text: '功能拆分', link: '/enterprise-website-features' } + ] + }, + { + text: '其他', + items: [ + { text: '支付相关链接', link: '/pay/link' }, + { text: '支付总结', link: '/pay/pay-summary' } + ] + } + ], + + socialLinks: [ + { icon: 'github', link: 'https://cnb.cool/skillpod/frontend-starter-skill' } + ] + } +}) diff --git a/README.md b/README.md index fac33b0..0cd0cba 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,13 @@ 展示网站模板集合 - 快速构建专业的静态展示网站或高交互动态网站。 +## opencode 使用插件skill + +```json +{ + "plugin" +} +``` --- ## 模板类型对比 diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..feac739 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,25 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: "Showcase CMS" + text: "展示网站模板集合" + tagline: 快速构建专业的静态展示网站或高交互动态网站 + actions: + - theme: brand + text: 展示型模板 (Astro) + link: /website-features-breakdown + - theme: alt + text: 互动型模板 (Next.js) + link: /enterprise-website-features + +features: + - title: 展示型模板 (Astro) + details: 以信息展示为主,极致轻量、快速加载,适用于企业官网、作品集、博客、文档站点 + - title: 互动型模板 (Next.js) + details: 以用户交互为主,支持登录注册、在线交易、后台管理,适用于电商、门户、社区系统 + - title: 共享组件库 + details: 两套模板共享同一套组件库,保证视觉一致性和开发效率(shadcn/ui) +--- + diff --git a/docs/pay/link.md b/docs/pay/link.md new file mode 100644 index 0000000..bc5099e --- /dev/null +++ b/docs/pay/link.md @@ -0,0 +1 @@ +开源jeepay支付 https://github.com/jeequan/jeepay \ No newline at end of file diff --git a/docs/pay/pay-summary.md b/docs/pay/pay-summary.md new file mode 100644 index 0000000..5531866 --- /dev/null +++ b/docs/pay/pay-summary.md @@ -0,0 +1,652 @@ +# 国内国外支付方式大合集 + +[Github](https://github.com/chengxuyuanchuhai/chuhai-tools-all-in-one) + +本指南由[程序员出海社群](https://chengxuyuanchuhai.com/)创建,版权所有。 + + + +## 国内市场,除了微信支付、支付宝,还有哪些可选支付方式 + +考虑到中国用户的支付习惯和便利性,同时避开微信支付和支付宝的限制,我们可以考虑以下几种替代方案: + +1. 银联在线支付: + - 优点:覆盖面广,支持大多数中国发行的银行卡。 + - 缺点:可能需要一些时间和effort来完成商户入驻。 + +2. PayPal: + - 优点:国际认可度高,支持跨境支付。 + - 缺点:在中国的使用率相对较低,用户可能需要额外步骤开通。 + +3. 数字人民币(e-CNY): + - 优点:是中国官方推出的数字货币,未来发展潜力大。 + - 缺点:目前还在试点阶段,覆盖面可能不够广。 + +4. 虚拟卡支付(如 Visa/Mastercard 虚拟卡): + - 优点:国际通用,支持跨境交易。 + - 缺点:在中国的普及率不如银联卡高。 + +5. 第三方支付聚合平台: + - 例如:Stripe、Adyen 等 + - 优点:可以集成多种支付方式,一次对接多种渠道。 + - 缺点:可能需要额外的费用,某些平台在中国的支持可能有限。 + +6. 国内第三方支付平台: + - 例如:易宝支付、汇付天下等 + - 优点:专注于中国市场,合规性较好。 + - 缺点:国际化程度可能不如大型跨国支付平台。 + + +考虑到中国市场的特点,可优先考虑以下方案: + +1. 银联在线支付:这是最直接和广泛接受的替代方案。几乎所有的中国用户都有银联卡,使用门槛低。 + +2. 考虑使用支持多种支付方式的第三方支付聚合平台,如 Stripe 或 Adyen。这样可以给用户提供多种选择,包括银联、信用卡等。 + +3. 如果您希望专注于中国市场,可以考虑国内的第三方支付平台,如易宝支付或汇付天下。这些平台通常更了解中国市场的需求和监管环境。 + + + + +## Stripe、Adyen 申请需要什么资质或条件? + +Stripe 和 Adyen 都是国际知名的支付处理平台,它们对商户的要求略有不同。以下是它们各自的主要申请条件和资质要求: + +Stripe: + +1. 公司注册: + - 需要一个合法注册的公司实体。 + - 在某些国家,也接受个人账户。 + +2. 银行账户: + - 需要一个与公司名称相匹配的银行账户。 + +3. 身份验证: + - 公司法人代表或主要负责人的身份证明。 + - 可能需要提供地址证明。 + +4. 业务描述: + - 详细说明您的业务模式和销售的产品或服务。 + +5. 网站要求: + - 需要一个功能完善的网站,包含清晰的产品/服务描述、价格、联系方式和条款与条件页面。 + +6. 合规性: + - 需要遵守Stripe的使用条款和适用的法律法规。 + +7. 行业限制: + - 某些高风险行业可能不被接受或需要额外审核。 + +Adyen: + +1. 公司注册: + - 必须是合法注册的公司实体。 + +2. 财务要求: + - 通常需要一定的年营业额(具体金额因地区而异)。 + - 可能需要提供财务报表。 + +3. 身份验证: + - 公司董事和主要股东的身份证明。 + - 公司注册文件。 + +4. 业务计划: + - 详细的业务计划,包括预期交易量和平均交易金额。 + +5. 网站要求: + - 功能完善的网站,包含完整的商业信息。 + - 清晰的退款和隐私政策。 + +6. 合规性: + - 需要符合PCI DSS(支付卡行业数据安全标准)。 + - 遵守反洗钱(AML)和了解你的客户(KYC)规定。 + +7. 技术集成能力: + - 能够集成Adyen的API和支付系统。 + +8. 行业评估: + - 某些行业可能需要额外的审核或可能不被接受。 + + +总的来说,Adyen 的要求通常比 Stripe 更严格,特别是在财务实力和业务规模方面。Stripe 相对更适合中小型企业和初创公司。 + +如果公司规模不大或者是新创企业,Stripe 可能是更容易入门的选择。但如果您的业务已经有一定规模,并且能够满足更严格的财务要求,Adyen 可能提供更全面的服务。 + + + +## 还有其它聚合支付平台吗? + + +除了 Stripe 和 Adyen,还有许多其他的聚合支付平台可以考虑。 + + +1. PayPal: + - 优点:全球知名度高,支持多种货币,包括人民币。 + - 缺点:在中国的使用可能受限,费用相对较高。 + +2. 2Checkout (现在是 Verifone): + - 优点:支持全球200多个国家的支付,包括中国。 + - 缺点:费用可能较高,对某些高风险行业有限制。 + +3. Worldpay: + - 优点:支持多种支付方式,包括银联卡。 + - 缺点:可能更适合大型企业,小企业可能难以满足要求。 + +4. BlueSnap: + - 优点:支持全球100多种支付方式,包括一些中国本地支付方式。 + - 缺点:可能不如其他平台在中国市场知名。 + +5. Ping++(现已更名为 Chargebee): + - 优点:专注于亚太地区市场,支持多种中国本地支付方式。 + - 缺点:国际支付选项可能相对有限。 + +6. Airwallex(空中云汇): + - 优点:总部在澳大利亚,但在中国有很强的业务,支持跨境支付和多种货币。 + - 缺点:主要面向企业客户,可能不太适合小型商户。 + +7. PingPong: + - 优点:专注于跨境电商支付,支持多种货币结算到中国银行账户。 + - 缺点:主要面向跨境电商卖家,可能不适合所有类型的业务。 + +8. Payoneer: + - 优点:支持全球支付和收款,在中国市场有一定知名度。 + - 缺点:主要用于跨境支付,国内支付功能可能有限。 + +9. LianLian Pay(连连支付): + - 优点:中国本土支付公司,专注于跨境支付,了解中国市场。 + - 缺点:国际支付选项可能不如一些全球性平台丰富。 + +10. Braintree (PayPal 旗下): + - 优点:提供全面的支付解决方案,包括移动支付。 + - 缺点:在中国的使用可能受限,与 PayPal 类似。 + + +选择支付平台时,需要考虑以下因素: +1. 地理覆盖:确保平台支持您的目标市场。 +2. 支付方式:检查是否支持您需要的支付方式(如银联、信用卡等)。 +3. 费用结构:比较不同平台的交易费用、月费等。 +4. 技术集成:评估集成难度和可用的开发资源。 +5. 安全性和合规性:确保平台符合 PCI DSS 等安全标准。 +6. 客户支持:考虑时区和语言支持。 +7. 结算周期和货币:检查资金结算到您账户的速度和支持的货币。 +8. 额外功能:如反欺诈工具、订阅billing等。 + + +如果考虑中国市场,可以重点考虑 Ping++(Chargebee)、LianLian Pay 或 Airwallex 这类更了解中国市场的平台。这些平台通常能更好地处理中国的支付环境和法规要求。 + + + + + +## Paddle 怎么样 + +Paddle 确实是一个很好的选择,尤其是对于数字产品和软件服务。让我们详细分析一下 Paddle 的优缺点,以及它是否适合您的需求: + +Paddle 的优点: + +1. 全方位解决方案:Paddle 不仅提供支付处理,还包括税务管理、发票生成、订阅管理等功能。 + +2. 全球支付:支持多种货币和支付方式,包括信用卡、PayPal 等。 + +3. 税务合规:自动处理全球销售税和增值税,这对跨境销售非常有利。 + +4. 简化的商户模式:Paddle 作为商户记录(Merchant of Record),可以简化很多法律和税务复杂性。 + +5. 适合数字产品:特别适合销售软件、在线课程等数字产品。 + +6. 反欺诈保护:提供内置的反欺诈工具。 + +7. 订阅管理:强大的订阅billing和管理功能。 + +8. 开发者友好:提供良好的API和文档。 + +对于中国市场的考虑: + +1. 支付方式:Paddle 支持信用卡支付,这对于拥有国际信用卡的中国用户来说是可行的。 + +2. 银联支持:截至我最后更新的信息,Paddle 并不直接支持银联卡支付,这可能会限制一部分中国用户的使用。 + +3. 本地支付方式:Paddle 不支持微信支付或支付宝,这可能会影响部分用户的支付体验。 + +4. 跨境支付:Paddle 擅长处理跨境交易,这对于面向国际市场的中国企业很有优势。 + +5. 语言支持:Paddle 的界面主要是英文,这可能对一些中国用户造成使用障碍。 + + +总的来说,Paddle 是一个强大的平台,特别适合销售数字产品和服务。但对于主要面向中国市场的业务来说,可能需要权衡其便利性和可能失去的一部分无法使用国际支付方式的用户。如果您的目标用户群主要是能够使用国际信用卡的群体,那么 Paddle 会是一个很好的选择。 + + + +## 请帮我比较下 Paddle 和 Paypal + +当然,我很乐意为您比较 Paddle 和 PayPal 这两个支付平台。这两个平台都很受欢迎,但它们在功能和适用场景上有一些显著的差异。让我们从几个关键方面进行比较: + +1. 主要功能和目标市场: + +Paddle: +- 主要面向数字产品和软件服务销售 +- 提供全面的电子商务解决方案,包括支付处理、税务管理、发票生成等 +- 特别适合SaaS公司、应用开发者和数字内容创作者 + +PayPal: +- 通用型支付平台,适用于各种类型的在线和线下交易 +- 主要提供支付处理服务 +- 适合各种规模的企业和个人用户 + +2. 支付方式: + +Paddle: +- 支持信用卡、借记卡和PayPal +- 不直接支持中国本地支付方式(如银联、支付宝、微信支付) + +PayPal: +- 支持信用卡、借记卡、银行转账 +- 在某些市场支持本地支付方式 +- 在中国的使用可能受限 + +3. 全球化和本地化: + +Paddle: +- 强大的全球税务管理功能 +- 支持多种货币 +- 自动处理国际销售税和增值税 + +PayPal: +- 在全球范围内广泛使用和认可 +- 支持更多国家和地区 +- 提供多语言支持 + +4. 费用结构: + +Paddle: +- 通常采用统一费率(例如5%+固定费用) +- 费用包含了支付处理、税务管理等所有服务 + +PayPal: +- 费率根据交易类型、销售额和国家/地区而变化 +- 基本费率通常为每笔交易的2.9%+固定费用 +- 跨境支付可能有额外费用 + +5. 附加功能: + +Paddle: +- 提供订阅管理、软件许可管理 +- 作为商户记录(Merchant of Record),简化法律和税务复杂性 +- 内置的反欺诈工具 + +PayPal: +- 提供发票生成、大量支付处理等功能 +- 与众多电子商务平台集成 +- 提供PayPal Working Capital等融资选项 + +6. 开发者支持: + +Paddle: +- 提供全面的API和开发者工具 +- 文档和集成指南针对软件和数字产品优化 + +PayPal: +- 提供广泛的API和开发者资源 +- 支持多种编程语言和平台 + +7. 客户支持: + +Paddle: +- 提供个性化支持 +- 可能更适合处理数字产品相关的特定问题 + +PayPal: +- 提供全球范围的客户支持 +- 支持多种语言 + +8. 适合个人使用: + +Paddle: +- 允许个人开发者使用,但主要面向商业用途 +- 可能更适合有稳定数字产品收入的个人 + +PayPal: +- 非常适合个人用户,包括临时或小规模收款 +- 提供简单的个人账户选项 + +9. 中国市场考虑: + +Paddle: +- 在中国的使用可能受限,主要因为缺乏本地支付方式支持 +- 可能更适合面向国际市场的中国开发者 + +PayPal: +- 在中国的使用同样受限,但品牌认知度较高 +- 对于接收国际支付可能更为普遍 + +总结: +- 如果您主要销售数字产品或软件服务,特别是面向国际市场,Paddle可能更适合您。它提供了全面的解决方案,包括税务管理和订阅处理。 +- 如果您需要一个通用的支付解决方案,或者主要面向个人用户和小额交易,PayPal可能是更好的选择。它的使用更为广泛,对个人用户更友好。 + + + + +## Chargebee 和 Airwallex 的申请需要什么资质吗 + +Chargebee 和 Airwallex 都是提供支付和财务服务的平台,但它们的重点略有不同。让我们来看看它们各自的申请条件: + +Chargebee: + +1. 业务类型: + - 主要面向 SaaS 和订阅制业务,但也支持其他类型的在线业务。 + +2. 公司注册: + - 通常需要一个合法注册的公司实体。 + - 在某些情况下可能接受个人申请,但这取决于具体情况。 + +3. 业务规模: + - 没有严格的最低收入要求。 + - 适合从初创企业到大型公司的各种规模。 + +4. 文档要求: + - 公司注册证明 + - 法定代表人身份证明 + - 银行账户信息 + +5. 合规性: + - 需要遵守 PCI DSS(支付卡行业数据安全标准)。 + - 可能需要提供隐私政策和服务条款。 + +6. 技术要求: + - 需要有能力集成 Chargebee 的 API。 + +7. 地理位置: + - 支持多个国家和地区,但可能对某些高风险地区有限制。 + +Airwallex: + +1. 业务类型: + - 主要面向需要处理跨境支付和外汇的企业。 + - 适合电子商务、数字服务和国际贸易公司。 + +2. 公司注册: + - 要求申请者必须是合法注册的公司实体。 + - 通常不接受个人申请。 + +3. 业务规模: + - 可能有最低月交易量或年收入要求。 + - 更适合中型到大型企业,或快速增长的初创公司。 + +4. 文档要求: + - 公司注册证明 + - 董事和主要股东的身份证明 + - 近期财务报表 + - 银行对账单 + +5. 合规性: + - 严格的 KYC(了解你的客户)和 AML(反洗钱)审核。 + - 需要详细说明业务模式和资金流向。 + +6. 行业限制: + - 可能对某些高风险行业有限制或额外审核要求。 + +7. 地理位置: + - 虽然支持多个国家,但服务可用性可能因地区而异。 + - 对中国市场有较好的支持。 + +8. 技术集成: + - 需要有能力集成 Airwallex 的 API 和系统。 + +9. 财务稳定性: + - 可能会评估公司的财务健康状况和增长潜力。 + +申请建议: + +1. 直接联系:两家公司都建议潜在客户直接联系他们的销售团队,以获取最新和最准确的申请信息。 + +2. 准备商业计划:详细说明您的业务模式、预期交易量和增长计划。 + +3. 技术评估:评估您的技术团队是否能够集成这些平台的 API。 + +4. 合规准备:确保您的业务符合所有必要的合规要求,特别是在数据保护和金融法规方面。 + +5. 比较选项:考虑您的具体需求(如跨境支付、订阅管理等),选择最适合的平台。 + +6. 试用或演示:如果可能,请求产品演示或试用,以更好地了解平台功能。 + +总的来说,Chargebee 可能更适合需要强大订阅管理功能的企业,而 Airwallex 则更适合有大量跨境交易需求的公司。对于中国市场,Airwallex 可能提供更直接的支持,但这两个平台都需要仔细评估它们是否符合您的具体业务需求和中国相关法规。 + + + + +## BlueSnap 容易申请吗?支持个人申请吗? + + +BlueSnap 是一个全球支付平台,提供多种支付解决方案。让我们详细了解一下 BlueSnap 的申请流程和对个人申请的政策: + +BlueSnap 申请流程: + +1. 申请难度: + - BlueSnap 的申请过程相对简单,但要求可能比一些面向个人的平台(如 PayPal)更严格。 + - 申请难度主要取决于您的业务类型、规模和所在地区。 + +2. 个人申请政策: + - BlueSnap 主要面向企业客户,但在某些情况下也接受个人申请。 + - 个人申请通常针对独立开发者、自由职业者或小型在线业务。 + +3. 申请要求: + + 对于企业: + - 有效的商业登记证明 + - 公司法定代表人身份证明 + - 银行账户信息 + - 业务描述和网站 URL + - 预期月交易量 + + 对于个人(如果接受): + - 有效的身份证明 + - 地址证明 + - 银行账户信息 + - 业务描述或销售产品/服务的详细信息 + - 个人网站或在线商店 URL(如果有) + +4. 行业限制: + - BlueSnap 可能对某些高风险行业有限制或额外的审核要求。 + +5. 地理限制: + - 支持多个国家和地区,但服务可用性和具体要求可能因地区而异。 + +6. 合规要求: + - 需要遵守 PCI DSS 标准。 + - 可能需要提供隐私政策和服务条款。 + +7. 技术要求: + - 需要有能力集成 BlueSnap 的 API 或使用其支付页面。 + + + + +对于中国用户的特别考虑: + +1. 跨境支付:BlueSnap 支持跨境支付,这对面向国际市场的中国卖家有利。 + +2. 本地支付方式:了解 BlueSnap 是否支持对中国买家友好的支付方式。 + +3. 合规性:确保使用 BlueSnap 符合中国关于跨境支付和外汇管理的相关法规。 + +4. 语言支持:BlueSnap 的主要界面和支持可能是英语,这可能需要考虑。 + +总结: +BlueSnap 的申请过程对个人来说可能比一些专门面向个人的平台更复杂,但仍然可能接受个人申请,特别是对于有稳定在线业务的个人。申请难度和成功率将取决于您的具体情况、业务类型和所在地区。建议直接联系 BlueSnap 的销售团队,他们可以根据您的具体情况提供最准确的信息和指导。 + + + + + +## 2Checkout 的申请呢? + +2Checkout(现在是 Verifone 的一部分)是一个广泛使用的全球支付平台。让我们来看看 2Checkout 的申请流程和要求: + +2Checkout 申请流程: + +1. 申请难度: + - 相对较为简单,但仍需要满足一定的要求。 + - 对于小型企业和个人来说,通常比一些企业级支付解决方案更容易申请。 + +2. 个人申请政策: + - 2Checkout 接受个人申请,这使其成为独立开发者、自由职业者和小型在线业务的良好选择。 + +3. 申请要求: + + 对于企业: + - 有效的商业登记证明 + - 公司法定代表人身份证明 + - 公司银行账户信息 + - 网站 URL 和详细的业务描述 + + 对于个人: + - 有效的政府颁发的身份证明 + - 地址证明(如水电费账单) + - 个人银行账户信息 + - 网站 URL 或详细的产品/服务描述 + +4. 网站要求: + - 功能完善的网站,包含清晰的产品/服务描述 + - 明确的定价信息 + - 隐私政策和服务条款 + - 联系信息 + +5. 产品/服务审核: + - 2Checkout 会审核您计划销售的产品或服务,确保符合其使用政策。 + +6. 行业限制: + - 对某些高风险行业可能有额外的审核要求或限制。 + +7. 地理覆盖: + - 支持全球多个国家和地区的商户。 + +8. 合规要求: + - 需要遵守 PCI DSS 标准。 + - 可能需要提供额外的合规文档,取决于您的业务性质。 + +9. 技术集成: + - 提供多种集成选项,包括简单的结账页面和更高级的 API 集成。 + +申请步骤: + +1. 访问 2Checkout 官网,点击 "Sign Up" 或 "Get Started"。 +2. 选择账户类型(个人或企业)。 +3. 填写基本信息,包括联系方式和网站 URL。 +4. 提供详细的业务信息,包括您计划销售的产品或服务。 +5. 上传必要的文档,如身份证明和地址证明。 +6. 等待 2Checkout 团队审核您的申请。 + +申请建议: + +1. 准备完整的文档:确保所有必要的文档齐全且有效。 + +2. 网站优化:确保您的网站专业、信息完整,符合 2Checkout 的要求。 + +3. 详细描述:提供清晰、详细的业务或产品/服务描述。 + +4. 合规性:确保您的业务模式和产品/服务符合 2Checkout 的政策。 + +5. 响应及时:如果 2Checkout 团队有任何问题或需要额外信息,请及时回复。 + +对中国用户的特别考虑: + +1. 跨境支付:2Checkout 支持跨境交易,这对面向国际市场的中国卖家有利。 + +2. 本地支付方式:了解 2Checkout 是否支持对中国买家友好的支付方式。 + +3. 汇款和结算:了解资金如何转入中国银行账户,以及是否有任何限制。 + +4. 法规遵从:确保使用 2Checkout 符合中国关于跨境电子商务和支付的相关法规。 + +总结: +2Checkout 对个人申请相对友好,申请过程相对简单。它适合各种规模的在线业务,包括个人开发者和小型企业。对于中国用户来说,它提供了一个进入全球市场的好机会,但同时也需要注意跨境支付相关的法规遵从问题。 + + + + + + +## 2Checkout 对中国用户的支持怎么样 + + +2Checkout 对中国用户的支持有一些优势,但也存在一些限制。让我们详细分析一下: + +优势: + +1. 跨境支付支持: + - 2Checkout 支持全球支付,对于想要面向国际市场的中国卖家来说是个好选择。 + +2. 多种支付方式: + - 支持信用卡、PayPal 等国际支付方式,有利于接受来自全球客户的付款。 + +3. 多币种支持: + - 支持多种货币交易,包括美元、欧元等主要货币。 + +4. 税务处理: + - 提供国际税务管理功能,可以帮助处理跨境销售的税务问题。 + +5. 防欺诈系统: + - 内置的防欺诈工具可以保护卖家免受潜在的欺诈交易。 + +6. 开发者友好: + - 提供 API 和各种集成选项,适合技术型卖家。 + +限制和挑战: + +1. 本地支付方式有限: + - 不直接支持支付宝、微信支付等中国主流支付方式。 + - 这可能会影响面向国内市场的销售。 + +2. 语言支持: + - 主要界面和支持是英语,可能对不熟悉英语的中国用户造成使用障碍。 + +3. 客户支持时差: + - 客户支持可能不在中国时区,可能影响及时获得帮助。 + +4. 银行对接: + - 资金转入中国银行账户可能需要额外的步骤或时间。 + +5. 合规性问题: + - 使用国际支付平台需要遵守中国的跨境电商和外汇管理规定。 + - 卖家需要确保自己的业务符合这些规定。 + +6. 费用结构: + - 国际交易的费用可能比国内支付平台高。 + - 汇率转换可能产生额外成本。 + +7. 实名认证: + - 可能需要提供更多的身份证明文件,以满足国际支付平台的要求。 + +8. 市场认知度: + - 在中国市场,2Checkout 的品牌认知度可能不如一些本地或更大的国际支付平台。 + +建议: + +1. 目标市场评估: + - 如果主要面向国际市场,2Checkout 是一个不错的选择。 + - 如果主要面向中国国内市场,可能需要考虑其他更适合的支付解决方案。 + +2. 合规性检查: + - 咨询法律或财务顾问,确保使用 2Checkout 符合中国的相关法规。 + +3. 银行咨询: + - 与您的银行讨论接收国际支付的流程和可能的限制。 + +4. 双平台策略: + - 考虑同时使用 2Checkout 和一个本地支付平台,以覆盖更广泛的客户群。 + +5. 技术评估: + - 评估您的技术团队是否能够有效集成和管理 2Checkout 的系统。 + +6. 试用期: + - 如果可能,请求一个试用期来评估平台的实际表现和适用性。 + +总结: +2Checkout 对于想要开拓国际市场的中国卖家来说是一个有价值的选择,特别是在处理国际支付和跨境交易方面。然而,对于主要面向中国国内市场的企业,它可能不是最佳选择。在做决定之前,仔细评估您的业务需求、目标市场和技术能力是非常重要的。同时,确保充分了解并遵守相关的跨境电商和支付法规。 + + + + + + +本指南由[程序员出海社群](https://chengxuyuanchuhai.com/)创建,版权所有。 \ No newline at end of file diff --git a/package.json b/package.json index d1071c5..22b99d8 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,15 @@ { "name": "@kevisual/frontend-starter-skill", - "version": "0.0.1", + "version": "0.0.2", "description": "", "main": "index.js", "scripts": { "build": "bun run bun.config.ts", - "dev": "bun --watch src/main.ts" + "docs:dev": "vitepress dev", + "docs:build": "vitepress build", + "docs:preview": "vitepress preview", + "postbuild": "pnpm docs:build", + "pub": "ev deploy .vitepress/dist -k frontend-starter-skill -v 0.0.1 -u -y y" }, "keywords": [], "author": "abearxiong (https://www.xiongxiao.me)", @@ -19,7 +23,9 @@ "@kevisual/types": "^0.0.11", "@opencode-ai/plugin": "1.1.26", "@types/bun": "^1.3.6", - "@types/node": "^25.0.9" + "@types/node": "^25.0.9", + "fast-glob": "^3.3.3", + "vitepress": "2.0.0-alpha.15" }, "publishConfig": { "access": "public" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e1039fc..96c7eaa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,6 +29,12 @@ importers: '@types/node': specifier: ^25.0.9 version: 25.0.9 + fast-glob: + specifier: ^3.3.3 + version: 3.3.3 + vitepress: + specifier: 2.0.0-alpha.15 + version: 2.0.0-alpha.15(@types/node@25.0.9)(postcss@8.5.6) .opencode: dependencies: @@ -42,6 +48,191 @@ importers: packages: + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.6': + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/types@7.28.6': + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} + engines: {node: '>=6.9.0'} + + '@docsearch/css@4.5.0': + resolution: {integrity: sha512-RgGlYf1WsYf3bmZ1Zmc7YzthUwmnYhtQgdLWp5A7xIs6KwwAxDPkmxYbLW/uYIv/8/Dq/pU3azNzKP6/fSjQfQ==} + + '@docsearch/js@4.5.0': + resolution: {integrity: sha512-lVYWoqcnAzfeinc3sz6+uhmF6fFYTQy3EcVylD9lIVBqo7UA+c+xjgBaxhj1akcUtTTNsUM6dApAaOcn7y5UDQ==} + + '@esbuild/aix-ppc64@0.27.2': + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.2': + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.27.2': + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.2': + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.27.2': + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.2': + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.27.2': + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.2': + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.27.2': + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.2': + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.27.2': + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.2': + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.27.2': + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.2': + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.2': + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.2': + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.27.2': + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.2': + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.2': + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.2': + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.2': + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.2': + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.2': + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.27.2': + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.27.2': + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.2': + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@iconify-json/simple-icons@1.2.67': + resolution: {integrity: sha512-RGJRwlxyup54L1UDAjCshy3ckX5zcvYIU74YLSnUgHGvqh6B4mvksbGNHAIEp7dZQ6cM13RZVT5KC07CmnFNew==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + '@inquirer/ansi@2.0.3': resolution: {integrity: sha512-g44zhR3NIKVs0zUesa4iMzExmZpLUdTLRMCStqX3GE5NT6VkPcxQGJ+uC8tDgBUC/vB1rUhUd55cOf++4NZcmw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} @@ -176,6 +367,9 @@ packages: '@types/node': optional: true + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@kevisual/ai@0.0.19': resolution: {integrity: sha512-AFc8m6OcHZNxCb88bvzhvwWTZ4EVYyPupBzPUsLKLpdNBvsqm9TRboKCM2brJj2cqHnm+H+RbAk9AcGJkYhRCA==} @@ -226,6 +420,18 @@ packages: resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + '@opencode-ai/plugin@1.1.26': resolution: {integrity: sha512-GnhLZuw9NHDJwY5msUZnFIWiLc0SnoBXWZNfnWF5+hu0fcVLgul8gqB2VK4kUv+KOQlzCVMILYikSSQkMYp7RQ==} @@ -285,6 +491,158 @@ packages: '@pm2/pm2-version-check@1.0.4': resolution: {integrity: sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==} + '@rolldown/pluginutils@1.0.0-beta.53': + resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} + + '@rollup/rollup-android-arm-eabi@4.55.2': + resolution: {integrity: sha512-21J6xzayjy3O6NdnlO6aXi/urvSRjm6nCI6+nF6ra2YofKruGixN9kfT+dt55HVNwfDmpDHJcaS3JuP/boNnlA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.55.2': + resolution: {integrity: sha512-eXBg7ibkNUZ+sTwbFiDKou0BAckeV6kIigK7y5Ko4mB/5A1KLhuzEKovsmfvsL8mQorkoincMFGnQuIT92SKqA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.55.2': + resolution: {integrity: sha512-UCbaTklREjrc5U47ypLulAgg4njaqfOVLU18VrCrI+6E5MQjuG0lSWaqLlAJwsD7NpFV249XgB0Bi37Zh5Sz4g==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.55.2': + resolution: {integrity: sha512-dP67MA0cCMHFT2g5XyjtpVOtp7y4UyUxN3dhLdt11at5cPKnSm4lY+EhwNvDXIMzAMIo2KU+mc9wxaAQJTn7sQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.55.2': + resolution: {integrity: sha512-WDUPLUwfYV9G1yxNRJdXcvISW15mpvod1Wv3ok+Ws93w1HjIVmCIFxsG2DquO+3usMNCpJQ0wqO+3GhFdl6Fow==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.55.2': + resolution: {integrity: sha512-Ng95wtHVEulRwn7R0tMrlUuiLVL/HXA8Lt/MYVpy88+s5ikpntzZba1qEulTuPnPIZuOPcW9wNEiqvZxZmgmqQ==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.55.2': + resolution: {integrity: sha512-AEXMESUDWWGqD6LwO/HkqCZgUE1VCJ1OhbvYGsfqX2Y6w5quSXuyoy/Fg3nRqiwro+cJYFxiw5v4kB2ZDLhxrw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.55.2': + resolution: {integrity: sha512-ZV7EljjBDwBBBSv570VWj0hiNTdHt9uGznDtznBB4Caj3ch5rgD4I2K1GQrtbvJ/QiB+663lLgOdcADMNVC29Q==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.55.2': + resolution: {integrity: sha512-uvjwc8NtQVPAJtq4Tt7Q49FOodjfbf6NpqXyW/rjXoV+iZ3EJAHLNAnKT5UJBc6ffQVgmXTUL2ifYiLABlGFqA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.55.2': + resolution: {integrity: sha512-s3KoWVNnye9mm/2WpOZ3JeUiediUVw6AvY/H7jNA6qgKA2V2aM25lMkVarTDfiicn/DLq3O0a81jncXszoyCFA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.55.2': + resolution: {integrity: sha512-gi21faacK+J8aVSyAUptML9VQN26JRxe484IbF+h3hpG+sNVoMXPduhREz2CcYr5my0NE3MjVvQ5bMKX71pfVA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.55.2': + resolution: {integrity: sha512-qSlWiXnVaS/ceqXNfnoFZh4IiCA0EwvCivivTGbEu1qv2o+WTHpn1zNmCTAoOG5QaVr2/yhCoLScQtc/7RxshA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.55.2': + resolution: {integrity: sha512-rPyuLFNoF1B0+wolH277E780NUKf+KoEDb3OyoLbAO18BbeKi++YN6gC/zuJoPPDlQRL3fIxHxCxVEWiem2yXw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.55.2': + resolution: {integrity: sha512-g+0ZLMook31iWV4PvqKU0i9E78gaZgYpSrYPed/4Bu+nGTgfOPtfs1h11tSSRPXSjC5EzLTjV/1A7L2Vr8pJoQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.55.2': + resolution: {integrity: sha512-i+sGeRGsjKZcQRh3BRfpLsM3LX3bi4AoEVqmGDyc50L6KfYsN45wVCSz70iQMwPWr3E5opSiLOwsC9WB4/1pqg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.55.2': + resolution: {integrity: sha512-C1vLcKc4MfFV6I0aWsC7B2Y9QcsiEcvKkfxprwkPfLaN8hQf0/fKHwSF2lcYzA9g4imqnhic729VB9Fo70HO3Q==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.55.2': + resolution: {integrity: sha512-68gHUK/howpQjh7g7hlD9DvTTt4sNLp1Bb+Yzw2Ki0xvscm2cOdCLZNJNhd2jW8lsTPrHAHuF751BygifW4bkQ==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.55.2': + resolution: {integrity: sha512-1e30XAuaBP1MAizaOBApsgeGZge2/Byd6wV4a8oa6jPdHELbRHBiw7wvo4dp7Ie2PE8TZT4pj9RLGZv9N4qwlw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.55.2': + resolution: {integrity: sha512-4BJucJBGbuGnH6q7kpPqGJGzZnYrpAzRd60HQSt3OpX/6/YVgSsJnNzR8Ot74io50SeVT4CtCWe/RYIAymFPwA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.55.2': + resolution: {integrity: sha512-cT2MmXySMo58ENv8p6/O6wI/h/gLnD3D6JoajwXFZH6X9jz4hARqUhWpGuQhOgLNXscfZYRQMJvZDtWNzMAIDw==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.55.2': + resolution: {integrity: sha512-sZnyUgGkuzIXaK3jNMPmUIyJrxu/PjmATQrocpGA1WbCPX8H5tfGgRSuYtqBYAvLuIGp8SPRb1O4d1Fkb5fXaQ==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.55.2': + resolution: {integrity: sha512-sDpFbenhmWjNcEbBcoTV0PWvW5rPJFvu+P7XoTY0YLGRupgLbFY0XPfwIbJOObzO7QgkRDANh65RjhPmgSaAjQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.55.2': + resolution: {integrity: sha512-GvJ03TqqaweWCigtKQVBErw2bEhu1tyfNQbarwr94wCGnczA9HF8wqEe3U/Lfu6EdeNP0p6R+APeHVwEqVxpUQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.55.2': + resolution: {integrity: sha512-KvXsBvp13oZz9JGe5NYS7FNizLe99Ny+W8ETsuCyjXiKdiGrcz2/J/N8qxZ/RSwivqjQguug07NLHqrIHrqfYw==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.55.2': + resolution: {integrity: sha512-xNO+fksQhsAckRtDSPWaMeT1uIM+JrDRXlerpnWNXhn1TdB3YZ6uKBMBTKP0eX9XtYEP978hHk1f8332i2AW8Q==} + cpu: [x64] + os: [win32] + + '@shikijs/core@3.21.0': + resolution: {integrity: sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA==} + + '@shikijs/engine-javascript@3.21.0': + resolution: {integrity: sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ==} + + '@shikijs/engine-oniguruma@3.21.0': + resolution: {integrity: sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ==} + + '@shikijs/langs@3.21.0': + resolution: {integrity: sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA==} + + '@shikijs/themes@3.21.0': + resolution: {integrity: sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw==} + + '@shikijs/transformers@3.21.0': + resolution: {integrity: sha512-CZwvCWWIiRRiFk9/JKzdEooakAP8mQDtBOQ1TKiCaS2E1bYtyBCOkUzS8akO34/7ufICQ29oeSfkb3tT5KtrhA==} + + '@shikijs/types@3.21.0': + resolution: {integrity: sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} @@ -294,9 +652,136 @@ packages: '@types/busboy@1.5.4': resolution: {integrity: sha512-kG7WrUuAKK0NoyxfQHsVE6j1m01s6kMma64E+OZenQABMQyTJop1DumUWcLwAQ2JzpefU7PDYoRDKl8uZosFjw==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + + '@types/markdown-it@14.1.2': + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + '@types/node@25.0.9': resolution: {integrity: sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@vitejs/plugin-vue@6.0.3': + resolution: {integrity: sha512-TlGPkLFLVOY3T7fZrwdvKpjprR3s4fxRln0ORDo1VQ7HHyxJwTlrjKU3kpVWTlaAjIEuCTokmjkZnr8Tpc925w==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + vue: ^3.2.25 + + '@vue/compiler-core@3.5.27': + resolution: {integrity: sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==} + + '@vue/compiler-dom@3.5.27': + resolution: {integrity: sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==} + + '@vue/compiler-sfc@3.5.27': + resolution: {integrity: sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==} + + '@vue/compiler-ssr@3.5.27': + resolution: {integrity: sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==} + + '@vue/devtools-api@8.0.5': + resolution: {integrity: sha512-DgVcW8H/Nral7LgZEecYFFYXnAvGuN9C3L3DtWekAncFBedBczpNW8iHKExfaM559Zm8wQWrwtYZ9lXthEHtDw==} + + '@vue/devtools-kit@8.0.5': + resolution: {integrity: sha512-q2VV6x1U3KJMTQPUlRMyWEKVbcHuxhqJdSr6Jtjz5uAThAIrfJ6WVZdGZm5cuO63ZnSUz0RCsVwiUUb0mDV0Yg==} + + '@vue/devtools-shared@8.0.5': + resolution: {integrity: sha512-bRLn6/spxpmgLk+iwOrR29KrYnJjG9DGpHGkDFG82UM21ZpJ39ztUT9OXX3g+usW7/b2z+h46I9ZiYyB07XMXg==} + + '@vue/reactivity@3.5.27': + resolution: {integrity: sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ==} + + '@vue/runtime-core@3.5.27': + resolution: {integrity: sha512-fxVuX/fzgzeMPn/CLQecWeDIFNt3gQVhxM0rW02Tvp/YmZfXQgcTXlakq7IMutuZ/+Ogbn+K0oct9J3JZfyk3A==} + + '@vue/runtime-dom@3.5.27': + resolution: {integrity: sha512-/QnLslQgYqSJ5aUmb5F0z0caZPGHRB8LEAQ1s81vHFM5CBfnun63rxhvE/scVb/j3TbBuoZwkJyiLCkBluMpeg==} + + '@vue/server-renderer@3.5.27': + resolution: {integrity: sha512-qOz/5thjeP1vAFc4+BY3Nr6wxyLhpeQgAE/8dDtKo6a6xdk+L4W46HDZgNmLOBUDEkFXV3G7pRiUqxjX0/2zWA==} + peerDependencies: + vue: 3.5.27 + + '@vue/shared@3.5.27': + resolution: {integrity: sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==} + + '@vueuse/core@14.1.0': + resolution: {integrity: sha512-rgBinKs07hAYyPF834mDTigH7BtPqvZ3Pryuzt1SD/lg5wEcWqvwzXXYGEDb2/cP0Sj5zSvHl3WkmMELr5kfWw==} + peerDependencies: + vue: ^3.5.0 + + '@vueuse/integrations@14.1.0': + resolution: {integrity: sha512-eNQPdisnO9SvdydTIXnTE7c29yOsJBD/xkwEyQLdhDC/LKbqrFpXHb3uS//7NcIrQO3fWVuvMGp8dbK6mNEMCA==} + peerDependencies: + async-validator: ^4 + axios: ^1 + change-case: ^5 + drauu: ^0.4 + focus-trap: ^7 + fuse.js: ^7 + idb-keyval: ^6 + jwt-decode: ^4 + nprogress: ^0.2 + qrcode: ^1.5 + sortablejs: ^1 + universal-cookie: ^7 || ^8 + vue: ^3.5.0 + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + + '@vueuse/metadata@14.1.0': + resolution: {integrity: sha512-7hK4g015rWn2PhKcZ99NyT+ZD9sbwm7SGvp7k+k+rKGWnLjS/oQozoIZzWfCewSUeBmnJkIb+CNr7Zc/EyRnnA==} + + '@vueuse/shared@14.1.0': + resolution: {integrity: sha512-EcKxtYvn6gx1F8z9J5/rsg3+lTQnvOruQd8fUecW99DCK04BkWD7z5KQ/wTAx+DazyoEE9dJt/zV8OIEQbM6kw==} + peerDependencies: + vue: ^3.5.0 + agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} @@ -356,6 +841,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + birpc@2.9.0: + resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + bodec@0.1.0: resolution: {integrity: sha512-Ylo+MAo5BDUq1KA3f3R/MFhh+g8cnHmo8bz3YPGhI1znrMaf77ol1sfvYJzsw3nTE+Y2GryfDxBaR+AqpAkEHQ==} @@ -377,10 +865,19 @@ packages: resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} engines: {node: '>=6.0.0'} + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + chardet@2.1.1: resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} @@ -410,18 +907,28 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@2.15.1: resolution: {integrity: sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==} cookie-es@1.2.2: resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + copy-anything@4.0.5: + resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} + engines: {node: '>=18'} + croner@4.1.97: resolution: {integrity: sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ==} crossws@0.3.5: resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + culvert@0.1.2: resolution: {integrity: sha512-yi1x3EAWKjQTreYWeSd98431AV+IEE0qoDyOoaHJ7KJ21gv6HtBXHVLX74opVSGqcR8/AbjJBHAHpcOy2bj5Gg==} @@ -472,9 +979,16 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + destr@2.0.5: resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dotenv@17.2.3: resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} engines: {node: '>=12'} @@ -493,6 +1007,15 @@ packages: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} + entities@7.0.0: + resolution: {integrity: sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==} + engines: {node: '>=0.12'} + + esbuild@0.27.2: + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} + engines: {node: '>=18'} + hasBin: true + escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -514,6 +1037,9 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -534,16 +1060,35 @@ packages: extrareqp2@1.0.0: resolution: {integrity: sha512-Gum0g1QYb6wpPJCVypWP3bbIuaibcFiJcpuPM10YSXp/tzqi84x9PJageob+eN4xVRIOto4wjSGNLyMD54D2xA==} + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + fast-json-patch@3.1.1: resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + fclone@1.0.11: resolution: {integrity: sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + focus-trap@7.8.0: + resolution: {integrity: sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA==} + follow-redirects@1.15.11: resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} @@ -599,10 +1144,22 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + hono@4.11.4: resolution: {integrity: sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==} engines: {node: '>=16.9.0'} + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + http-errors@2.0.1: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} @@ -656,6 +1213,10 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-what@5.5.0: + resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} + engines: {node: '>=18'} + js-git@0.7.8: resolution: {integrity: sha512-+E5ZH/HeRnoc/LW0AmAyhU+mNcWBzAKE+30+IDMLSLbbK+Tdt02AdkOKq9u15rlJsDEGFqtgckc8ZM59LhhiUA==} @@ -685,6 +1246,34 @@ packages: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -697,6 +1286,9 @@ packages: resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} engines: {node: '>=18'} + minisearch@7.2.0: + resolution: {integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==} + mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} @@ -718,6 +1310,11 @@ packages: resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} engines: {node: ^20.17.0 || >=22.9.0} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + nanoid@5.1.6: resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==} engines: {node: ^18 || >=20} @@ -749,6 +1346,12 @@ packages: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + + oniguruma-to-es@4.3.4: + resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} + pac-proxy-agent@7.2.0: resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} engines: {node: '>= 14'} @@ -766,10 +1369,20 @@ packages: path-to-regexp@8.3.0: resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} + perfect-debounce@2.0.0: + resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + pidusage@2.0.21: resolution: {integrity: sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==} engines: {node: '>=8'} @@ -805,9 +1418,16 @@ packages: engines: {node: '>=16.0.0'} hasBin: true + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + promptly@2.2.0: resolution: {integrity: sha512-aC9j+BZsRSSzEsXBNBwDnAxujdx19HycZoKgRgzWnS8eOHg1asuf9heuLprfbe739zY3IdUQx+Egv6Jn135WHA==} + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + proxy-agent@6.4.0: resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} engines: {node: '>= 14'} @@ -822,6 +1442,9 @@ packages: resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} engines: {node: '>=16.0.0'} + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} @@ -844,6 +1467,15 @@ packages: reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} + require-in-the-middle@5.2.0: resolution: {integrity: sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==} engines: {node: '>=6'} @@ -853,6 +1485,21 @@ packages: engines: {node: '>= 0.4'} hasBin: true + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rollup@4.55.2: + resolution: {integrity: sha512-PggGy4dhwx5qaW+CKBilA/98Ql9keyfnb7lh4SR6shQ91QQQi1ORJ1v4UinkdP2i87OBs9AQFooQylcrrRfIcg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + run-series@1.1.9: resolution: {integrity: sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==} @@ -892,6 +1539,9 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + shiki@3.21.0: + resolution: {integrity: sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w==} + shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} @@ -914,6 +1564,10 @@ packages: resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -921,6 +1575,13 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + sprintf-js@1.1.2: resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} @@ -940,10 +1601,17 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + strip-ansi@7.1.2: resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} + engines: {node: '>=16'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -958,6 +1626,13 @@ packages: os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] hasBin: true + tabbable@6.4.0: + resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -966,6 +1641,9 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -995,6 +1673,21 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unstorage@1.17.4: resolution: {integrity: sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==} peerDependencies: @@ -1057,10 +1750,79 @@ packages: uploadthing: optional: true + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitepress@2.0.0-alpha.15: + resolution: {integrity: sha512-jhjSYd10Z6RZiKOa7jy0xMVf5NB5oSc/lS3bD/QoUc6V8PrvQR5JhC9104NEt6+oTGY/ftieVWxY9v7YI+1IjA==} + hasBin: true + peerDependencies: + markdown-it-mathjax3: ^4 + oxc-minify: '*' + postcss: ^8 + peerDependenciesMeta: + markdown-it-mathjax3: + optional: true + oxc-minify: + optional: true + postcss: + optional: true + vizion@2.2.1: resolution: {integrity: sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww==} engines: {node: '>=4.0'} + vue@3.5.27: + resolution: {integrity: sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + wrap-ansi@9.0.2: resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} @@ -1083,8 +1845,112 @@ packages: zod@4.1.8: resolution: {integrity: sha512-5R1P+WwQqmmMIEACyzSvo4JXHY5WiAFHRMg+zBZKgKS+Q1viRa0C1hmUKtHltoIFKtIdki3pRxkmpP74jnNYHQ==} + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + snapshots: + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/parser@7.28.6': + dependencies: + '@babel/types': 7.28.6 + + '@babel/types@7.28.6': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@docsearch/css@4.5.0': {} + + '@docsearch/js@4.5.0': {} + + '@esbuild/aix-ppc64@0.27.2': + optional: true + + '@esbuild/android-arm64@0.27.2': + optional: true + + '@esbuild/android-arm@0.27.2': + optional: true + + '@esbuild/android-x64@0.27.2': + optional: true + + '@esbuild/darwin-arm64@0.27.2': + optional: true + + '@esbuild/darwin-x64@0.27.2': + optional: true + + '@esbuild/freebsd-arm64@0.27.2': + optional: true + + '@esbuild/freebsd-x64@0.27.2': + optional: true + + '@esbuild/linux-arm64@0.27.2': + optional: true + + '@esbuild/linux-arm@0.27.2': + optional: true + + '@esbuild/linux-ia32@0.27.2': + optional: true + + '@esbuild/linux-loong64@0.27.2': + optional: true + + '@esbuild/linux-mips64el@0.27.2': + optional: true + + '@esbuild/linux-ppc64@0.27.2': + optional: true + + '@esbuild/linux-riscv64@0.27.2': + optional: true + + '@esbuild/linux-s390x@0.27.2': + optional: true + + '@esbuild/linux-x64@0.27.2': + optional: true + + '@esbuild/netbsd-arm64@0.27.2': + optional: true + + '@esbuild/netbsd-x64@0.27.2': + optional: true + + '@esbuild/openbsd-arm64@0.27.2': + optional: true + + '@esbuild/openbsd-x64@0.27.2': + optional: true + + '@esbuild/openharmony-arm64@0.27.2': + optional: true + + '@esbuild/sunos-x64@0.27.2': + optional: true + + '@esbuild/win32-arm64@0.27.2': + optional: true + + '@esbuild/win32-ia32@0.27.2': + optional: true + + '@esbuild/win32-x64@0.27.2': + optional: true + + '@iconify-json/simple-icons@1.2.67': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + '@inquirer/ansi@2.0.3': {} '@inquirer/checkbox@5.0.4(@types/node@25.0.9)': @@ -1204,6 +2070,8 @@ snapshots: optionalDependencies: '@types/node': 25.0.9 + '@jridgewell/sourcemap-codec@1.5.5': {} + '@kevisual/ai@0.0.19': dependencies: '@kevisual/logger': 0.0.4 @@ -1302,6 +2170,18 @@ snapshots: '@noble/hashes@1.4.0': {} + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + '@opencode-ai/plugin@1.1.26': dependencies: '@opencode-ai/sdk': 1.1.26 @@ -1451,6 +2331,121 @@ snapshots: transitivePeerDependencies: - supports-color + '@rolldown/pluginutils@1.0.0-beta.53': {} + + '@rollup/rollup-android-arm-eabi@4.55.2': + optional: true + + '@rollup/rollup-android-arm64@4.55.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.55.2': + optional: true + + '@rollup/rollup-darwin-x64@4.55.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.55.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.55.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.55.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.55.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.55.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.55.2': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.55.2': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.55.2': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.55.2': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.55.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.55.2': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.55.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.55.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.55.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.55.2': + optional: true + + '@rollup/rollup-openbsd-x64@4.55.2': + optional: true + + '@rollup/rollup-openharmony-arm64@4.55.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.55.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.55.2': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.55.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.55.2': + optional: true + + '@shikijs/core@3.21.0': + dependencies: + '@shikijs/types': 3.21.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@3.21.0': + dependencies: + '@shikijs/types': 3.21.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.4 + + '@shikijs/engine-oniguruma@3.21.0': + dependencies: + '@shikijs/types': 3.21.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.21.0': + dependencies: + '@shikijs/types': 3.21.0 + + '@shikijs/themes@3.21.0': + dependencies: + '@shikijs/types': 3.21.0 + + '@shikijs/transformers@3.21.0': + dependencies: + '@shikijs/core': 3.21.0 + '@shikijs/types': 3.21.0 + + '@shikijs/types@3.21.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + '@tootallnate/quickjs-emscripten@0.23.0': {} '@types/bun@1.3.6': @@ -1461,10 +2456,134 @@ snapshots: dependencies: '@types/node': 25.0.9 + '@types/estree@1.0.8': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/linkify-it@5.0.0': {} + + '@types/markdown-it@14.1.2': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdurl@2.0.0': {} + '@types/node@25.0.9': dependencies: undici-types: 7.16.0 + '@types/unist@3.0.3': {} + + '@types/web-bluetooth@0.0.21': {} + + '@ungap/structured-clone@1.3.0': {} + + '@vitejs/plugin-vue@6.0.3(vite@7.3.1(@types/node@25.0.9))(vue@3.5.27)': + dependencies: + '@rolldown/pluginutils': 1.0.0-beta.53 + vite: 7.3.1(@types/node@25.0.9) + vue: 3.5.27 + + '@vue/compiler-core@3.5.27': + dependencies: + '@babel/parser': 7.28.6 + '@vue/shared': 3.5.27 + entities: 7.0.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.27': + dependencies: + '@vue/compiler-core': 3.5.27 + '@vue/shared': 3.5.27 + + '@vue/compiler-sfc@3.5.27': + dependencies: + '@babel/parser': 7.28.6 + '@vue/compiler-core': 3.5.27 + '@vue/compiler-dom': 3.5.27 + '@vue/compiler-ssr': 3.5.27 + '@vue/shared': 3.5.27 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.6 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.27': + dependencies: + '@vue/compiler-dom': 3.5.27 + '@vue/shared': 3.5.27 + + '@vue/devtools-api@8.0.5': + dependencies: + '@vue/devtools-kit': 8.0.5 + + '@vue/devtools-kit@8.0.5': + dependencies: + '@vue/devtools-shared': 8.0.5 + birpc: 2.9.0 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 2.0.0 + speakingurl: 14.0.1 + superjson: 2.2.6 + + '@vue/devtools-shared@8.0.5': + dependencies: + rfdc: 1.4.1 + + '@vue/reactivity@3.5.27': + dependencies: + '@vue/shared': 3.5.27 + + '@vue/runtime-core@3.5.27': + dependencies: + '@vue/reactivity': 3.5.27 + '@vue/shared': 3.5.27 + + '@vue/runtime-dom@3.5.27': + dependencies: + '@vue/reactivity': 3.5.27 + '@vue/runtime-core': 3.5.27 + '@vue/shared': 3.5.27 + csstype: 3.2.3 + + '@vue/server-renderer@3.5.27(vue@3.5.27)': + dependencies: + '@vue/compiler-ssr': 3.5.27 + '@vue/shared': 3.5.27 + vue: 3.5.27 + + '@vue/shared@3.5.27': {} + + '@vueuse/core@14.1.0(vue@3.5.27)': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 14.1.0 + '@vueuse/shared': 14.1.0(vue@3.5.27) + vue: 3.5.27 + + '@vueuse/integrations@14.1.0(focus-trap@7.8.0)(vue@3.5.27)': + dependencies: + '@vueuse/core': 14.1.0(vue@3.5.27) + '@vueuse/shared': 14.1.0(vue@3.5.27) + vue: 3.5.27 + optionalDependencies: + focus-trap: 7.8.0 + + '@vueuse/metadata@14.1.0': {} + + '@vueuse/shared@14.1.0(vue@3.5.27)': + dependencies: + vue: 3.5.27 + agent-base@7.1.4: {} amp-message@0.1.2: @@ -1512,6 +2631,8 @@ snapshots: binary-extensions@2.3.0: {} + birpc@2.9.0: {} + bodec@0.1.0: {} braces@3.0.3: @@ -1530,11 +2651,17 @@ snapshots: bytestreamjs@2.0.1: {} + ccount@2.0.1: {} + chalk@3.0.0: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + chardet@2.1.1: {} charm@0.1.2: {} @@ -1567,16 +2694,24 @@ snapshots: color-name@1.1.4: {} + comma-separated-tokens@2.0.3: {} + commander@2.15.1: {} cookie-es@1.2.2: {} + copy-anything@4.0.5: + dependencies: + is-what: 5.5.0 + croner@4.1.97: {} crossws@0.3.5: dependencies: uncrypto: 0.1.3 + csstype@3.2.3: {} + culvert@0.1.2: {} data-uri-to-buffer@6.0.2: {} @@ -1607,8 +2742,14 @@ snapshots: depd@2.0.0: {} + dequal@2.0.3: {} + destr@2.0.5: {} + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + dotenv@17.2.3: {} ee-first@1.1.1: {} @@ -1621,6 +2762,37 @@ snapshots: dependencies: ansi-colors: 4.1.3 + entities@7.0.0: {} + + esbuild@0.27.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.2 + '@esbuild/android-arm': 0.27.2 + '@esbuild/android-arm64': 0.27.2 + '@esbuild/android-x64': 0.27.2 + '@esbuild/darwin-arm64': 0.27.2 + '@esbuild/darwin-x64': 0.27.2 + '@esbuild/freebsd-arm64': 0.27.2 + '@esbuild/freebsd-x64': 0.27.2 + '@esbuild/linux-arm': 0.27.2 + '@esbuild/linux-arm64': 0.27.2 + '@esbuild/linux-ia32': 0.27.2 + '@esbuild/linux-loong64': 0.27.2 + '@esbuild/linux-mips64el': 0.27.2 + '@esbuild/linux-ppc64': 0.27.2 + '@esbuild/linux-riscv64': 0.27.2 + '@esbuild/linux-s390x': 0.27.2 + '@esbuild/linux-x64': 0.27.2 + '@esbuild/netbsd-arm64': 0.27.2 + '@esbuild/netbsd-x64': 0.27.2 + '@esbuild/openbsd-arm64': 0.27.2 + '@esbuild/openbsd-x64': 0.27.2 + '@esbuild/openharmony-arm64': 0.27.2 + '@esbuild/sunos-x64': 0.27.2 + '@esbuild/win32-arm64': 0.27.2 + '@esbuild/win32-ia32': 0.27.2 + '@esbuild/win32-x64': 0.27.2 + escape-html@1.0.3: {} escape-string-regexp@4.0.0: {} @@ -1637,6 +2809,8 @@ snapshots: estraverse@5.3.0: {} + estree-walker@2.0.2: {} + esutils@2.0.3: {} etag@1.8.1: {} @@ -1653,14 +2827,34 @@ snapshots: transitivePeerDependencies: - debug + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-json-patch@3.1.1: {} + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + fclone@1.0.11: {} + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 + focus-trap@7.8.0: + dependencies: + tabbable: 6.4.0 + follow-redirects@1.15.11(debug@4.3.7): optionalDependencies: debug: 4.3.7 @@ -1710,8 +2904,30 @@ snapshots: dependencies: function-bind: 1.1.2 + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + hono@4.11.4: {} + hookable@5.5.3: {} + + html-void-elements@3.0.0: {} + http-errors@2.0.1: dependencies: depd: 2.0.0 @@ -1766,6 +2982,8 @@ snapshots: is-number@7.0.0: {} + is-what@5.5.0: {} + js-git@0.7.8: dependencies: bodec: 0.1.0 @@ -1794,6 +3012,43 @@ snapshots: lru-cache@7.18.3: {} + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + mark.js@8.11.1: {} + + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + merge2@1.4.1: {} + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-encode@2.0.1: {} + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -1805,6 +3060,8 @@ snapshots: dependencies: mime-db: 1.54.0 + minisearch@7.2.0: {} + mitt@3.0.1: {} mkdirp@1.0.4: {} @@ -1817,6 +3074,8 @@ snapshots: mute-stream@3.0.0: {} + nanoid@3.3.11: {} + nanoid@5.1.6: {} needle@2.4.0: @@ -1845,6 +3104,14 @@ snapshots: dependencies: ee-first: 1.1.1 + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@4.3.4: + dependencies: + oniguruma-parser: 0.12.1 + regex: 6.1.0 + regex-recursion: 6.0.2 + pac-proxy-agent@7.2.0: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 @@ -1869,8 +3136,14 @@ snapshots: path-to-regexp@8.3.0: {} + perfect-debounce@2.0.0: {} + + picocolors@1.1.1: {} + picomatch@2.3.1: {} + picomatch@4.0.3: {} + pidusage@2.0.21: dependencies: safe-buffer: 5.2.1 @@ -1962,10 +3235,18 @@ snapshots: - supports-color - utf-8-validate + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + promptly@2.2.0: dependencies: read: 1.0.7 + property-information@7.1.0: {} + proxy-agent@6.4.0: dependencies: agent-base: 7.1.4 @@ -1987,6 +3268,8 @@ snapshots: pvutils@1.1.5: {} + queue-microtask@1.2.3: {} + radix3@1.1.2: {} range-parser@1.2.1: {} @@ -2003,6 +3286,16 @@ snapshots: reflect-metadata@0.2.2: {} + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.1.0: + dependencies: + regex-utilities: 2.3.0 + require-in-the-middle@5.2.0: dependencies: debug: 4.4.3 @@ -2017,6 +3310,45 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rollup@4.55.2: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.55.2 + '@rollup/rollup-android-arm64': 4.55.2 + '@rollup/rollup-darwin-arm64': 4.55.2 + '@rollup/rollup-darwin-x64': 4.55.2 + '@rollup/rollup-freebsd-arm64': 4.55.2 + '@rollup/rollup-freebsd-x64': 4.55.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.55.2 + '@rollup/rollup-linux-arm-musleabihf': 4.55.2 + '@rollup/rollup-linux-arm64-gnu': 4.55.2 + '@rollup/rollup-linux-arm64-musl': 4.55.2 + '@rollup/rollup-linux-loong64-gnu': 4.55.2 + '@rollup/rollup-linux-loong64-musl': 4.55.2 + '@rollup/rollup-linux-ppc64-gnu': 4.55.2 + '@rollup/rollup-linux-ppc64-musl': 4.55.2 + '@rollup/rollup-linux-riscv64-gnu': 4.55.2 + '@rollup/rollup-linux-riscv64-musl': 4.55.2 + '@rollup/rollup-linux-s390x-gnu': 4.55.2 + '@rollup/rollup-linux-x64-gnu': 4.55.2 + '@rollup/rollup-linux-x64-musl': 4.55.2 + '@rollup/rollup-openbsd-x64': 4.55.2 + '@rollup/rollup-openharmony-arm64': 4.55.2 + '@rollup/rollup-win32-arm64-msvc': 4.55.2 + '@rollup/rollup-win32-ia32-msvc': 4.55.2 + '@rollup/rollup-win32-x64-gnu': 4.55.2 + '@rollup/rollup-win32-x64-msvc': 4.55.2 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + run-series@1.1.9: {} safe-buffer@5.2.1: {} @@ -2056,6 +3388,17 @@ snapshots: setprototypeof@1.2.0: {} + shiki@3.21.0: + dependencies: + '@shikijs/core': 3.21.0 + '@shikijs/engine-javascript': 3.21.0 + '@shikijs/engine-oniguruma': 3.21.0 + '@shikijs/langs': 3.21.0 + '@shikijs/themes': 3.21.0 + '@shikijs/types': 3.21.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + shimmer@1.2.1: {} signal-exit@3.0.7: {} @@ -2077,6 +3420,8 @@ snapshots: ip-address: 10.1.0 smart-buffer: 4.2.0 + source-map-js@1.2.1: {} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 @@ -2084,6 +3429,10 @@ snapshots: source-map@0.6.1: {} + space-separated-tokens@2.0.2: {} + + speakingurl@14.0.1: {} + sprintf-js@1.1.2: {} statuses@2.0.2: {} @@ -2098,10 +3447,19 @@ snapshots: get-east-asian-width: 1.4.0 strip-ansi: 7.1.2 + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + strip-ansi@7.1.2: dependencies: ansi-regex: 6.2.2 + superjson@2.2.6: + dependencies: + copy-anything: 4.0.5 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -2111,12 +3469,21 @@ snapshots: systeminformation@5.30.5: optional: true + tabbable@6.4.0: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 toidentifier@1.0.1: {} + trim-lines@3.0.1: {} + tslib@1.14.1: {} tslib@1.9.3: {} @@ -2140,6 +3507,29 @@ snapshots: undici-types@7.16.0: {} + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + unstorage@1.17.4: dependencies: anymatch: 3.1.3 @@ -2151,6 +3541,75 @@ snapshots: ofetch: 1.5.1 ufo: 1.6.3 + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + vite@7.3.1(@types/node@25.0.9): + dependencies: + esbuild: 0.27.2 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.55.2 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 25.0.9 + fsevents: 2.3.3 + + vitepress@2.0.0-alpha.15(@types/node@25.0.9)(postcss@8.5.6): + dependencies: + '@docsearch/css': 4.5.0 + '@docsearch/js': 4.5.0 + '@iconify-json/simple-icons': 1.2.67 + '@shikijs/core': 3.21.0 + '@shikijs/transformers': 3.21.0 + '@shikijs/types': 3.21.0 + '@types/markdown-it': 14.1.2 + '@vitejs/plugin-vue': 6.0.3(vite@7.3.1(@types/node@25.0.9))(vue@3.5.27) + '@vue/devtools-api': 8.0.5 + '@vue/shared': 3.5.27 + '@vueuse/core': 14.1.0(vue@3.5.27) + '@vueuse/integrations': 14.1.0(focus-trap@7.8.0)(vue@3.5.27) + focus-trap: 7.8.0 + mark.js: 8.11.1 + minisearch: 7.2.0 + shiki: 3.21.0 + vite: 7.3.1(@types/node@25.0.9) + vue: 3.5.27 + optionalDependencies: + postcss: 8.5.6 + transitivePeerDependencies: + - '@types/node' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jiti + - jwt-decode + - less + - lightningcss + - nprogress + - qrcode + - sass + - sass-embedded + - sortablejs + - stylus + - sugarss + - terser + - tsx + - typescript + - universal-cookie + - yaml + vizion@2.2.1: dependencies: async: 2.6.4 @@ -2158,6 +3617,14 @@ snapshots: ini: 1.3.8 js-git: 0.7.8 + vue@3.5.27: + dependencies: + '@vue/compiler-dom': 3.5.27 + '@vue/compiler-sfc': 3.5.27 + '@vue/runtime-dom': 3.5.27 + '@vue/server-renderer': 3.5.27(vue@3.5.27) + '@vue/shared': 3.5.27 + wrap-ansi@9.0.2: dependencies: ansi-styles: 6.2.3 @@ -2169,3 +3636,5 @@ snapshots: yallist@4.0.0: {} zod@4.1.8: {} + + zwitch@2.0.4: {} diff --git a/src/generated/docs.ts b/src/generated/docs.ts index 1924cdc..cebab4f 100644 --- a/src/generated/docs.ts +++ b/src/generated/docs.ts @@ -3,6 +3,13 @@ export const readme = `# Showcase CMS 展示网站模板集合 - 快速构建专业的静态展示网站或高交互动态网站。 +## opencode 使用插件skill + +\`\`\`json +{ + "plugin" +} +\`\`\` --- ## 模板类型对比 @@ -1305,3 +1312,681 @@ export const enterprise_website_features = `# 企业展示网站功能拆分文 后续可根据具体行业和企业规模进行调整和扩展。 `; +export const index = `--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: "Showcase CMS" + text: "展示网站模板集合" + tagline: 快速构建专业的静态展示网站或高交互动态网站 + actions: + - theme: brand + text: 展示型模板 (Astro) + link: /website-features-breakdown + - theme: alt + text: 互动型模板 (Next.js) + link: /enterprise-website-features + +features: + - title: 展示型模板 (Astro) + details: 以信息展示为主,极致轻量、快速加载,适用于企业官网、作品集、博客、文档站点 + - title: 互动型模板 (Next.js) + details: 以用户交互为主,支持登录注册、在线交易、后台管理,适用于电商、门户、社区系统 + - title: 共享组件库 + details: 两套模板共享同一套组件库,保证视觉一致性和开发效率(shadcn/ui) +--- + +`; +export const link = `开源jeepay支付 https://github.com/jeequan/jeepay`; +export const pay_summary = `# 国内国外支付方式大合集 + + +本指南由[程序员出海社群](https://chengxuyuanchuhai.com/)创建,版权所有。 + + + +## 国内市场,除了微信支付、支付宝,还有哪些可选支付方式 + +考虑到中国用户的支付习惯和便利性,同时避开微信支付和支付宝的限制,我们可以考虑以下几种替代方案: + +1. 银联在线支付: + - 优点:覆盖面广,支持大多数中国发行的银行卡。 + - 缺点:可能需要一些时间和effort来完成商户入驻。 + +2. PayPal: + - 优点:国际认可度高,支持跨境支付。 + - 缺点:在中国的使用率相对较低,用户可能需要额外步骤开通。 + +3. 数字人民币(e-CNY): + - 优点:是中国官方推出的数字货币,未来发展潜力大。 + - 缺点:目前还在试点阶段,覆盖面可能不够广。 + +4. 虚拟卡支付(如 Visa/Mastercard 虚拟卡): + - 优点:国际通用,支持跨境交易。 + - 缺点:在中国的普及率不如银联卡高。 + +5. 第三方支付聚合平台: + - 例如:Stripe、Adyen 等 + - 优点:可以集成多种支付方式,一次对接多种渠道。 + - 缺点:可能需要额外的费用,某些平台在中国的支持可能有限。 + +6. 国内第三方支付平台: + - 例如:易宝支付、汇付天下等 + - 优点:专注于中国市场,合规性较好。 + - 缺点:国际化程度可能不如大型跨国支付平台。 + + +考虑到中国市场的特点,可优先考虑以下方案: + +1. 银联在线支付:这是最直接和广泛接受的替代方案。几乎所有的中国用户都有银联卡,使用门槛低。 + +2. 考虑使用支持多种支付方式的第三方支付聚合平台,如 Stripe 或 Adyen。这样可以给用户提供多种选择,包括银联、信用卡等。 + +3. 如果您希望专注于中国市场,可以考虑国内的第三方支付平台,如易宝支付或汇付天下。这些平台通常更了解中国市场的需求和监管环境。 + + + + +## Stripe、Adyen 申请需要什么资质或条件? + +Stripe 和 Adyen 都是国际知名的支付处理平台,它们对商户的要求略有不同。以下是它们各自的主要申请条件和资质要求: + +Stripe: + +1. 公司注册: + - 需要一个合法注册的公司实体。 + - 在某些国家,也接受个人账户。 + +2. 银行账户: + - 需要一个与公司名称相匹配的银行账户。 + +3. 身份验证: + - 公司法人代表或主要负责人的身份证明。 + - 可能需要提供地址证明。 + +4. 业务描述: + - 详细说明您的业务模式和销售的产品或服务。 + +5. 网站要求: + - 需要一个功能完善的网站,包含清晰的产品/服务描述、价格、联系方式和条款与条件页面。 + +6. 合规性: + - 需要遵守Stripe的使用条款和适用的法律法规。 + +7. 行业限制: + - 某些高风险行业可能不被接受或需要额外审核。 + +Adyen: + +1. 公司注册: + - 必须是合法注册的公司实体。 + +2. 财务要求: + - 通常需要一定的年营业额(具体金额因地区而异)。 + - 可能需要提供财务报表。 + +3. 身份验证: + - 公司董事和主要股东的身份证明。 + - 公司注册文件。 + +4. 业务计划: + - 详细的业务计划,包括预期交易量和平均交易金额。 + +5. 网站要求: + - 功能完善的网站,包含完整的商业信息。 + - 清晰的退款和隐私政策。 + +6. 合规性: + - 需要符合PCI DSS(支付卡行业数据安全标准)。 + - 遵守反洗钱(AML)和了解你的客户(KYC)规定。 + +7. 技术集成能力: + - 能够集成Adyen的API和支付系统。 + +8. 行业评估: + - 某些行业可能需要额外的审核或可能不被接受。 + + +总的来说,Adyen 的要求通常比 Stripe 更严格,特别是在财务实力和业务规模方面。Stripe 相对更适合中小型企业和初创公司。 + +如果公司规模不大或者是新创企业,Stripe 可能是更容易入门的选择。但如果您的业务已经有一定规模,并且能够满足更严格的财务要求,Adyen 可能提供更全面的服务。 + + + +## 还有其它聚合支付平台吗? + + +除了 Stripe 和 Adyen,还有许多其他的聚合支付平台可以考虑。 + + +1. PayPal: + - 优点:全球知名度高,支持多种货币,包括人民币。 + - 缺点:在中国的使用可能受限,费用相对较高。 + +2. 2Checkout (现在是 Verifone): + - 优点:支持全球200多个国家的支付,包括中国。 + - 缺点:费用可能较高,对某些高风险行业有限制。 + +3. Worldpay: + - 优点:支持多种支付方式,包括银联卡。 + - 缺点:可能更适合大型企业,小企业可能难以满足要求。 + +4. BlueSnap: + - 优点:支持全球100多种支付方式,包括一些中国本地支付方式。 + - 缺点:可能不如其他平台在中国市场知名。 + +5. Ping++(现已更名为 Chargebee): + - 优点:专注于亚太地区市场,支持多种中国本地支付方式。 + - 缺点:国际支付选项可能相对有限。 + +6. Airwallex(空中云汇): + - 优点:总部在澳大利亚,但在中国有很强的业务,支持跨境支付和多种货币。 + - 缺点:主要面向企业客户,可能不太适合小型商户。 + +7. PingPong: + - 优点:专注于跨境电商支付,支持多种货币结算到中国银行账户。 + - 缺点:主要面向跨境电商卖家,可能不适合所有类型的业务。 + +8. Payoneer: + - 优点:支持全球支付和收款,在中国市场有一定知名度。 + - 缺点:主要用于跨境支付,国内支付功能可能有限。 + +9. LianLian Pay(连连支付): + - 优点:中国本土支付公司,专注于跨境支付,了解中国市场。 + - 缺点:国际支付选项可能不如一些全球性平台丰富。 + +10. Braintree (PayPal 旗下): + - 优点:提供全面的支付解决方案,包括移动支付。 + - 缺点:在中国的使用可能受限,与 PayPal 类似。 + + +选择支付平台时,需要考虑以下因素: +1. 地理覆盖:确保平台支持您的目标市场。 +2. 支付方式:检查是否支持您需要的支付方式(如银联、信用卡等)。 +3. 费用结构:比较不同平台的交易费用、月费等。 +4. 技术集成:评估集成难度和可用的开发资源。 +5. 安全性和合规性:确保平台符合 PCI DSS 等安全标准。 +6. 客户支持:考虑时区和语言支持。 +7. 结算周期和货币:检查资金结算到您账户的速度和支持的货币。 +8. 额外功能:如反欺诈工具、订阅billing等。 + + +如果考虑中国市场,可以重点考虑 Ping++(Chargebee)、LianLian Pay 或 Airwallex 这类更了解中国市场的平台。这些平台通常能更好地处理中国的支付环境和法规要求。 + + + + + +## Paddle 怎么样 + +Paddle 确实是一个很好的选择,尤其是对于数字产品和软件服务。让我们详细分析一下 Paddle 的优缺点,以及它是否适合您的需求: + +Paddle 的优点: + +1. 全方位解决方案:Paddle 不仅提供支付处理,还包括税务管理、发票生成、订阅管理等功能。 + +2. 全球支付:支持多种货币和支付方式,包括信用卡、PayPal 等。 + +3. 税务合规:自动处理全球销售税和增值税,这对跨境销售非常有利。 + +4. 简化的商户模式:Paddle 作为商户记录(Merchant of Record),可以简化很多法律和税务复杂性。 + +5. 适合数字产品:特别适合销售软件、在线课程等数字产品。 + +6. 反欺诈保护:提供内置的反欺诈工具。 + +7. 订阅管理:强大的订阅billing和管理功能。 + +8. 开发者友好:提供良好的API和文档。 + +对于中国市场的考虑: + +1. 支付方式:Paddle 支持信用卡支付,这对于拥有国际信用卡的中国用户来说是可行的。 + +2. 银联支持:截至我最后更新的信息,Paddle 并不直接支持银联卡支付,这可能会限制一部分中国用户的使用。 + +3. 本地支付方式:Paddle 不支持微信支付或支付宝,这可能会影响部分用户的支付体验。 + +4. 跨境支付:Paddle 擅长处理跨境交易,这对于面向国际市场的中国企业很有优势。 + +5. 语言支持:Paddle 的界面主要是英文,这可能对一些中国用户造成使用障碍。 + + +总的来说,Paddle 是一个强大的平台,特别适合销售数字产品和服务。但对于主要面向中国市场的业务来说,可能需要权衡其便利性和可能失去的一部分无法使用国际支付方式的用户。如果您的目标用户群主要是能够使用国际信用卡的群体,那么 Paddle 会是一个很好的选择。 + + + +## 请帮我比较下 Paddle 和 Paypal + +当然,我很乐意为您比较 Paddle 和 PayPal 这两个支付平台。这两个平台都很受欢迎,但它们在功能和适用场景上有一些显著的差异。让我们从几个关键方面进行比较: + +1. 主要功能和目标市场: + +Paddle: +- 主要面向数字产品和软件服务销售 +- 提供全面的电子商务解决方案,包括支付处理、税务管理、发票生成等 +- 特别适合SaaS公司、应用开发者和数字内容创作者 + +PayPal: +- 通用型支付平台,适用于各种类型的在线和线下交易 +- 主要提供支付处理服务 +- 适合各种规模的企业和个人用户 + +2. 支付方式: + +Paddle: +- 支持信用卡、借记卡和PayPal +- 不直接支持中国本地支付方式(如银联、支付宝、微信支付) + +PayPal: +- 支持信用卡、借记卡、银行转账 +- 在某些市场支持本地支付方式 +- 在中国的使用可能受限 + +3. 全球化和本地化: + +Paddle: +- 强大的全球税务管理功能 +- 支持多种货币 +- 自动处理国际销售税和增值税 + +PayPal: +- 在全球范围内广泛使用和认可 +- 支持更多国家和地区 +- 提供多语言支持 + +4. 费用结构: + +Paddle: +- 通常采用统一费率(例如5%+固定费用) +- 费用包含了支付处理、税务管理等所有服务 + +PayPal: +- 费率根据交易类型、销售额和国家/地区而变化 +- 基本费率通常为每笔交易的2.9%+固定费用 +- 跨境支付可能有额外费用 + +5. 附加功能: + +Paddle: +- 提供订阅管理、软件许可管理 +- 作为商户记录(Merchant of Record),简化法律和税务复杂性 +- 内置的反欺诈工具 + +PayPal: +- 提供发票生成、大量支付处理等功能 +- 与众多电子商务平台集成 +- 提供PayPal Working Capital等融资选项 + +6. 开发者支持: + +Paddle: +- 提供全面的API和开发者工具 +- 文档和集成指南针对软件和数字产品优化 + +PayPal: +- 提供广泛的API和开发者资源 +- 支持多种编程语言和平台 + +7. 客户支持: + +Paddle: +- 提供个性化支持 +- 可能更适合处理数字产品相关的特定问题 + +PayPal: +- 提供全球范围的客户支持 +- 支持多种语言 + +8. 适合个人使用: + +Paddle: +- 允许个人开发者使用,但主要面向商业用途 +- 可能更适合有稳定数字产品收入的个人 + +PayPal: +- 非常适合个人用户,包括临时或小规模收款 +- 提供简单的个人账户选项 + +9. 中国市场考虑: + +Paddle: +- 在中国的使用可能受限,主要因为缺乏本地支付方式支持 +- 可能更适合面向国际市场的中国开发者 + +PayPal: +- 在中国的使用同样受限,但品牌认知度较高 +- 对于接收国际支付可能更为普遍 + +总结: +- 如果您主要销售数字产品或软件服务,特别是面向国际市场,Paddle可能更适合您。它提供了全面的解决方案,包括税务管理和订阅处理。 +- 如果您需要一个通用的支付解决方案,或者主要面向个人用户和小额交易,PayPal可能是更好的选择。它的使用更为广泛,对个人用户更友好。 + + + + +## Chargebee 和 Airwallex 的申请需要什么资质吗 + +Chargebee 和 Airwallex 都是提供支付和财务服务的平台,但它们的重点略有不同。让我们来看看它们各自的申请条件: + +Chargebee: + +1. 业务类型: + - 主要面向 SaaS 和订阅制业务,但也支持其他类型的在线业务。 + +2. 公司注册: + - 通常需要一个合法注册的公司实体。 + - 在某些情况下可能接受个人申请,但这取决于具体情况。 + +3. 业务规模: + - 没有严格的最低收入要求。 + - 适合从初创企业到大型公司的各种规模。 + +4. 文档要求: + - 公司注册证明 + - 法定代表人身份证明 + - 银行账户信息 + +5. 合规性: + - 需要遵守 PCI DSS(支付卡行业数据安全标准)。 + - 可能需要提供隐私政策和服务条款。 + +6. 技术要求: + - 需要有能力集成 Chargebee 的 API。 + +7. 地理位置: + - 支持多个国家和地区,但可能对某些高风险地区有限制。 + +Airwallex: + +1. 业务类型: + - 主要面向需要处理跨境支付和外汇的企业。 + - 适合电子商务、数字服务和国际贸易公司。 + +2. 公司注册: + - 要求申请者必须是合法注册的公司实体。 + - 通常不接受个人申请。 + +3. 业务规模: + - 可能有最低月交易量或年收入要求。 + - 更适合中型到大型企业,或快速增长的初创公司。 + +4. 文档要求: + - 公司注册证明 + - 董事和主要股东的身份证明 + - 近期财务报表 + - 银行对账单 + +5. 合规性: + - 严格的 KYC(了解你的客户)和 AML(反洗钱)审核。 + - 需要详细说明业务模式和资金流向。 + +6. 行业限制: + - 可能对某些高风险行业有限制或额外审核要求。 + +7. 地理位置: + - 虽然支持多个国家,但服务可用性可能因地区而异。 + - 对中国市场有较好的支持。 + +8. 技术集成: + - 需要有能力集成 Airwallex 的 API 和系统。 + +9. 财务稳定性: + - 可能会评估公司的财务健康状况和增长潜力。 + +申请建议: + +1. 直接联系:两家公司都建议潜在客户直接联系他们的销售团队,以获取最新和最准确的申请信息。 + +2. 准备商业计划:详细说明您的业务模式、预期交易量和增长计划。 + +3. 技术评估:评估您的技术团队是否能够集成这些平台的 API。 + +4. 合规准备:确保您的业务符合所有必要的合规要求,特别是在数据保护和金融法规方面。 + +5. 比较选项:考虑您的具体需求(如跨境支付、订阅管理等),选择最适合的平台。 + +6. 试用或演示:如果可能,请求产品演示或试用,以更好地了解平台功能。 + +总的来说,Chargebee 可能更适合需要强大订阅管理功能的企业,而 Airwallex 则更适合有大量跨境交易需求的公司。对于中国市场,Airwallex 可能提供更直接的支持,但这两个平台都需要仔细评估它们是否符合您的具体业务需求和中国相关法规。 + + + + +## BlueSnap 容易申请吗?支持个人申请吗? + + +BlueSnap 是一个全球支付平台,提供多种支付解决方案。让我们详细了解一下 BlueSnap 的申请流程和对个人申请的政策: + +BlueSnap 申请流程: + +1. 申请难度: + - BlueSnap 的申请过程相对简单,但要求可能比一些面向个人的平台(如 PayPal)更严格。 + - 申请难度主要取决于您的业务类型、规模和所在地区。 + +2. 个人申请政策: + - BlueSnap 主要面向企业客户,但在某些情况下也接受个人申请。 + - 个人申请通常针对独立开发者、自由职业者或小型在线业务。 + +3. 申请要求: + + 对于企业: + - 有效的商业登记证明 + - 公司法定代表人身份证明 + - 银行账户信息 + - 业务描述和网站 URL + - 预期月交易量 + + 对于个人(如果接受): + - 有效的身份证明 + - 地址证明 + - 银行账户信息 + - 业务描述或销售产品/服务的详细信息 + - 个人网站或在线商店 URL(如果有) + +4. 行业限制: + - BlueSnap 可能对某些高风险行业有限制或额外的审核要求。 + +5. 地理限制: + - 支持多个国家和地区,但服务可用性和具体要求可能因地区而异。 + +6. 合规要求: + - 需要遵守 PCI DSS 标准。 + - 可能需要提供隐私政策和服务条款。 + +7. 技术要求: + - 需要有能力集成 BlueSnap 的 API 或使用其支付页面。 + + + + +对于中国用户的特别考虑: + +1. 跨境支付:BlueSnap 支持跨境支付,这对面向国际市场的中国卖家有利。 + +2. 本地支付方式:了解 BlueSnap 是否支持对中国买家友好的支付方式。 + +3. 合规性:确保使用 BlueSnap 符合中国关于跨境支付和外汇管理的相关法规。 + +4. 语言支持:BlueSnap 的主要界面和支持可能是英语,这可能需要考虑。 + +总结: +BlueSnap 的申请过程对个人来说可能比一些专门面向个人的平台更复杂,但仍然可能接受个人申请,特别是对于有稳定在线业务的个人。申请难度和成功率将取决于您的具体情况、业务类型和所在地区。建议直接联系 BlueSnap 的销售团队,他们可以根据您的具体情况提供最准确的信息和指导。 + + + + + +## 2Checkout 的申请呢? + +2Checkout(现在是 Verifone 的一部分)是一个广泛使用的全球支付平台。让我们来看看 2Checkout 的申请流程和要求: + +2Checkout 申请流程: + +1. 申请难度: + - 相对较为简单,但仍需要满足一定的要求。 + - 对于小型企业和个人来说,通常比一些企业级支付解决方案更容易申请。 + +2. 个人申请政策: + - 2Checkout 接受个人申请,这使其成为独立开发者、自由职业者和小型在线业务的良好选择。 + +3. 申请要求: + + 对于企业: + - 有效的商业登记证明 + - 公司法定代表人身份证明 + - 公司银行账户信息 + - 网站 URL 和详细的业务描述 + + 对于个人: + - 有效的政府颁发的身份证明 + - 地址证明(如水电费账单) + - 个人银行账户信息 + - 网站 URL 或详细的产品/服务描述 + +4. 网站要求: + - 功能完善的网站,包含清晰的产品/服务描述 + - 明确的定价信息 + - 隐私政策和服务条款 + - 联系信息 + +5. 产品/服务审核: + - 2Checkout 会审核您计划销售的产品或服务,确保符合其使用政策。 + +6. 行业限制: + - 对某些高风险行业可能有额外的审核要求或限制。 + +7. 地理覆盖: + - 支持全球多个国家和地区的商户。 + +8. 合规要求: + - 需要遵守 PCI DSS 标准。 + - 可能需要提供额外的合规文档,取决于您的业务性质。 + +9. 技术集成: + - 提供多种集成选项,包括简单的结账页面和更高级的 API 集成。 + +申请步骤: + +1. 访问 2Checkout 官网,点击 "Sign Up" 或 "Get Started"。 +2. 选择账户类型(个人或企业)。 +3. 填写基本信息,包括联系方式和网站 URL。 +4. 提供详细的业务信息,包括您计划销售的产品或服务。 +5. 上传必要的文档,如身份证明和地址证明。 +6. 等待 2Checkout 团队审核您的申请。 + +申请建议: + +1. 准备完整的文档:确保所有必要的文档齐全且有效。 + +2. 网站优化:确保您的网站专业、信息完整,符合 2Checkout 的要求。 + +3. 详细描述:提供清晰、详细的业务或产品/服务描述。 + +4. 合规性:确保您的业务模式和产品/服务符合 2Checkout 的政策。 + +5. 响应及时:如果 2Checkout 团队有任何问题或需要额外信息,请及时回复。 + +对中国用户的特别考虑: + +1. 跨境支付:2Checkout 支持跨境交易,这对面向国际市场的中国卖家有利。 + +2. 本地支付方式:了解 2Checkout 是否支持对中国买家友好的支付方式。 + +3. 汇款和结算:了解资金如何转入中国银行账户,以及是否有任何限制。 + +4. 法规遵从:确保使用 2Checkout 符合中国关于跨境电子商务和支付的相关法规。 + +总结: +2Checkout 对个人申请相对友好,申请过程相对简单。它适合各种规模的在线业务,包括个人开发者和小型企业。对于中国用户来说,它提供了一个进入全球市场的好机会,但同时也需要注意跨境支付相关的法规遵从问题。 + + + + + + +## 2Checkout 对中国用户的支持怎么样 + + +2Checkout 对中国用户的支持有一些优势,但也存在一些限制。让我们详细分析一下: + +优势: + +1. 跨境支付支持: + - 2Checkout 支持全球支付,对于想要面向国际市场的中国卖家来说是个好选择。 + +2. 多种支付方式: + - 支持信用卡、PayPal 等国际支付方式,有利于接受来自全球客户的付款。 + +3. 多币种支持: + - 支持多种货币交易,包括美元、欧元等主要货币。 + +4. 税务处理: + - 提供国际税务管理功能,可以帮助处理跨境销售的税务问题。 + +5. 防欺诈系统: + - 内置的防欺诈工具可以保护卖家免受潜在的欺诈交易。 + +6. 开发者友好: + - 提供 API 和各种集成选项,适合技术型卖家。 + +限制和挑战: + +1. 本地支付方式有限: + - 不直接支持支付宝、微信支付等中国主流支付方式。 + - 这可能会影响面向国内市场的销售。 + +2. 语言支持: + - 主要界面和支持是英语,可能对不熟悉英语的中国用户造成使用障碍。 + +3. 客户支持时差: + - 客户支持可能不在中国时区,可能影响及时获得帮助。 + +4. 银行对接: + - 资金转入中国银行账户可能需要额外的步骤或时间。 + +5. 合规性问题: + - 使用国际支付平台需要遵守中国的跨境电商和外汇管理规定。 + - 卖家需要确保自己的业务符合这些规定。 + +6. 费用结构: + - 国际交易的费用可能比国内支付平台高。 + - 汇率转换可能产生额外成本。 + +7. 实名认证: + - 可能需要提供更多的身份证明文件,以满足国际支付平台的要求。 + +8. 市场认知度: + - 在中国市场,2Checkout 的品牌认知度可能不如一些本地或更大的国际支付平台。 + +建议: + +1. 目标市场评估: + - 如果主要面向国际市场,2Checkout 是一个不错的选择。 + - 如果主要面向中国国内市场,可能需要考虑其他更适合的支付解决方案。 + +2. 合规性检查: + - 咨询法律或财务顾问,确保使用 2Checkout 符合中国的相关法规。 + +3. 银行咨询: + - 与您的银行讨论接收国际支付的流程和可能的限制。 + +4. 双平台策略: + - 考虑同时使用 2Checkout 和一个本地支付平台,以覆盖更广泛的客户群。 + +5. 技术评估: + - 评估您的技术团队是否能够有效集成和管理 2Checkout 的系统。 + +6. 试用期: + - 如果可能,请求一个试用期来评估平台的实际表现和适用性。 + +总结: +2Checkout 对于想要开拓国际市场的中国卖家来说是一个有价值的选择,特别是在处理国际支付和跨境交易方面。然而,对于主要面向中国国内市场的企业,它可能不是最佳选择。在做决定之前,仔细评估您的业务需求、目标市场和技术能力是非常重要的。同时,确保充分了解并遵守相关的跨境电商和支付法规。 + + + + + + +本指南由[程序员出海社群](https://chengxuyuanchuhai.com/)创建,版权所有。`; diff --git a/src/inline.ts b/src/inline.ts index 7338ac6..1255c60 100644 --- a/src/inline.ts +++ b/src/inline.ts @@ -1,7 +1,6 @@ import { BunFile } from 'bun'; import path from 'path'; -import fs from 'fs'; - +import glob from 'fast-glob'; async function inlineMarkdownFiles() { // 读取所有 MD 文件 const files = [ @@ -10,15 +9,12 @@ async function inlineMarkdownFiles() { ]; const readme = path.join(import.meta.dir, '..', 'README.md'); files.push({ path: readme, name: 'readme' }); - // list docs files dynamically if needed + // list docs files dynamically using fast-glob const rootDir = path.join(import.meta.dir, '..', 'docs'); - const dirEntries = fs.readdirSync(rootDir, { withFileTypes: true }); - for (const entry of dirEntries) { - const filename = 'name' in entry ? entry.name : entry; - if (filename.endsWith('.md')) { - const name = path.basename(filename, '.md').replace(/[^a-zA-Z0-9_]/g, '_'); - files.push({ path: path.join(rootDir, filename), name }); - } + const mdFiles = await glob('**.md', { cwd: rootDir }); + for (const filename of mdFiles) { + const name = path.basename(filename, '.md').replace(/[^a-zA-Z0-9_]/g, '_'); + files.push({ path: path.join(rootDir, filename), name }); } let generatedCode = '// Generated by build script\n'; diff --git a/src/routes/todo.ts b/src/routes/todo.ts index f97dfdb..134ff37 100644 --- a/src/routes/todo.ts +++ b/src/routes/todo.ts @@ -162,3 +162,4 @@ app.route({ } }).addTo(app); +