From fbec819e70e7a812e99418a05deaa05fcaad3b33 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 12:34:18 +0000 Subject: [PATCH] Deploy to GitHub pages --- 404.html | 25 + CNAME | 1 + advanced/architecture.html | 29 + advanced/browser.html | 95 ++ advanced/contributing.html | 28 + advanced/develop.html | 32 + advanced/history.html | 28 + advanced/index.html | 28 + advanced/testing.html | 28 + advanced/thanks.html | 28 + api/index.html | 28 + architecture.png | Bin 0 -> 479363 bytes architecture.svg | 1 + assets/advanced_architecture.md.Pljt76DU.js | 1 + .../advanced_architecture.md.Pljt76DU.lean.js | 1 + assets/advanced_browser.md.CURKrjcr.js | 68 ++ assets/advanced_browser.md.CURKrjcr.lean.js | 68 ++ assets/advanced_contributing.md.CcXEnDf1.js | 1 + .../advanced_contributing.md.CcXEnDf1.lean.js | 1 + assets/advanced_develop.md.CCQONjp6.js | 5 + assets/advanced_develop.md.CCQONjp6.lean.js | 5 + assets/advanced_history.md.FDb9Wd5O.js | 1 + assets/advanced_history.md.FDb9Wd5O.lean.js | 1 + assets/advanced_index.md.epBIxi7X.js | 1 + assets/advanced_index.md.epBIxi7X.lean.js | 1 + assets/advanced_testing.md.BIJx2vTA.js | 1 + assets/advanced_testing.md.BIJx2vTA.lean.js | 1 + assets/advanced_thanks.md.CK7Fjmcb.js | 1 + assets/advanced_thanks.md.CK7Fjmcb.lean.js | 1 + assets/api_index.md.B1SyjzrW.js | 1 + assets/api_index.md.B1SyjzrW.lean.js | 1 + assets/app.CnTrt7QD.js | 1 + assets/basic_config.md.CIBSN9d7.js | 55 + assets/basic_config.md.CIBSN9d7.lean.js | 55 + assets/basic_index.md.BT38T7GH.js | 1 + assets/basic_index.md.BT38T7GH.lean.js | 1 + assets/basic_modules.md.R6u-LxoQ.js | 32 + assets/basic_modules.md.R6u-LxoQ.lean.js | 32 + assets/basic_start.md.UB_T-Yyu.js | 17 + assets/basic_start.md.UB_T-Yyu.lean.js | 17 + assets/basic_usage.md.ggWDU75P.js | 45 + assets/basic_usage.md.ggWDU75P.lean.js | 45 + assets/chunks/NpmBadge.BObfAVH-.js | 1 + assets/chunks/framework.P9qPzDnn.js | 18 + assets/chunks/theme.DXZpxO3K.js | 1 + assets/data_details.json | 958 ++++++++++++++++++ assets/deps.json | 12 + assets/guide_base_command.md.B1nKVjKI.js | 204 ++++ assets/guide_base_command.md.B1nKVjKI.lean.js | 204 ++++ assets/guide_base_events.md.BKi_1qAf.js | 63 ++ assets/guide_base_events.md.BKi_1qAf.lean.js | 63 ++ assets/guide_base_middleware.md.Do_XwOya.js | 59 ++ .../guide_base_middleware.md.Do_XwOya.lean.js | 59 ++ assets/guide_base_regexp.md.kd1jlc-g.js | 48 + assets/guide_base_regexp.md.kd1jlc-g.lean.js | 48 + .../guide_components_adapter.md.BkEYU-ym.js | 1 + ...ide_components_adapter.md.BkEYU-ym.lean.js | 1 + assets/guide_components_api.md.CDibfftx.js | 1 + .../guide_components_api.md.CDibfftx.lean.js | 1 + assets/guide_components_custom.md.BNIS-43m.js | 1 + ...uide_components_custom.md.BNIS-43m.lean.js | 1 + .../guide_components_elements.md.BEJCY6Yx.js | 1 + ...de_components_elements.md.BEJCY6Yx.lean.js | 1 + assets/guide_extend_tools.md.C1RkeOP0.js | 1 + assets/guide_extend_tools.md.C1RkeOP0.lean.js | 1 + assets/guide_index.md.CUmZPOqd.js | 1 + assets/guide_index.md.CUmZPOqd.lean.js | 1 + assets/guide_modules_context.md.CfNIj0Wx.js | 200 ++++ .../guide_modules_context.md.CfNIj0Wx.lean.js | 200 ++++ assets/guide_modules_decorator.md.DZm9Jfnd.js | 1 + ...uide_modules_decorator.md.DZm9Jfnd.lean.js | 1 + assets/guide_modules_filter.md.B6ZA5MSX.js | 1 + .../guide_modules_filter.md.B6ZA5MSX.lean.js | 1 + assets/guide_modules_i18n.md.DN93rR3l.js | 1 + assets/guide_modules_i18n.md.DN93rR3l.lean.js | 1 + assets/guide_modules_plugin.md.F2YmqKkM.js | 176 ++++ .../guide_modules_plugin.md.F2YmqKkM.lean.js | 176 ++++ assets/guide_modules_rescript.md.Bl-r_LjA.js | 8 + ...guide_modules_rescript.md.Bl-r_LjA.lean.js | 8 + assets/guide_modules_schema.md.D-o7cJAG.js | 49 + .../guide_modules_schema.md.D-o7cJAG.lean.js | 49 + assets/guide_modules_service.md.DMQ0sFPf.js | 1 + .../guide_modules_service.md.DMQ0sFPf.lean.js | 1 + assets/guide_start_environment.md.X_FtbxVb.js | 1 + ...uide_start_environment.md.X_FtbxVb.lean.js | 1 + assets/guide_start_publish.md.s23QhAsX.js | 40 + .../guide_start_publish.md.s23QhAsX.lean.js | 40 + assets/guide_start_setup.md.ZNwpORZ-.js | 144 +++ assets/guide_start_setup.md.ZNwpORZ-.lean.js | 144 +++ assets/index.md.P8--M6MF.js | 1 + assets/index.md.P8--M6MF.lean.js | 1 + .../inter-italic-cyrillic-ext.r48I6akx.woff2 | Bin 0 -> 43112 bytes assets/inter-italic-cyrillic.By2_1cv3.woff2 | Bin 0 -> 31300 bytes assets/inter-italic-greek-ext.1u6EdAuj.woff2 | Bin 0 -> 17404 bytes assets/inter-italic-greek.DJ8dCoTZ.woff2 | Bin 0 -> 32564 bytes assets/inter-italic-latin-ext.CN1xVJS-.woff2 | Bin 0 -> 120840 bytes assets/inter-italic-latin.C2AdPX0b.woff2 | Bin 0 -> 74784 bytes assets/inter-italic-vietnamese.BSbpV94h.woff2 | Bin 0 -> 14884 bytes .../inter-roman-cyrillic-ext.BBPuwvHQ.woff2 | Bin 0 -> 40488 bytes assets/inter-roman-cyrillic.C5lxZ8CY.woff2 | Bin 0 -> 29164 bytes assets/inter-roman-greek-ext.CqjqNYQ-.woff2 | Bin 0 -> 16272 bytes assets/inter-roman-greek.BBVDIX6e.woff2 | Bin 0 -> 29920 bytes assets/inter-roman-latin-ext.4ZJIpNVo.woff2 | Bin 0 -> 110160 bytes assets/inter-roman-latin.Di8DUHzh.woff2 | Bin 0 -> 67792 bytes assets/inter-roman-vietnamese.BjW4sHH5.woff2 | Bin 0 -> 14072 bytes assets/kotori.mp3 | Bin 0 -> 1440 bytes assets/modules_index.md.D1mO3gni.js | 1 + assets/modules_index.md.D1mO3gni.lean.js | 1 + assets/style.B8KJTn0Z.css | 1 + basic/config.html | 82 ++ basic/index.html | 29 + basic/modules.html | 59 ++ basic/start.html | 44 + basic/usage.html | 72 ++ data.json | 167 +++ favicon.svg | 81 ++ fluoro.png | Bin 0 -> 25881 bytes guide/base/command.html | 231 +++++ guide/base/events.html | 90 ++ guide/base/middleware.html | 86 ++ guide/base/regexp.html | 75 ++ guide/components/adapter.html | 28 + guide/components/api.html | 28 + guide/components/custom.html | 28 + guide/components/elements.html | 28 + guide/extend/tools.html | 28 + guide/index.html | 28 + guide/modules/context.html | 227 +++++ guide/modules/decorator.html | 28 + guide/modules/filter.html | 28 + guide/modules/i18n.html | 28 + guide/modules/plugin.html | 203 ++++ guide/modules/rescript.html | 35 + guide/modules/schema.html | 76 ++ guide/modules/service.html | 28 + guide/start/environment.html | 28 + guide/start/publish.html | 67 ++ guide/start/setup.html | 171 ++++ hashmap.json | 1 + index.html | 28 + logo.png | Bin 0 -> 16289 bytes modules/index.html | 28 + schema/1.3.0.json | 74 ++ vp-icons.css | 1 + 144 files changed, 6046 insertions(+) create mode 100644 404.html create mode 100644 CNAME create mode 100644 advanced/architecture.html create mode 100644 advanced/browser.html create mode 100644 advanced/contributing.html create mode 100644 advanced/develop.html create mode 100644 advanced/history.html create mode 100644 advanced/index.html create mode 100644 advanced/testing.html create mode 100644 advanced/thanks.html create mode 100644 api/index.html create mode 100644 architecture.png create mode 100644 architecture.svg create mode 100644 assets/advanced_architecture.md.Pljt76DU.js create mode 100644 assets/advanced_architecture.md.Pljt76DU.lean.js create mode 100644 assets/advanced_browser.md.CURKrjcr.js create mode 100644 assets/advanced_browser.md.CURKrjcr.lean.js create mode 100644 assets/advanced_contributing.md.CcXEnDf1.js create mode 100644 assets/advanced_contributing.md.CcXEnDf1.lean.js create mode 100644 assets/advanced_develop.md.CCQONjp6.js create mode 100644 assets/advanced_develop.md.CCQONjp6.lean.js create mode 100644 assets/advanced_history.md.FDb9Wd5O.js create mode 100644 assets/advanced_history.md.FDb9Wd5O.lean.js create mode 100644 assets/advanced_index.md.epBIxi7X.js create mode 100644 assets/advanced_index.md.epBIxi7X.lean.js create mode 100644 assets/advanced_testing.md.BIJx2vTA.js create mode 100644 assets/advanced_testing.md.BIJx2vTA.lean.js create mode 100644 assets/advanced_thanks.md.CK7Fjmcb.js create mode 100644 assets/advanced_thanks.md.CK7Fjmcb.lean.js create mode 100644 assets/api_index.md.B1SyjzrW.js create mode 100644 assets/api_index.md.B1SyjzrW.lean.js create mode 100644 assets/app.CnTrt7QD.js create mode 100644 assets/basic_config.md.CIBSN9d7.js create mode 100644 assets/basic_config.md.CIBSN9d7.lean.js create mode 100644 assets/basic_index.md.BT38T7GH.js create mode 100644 assets/basic_index.md.BT38T7GH.lean.js create mode 100644 assets/basic_modules.md.R6u-LxoQ.js create mode 100644 assets/basic_modules.md.R6u-LxoQ.lean.js create mode 100644 assets/basic_start.md.UB_T-Yyu.js create mode 100644 assets/basic_start.md.UB_T-Yyu.lean.js create mode 100644 assets/basic_usage.md.ggWDU75P.js create mode 100644 assets/basic_usage.md.ggWDU75P.lean.js create mode 100644 assets/chunks/NpmBadge.BObfAVH-.js create mode 100644 assets/chunks/framework.P9qPzDnn.js create mode 100644 assets/chunks/theme.DXZpxO3K.js create mode 100644 assets/data_details.json create mode 100644 assets/deps.json create mode 100644 assets/guide_base_command.md.B1nKVjKI.js create mode 100644 assets/guide_base_command.md.B1nKVjKI.lean.js create mode 100644 assets/guide_base_events.md.BKi_1qAf.js create mode 100644 assets/guide_base_events.md.BKi_1qAf.lean.js create mode 100644 assets/guide_base_middleware.md.Do_XwOya.js create mode 100644 assets/guide_base_middleware.md.Do_XwOya.lean.js create mode 100644 assets/guide_base_regexp.md.kd1jlc-g.js create mode 100644 assets/guide_base_regexp.md.kd1jlc-g.lean.js create mode 100644 assets/guide_components_adapter.md.BkEYU-ym.js create mode 100644 assets/guide_components_adapter.md.BkEYU-ym.lean.js create mode 100644 assets/guide_components_api.md.CDibfftx.js create mode 100644 assets/guide_components_api.md.CDibfftx.lean.js create mode 100644 assets/guide_components_custom.md.BNIS-43m.js create mode 100644 assets/guide_components_custom.md.BNIS-43m.lean.js create mode 100644 assets/guide_components_elements.md.BEJCY6Yx.js create mode 100644 assets/guide_components_elements.md.BEJCY6Yx.lean.js create mode 100644 assets/guide_extend_tools.md.C1RkeOP0.js create mode 100644 assets/guide_extend_tools.md.C1RkeOP0.lean.js create mode 100644 assets/guide_index.md.CUmZPOqd.js create mode 100644 assets/guide_index.md.CUmZPOqd.lean.js create mode 100644 assets/guide_modules_context.md.CfNIj0Wx.js create mode 100644 assets/guide_modules_context.md.CfNIj0Wx.lean.js create mode 100644 assets/guide_modules_decorator.md.DZm9Jfnd.js create mode 100644 assets/guide_modules_decorator.md.DZm9Jfnd.lean.js create mode 100644 assets/guide_modules_filter.md.B6ZA5MSX.js create mode 100644 assets/guide_modules_filter.md.B6ZA5MSX.lean.js create mode 100644 assets/guide_modules_i18n.md.DN93rR3l.js create mode 100644 assets/guide_modules_i18n.md.DN93rR3l.lean.js create mode 100644 assets/guide_modules_plugin.md.F2YmqKkM.js create mode 100644 assets/guide_modules_plugin.md.F2YmqKkM.lean.js create mode 100644 assets/guide_modules_rescript.md.Bl-r_LjA.js create mode 100644 assets/guide_modules_rescript.md.Bl-r_LjA.lean.js create mode 100644 assets/guide_modules_schema.md.D-o7cJAG.js create mode 100644 assets/guide_modules_schema.md.D-o7cJAG.lean.js create mode 100644 assets/guide_modules_service.md.DMQ0sFPf.js create mode 100644 assets/guide_modules_service.md.DMQ0sFPf.lean.js create mode 100644 assets/guide_start_environment.md.X_FtbxVb.js create mode 100644 assets/guide_start_environment.md.X_FtbxVb.lean.js create mode 100644 assets/guide_start_publish.md.s23QhAsX.js create mode 100644 assets/guide_start_publish.md.s23QhAsX.lean.js create mode 100644 assets/guide_start_setup.md.ZNwpORZ-.js create mode 100644 assets/guide_start_setup.md.ZNwpORZ-.lean.js create mode 100644 assets/index.md.P8--M6MF.js create mode 100644 assets/index.md.P8--M6MF.lean.js create mode 100644 assets/inter-italic-cyrillic-ext.r48I6akx.woff2 create mode 100644 assets/inter-italic-cyrillic.By2_1cv3.woff2 create mode 100644 assets/inter-italic-greek-ext.1u6EdAuj.woff2 create mode 100644 assets/inter-italic-greek.DJ8dCoTZ.woff2 create mode 100644 assets/inter-italic-latin-ext.CN1xVJS-.woff2 create mode 100644 assets/inter-italic-latin.C2AdPX0b.woff2 create mode 100644 assets/inter-italic-vietnamese.BSbpV94h.woff2 create mode 100644 assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 create mode 100644 assets/inter-roman-cyrillic.C5lxZ8CY.woff2 create mode 100644 assets/inter-roman-greek-ext.CqjqNYQ-.woff2 create mode 100644 assets/inter-roman-greek.BBVDIX6e.woff2 create mode 100644 assets/inter-roman-latin-ext.4ZJIpNVo.woff2 create mode 100644 assets/inter-roman-latin.Di8DUHzh.woff2 create mode 100644 assets/inter-roman-vietnamese.BjW4sHH5.woff2 create mode 100644 assets/kotori.mp3 create mode 100644 assets/modules_index.md.D1mO3gni.js create mode 100644 assets/modules_index.md.D1mO3gni.lean.js create mode 100644 assets/style.B8KJTn0Z.css create mode 100644 basic/config.html create mode 100644 basic/index.html create mode 100644 basic/modules.html create mode 100644 basic/start.html create mode 100644 basic/usage.html create mode 100644 data.json create mode 100644 favicon.svg create mode 100644 fluoro.png create mode 100644 guide/base/command.html create mode 100644 guide/base/events.html create mode 100644 guide/base/middleware.html create mode 100644 guide/base/regexp.html create mode 100644 guide/components/adapter.html create mode 100644 guide/components/api.html create mode 100644 guide/components/custom.html create mode 100644 guide/components/elements.html create mode 100644 guide/extend/tools.html create mode 100644 guide/index.html create mode 100644 guide/modules/context.html create mode 100644 guide/modules/decorator.html create mode 100644 guide/modules/filter.html create mode 100644 guide/modules/i18n.html create mode 100644 guide/modules/plugin.html create mode 100644 guide/modules/rescript.html create mode 100644 guide/modules/schema.html create mode 100644 guide/modules/service.html create mode 100644 guide/start/environment.html create mode 100644 guide/start/publish.html create mode 100644 guide/start/setup.html create mode 100644 hashmap.json create mode 100644 index.html create mode 100644 logo.png create mode 100644 modules/index.html create mode 100644 schema/1.3.0.json create mode 100644 vp-icons.css diff --git a/404.html b/404.html new file mode 100644 index 00000000..75ecb418 --- /dev/null +++ b/404.html @@ -0,0 +1,25 @@ + + + + + + 404 | Kotori + + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..b433c451 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +https://kotori.js.org \ No newline at end of file diff --git a/advanced/architecture.html b/advanced/architecture.html new file mode 100644 index 00000000..59ed3665 --- /dev/null +++ b/advanced/architecture.html @@ -0,0 +1,29 @@ + + + + + + Architecture | Kotori + + + + + + + + + + + + + + + + + + +
Skip to content

Architecture

Kotori use workspace developing (monorepo) by pnpm and submodules management by git, and linter and formatter by Biome (fucks eslint and prettier).

Packages

fluoro (submodule)

fluoro

Fluoro is universal meta-framework,provides Context Modules and Events. it is the base of whole Kotori,more details view Fluoro.

@kotori-bot/core

@kotori-bot/core

It is the core of Kotori and provides many important features of kotori (encapsulates fluoro).It has fully the support for browser and other not node.js (such as quick.js or service-worker),more details view Use in browser.

@kotori-bot/loader

@kotori-bot/loader

It encapsulates @kotori-bot/loader and provides some interface and features need server environments (Node.js).

@kotori-bot/logger

@kotori-bot/logger

It is fully functional logger base on adapters thinking and supports browser.

@kotori-bot/i18n

@kotori-bot/i18n

It is a i18n module,provides i18n for @kotori-bot/core.

@kotori-bot/tools

@kotori-bot/tools

It is a tools module,provides some useful tools for @kotori-bot/core and @kotori-bot/loader.

tsukiko

tsukiko

It used to parse and check data type at running time.

Process image

architecture

+ + + + \ No newline at end of file diff --git a/advanced/browser.html b/advanced/browser.html new file mode 100644 index 00000000..5a8831d9 --- /dev/null +++ b/advanced/browser.html @@ -0,0 +1,95 @@ + + + + + + Use in browser | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

Use in browser

To wait better supports...

bash
pnpm install @kotori-bot/core

The @kotori-bot/core package is the core package of the bot,it only used ecmascript standard api, so you can use it in any the environments which support ecmascript >= 2020.

typescript
import { Adapter, Api, Core, Elements, type Message, Messages, MessageScope } from '@kotori-bot/core'
+
+const core = new Core({
+  global: {
+    commandPrefix: '/'
+  }
+})
+
+function MyPlugin(ctx: Core) {
+  ctx.command('echo <msg>').action(({ args: [msg] }, session) => {
+    alert(`You said: ${msg}`)
+    console.log(session)
+  })
+}
+
+core.load(MyPlugin)
+
+core.start()
+
+class BrowserAdapter extends Adapter {
+  public platform = 'browser'
+
+  public constructor(ctx: Core) {
+    super(ctx, { commandPrefix: '/', extends: 'browser', master: '1', lang: 'zh_CN' }, 'browser')
+  }
+
+  public api = new (class extends Api {
+    public getSupportedEvents(): ReturnType<Api['getSupportedEvents']> {
+      return ['on_message']
+    }
+  })(this) as Api
+
+  public elements = new (class extends Elements {
+    getSupportsElements(): ReturnType<Elements['getSupportsElements']> {
+      return []
+    }
+
+    decode(message: Message): string {
+      return message.toString()
+    }
+
+    encode(raw: string): Message {
+      return Messages(raw)
+    }
+  })(this) as Elements
+
+  public handle = this.session.bind(this)
+
+  public start() {}
+  public stop() {}
+  public send() {}
+}
+
+const bot = new BrowserAdapter(core)
+
+const result = prompt('input:')
+
+bot.handle('on_message', {
+  type: MessageScope.PRIVATE,
+  message: result ?? '',
+  messageAlt: 'alt',
+  messageId: '1',
+  time: Date.now(),
+  userId: '1',
+  sender: {
+    nickname: 'my-browser'
+  }
+})
+ + + + \ No newline at end of file diff --git a/advanced/contributing.html b/advanced/contributing.html new file mode 100644 index 00000000..27e0882b --- /dev/null +++ b/advanced/contributing.html @@ -0,0 +1,28 @@ + + + + + + Contributing | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

Contributing

TIP

Here need to improved.

This project is open source and we welcome your contributions!

Steps

  1. Fork it!

  2. Create your feature branch: git checkout -b my-new-feature

  3. Commit your changes: git commit -am 'Add some feature'

  4. Push to the branch: git push origin my-new-feature

  5. Submit a pull request 😄

More details please refer to CONTRIBUTING.md

Docs standards

It's used for documentation purposes and styles (such as language and formatting).

+ + + + \ No newline at end of file diff --git a/advanced/develop.html b/advanced/develop.html new file mode 100644 index 00000000..e5517506 --- /dev/null +++ b/advanced/develop.html @@ -0,0 +1,32 @@ + + + + + + Develop | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

Develop

As dependence

bash
pnpm install kotori-bot

Of course, you can also install @kotori-bot/core or @kotori-bot/loader by according your needs, about the difference and modifications between them, see architecture.

typescript
import { Loader } from 'kotori-bot'
+
+const loader = new Loader()
+
+loader.run(true)

Secondary development

1.Clone the repository

bash
git clone https://github.com/kotorijs/kotori

2.Install dependencies

bash
pnpm install

3.Run

bash
pnpm dev

Other scripts:

  • build Build all packages at the workspace
  • build:action Build all packages at the workspace base safe mode.
  • dev:only Only start else nodemon
  • pub Publish all packages at the workspace base public access
  • test Run all unit tests at the workspace
  • version Generate CHANGELOG.md
+ + + + \ No newline at end of file diff --git a/advanced/history.html b/advanced/history.html new file mode 100644 index 00000000..7f14c6a1 --- /dev/null +++ b/advanced/history.html @@ -0,0 +1,28 @@ + + + + + + History | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

History

TIP

Here need to improved.

On May In 2023 years,AI chat models(mainly referred to Claude and OpenAi) rose,I was interested in them. Many people use python to build QQ chatbot and connect to the AI chat models,but as a JavaScript developer, I decided to use JavaScript to do the same thing (Just for fun and to learn).Of course,at that time I didn't know that the community had already the chatbot framework base on Node.js.

At first,I only intended to implement QQ platform's access and the project's name is ISLABot.The name could be followed 2022 years and more early,at that time I was develop another chatbot framework's plugins by chinese language(be like shit),I named the plugin ISLABot(was from the anime character).I forgot the time when started use typescript as developing language for the project.The first commit to github is at 14th on June and the project had already renamed Kotori Bot,at the some time I fell in love with using romaji to named the project.

During the 0.x ~ 1.0 version,I had been adapted to QQ platform(base on go-cqhttp), During that time,I referred to many similar projects's api interface designs and thinkings.Finally,I released v1.0 at 29th on Dec In 2023 and moved repository from my own account biyuehu/kotori-bot to organization account kotorijs/kotori.

Waiting update...

+ + + + \ No newline at end of file diff --git a/advanced/index.html b/advanced/index.html new file mode 100644 index 00000000..e1a0db3f --- /dev/null +++ b/advanced/index.html @@ -0,0 +1,28 @@ + + + + + + Fluoro | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

Fluoro

TIP

Here need to improved.

logo

Fluoro

⚡ A modern and universal Meta-Framework to construct other frameworks. ⚡

It refers to thoughts which are Aspect-Oriented Programming, Inversion of Control and Dependency Injection. Kotori's core is based it.

Why is Fluoro?

Fluoro, its original word is Fluorine (F₂), it is the strongest monatomic oxidant in nature, except for some inert gases, it can react with almost all elements, and its compounds are extremely rich and diverse and have stability. Take this name, hoping Fluoro has strong ability, thus build various diversified frameworks and provide strong underlying support.

Other applications

Misakura is a galgame(Visual novel games) made framework based on tauri, PIXI.js (solid.js) and Fluoro. It used Fluoro to implement scripts(lines command) parser.

MoeHub is a anime and galgame characters showing system, its backend used Fluoro to implement easy to manage database by console interaction.

License

GPL-3.0 license.

+ + + + \ No newline at end of file diff --git a/advanced/testing.html b/advanced/testing.html new file mode 100644 index 00000000..848739ca --- /dev/null +++ b/advanced/testing.html @@ -0,0 +1,28 @@ + + + + + + Testing | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

Testing

TIP

Here need to improved.

Kotori used Jest to implement unit tests.

Running tests

To run the tests, run:

bash
pnpm test
+ + + + \ No newline at end of file diff --git a/advanced/thanks.html b/advanced/thanks.html new file mode 100644 index 00000000..d2ab16a4 --- /dev/null +++ b/advanced/thanks.html @@ -0,0 +1,28 @@ + + + + + + Thanks | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

Thanks

Open source is a great thing,the developing process of every open-source projects need other projects' support and reference to help self improvement and walking farther.

List

Thanks, referred more and less them at kotori's whole developing process (the ranking is not in order):

License

GPL-3.0 license.

+ + + + \ No newline at end of file diff --git a/api/index.html b/api/index.html new file mode 100644 index 00000000..20fea4c1 --- /dev/null +++ b/api/index.html @@ -0,0 +1,28 @@ + + + + + + Api references | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

Api references

This page is currently being written.For the time being, you can only view the TSDoc comments in the source code for details.Italics indicate that the documentation for this content needs to be improved.

Context

Tools

Components

Service

+ + + + \ No newline at end of file diff --git a/architecture.png b/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..bff4cfd0c9db0907bc5a43605adcbd838757beef GIT binary patch literal 479363 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

ScH83^O%Fd>dd|1vpL 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

Zi3%*)5XdaIkK*6;GhU{Q^7 zeihw|=UaoqaT$q`%pH58$QO=Vv(Djv4-452 zzPF^{mtde^Qu)rHYCi}^)*Mw}##6xNWj|I^y2de{8l&?M;b-orwr*a&<<(EBn_T-$ z_zGEnM8;>o41U>O{g}f$-DqXV+rX_PY&%{`R=`T(bx2Q$Sp79c1vM7^mI`aq-|Bct zdI!d(57H)5+XW!VLAAa)!!Iw-+{U}MD=T=8`pGno);-MHBWJhwW`~KUg?yh2jNMye znFkZv0)98Y+C9){Hu=fZK@?DERvDU@P^9DarSyjA?d1roxOS5WO!kDrk&h_;r4X2- zg?NK7?f@R^{}uX$7O!Vb_w$F!@I4gl?0Q{;3uGB|RLmdt`(h7Hjw3<)1(30@z1WAq zVfVx_1Et_P1~#W1&(hD%%x1|(n_*0DDH2L3!4vqNQ(>rZWq*RsXI(7Ap7**Vv1qA# z)W+MwN2f$Yy>Vte#a)hf`i>(-My3#7 zXjHg9y+?~djT6vIyC`6vQR6}?P{G1;TJX`TqE$T>|F=ZsLHjRr@|?|8lF%c)z`!mt z$Rc<9{8C(CotC`6hdCfGYeudjexQ8A_#Igv^8>2A0mCJQgV-OKGDRcazP_VzCLwuO zd+(nS?u)2sXo^6%pE-WcqNg+Ij7o7E^eTpJ97ts@`hSGo zJAbIgtS^J|coMzL{Ee$jMkHBsFEL5}Tgb-{`%6{M5Gm8DI&Ug+L>zj~gEYyw6ZTID z>$mwIOUBMMJcT|dSs|vlF^Gb7ptkG%$fr*s?`tz=hDpgVsIjW$+6(hWS$sKVlF?O= znNp~KkImgR*_17^sVtFhYtP4X;-BDD=}kNK3$!I3#3f$nV;=SJT&U#}9aq4LgNO^d za8(GLbSmc3<)Obl>?O}SeBXNa;h3)h3?3cmNP;A7!$(8h=tcsnEux;6J2Y_{FZr@D z*pPrK6)U!IfZ-QL0C3<`c}B_g1YWOD01Y=`2cz zs$`nTdM+o$m_jV3P}G_*$*p>{if#Am7v#2&q6}Z@^nskc$AsvFtbTt&rF@iSV4!&1 zSzzN^t$oMmZR}OQfu-tqCvx?P{PQIFtAnk2^0``rk6VezHD;C7$}Gl<+$VvXR!Cq= z&&ly`78+~`#zy@sYq`d-N4UQO1GSavQQckZ+wU&w1`eCHSa zO52(9J2^@&yf7VpHKcM%xNv-1^ilWQ(F5UIs@(~#AKa>U$FC?QJ)cA7%_H}MQbcja zhJk^hwY?n-QhH+N1q^PXtcMA#UAlbvtimz0bp*jL7%feWj6fE?05Wh)OiT~;bp+A} zino617 zM<+3YP2a>ZSN{tmC`dYLc;Kf8rP2NS_m4Rsks^QS5O|EJ0WfHVk@AF9xS=?hv4amB zoM3%K9xoN>sHLS5yBeQ=);+cj=ynjg29uNn~ z2uOo;mxPokf;1u}jUe6KA<~U>Hz=h@_gfp!_1rh!f4uh?XN)`Ke(b%!{j0U+nrlvF z(sRNeX!JUljfEeaq;*GA`!{R%*($Jnt=o*o2~PCD4v=mi`P33iUl^jBlug6Z#~twy zyh*f&@0NAn5AiI}2rqb?mBtc$tdxoCdHpx%J``uiBXB_k4Ut%X#p*7`rV%Q8ha>`w zZa+Hs`v);{kPL_vRox957=P6L)|bw=#$7gsfs{d&R2<=qz3BWpg*9o>OKaD3(_zA>9LrM zh4tQ-tFBYkwQ(P!PQbf8`SWL}cfY^#;VZc{4SRe_Ox-75TP|kuD#Gtgx~#829n2bb zr@UuU6OXgUgZWqSu)fpQ{DQ`+VO88$ma#<%f91+KPdKJp{&IwNrHA%I2b78C zK~qDPcdHK(#R6l*$-@PX!hY8G_F+Rq&)mN})cHkzZr%2t8X=CqrOTSP$iDPef4<)) zsiX)^Xo?UTYe!hRHM`aKpZftZC%5~^L%F2yP>+fZ8Pf0@TJ5(LXyz`M6^a>93ZtoD z9AJjs5vj~C)@D#*7GT$M4iLZPYMVGDbqnR`YZo*ww{0eLKxqhFUPb0AdLR(UNh>!bytehGuHU6CfaQZY@ zgH^a!3U#aCx$nyh&%AdFhiCSO#W-;M=X}_#^3u?Lr}N3hQsP_Z{16Ok)-NFM8B!V) zV=KmQV*%%RKF0nb-Bxe^cJ9vZoxwZ%GPIFO+OEFWC&L?Rl#8KLLT`Px>|%x-4SL}) z$e)`&u~c|5*9Kzo&DG;RY8Kzf(|v*)##Gub1mDgNxPtG*z@|FmNMt)U1QnNp*mxcTO@>8YLRiQsv{b+%@xn&3m?e4#5XQ{Pe0ywyeycmQ=&mh za=BQ{IkeF-GUkWu1I1(&kz&QiY_zu*@vgrvQ1uphQzLv}Vybplp{V$Qf{)|_0Y`P*0kefoX>O;*3azQn`ZR|`ei$d=Nq_2zm ze$#xs9BAW||M+%PxO}C|mmH7D&)X|^0&j*Wd``V*GSBYXL|2d!p|H_6ztt&Y@{0}T zp^eImE4Fnd`3I{;qx~80p`rSdd<=Gku^!e6nX180OrR)_xVymdD%&=L1qi5p0iSBNyR4{PV z#%ccK-k?&NbAsGQ^IRK>Dyv=Pulk`yOE^YXez5bw7#!V*I+##R?N%-<;K@-r>j|`r z8?E8E{`dNvnR*`3l-l>6>I)wQU-?};2Gupjus7n`%1sAbJ7-`1R1{7UIrCP z{)6EzFkV7QO5ccJT6r02bLs7)1Li;8u%D|r@HP>t~&oo~W`tW_IzW#!Q zUWkxa+&xSkWF1gKv&5|)hwH@&r4`n|Yn7hAi*5Ftj7p*O*ulV5=us}otZQEf4c0w!`FQ6ez z^rj0N6O%=Q4}M__DUh`WMREPr!h+%o((Y0`Q`EJ&xe{XCm#IWM7^)g+*xqSKK=Rn8 z^&4}~(0Ww%G8M_?rXHUDH;2~dmmUT@JQNDp&RU@fd4MJPUtgOSOZ|E7Z}pUicvO;J zm-LA;(xhIEeeu$5PzX)Ovgmhl6G|)*gtPx2^3ExH8KcmIGOEG`zGWwE&D6v zF&|W=`E15J$uG9gxdli6-tl~Q0PMQAf~N)=(8lJ?{`xAy{6Gd3l7o!?rIi)aez&{2Orj#0EX=nR8ir?zTS)$=c9={?PnlJ#gdpSmh=7pLRmQ>Kj-xt?VjnS^KW3m_Qo&nJ6Qd+95x@z^g_2fIx9*O#6X*U z^dWYbzulNtc>^4394oOYM0j9E0-gsASk}0R9-_|8T7Kiz<{o^#Q}3As+>ZS#!om0+ zqAQy`ihsOk*5uA&4<{C4c5GJC*`pn3TyT;iNJzKTe3wH67DI@#mHXQ8^b-XIVUW>A zI@{cX|F_PzUw3c1Y+?_;)`Wcm(b1^Ax81L#8FbFQzFvsL-C_^8NoybjdyeU;vaUIzz~`ZQG1jT1wcRr49#2IWw|lu-M5pV|ekLZb2ZZ$dZ62;iGqzEco3itU^sleD(7!d!C!0M1()i%Ncg< z{Ky&5$iv?DAh?ZX0I&7E-g%U)Er{4c6R20ibCLt}YSbGvc>HeO*kIrQ0>#d45W90g zv7LaKAvt;oyfY}2pKC3?BbjGg9W*R9F*%xFa={D>-m`w?nZ~?boon@Pk4Y62N^EM$ z@IsYMSxj($xe#ES`SY04T^70QgN)%1m`3QEw&uBi=i^yn%W;}F8ULTYD-V7sn`5O@ zdUKI}^-89`-8Lkypb+X&08-#Ef4V23e*Oc;jpKpqVQHMCuNn~HEX|5<%+M1 zZ`hzq7!#Xgpc8`4=Wr>b-0c@5GQ=;K4C?)_q7z|<6;?NzQ960%4VzATd*c#~66lT2 z1$5s*pX#a#gbc#C5M`Bu zJ{}^ChpL?&2iB-s57w2$<8V2LNj|`v;#kcJ)KX~K9d;yLhv&8izV^kh-kFCeWaiL9;IMl`9w!Z?AME4xY#ww zdRutGyiCbCmzHS-#8Y7QKNs7PS8dWcvta)J~ zU+GzHqEg}ApZxAXuamE65dX%R^Ouvmhke}D{*oyB9IH>AU))aH z;I4DrMzl>VkY^*bt2d&9-)qE|^5xwm?GQz|-xPZ2EXu-{(J0pW-r{Uepk73VzmvJS-_?N$2czT9S7MaIx${S^(6y|77 zvTW(1cPM~%oVQMU9;IbbX}iwpG1Hax`*&7wl^_1dx@2){w4$R7^-r0mud)3D zqz{#i2jlj^;*rOoGa90TW+K#-*B>J4_Gi#o0z|3b*gxFMj_BpfmtfpCBL^$9mWz_4 zCmMdy5yQO$@m?^PJYXXnRupQbC0@WC_Wama$1jPw-&R&uzJLE78d#qF^JmwissiDI zV_2sY3$)C%S}oW$Q1Qy-J>Q3r-$n8xQz`xoF5SJMOSRGo#{r*218*1uOD6NFqT-z! zF)@2SUChYM*j_oK{~`9GR-SAS_kf+>{L^U=S`02KW!{c8q-SK5k(A_q@%_Eu8B~DR zDUHf4d2w}>0l2ZX#%f&sdBaW#>rjM*MFj$+p?|*xX15Yz^`VRJmRz9MMgVpPz&LFk zA_vG)AX>LR(eJgs1;{NmGIQVIKi*Buyx^u9Ae5+6up^W>@-hz}9@bI}8PA93Dl^_I zpdthIrTx`k&7XhZ_U+pf)mR5%<|IGT@$(RXyG$6A^5p8 zqK&rA%2P~{LX>T}+MYQCQku$LXJ0oyNzf!L(kj4+q{i_N=$OFupO~0*dR<@+=KOfC61bjgDyI9H5JBbGKWm*LIAG+{w=b2JV3?M%rv@8{=oHV14Zr$-`=nINyiCit#jhBD z&r>ne%)HGY$23Y5r&dGU=t1SjER$I-+yRu|rbaIj)WZ$Ye>l}_q@HtL#{%*Liw5qIoCQ_$xwTsy!Ys;;|c=|`(vlP{fbXI@tS9*t=yUN^ERHHxwL|#+|PdyR2g_#iF$0c%D&{NODP$8IQ)<^_f|8ml%WUM5HtBj#FxQ#(1DrWVACW0_c^XUFJejyo`YWOQBF~YisOQz~YgDV2 zvsf5r*@N^zeIHuk?J>MZ^v2yCv3`Zs`3T2CDYX}b!s?GB?wf=`h5+J-d2gXDhImle z`I&K)vr)TRw=*oc zZ!~f=)dfQI%zDB2KJGy-h?w1;UCuWhX32XGZj)_9xpWt=-iQWo7DvZ&zw3g=#!FBt z(?iwf=`yh`xEvDdx0PZIGrJ4ns(+wuc4->oGd24}%d%&eJTNYK@Xho2{jt=H>e{;9 zo`gDz&8oW@-A(VDyt&lB3Cn-PO}rDAZb#u%o!6s5?hLOq0op;Y<_S?TSDm0|F$?b>~#i)^;gcx2UavH<)))5g>uuHSTwje1Pa>i&L zUrUl?DWM&UXWiywW7kwn70nq7Taa*;AdFEf(D(P7eg-y`Ag8OR^$sM-83MYXAk{V` z<9xigm@o=b>S0#u(4`|31^k^>B2;7_ApJ4X(YlXwplQZx|APR9HnQm&*4CphN%x`H zvfM9T?Tq4JqM&%xh$V2C2ImMF?7dZ?A4P)aZ)RItb$nqiBiyi2dRx(2TK;CYRNCja zrPSe5O=Sv)<>wmfN*I^h__NgfW|&{LM1`6;H<7-pCdN=8d8!andWh?86}I=&`M zcoP|-;_~xZ*1xZ`D}ndxSf?mkdW=%w6O>!xj69rGsaIQseK z9C!bEvls`jZQCm)+pyGBS!*6V;TqPe+P=G+4J|4S*G|%`_5{CBTebM$9CPQj2tqi~ zds|Uav+n1N^;kp7C`Q>OimQ{=MRpZcdmyOUkeFdI?!Bu@OGhW^%qNGmdFB&vG&1A( zFEuH_JN1xMwlG-02&2AaFulk^)ij$H>j-iJPO2`k-F zZVVtKLGMR%zkT~6t!HQ>cCgQrTyk<@tIIdJ%a_tIm6tP^wDl6y-j1DnqbQ$oV7CY| ztTR2my)SB>JRn0-3mr3Jh=&4B{c=)eEiH4a-#8N6qdK4=FWv}*EoyL?9(@9CWInoo zQ&G6Nf{3e?m9|}L`bVX&hrD=S*GltV%lpkP(sx%!C~Kq?Ep=d-rR2Ter8DLW@6WV5 zX-Jpi$YT5L;IQBsUH98}FQO%nH4d}CJp4PqKNh+sqv&Rtu`S)V4JHD@wb63p>B8JE z&qWOyc(1cj^*>-<9Pf@N_TJB)X1;0G(b>gR`HV3vxVrnrkEfv(DOO(E8r2vK#-(w# zMAtQUu9Fq$EBb|R`a3f}rj_=Z%%q`auYZ-~P|2pe$e0rGwjsm*dnT=oe&}*37i#N< z!*#9~j~_iCvT7dLO5wYDHIUP0;c!W*=EJ{%|F7&@Iwx0+O|CNK%dVyO!!ecM*sxR#i;^a}>fxgi$ zO}Wiwj;B@YvG4DXHnqsJTIF^I&Tb&y=(;d4kClfKDIy=lgGE_I-cH-T_d|B1zN{P(&hj(n{1Vz0H)JVZjUZ zN)ent-!NEH;~+JWn>Ny*6`Jrik710hDn*I0jvS~lB0R+wlNy*&??n%>Q4mSVwGpn zXfFu2ND>$*EO<$5?w=L5>M^c}6eQ$W*D8I+TxFrF>y<#Jd~HuLR2hrjOYO6g&tY9` z=|o0k`8!$H&PUAjaeNgsPZH}Q>YE2~gsG`zD<@um@UPz~Yko{9Ttj31CAQVS6MGuF zp_|+Evz6$D3!6;$$ds#f)kCpAqE%Ik$vGO`e@^PTOLu{)7Vsg6A{C!H&9p@mN?YEp! zhAR*2<$dyv#OL@6LNtOY-nAK%o6hL2*Hc#$fTQ%6G>n#-sIX@$2|U<}df1qce>y!| zJzLo!D-*zcFq)?$df!w~Lqo%c4t#?}2WA>ig=?pN{U=L|>PZyMNVEe7i8~pOb21w~ z@u|eAoGcNkE}S^R4*p?F(aqqeHg<4A!i%qmYyy&jG{+k{a~{kt(us2u0Ysd%cO7kB zGq0Ag^QpD7R6Gx3J`;PCSRkQ(j<884n>ADqe=v7vhN9xGvhN$V$Xj`gv(NAA;G*MA zrmZuR=gS5E;No;OD^)U5EUZcC^72X*m!o*+u;0=AWb9mcrA2$5_wh0ThEbvcUL&-SxU7#DCLEJ zjpJBbND6d7^TU?+Z?oSB?EE>uOdi`ow#66FsQ#IC^`(D~RhKV&tZWL6f=vbHP65`Z zE5Qa>is*dA%fsZgrHi&-oy-04oF+`3t8MZAOg~uF4g8jw$?LN{oY&~jaz*(APn#yK z7*U4Y!A<7O68$;q3lf9PrF#R5#Q0{DsP&JBj;TZCrM$-K8{kTu4}M7+RgOi5J%Wl~ z@(>m$+p9kln=Prbl4renD?(e-b+1h`J<;y?=gG0G;wM+nvo5jK12ulg%5HI7_C&^Jur>V|KCQ2!0Y8jzSZZs%=>un%VV z-Sp@m+aRCDZcMK=3QnIVZW!3>>Y^XR&LCY$pEMmS4`ChYR+_cBnv-7S<%k(ad=j10 z6oHXvdzpC9iFhK)2y{(A(%`EnW-v1uBJ=)mW07(qTNk_EY_i$~8UUb}63PFnIy1iq z)`rv85kG@!Uai6;4~Lzo|UqCPH5$m=~auR6o(nv+3kQ5 z1{L0$9OluPXS-iO3B6Ed71THoq$C4{vZIq*WV4Go!Esq&bA4#N(Gkmg0B!*L0QGXZ z9y%yrXiDfYg!|b{)t(_9{RG0ukhftG-Fw)$eT$aXs4rCxaYq7TB2$KO*^3_^Dk=_u zFa$(I8|4cqY3c_L96(_B+5ts0j2?3eCqI;V${;hWcPZ^hi*!wEY3<0Xu@oq1 zgL^?LjY;PKaI~z!W#Z0DsO>v!*6GDsC*QQMA4=K3^z$K_p8at%CTUkj6-q`IS}+B#YPDm>4>&$XT=f4=WS7lJe zNEvYOgyi}ovyQIm39tqe`;8kC0quOK4zi5hFgfSj!VmWM!9}#tWKc%N@J4=qe)L`E zf5Kx#k^%MZ57LuM4b)c*EUW=THWs@}Y7yY0D~SkT9v}SNSsAtgMKAC$1@7tz6u}*L z))=TcNSA~OyGxM+=pV?I4`A^gCHPL=seM7cei5E7moYHdFh{H$fytzYk7Dx#*JYRn zKS4x=fx+zfaBs#GDOy0GcyVFj7#cr@z*7|%EQp%Ra5*P=j|1z!n=4?cbj_tNKk~Vh z?_>V7{m5mT{;UqLTRn_;ae$$fDk)*Q>S7GJ!{9|u1cV^EMfvC`l1Cs!0jfuQTD7S4 z&IbT;1F@cuhUPmIp7A{xRExptGo3n4Uo5f53oB!PdzH?_3V0OAm!ftx({0&a9R(R= zE--QdGrG3Bq}O2|0Hd6spr8!JtPcuBrKP1_UB1uNSsGWrbaa??#|wbNFiUX{W+xW6 zEn?#XRTH>zA#Xt(?$jWv$$17Eu0f$_Wf-j7Y6HxiHU)P;jBKI zIGc)40yYN-d#hc<@i(N$3N}bT9F zop1#^Mkc18K+Sdq#65Df*(m3?fMgf&qzO<965Rs1rjJDi!2s2VkW_FVe)vpgaw6qaQmMf^G9D=FF-E$N&Nj*H6y)Y8KWM5 zfve=y9CN|C|GWA92JRKa!$6-AY}~f^gPX&3P!BJh>NJtvKsJfTad05qzvIV&lqlU) zz2Te3?@=Jg_RBmVAu@chMPcB_#prQoyB zcNR6az(&$BhE7RBdIfppj+@9ULe<9JOTae7n)?{TX#+jRu1WYcl-s;yzLtZH~C`=M5!**_82KQuA=GM4 z7tk0M*{pnAK>;faL~Y*bk-H@>E!`glym(P~Xf*hgGz~SiXeF8gVo;&SfI|7V!ovmw zeGCrBzhj&lXpf(d{xEpyTT&Y=8z|k~(%}YqwPFb6Ah0Grw;f+t_%sZ!p`k%I3^lc# z{O^>(wDc321se!tqLPvRX9!6-7{SAthDNN>&K%BBu+*XKxpZK?I&xq6NeK5^>7)N# zMG+B%tzA8J{Dd#Y{=F|Pn5=-+ARs3vC-VXE zN-lD6lnA(^>FMe=4~cL*;9lv2Bf+JMcV}gyO0`kZ0sIyrXJdESe?dIC4R(@DH%1GM z52|es41R# z*n1fZ3vrl-HRs20~5NlBBj_FLW}zG7@M3*K45E8bsRO7e;v=|@ z0620w2l_16XBwb$0&H7)AY2YnurmbVVW>geF8~Pu=n!3>x06xzEYTACN_oikLEj8vt09 zwZrCgCu60%V^`!rANIl8wfBam$>w?q%$%IcjisECh}rxqtkdHAJ(pP5 zw`nJY`hUaALX1Shv;*PsfpWhM@mg$12p$2!9oV~2QPqhVu1 zWYaP;+XKwm#S^gI#(^;|HJ&dt3#bK@P+FjV;y~fu2&Xggl$|v!#2~{;^BHM`@d(n? zy2Pv3y+yR(Em>5qi-7qLNEMR*xfKSQdrHb8qHG7k?@twnKOwCi(Dn*bw+c2pU4;VJ zZ2q}jq|og5o z`W&~?A??XD-iB|R%MHRzX{y2SI^#Lp+S+h$^7ZBKHh&{qi-%Kfw-?0xz^hXm+~%Qf zUz!QKl-pNMaHoO56h!4XOowj4O9v^{?FK?kFfg453(OFO4&;ckOEH4*`}ZsOi*l(< ztm+Qp{bz8z?VQZn_ru19+*K^B?aj@QyqGpt*dix)2v;^V`qGG&Q8 zuDK?>^I$4e?#)pst8v?BYvhFI#i&*}ZUMXo_@g&Oc|Nm>^Y=KUE}+;r0)h+=;cWtE zyBI{!p}h0YRYc(`xUaGxD7J@01dh0sdZhd(-md+3*FU304Zf50DVG!=F8sS48=pW> z*LMvy<#75m+)%j(>`tK#!}z?GJ=rWBHN5`5E;u`uis78ZfdQ{IYl099q5_u3AyB4Q zK8tcX9i=I|DWbUj=otS=epX~dCPF^DN;9Mj3&F7}R&x7HuIQi0DN2Wuq$%(wKLq9# zYvq!SkdPqi6qek-x3^`arL(xQu~93+fj4+Pv92%u_(7}V1O$i@;7P92=)mJVMYert zkyz-Ak^Ik%kSG9{8gOEoA=S!a1Na`Wi5xkQO^WmkDQ$*gbNJi!0?}3xpHN++T{S~U|ml8rv!vQ zbMEmwh|+-b0@*ZhX)JqTKZH{T<#uFgYpZYtlBm5V{^L(!Jzj9=I{cavSl_V~7x#vo z4Xa7qrAg2Xh90&|@RKh9izB8C(-&|70GotGM6y+iBoxn}R^BRRD7*^h)~+_ zvq|fz+SeVQ=0VPv_Vlr9YHCJ6LGmyuGym4DTMx~Kr&w|l=Mh{X^a9)kg33X-I2q@Y z(~FZo@=RqA^(Udqpf82)kNz;YHkXR0heylZE14F1wdby~y$b`NA{Va4$@vmMDVB#i zpg)`HKtOWn^eMvE&ks-43U~;_qv!71mpZIJCmu{nO%*FN`gMpxl{EgRO3k!oP|adU zsRkxpZjtreYk;J+>lIm!J`p{G&Qh%ax$i|~W3Md+lWTErjq&JD(*wg_`N9jr_jf7s z(UctJm1~3-FpYA*4wO^|9KB=>Gdi;A(`rK_Wn(PTSzxG2>(X~`W6P<6w@J!2^zC(A zhsapm;JPV$b7d-8xRFcS@-rv*0yR;7QaS&%veMG#Ck%t@WXhBI0vtL_5rY$29PMp| z)k$09hC%~BWo_Ef4qmdVsMLg$m}=>p!@YD}B$q3Cyhv7Jhi!R8G4owVvn*a-Hz_&h z%&(pYao@f-RI)tl^%Q|Tx6iS$Z+RR3+IYmexMF&EJiPyi1f^x~M=YZ(WQ)82bDNiU zwx~&j&uuj4!n%*@4KC_|r@|WPz4rWoc9*_)Rn`T63Vt+w?XMN1u;4vO>{PqxP-|5=!7@e4k-C19kYx>Lw z04m%>fo@rMVjFG883IAjxD=j7%#pzLEMRXJl^4elczJeChPxzC(|g6#lp$GOAY|yt2cOP&`-_f z04K@_wPh(Wwd{)8`3CDr{iGw?*~JCKaBiVv79+F6Y-eMmt)&Iq1MyXb!yI-%7+D*B z(lJSBeY3E$E2i;-pcjsMW4)Mm2GTJ*8-BnK51{);GAmQQ#`OqMBk&eiv&md-cNJyoW!1=o;VBK0ds=Rem~JVtj(3@v<>1wp>4AC2+TZXH zzHaU7b2TT&PN!dY71R6x7?;~?<8YK6(t>0wk{- z3BTYV28=`b&$KzhW5V5fFA{t$PQ0Ev80`ejXhFkuZyujc(My(MVOf>!6}vjuR!PlK zR_0l^WW?NrV>(Ix58Q<6j)$~xV{m^)Jux;@H@E~kJ|44W7&tudEyinS5H8?SWpCjn z0g;+MO&eGvWyk!1tMfPf2Xc<|$5MXjXI2@NeCJYOcQ~nWR6$fsUV+YkgZ3WuR{M1C z7il()UnI5i&D1>T7`iRMi_i9)zk?yGMpTD_v3K8z&4+a&g4IAs8-fhbl!h-l0pA_U z=H7xZ;J}zlIepvG6?Qg~dA_l(`$jM>#l?v9HLPFZSqOL9zA3%`57@<4Dz&VtQnNak zw+(v`ht6mRLxa(Dgh8wv9JkjQNYxH}@abF+*G1(FEh7d>3ajJblXr#_mJMn76o0(n zf{PFKe{wydr{o0lmZy}umBnETSZ;m#6`m?~nrB7%U{LYq7MDPt`kD)d7 z5OjP-%4|~hj>RExvg84TbP4nkKvLs)f3T+Y?ih~Z9TJ!cE|4w`9n1%44<^gTF-nF( zLX?DrmfaW-ErZ@vAYjgrCl#5Gt0)d}2S3u@Q2Rik zijW9>=)x&7hl)h|3JC~`{=Xp^_)PpuD~KmA-gLf3Mh4@g4Y0~-Z3(3%2cB<{=#Xm5 zAAnXCgqu-uK(BLRhqx6+^Av7Vcp#F%4D#>*G(g@P4y1zVQ(T9@oBtB^Db_!NB;W8g zIpKp)tbt(o6y(E)NdD;o;4jIZC{)v_INLMbYM028k`fhE_gty!Rd}=&kNq@-qw`n( zp%w$*_f+=we~PqGT0LO!vvmiExbVOm5Rn@S*6cPg)tfwaK3yH~m}PM+!3k6@>$mA3RVTJ*cg|BnUhB+Ela5beY6)H%jzxoKMKh)SxU@Px}$Qij`?KHA;f@NGSz!b;O zeJBnn0Vr&BfF?G4>?eqJ0ZL#GYxuc(mP!#2TGVnNAbf5ww*07uSPu}@ zq3p`avEkt|_}y3{l9D4ok%U{ST23{hi6gI^$d;e~bh?2uCq~v*eFJmAa4qET6onQ8lbous z$jFf@Cwt=2EJ(Bri&Xwe2fuW|Qv8Fw=F%`R$uc+q5gclxYv2S70GFMOO>iDBYaGC% zsKt9^)vB^gtkR z2(T;8K^sIAhXqoXsH&=>mI84o>}^A6Td|RLUH8>&zB~35`0NijIro^FgYxj%g}pe> z5)9uHb;ra)C(BAS=PO+SQrbH>k<)nF7qi%B(JW{R}0vbw*NePU=?LIifPJ zpv*ZSuRMW>({`bqxZ*}%sd0ZgoP0mPgh5qE=q(^&pzkf>PqGC8g=`$3y5hJLEPzG; zNE;^0KpDOUaIewO@NjN!ZdgT-bvCD$d!a!CjDHj{Wsjj;A}9gu{A4-@J%J9elZdm; z6erz5wD=u2zXPmy3WHm!{@&b#FMTxq^_`w6@ICYS4ps`lH2%yvwB~euq#whn@2$7U zY`I(tB&Xg-tR@5W2$C=Q=?*Ov%$Rg)v*}d|4S~$Sf3z9wx2g!WUYHR8hHW)_uM_?p zbAO(n@%H#ifp3B0j~koT_gzb-m$u>=*%Kefm>0@X8w-;XqbptMo$S4k-qF9!onFX6 zJ62*mVyStRut+$5t!lF_qjCT9q7*E+GHDp6*9qzDI&H+QeZH z|FP!PUR}bglheI3SC!&iA52u<#Iw&C!9) zHI(|d$zWG9NZVcgirpQl%NXjG4`s5_*bD^X4Z7(r6H`@dGYO0Ekc7HAxtZ>67r1lEu1|d3urg0nd|6^Yt0A<^#9c_VunL%Y^^2m-lG1SpWq~Q{Yp^zLyjYYo?C`#NiJ8W7Q6xj z2?N1i<2?z)TBfJSBtcf%`|xmT*w0XrucK`*w;rxQ``9|2B9)8kN8U+Ix%{w7%^ll> zeEmSbi7dlc6-BxCSdALe6@YXYn9@b2_F-M+ZM!r9m5?VjUg<9ELkq6hHO9iu<$T=w zxlewH3vCiKoFpk^B%}E#j{N$lK&RNiGp!eyQeIj5T^2p0XWdagTro?ml_v(_&3}lb zVfC*_6zyz&;wU}gSbonY(ePT$mZj@{)G?K&bf7~8%VZjjW0i&TaW&;EPIb(WNe-6Z z+QP$lgi5!luPA$8c5Kl3ZDDJ@qO0H}WwQRwtXXOBLx>BH_+pZ7hnJeGpcFeL4?oMN zTIe5GnfaRRYTi!ILw0kb`qtWBON(&h1xluX&b$4cQXR4!oz-`bea8-qw6oXtNZA!u zDcz!$VIzPexH>9|bjK04rc-{Gn=mdNqRIjXCrKa#XY^;>vUu(=rCC=9O|I)4;Wucd zvj55vlo-3%SU;A&BiP^OLGto^WBUNDgyPr;JvP2GPWZEQ!%4p=&eYp47iYL_rgfRF z4z}|SPz^~)W$?vjaoB%p;9sz`s&-W%#0k?`(9fTl$!o4(nu5IyZ}9-&5sBxlNjgts-ggcBMAG&i&*4bGQ4;_JGoCg9aK znLP=4r!$kHSl0WwgmD4?Rm1z-LwWf@|F3jcw%*a9J@C1}6aG}~W8ATmxyffb>LsMok4cT(YHu0RUaD_h za@kc^3#fQNu1~~GzK4dH#{Q&dxvbfekZLxLR5!Sa94nz|T*A zK2jSa(4p>MkI$CPY#qkNofu5~e2ZFd{0;3V*I09NzUeD|#8N1ZNuc%s1ZN908fZ>5 zW+PEH=>l#dAfD{zV}OnS6OGe<``gM$fQ>ypH@69u;MO5?ZyQNt<8%zvfz`?o^E%1X zER8CafrLHM>zZmB;h7PQ*uITDua)=HIlnAVrT1rvb=5pmE45fo_vo!dbE5IgEKPAw zej2+}H^bE0uNcl*kYg&BlDl}viAI@}uR~5k9%qm^9R(`2^$xU^UKgtp|hp55Y>QGM9;a4Sbk)j zzfYmwBAc1jCpsS*SJw#HfOFUK92d)&xB&Ezet63NnEHJ(oEp?by|mZLQI`MFUd6vl(A8TD&MVaOF))#?U7=4ZiK|KYK4_8ZC@Ds6QXCkZqCeMq zR#^N${O;QS=64fFN=tV=RXtbAX$M0CZeCCc%Z7Xm$sP5wj%@7MU7=w6U%4VIN)se< z3d5TReY*ElYzB4<8$$`84OGspLcU7=m@cmQ&y?#vd+FNP z6|xz8@tgO&O+{0$`Gb_0IDtl#K&VaBKfi4fI`tbp@2NO6pHg;`ojWK1IUxe+f+t*VP3{V!}AJT2Ty*4r)P$_Fw zVYB#e7O>Xb=Tw^UdvWFzKwQr8wqhnvCb&_)D-;8?htCg zbIQjO0(H-%ixgO}1^@UmdioXf*u=HwUvm2Ic zPeq67(*2ia&ZXfW?sL}`?Brg`qia0xupQWW*A`QajJqtua4KE3w0^STef-8I84FA6 z&@HhSouh(hOU*&wa(}Z|_7zZ^pjb4EfckWF2LNJ00yhTK@!>jh*v(L6 zvAF!ydAfkcLuwxbY184}211aryafJ2fLo~pYz3t>U3@M6Sny#&u&@gkF2r!zeoz1^ z6c+uZU;dpWc)?i{vT~Slk}Q+*-Kiq;$(K@?FGB>%I?2|l{nWU5SL=6SLklsrpUxJ~ zzNbj12L49oK*+fejDy+a8oVlP``7=Ay|)a@YVF#8ajCcrP*FfaP?0X_22nz~ySr05 zRV-RTx&-O&F6of&mX?-o*khuu_j#Z9eg4Nj_TC@&{b4PH`=0ll^Sb60W1Q!2#L8N2 zU%3{OW3z8@o@-{?3JoW(@oiOvv}C-4=$P`JdQ=MU(}vs@xjP|0g>Am2X~_*}?HTXS zOf)`>kdJlPdn@jvULa{;{^6*+r%B>S$9l0`Pv`4~Afrs>M(7d0*0QCNp6tMQr-fhi ziIeKa$*TbNqI|xXM?@6*YEFJurD+2mlU)|HF-O@}qluqFSY4%UTm<|E73=E}7sv3_ zk0xF@Toe{1(7`DwDLFcpIHc#@>t!g2ex)hn{G2yCrK03sXsbe|Dmf$FooiroJOVaf z@5;(h-aJf}B;t{Su}?1*po#$w8xiax(gKj|{|*2^^$rKvZ~xg}coyLq7|cVm@YAP* z%obW)Sk-zq(3@ZT9Su11EtLgFMY)2k7z}$jBS}asWWEjZAh4Aqf^65#K5@pHSh=>@ zzvptrE`Ckinfr5^t}B0jf)gI>9ap`vXhG7Hw7Jt+YHPA?WnL^aQE7Wrj3R~@O}0ZDlsAoyFsFLEur!;h-IihV;o2C&rnI~ zS*SD6!#Usf*viTZrt(c8MsxyBRt^po)W@6m+DBl#4Ekyd@hC<%pcbMS57$N>B`4ie z>`Ax#)r5n+mH+&N+?z;>@hs43(%6?WNrwoexAs~HHex>bA(!9Pv^I#Ppmbn&A=Sg3iM>_xK98{f;2qYkR5)G_+-cl^A}XH{8oZbiFB6VC-KCi&CA=nFQYbNW^S%ulRe%T zX<@RNnVI)QJCL6*6Oi3wf8rLU#gacLoC0>9H@Egey@LmzJiQT*w@e0r)70jmxsLJ8Ns7BJoa?Hfdqu zmTawB&_M7&Pz0i>u#4674}a9v5sYdG|} zAdxa;vVP0l}w3r1BxiX%>g_lH}7?z!w6kMUXW?n;U@m0VH)G z_0G4LsDx+?0RaKX%#0ucuIL6*??QKuXFh6UnPuR{zbwFLVZvuL5WUE?#h1zJP^KnNJ2saVQjfH zdHO;L!~g&lUOfc{zrb_U91u5Z)p$4eOfXtR{41S-qS)HeVIlqo(*G?GiG(V$)MvYX z2)`;rRx&~*78Z!P0P2D0v&b(2>ZtJ|zYN3%`;cOY=nJslh2R#*FF+B&if|?275<{= zOwaoLJ!FYsV{w+;`6Dxev(yFQxVX4@2(3nNj;k^lqCl^NG#>t^z3&tRpe%!9|I!k{ zoB58z1&&)#;m?NcXTqS6prDldDAnu#XkSqnx&M7N2j{PTwsbiYKtq7^?9DGK?l2mD z*xNe*-Qd68HC+(bLCyoln@>5eSLhIB7`(F2&^nMWq1UW_fy|AJSu4-q_&9ul3e&IE;GEa?2e z!xX`2B;D5qcl~oA#3iBo-DS0W-0*^kjQp7z0aJ}ckFvV>L|(*1_P|uG`4DX<1Z;y) zsaohRvRysmzx~nl$_o-G4+iIzO-kr~v|jGGxqRGi`CH?APE!FX_)G|^XarBbq;ZNU zsZ0=?2uR`Ui0ql(o~L_QmE8AQ+;b#A=KEB_cE52&g|PTcd^sNG=k&C#)f3oS zWBkR*gV0`%0EZbq_D?%nBAc0S?*&+WW^7v_*ye2URF_skiMY7>kSDJEW)h9ZH!XvSaLe{y>W-khAg?}V`c(FgvEt`3Ef0Y(CD=+j65*Yu@&mIT94rE6Jw zZuLR1VgD0tnepqJ6wRK_bdRU?@#9&orMEVE@t?NE>j>3clZi9eaa+Y+Pm@nqE}+Z% zY2y;=E&Y@CNv^5Rr#u?ouo$(_JSMmL)Od@lK&qt_?hn|V)o>w>AQ5zt{tTcG?x?VM z8eI(^Ln#sYV2nUVc6*a2{CFX+>gGvFZ-o{DarA}v zSXdOq?4d&IQ+Xvz7zTk*nXZ_l4KrMB%PV9?%xs2ak6zHlxLGj2*s_lyqTQg2uvq;{ z0P*>*rx9pk&@mJq!ACc7B-P3_uyY$9XA5OB-Mf_ zt337FcM-_KkkD14r-zO~kxkFkOEiU(W0E2wB=%nUw50hY8t6Ngpoe3qF-gr&681_+ z0V^qaBeZ-*OhXClDj`q5hSW7o$JS5Vmr?mSHa)^BX^h{{5#8BMlnco2+} z7a`P;PTKkC_k0BN4Ea)z8Z&VNQXYZHTzeVz5ux;YUgAk6Kc`}}D~z?5JxQbCKDdB^ z38tteB#msh0&+7X^VpjnT2=-idHu}ctGR!WBb621krxWVI6^Z0FpJ3Os%q7R0g7t{>;R(^o67#YRGdlxgG5xm9d}`Lk|VMPpW4Q>TZ$)0X(yn=3}L2 zcDa^Uusz`w^YK)Ib^ui_6c9fNiHUIsbs5}hHYVGJZsGz>&%C^&@S^zmld=Xml96K|`deksEB^M`sI-mnp}ycMgQzv6!z+(AT01*CQQuji z6e;$QG=MDe>m|bEg-lS7o~absp#PBGy6%r^PO}XaL(-@r%x12n_qFYrPeOb=yb*w~ zaM7$C$<%nFKC^RksS7kF0#}rWq?ZW`B-Pb3vCJd4$@7;C9rri%;HI!m+JLPDM7Ynz zzsu>lURl8+{n;MPMX7#ut~YD&frJF8;G7Z9k+CoFRNj>2t#x$DG^$SH0$BXY>gvv% zxu&RY82Gc1OeH)_qjCnWI?w)0AYz!IFVqCBND3yjN`DdGW>Aq!Xi{KL=xcWM85)8~ zhQvJzFK*h2J6Obm7yW!kR&e)>O}mRq_JPJSJNt%h{bu1YTKx7BsYu^#Oa=8gxdM%> zkc2Dm^787A)R-DVp0Ow?JZ-KI_ohpa;dFHMT+eteVN(Zag{zEb#y3d0A#7++60H>mHDdKw#Mii#q>lixyMYl~9der*2dRl_v zQIvuoeX3XFmiaf_n`Fd;2*3{Xn0R$xPZW!K@}JO^<&7KO$h577)2pMQw&Bz$PTmYnR+oK8GZ?n!|WxkS3L#rIgG~Q zk+pa(nBH!w^ZW3Wzy}a+cwJo`ti_oe3U3-fTx;TcsKO*feUPE;cu>c`dGHko>XPRj z5!J7&2&0BtfjU17jm_O&hq&_3IVVDOWINJR)~zmjHCjyfOoZVxD=y8>YT=VA8f(3d zFZ~@bsk8Yie<%!@;vRp8Dcq{1qjAPc?*z=wgPc5!aHSwo;5~UgfN<&v}!%%jHXhF=7GL3?`5068nt%YzCmt z$Js%yp`pq3s998O2dC#grV<8?@n9}s$S9##6#000<oi(D?iQlM{O_)*d{CB@-j7z2{!pqpxCv{`ftmRl-Ke-b8(Tp-s3K^d zv;riIKbciz2J4#Dy|ngyeq7spwShrG%SduFt<~#f%-XfS2H}3VsL&qJJC@T`Eu6Z< zSH4Ta4DndqTp@fhxEBw$}-uUoDWKRpB8C5Iyg^+Q5qOy9>406kv3g^ zWd3_Qf>P`Tli5j!`$-qCSIx z6v$*5)@p}VaP~}2-M)YJH$%hZ@KrBAzhBSnfz1H5xKFHAN>T`_ze=_GUdIG3&o~U* zp6GqWC631V+}z59VkRtNhBm@4O}=xG=iE=UyMObex>qinaF4TM-C2m8P@*GeiPP1W zh5K6y-9a|@eUT}RZ8>K|es$Wq z(&Y~n>RzW3K0RpnaVPC8xJMUPlr(`LMQ+wQIir5V5__UE5tBZCpMHKUn>@vC zF(R0YRlhbuIYHC0E`A2pZTzoao62PoHX_`YbMt^Gbw&s@ogV~5Tba!M>NsGO?jia4 z4cBVK)x|}0C^OcdbL0KlU^GQ04SlqH{Vgm$>fYZpZsj?e1hM2R2<@gUWP+8l6aEQF#oPmWy z7v$#Y^U@{8OWsxnhDAK0&NtC&DJ?GUb(vVtS%?wuYDv+LZQV_1e0@h+zJWL%%lMsy zcSlziu3DJimMasNyI{I`wuzhZlhKyfTMx{Bq^*}6WCZq2`atfbJUXHHHMKj>D5wAF z5gLOt`NcFMB9^}LAR0H#L`9|pCu1ZV)EHVuwO$iEpEvk4LD8BC10 z<)*kV=H?0p)SbaJ&mRk(NYtmU69XX0!COp_92*;>RWDCI6VyUx8eHc$E`qc2fI+Cg z2qt>kzN?oJd;Ru={dUy>;R;B~T2mv0 zTv;YSj|lc1T2SlQ!DtE2ZlIMy5zE|EnmFEHu6Bfzg_z2bfc;l3{I*fpSOaiRU48cM zlNTdMUCzFnIzUSnUv>0_3l|0tZ3j0*bx}r{opzQ}NE!&h2@iTRc-i@# ztqhSL;S~Y9MMl5M(ya97iLe`74T2onj^Zh%XQzdd`4n&fP%9P`b(X9US>l+VoQx&& zT*6ptVoW4yz!METrzo3!l(2xq?{yln@J7LVbGxMEVDzYFV`^F`@Q~u73Scjk?%|EQ zXqmvOfWcrV=st>Ku6Df_=o_1>x!WMPh8WD?L|;6G`Dg@s%YS{@-J3V#$Reh0nW%9w z&GtBW2=dk4qQ4;du6(aJ>vn>M=uyq%>)1-9#dc`kYFuJzWD6?Ncd)O0E>X(Su17X# znlV7i1bN&&h@qmemI9IwJZwn(>qSM+YyazVpJw(X()^96#Qao@emc-_rVFp~QFM`( zGk=q)z*D;_QFXKDmY-}y(af`&t($Jq)S_t0CdSNUOuAIwe|Hy$k#IQLUG-87)=IW> zY{ob)U8p@!$WN}g@byEEDt5e)S>$TsWiREd4kg|4Y27*!wz1?`Hwps^><74pe-Q<{ z^9%pYY;C)J+n>L_&!0N*Qpikj2sY_rs^1l6mjccQk_01Dof(JUcY}7FYsIMcp6(yW& z{jxlG)X?AY5ozu+cJRL?7v4BnRFD|MkC9xwxh|W0t?gR#P34&P_A*;5Pi+waRcxDt z8t!D8@38F071n=Ys(z&9U;JxqONGzla{~Ro)-$&*mLEZ{@%`^jFC$VZdJOf;8wgg_ z?muHyx%W`TltQ$A((l~QHxVE0;f`Hfn3a|DIKGW`a7j!lW*R5?7W^!1M=I)A$71~a z?q#B~Jj=qSo6#sy)PODgPtXXQ-Z_X;SwM@7ZH|M>hRiS{^@4#C8S%QWkE z%{U7^M)T^vW?fb?uJqSwkGp5}GYQY7R`inlhcfQjvA<&kgXfY1%{UF8kE3<(3D&RB zbiIDRQ`)(cm|#Q{kT&0gwnXGo8?5hq0cXS^6f>QKN<;Bwx?YY$tAK|gj758%H;(Z;jN#jA%4V>q3&FW zU-$PX*tG&_Bn$kki?WTf#kR^k3MFl;>Xo&&Jy_;Voa#%g7?(l~J54tFTRbu!9g9s{ z{iu@Uk_>#H#^(_h7IdkKH9(E46qRPk;2JKcVOoW9A9k^VL;3h^Tug&@mVWa4Is3-- z0#S6bFd;D%W{bw|#p~peI9iLJW!JTN*+Qk7(Aey;{3pfF#zx29h46s&f_S z_Pni=&RAUtcNCZ%*}A>1_~8y0IYnwqRYFQb-Lr$Dg(EH~dq7D`<*)jf!Gm=ou*gR!ya^iLQ_ ztc&~mK49+VOH@DDE=^*?;ShZ{(PG@F+lvrLF^Or3Djtho^9?n0+2*qWJrE%lowH-h ziE$Qz3i@zBp8pNsx(l}xzjEFEA4Bk8VdRs~y8R*P}Y z-?@k~n1(I?UY)!tLEe(M$EPzM_t45Uu3Ln~?gM*9FcG;G<#g)th&Fzq-lJJQ)fmN~ zJR*|vEI}b&@s`qyGEa^<$3|Uhuyvbwl`DJfW*Vw)|Clu<8w^t&sHT0|5SPQ9F~-S+ zTh*DPqoH&oBy|83J#6Hdm|nz26-@Mu&r_HZ)5hH>T$2*!>jb$Cm!CBxCUi+$GF0Yp zME4Z_#vq<=pH+FV=q|b_v5mNm!oDx7PV67)=iA6;5-6XpGbp%zR0+k@`F6G4Pdr)l z5^iq40uPA-i9U`7?i29{Hzg#MXln|(=oLU; zQPhxUpP%!xEadc7pbkdi9F}?1ax7WOLKwhdt>gV0%w|Z5wcijNKOve>4cIc%I&prf zEqu_9&)+PhYEqu1x*UwgK>GFo4By3gAu)Lx6?^f`A3on(FD9yRBD^9UkR}Ttzu(ML z-=}S=TrN)^7*qy+QVJzJ%+4Xg5!7}5%o`4YXa1_AsJhZ_`-}UDT5mENx(X{#jzOyX zR;(`*GyOKPkJ)760@s*B&P4A5_ZX+E{+;V81DPjUGCEULP1Gkfdy7KNk1Cx^*$mZO z4{>NehUfF^lTqrLJ@O;i*7+(_MqI=u+_)3n!; zr{WK-bYStlxBQ5lJPO*z@ygaC?D}kT(@yWpeXD}Xp8|hs|F~_X_?Ax~wDR)x2v#M0 zN6##Nl4v@nNAwR*&6Tx{JU93hli$C+u!ntTi;zkv+4S=r@gMaj%{CdDBk0Pf^F+s( z#5$8RuUoWuh?Ok(X;`(FrFEldErA&^PV#Gwj0awL0O345|4RbOdTo0#1qVli{3Wfx zK}!p6IZ2l9^ch;|k;{3>*N%wm+?k_t%{bhT7VQ!&!m{!}? zubYXUyem|L@ydVkJFl<3*Q#J5;vv6bHZ_O0>El&Kqn}fy{p|e*v^W7&V@6sMO7+sg z0iP^_5%l3ohUtmRHq_62eyl98JgCWM?|3n!sGpVQs+oG;trLT0 z!}amO!3XWXL&GBTT#7?KGx>$fG7U=XX3HhMafqa&d1$WYq@@w1sBjR0Wu5-wBEj{B z_?UJv<>aedJJwuZ2Id#GNrlS~fF>NGo~(hHNU$f6d9ulH)xK^KwQP|E@A}CfD5pZ< zx+@dI?pfWNxjX)+#WUxld9yNGMzLw}1|2$~LE1lUqW)Y`$vqReUjQD?62b!~d^B5{PsIf&>y#?8G{ZBF!BfzDImk+ug>h zdcJYDv7^ZzeWLL4cK=rSEv*04a^{x}X+EH3;B7N5bdJL=NPhxd$pzej^ydH3Wdt-0 zTX;t+1xmIWhztRC20;yBVXyR5Z^IA4!TrTyydZ`suKz>qBoE4w%r)Ts=ET2%iPbU| z4l;_riEvk*?Rkx=R_trIP4-QF+dmODlHXbj##^&OgSitgyX>YfF>%9^1i(vW(axc4 zgHHB4)>YrgRO-Ph8^udJJ!%AB9ti9?90(eaSN6#B;aTWj0tEwqTvv3-K^0EMt<$7L zgH*)J=C=wWM#!OsyyODt(`yGLr3UH_Nu*ehIn(KWSjpv{CuLZPcxxMXLOw_>pPGtF zi_ZmoXrc55wS-82rdmX3DA{?Ad?2@E$Ws#Nxs;KU)4gw053)~W{wNSh+~bs*{kQGk+Omj5#FFWpl*lkY-7XArt*$o%W znkMzz{W+>DKOLQnT5k3{X}I*s)DwNfH+@YWDQyL0oj(!+1Q$u{Y!@-QNuuRrRs1yM_ga?Od& zH`A_u`pVGbKc8fwT42mCJ-1MU*5OEA_T{NYS^(K-%!ki)x-sqJ;hM^Gm3Q3vo0ZE| z3t4kGtp$Ro5=K5~gpy+gWHaqL95816wTgckbZ!t?U*C(EI1>2Xli-xU_wPd*q)rC} z$i1C8B~C^K<3Xq8qx@>TQ{KEfJY8vMpZ-&g2-kCc0d+x_QDJFN6Z-ghZg)M=(Q(2g zjquk?R?R^kxLhQ((F;ot&L>#x4f1+vlgWmJ7HAv2jeAY)ch$ne>!N=(u{UW1Hk_E{ zh_x+~x?LLVL!j_d@*fT$cpIBB!Yh7aLbR#HeIL8^s{OYug)0~_gjgBqqQ}f*taaJ< z=$xcwWrN&BWPAt2#E`-X$*Gacu2XbWrp37Ome&anU&no#)4lr<(+lIf3bDPC8t;Ju ztn9DjN*@nz-;dQo1V5du-~m2821Ltnxnmvz@_{f4+#F2_02IR3e|h(>)ZbQ4Lg!^V zoC$qS0zXe@nKZJ4S(7x?xvgiyqbvVUhY#_l)M?_MHzJm}F0r0m^dS!}#gK8aV;YbU z|1h8sCn+qjHh=#7z9F+iY2fbXu=Vp18sYNFd=}ZkHeRj|Z$kPIw|I2;M@o~^or!@g zz{87=$GwFc#`2!126*uy>B%7qogT_L0b3Sn{-L7*kyJ?7)0c>itps#V=TWbH_!n!h zC-8+KUxbEQ8%)h)EtY+rxD1=`Te~#y=euGXivNrGF0a?UR{g4p-zlMqcG+_no5vQ- zU1&b`PH@Nj_D9#XsF)s}zLIzc{ zssAS2e=h{o#=kfZy_qv#dh3wd%ZfB)(+;k;HcAMGp-QnFtVPLynh z+IQF8!3vCuj!&jjwgIN?^_~6Pl=#P49cdd`O-~Os2iL~MychRZH0E#sAuGL*I`X;0 z*PTgLm4rkwHoy4QFsXs3LYTH<#FNu#Ny(h zW~be1y1aqY$pv%{(W_imQ=~)LH2Z@7sc+m*j&u($1wJVY)_wmby<_W61;z8t+Zmyq zVkR!om5Q~@&CS77;QAx>9W0vukpIt6Xa)%FKbsOrP{$(^CnV<^F$)XJ(V?siLqPCp zRjftZ$5NXGZPS(1zKT31j;g`lWL6#`w~g9{oHqc6Vq{h>+!mBN&Pp9p`o(b$WVlTr zacVkV%)cor63LKcGVnc2DUO|6lv#d1HAu}LUrMJ-8i!TOL_F5&rovT*TMv%aFsEl# zM$+v4;Z#9%r}bMC$Ff%wuz5v^fjDq3{V5?cJw3U^^O|>4>ILbk| zM?gIJo-rR@9@r1qzVf|hG6t%~uY`o=gtoReBG88U6ra<kO&^A*Vw&6&stUP#mxC5FiQC+ZEN-SC^NmOeg`saDGviK_oBDIK5(L89Yd59}S^W zdO#XF`h8h@WcKwHCVc>gbaz$|ln}`?hM1e_sZzbimma!+PQDicgVe9QhuERcrm^4PImgSTN7N z2Yx|)cEtr*7*aYrpw!?yJLEvR5)o-AfJVQAc+NV!8LC&+9S#F0yl;v4Z>I`35W`sK z3RzlO8r#AF0lLxjFy7OU7P`;X+d-+gSFyi2wlM|{8;LUoC1aq?yuJctKafzzIq)E) zlPls=KD56woBwKr!uQ)tP6b=ZyF=(=O7iE#j3H1A6ZaEU)lm?yk)?$X!+88ZoEoe^ z*Ye2{`8UcnYbKW;g0E`GxN6(NK*F*(;?yQ40t@W`K7Ogt6J%FDuFfioP74M(t zU*FtBcp`d8YeP-RX@G~&Co>&F53paC5<_L-EX>3m_J$yF3HWIXv#&hK$f>0M;2l zw+RkbV%+2)&;o#2B#-R<5YOKC^99m+Ms{*51p}eSptK{Sp$X>A7&-;8xU8AGN8T>% za2nJ&O}1neBVG z%`JC8Lxl<4%Fq4F$g`eWSqHxZqY02lgi)a<`+IsiLVj4!vNn&DgrpLNI{IXj9Xg!` z*<(cqkG!hweibC&e$BXTJkLO4Jw*|fgoX7Gv?q=yM~*nX;YjB`Ml4A1{c34_ncy!% z4jTi{B1r0y!@7e8AF)MVTMR!=Ns6WbWaC$~4)tm0Q`|gfXXmUGxBGQ?kzAads*(A6 zk|sNVysq4A=b$g1970S!Cl3N&!V?cG#=E$<6dn;gWqa{Xz==S<8(Ik4!uaf+woCFv z39>pnu#nY+v`dqXBPw9EbCs;5V$A8tT^oGR+7$jv)mY?{R zf4SF=m#Z5W{S^3KhfpO#iL(nfrV2|IsVw6TPhH-R!9&*9k%OX{X5F)<2LOC<0PD)B z^>&T_!c^S!Y#0IbE+fkn?Ne}n9RIR#qnJkn&;l9}@l z1DN#KqgKJd;j%v)qKDZT4;#h9nya*R_4O5dQ{K6$DQJKmgGR@uQT;&I*$Yb^2awl8 z&Y@+mw6386I=(H4M}cJ)cs4VmkO}{LqJP1cWn2+x_8`v(`saWN$TfbY`ROzN*=b|= zVgZ`!U+qrFnOC>deQfPxN*PMqQBl)t^aG0^6Ov!)=F%E zDrtR?iV#WRZW#dg6{J*37vJTXj{!+?7j|it$o;%xC_NSG0-*h=sj2V|IyL~1B10gT zvwXv2nOluBfLJmA8S3Nfi>xO=l-uZwcZQ4rTF$3mU8VvMo~OI+r||1)DW5xZ55T7K zhhKDNaHB^F_niwiJOXcqE(+sySmG0(i6~HtaeDc_TsuRWm-GL&@gdn-9F(>OaCP;# zVE7`+XyVUo`#{*zT`2vf;X&yINyY-ek-d@6j(x{AVftX0e^$-+H-#K-h~;$T?CGx? zgZx*M>HnjCx&-E{Am~}u_wm6>^smKTetnrH5ps*V2-&HP_-bhya>hY#cb?LPJYf7yQ@ z)52sRP)EgFnD#cX#F112r(J`l#Hk=(w4a@$$gnFl$l%a?%-MczFo4s5+90=ZnbWae z)^uq0>*UFbSbc*HyGd)N7n6;v<=*E8jaoFyGU?Em-P&fE`75-iROkdsOUvCg1#%H( zTot7|%Ts-+Z_>>;r`~h9JlvI?)XV9n-_NzQGapJVFc6GUuPAd+ENRH4OxnoxC*XK~ zvVrM1h=<)>=+RJS0AyNuf(?a^7*-cWi{;j!w4kiJ1+>7*GSZRLpm4H|wZ7j@UH5>q z%;C_HWkNyYi)oqB()LhEV@G6}OG0|fW~ch}SXog>SrDFu^0V>gnkQCR3^8@8K1q+J z#e2uA#W^eNTQjE@TRZdClHWOn3HyH0+{G@t>K6R6J9UI8_WVfG=XL!3gU$1AjB|1h z{gvyi9FBf8$FyT%sZ*6uTsPp2#HeTM%2O+fuo1T5Q$RPLu-~%fA;ira*omgnOw<~QK92B z`?So$er*6dvdnU!rDLFlB7j+7c2;k|tx{T-)s}uY`y@%kzHq5`PMnktt!DPs=q>E5 zFfST=`;`CpFGOgZWG@Cg%q`lYNvSG|}8)&Re0Ae(1Oz!EHv0 zHjbQS+5Yy(8n0`mDu>RcMM1LyKWk68_CqMkoD25m`zzRsf~CH&*&lU=VH6BD9Sh1O z-db+|wmi*)8IE3OTy+g2iEnzT#zwd|hEcVwOy^MEzR4)L=gs*ELVDGpmxCT5S)X=) zbdB@B-A-Ez#qMdB59=4F9>1`&bD6iqY3_TG2H|mufr5n6IaTcGSoheLSoe^WU(UMl zcLD^xvUcl(tDjC+2kpxxkB6*|GoyL-U5A734!w~J5XvT0=)gZB(GwZoC2bF3tYJ`; zx1pjm6B%9|mEoVudKnd^Qd(p*ky&w&C6? z$>W%_(K^qrR^hO5cvpk4($LX1#BXK1@X*1vwM5xw>M%d+x<;^;nO@RPQo;(CQpu%7 zk`Ni)SXyoGLie$1te~LCmhnQSrKGvdVUtKRY#PFes6QXJwiq4|q~f{WGFz^uQpxQw zC)}4VZZ@mXj(_B2qR)F?Ei+}gH@bpUPdctEX!clfn%HU^l1rP8;aVOdjvQ5t(VAKP z?)c%V6*h~O4Z-=xNe-DyR@`f{z9Gl^gx4cO_!((*0*;obPsbehz6D7$@tlP;03_KP zN`#w*rE50f7@vI*vf7?8oWE(h);E;q$}zdh5!Di8qTpUBzh7ZA6jU?aNbBfevZ}55 z<>RrB0_*Ydzyx+Oc>~_vT}k;*hhoD;PPHA2_A~9&TxDAeEUfpcvn(Xm2-M1KI-DxT8o?I3xGhrSUQvD*W^!ha!T*EGl=ByQj>vDvvK+r(b!J6Iz%NE@ibxiCQGtmd6C2nzA~6t68`RxqJ7u>->p%@Avz(YCmWQ zFb>Z(6>(T!?YlTO>iTNrud`x3h@%#lx=V3KMt*TM^^1*ivB?4Y6@2>SBKrZFaP$?q zyBzjQlVf>Bh0{^QZ{A?fvYdEHJJFr`$b_t}q#vh_e=O+UDiR((bjYg1ok^SMw`!1$isvx>|%c!3z`Wk=#&KfXf>}GjrHoz-Tbaq zaPWY+d?{*PJhC)>r#St`a(%eQM}?6G^JT8Dp1j>Mop(#}Hkx29DIOb(HR;IA#CAIp zIxek9kN?>n#Z~6SXr&xyRj5`R8TD~rrhcq)d7IPWC^E)kZ|GB4iQW29pLjv^ zrCI467UvFGs@kEvj?UO~<7Sk0v5KN;WgIqL@@jq?&nHW)DH$9?(AQenrBtozQgG>{ z>}P+TEI%n&TOF??;7{uP7^5I8%wfdQH`NZw%HB z-=U%}_kA(J&hjdf**r8V+t^I%kUMgE9I4)}x-+A)R~pHgy%vAqW!TkK6k#pwn(|5Q zWWPOnES>cdvp3(DW0xnzwucvreq(J>7!7=F7J75bEpo->(JL&Crf)HF?s3QXQ7@^x zUA=B`8XN1uQS>QC@$uy3+G0uEL;U{PTAZ@Y8T+be*SF}`33|uIyuNgo=rwY`tbKLK zA*Hc%cDjsVu?!>eBJsQDZ6Osl<~^jH6KU ziM+BM4*gLq_X_p#jU@gu?(67fRU&!>`z_6p9{sB2N6a$8_RF&M+_n}y6$Xu7G31}3 zxZH|c{NsNw)Cc1;vpUV>?dUhZ<7^hq(?q)xIM!vEd5D-#V*ZqjVV=|1o8KOC!E`Gt ziQH`C-NuT_R6kGPmTYelf&R>3ch%z^+JbfqQ!pmMp3|C+;cv9 zN?Kp(lo(Sh`MI1`aBJsA`Fr{!3(44HXhp>0p^qmAJWDoUYac)FT=;P|m!T0|L83Xb zna4oSS{yPl(atCo;P1<9TO!g7GK|e%-d}{j2n8wvtMv99}C%fas4i5^G6TJ5e+_$~< zgWrmMu__$f;|#rZnVQ3CAP-+*&2G*lQ=RpB`r@XfyrQm~xk}My=Be=)f|WJqBolWU zI)9IJnIQ=!rN%yf!0=a0jCB9Z$CLayJ>)g;_IU)lTAjNby>Ed`s$pfjYC3+*SgEUh z+ISMzfs>rNP;v54L8VuV!sFzdWlz)W8e)?2d*$_UaW=00x~ZxxNgLMNG&%!o-=e8G zBxGGY#?IE?lmb_kzEIKXh}cQB_D8RjIXF7n8c(#;?5^o4h~MR~S>9X7!xqU5PVqcP zI*(;vXxziw(>9Xi{cbjEMZ&;rC_%lyKriId+e3TFPiga;P^!p{UBQN5?L*%4R(UfH zo89&8%q8Wl`Q5~2R+_5q48+Ik?W>Yv{OQOoNlaSB9WjT4)d=ucC&p#d`Ir66m%lW&M^?Ec^yc3noe#Dz zFq_CwsESUcT)vC!C9L1L3UKv~$Ocf@zwgdn@~FM!$)w8l+~)M-v_ZRC<%8V}qmcZy zx#^^g3K5E;1e*Tk2XaHrV=AJ~EhS)4uB1Xos5GkEo#Q&7O4~xVT$g99^;AHW9_SB z0a72$7dvT}&pjXUs{Eu;=Jc*%W0OYC5j}lkvTtTZn0bZntAm!nsd%Dxk72x7mbIqB zM3F6Po_%Y(*E}o>vM)J@deyuc9dq7j$I_5%$x=5{+f0xV2}-KmxtfuhE2E@RC8fgd zymQ$td3Tl~NvwyBmwNm~Zh6${kh?&oTU(>n*Hv0O1=Zj}xuSPZFF7U8mdZtc>kI7Y zW4M&JGap4>YOI=`_dKotZiUnC%937rsA*8h(~J{^)nG3nJ^uYm==e0O&ifm3w##Mf z*Lo^N2&*c?Qxy_}+Qc!{f=M5QU};BS*Top*Lp4Rjq>c4bD!xsA)5PWa4M{gbX-r49L{ zPR-y>U}bcFd}74*NB?p3YCl!NeYuH76-OT2;SSc~qn58LD(D)Llo<|d$!noSCz9zh zv&+6)m%nb^yidA2xIiHxB4WSJmNZboo#_8JQ@V5(Xp!MLlFV)+N_zGI91*Zs5ek!#|z<@mTR8p%6z+6&2fF2atM zl7vi!(k(cE`4XEb5Y(`&{L#{vOX1nIk!!-EQE8d^ zeNf7kH^BC!ZLfk9$)g>KEtk{wy=H`wa_S^l` z%~IVxrWfrN>gd?KR+WW@#wyq&1bKU7sc4-ozUtX_nK^M?AFVS>tw49YF%$`w`paZ~8_amE}y?K+MiB?>e zsj0AAf}7%CjWJVjnd%Jl!W{3Zh)Q`Vw|Zk5H{U*bbh|I}=|yZ`=lBDf5(k0hfEeKs zyQS}Q50`wACp%GGg(1FRrgMBv0sYD}ewhoa>&VMI`nz4-dC&d9(QdQQ znJ8vbw9y(O>?1MK7Z>AJz8t$3 zjFjd`)yj{Yw#q3X`R8(9VIsCSD_RqS=*o#gbe&J2GWPN@#qnWzUPDjOQKc$Ztt!R0 zj$5Rmc8izijP>$bZb>N(^#yn*N#GxUwMv0wfa`@?Jfw&`kyr22m5R;^M}q1vz&=a zU#NuLw&85wCa~ET%-CJZ3NtoWB#X~t0`AV=>y)P1sy1+>Bo46KkN0XP51iEZceFVB z>`McV`*y|z-E+5g)~7q5xUWr7?{;q7=vw80{#qAdhg!KVCu{2Jv-RE(Pc`?GPj7bh z@S@s>LKLiq4adx$5pFMk@7`HlsNHx(LtE0HYrx`vVE5d$v3&cTb`*ty#cPSbTV{2f zE1BK+iY1SY=(ww<>f?D`m13n> zaSap+?iQRD*WezYI3c(@59f6s@4LV3AF$WVo>{YIja~B~1M`fIpFVSz=^Cm1L$Dew z%%iAY*yXivGn?4WrH~n@gz`zxOsv-iiNxXtaWlB;5LHgyQ?BDJS>k+F>gDb0_HVs$ zC#yo4g1OC$UE<&nZ!1GoMBmp$pob{&Kdz_Xh^IoZQ|o5P4g&a~625iVtHdT^yW960G_pwA6mCLZt?tUO@2s;UPjf4P{pNB&{jcx3)@vv2@6d+1W~v4(*W z+{ugZ?`Equ?&x)O-2hTu`Iz| z)7HS?u#b44y`DMjXX5>0Vpf|5{=FHJur7TrUUQ(yi*8M%Q60Ckh-=5S^Z85m_wNTd z=3ib!&-b()&B9us#`%5$Ife5Z+;)wSmCOAyk?LXM%G$19b!Q8rgM&@~V^j9#b^ym( z(X~#h;|uiK+G6M9eKU!Nuuuu{+L!_q*(wXexpp(nnxS9olnQo{JMml>=% zs15Y-t(W(2XEjnOFC&HEAC%jxYtZ(N&oV#gY*>#Zm5EyP>sb)T>>&ypK)-WpclPy{ zN82}hj_b3U%?D3Lo2t7Lm1eF)4TQARyo;8!_mf;hl4EwoKaOCrHD4|}oqf|!HxRnb zC0Dg*xwj`?^UwtDwTh%^zNFrL#-!fH5l#pJ6|{G z)Erh9yL~w{HU|0^7iyvnYj+YJ3yPdh6q5)Z=(g|AGqaI)WGYx8lqmdS;uLw3v>eeT zV!H&lxj~ClCqw6J_}H5Nxr)^&^;~RJw2OGtEEub8)Q;tAs-D;_&lR{z%rrSUPBi>g zeXXc#a(;d-!EMMUdg(F0G+$EK3Ahh-zN$=_Ifh|tfjB6ap~q({uVQ*$>9|P}aKuz- za(4|%^>{S9ZhpN^f_i(jRg;-S+z0r8SEr^^w=f@iUsCJ74*vWqP{*7oi0c)B8AkeS zc1BKy%1uTZ%3IZAYfoH^ui$2KSv^1wvF^t+F%_RG%m;*0!dVNO^bf^%x~a*5v;ucB*z=7Q3wl4h|Hzth|O1Mg4!W6c*D^+$rS-_T==&1;#w z7+l^V+HN_rHr+2kTN=}4*{GLH>9Os}JLc}59!ACQr#l@0#dn@>-6fhtivKf&dwl+& z%>$yu+rN~I^WY|B2FQT(^Qj*e}=h}_=JyWc3K*$z(nR75C( z7v0EKZFj?F$ZXPEYHlo-3T zGwk75;BdR@r>iG~Ix}EnG2o^N4OD#&#~=JY%=q%I`F2^h{%*i1La9Ox{JLu8*X3uY zD!50c2n$mFYPUK-PG3J;HvG#*SRn>x23t( zL0Khut)j(zljac}RsI@`K<{lW?Fmzo#WRh9rW5yB8^EV9LJLbfU}}qomKvgb#H&Ff zYL{z@p_qHfW=P9=bL_I%`JZ5S??Mx=O<9SX>c%HEgR#8L9y-g{tg3?w&b`dlBfcv> zcRf8~$4%SCIn#8B@}uz0wA9P{uyB}zjX971hY>Ku4lj}UR0B5eDF7zV>!*)kV;F~q z_44-q{Wan8@nCICx9G{+RP>T7ql~nj73A`U&L#28V~f3B9%X1-4Dgjze^Z|s32;&( z3~I}-(bshP5WUxskg)r;p`nr8dpfB}`=+_MLm{WaUhG1}SXGV;^mm)aB&ckV{ocEH zm%R=j`)20W#DC2LR)1b@)ELTS=4(gBk%zVUu>ob^i4pwaTU&Jz+FtcyZld5)6=iH+ zfe|dRwTt1oHZ69-Tm3#uYbI&I`hNLYYu%Yad&}6$uk0rMd22l%_lvP&14x(c$!;o- zA#%r6kJOH3Fr`wWk_HbhpUoC9K#{5SrIETYFK7JAY`d_;ov(K%6*Ff-S~Q_W`)A55 zR`EI}w)ot+1>^vg0HN%&`_DQC7k9sVTQ&E84CZNZQ0<&)8KVR}uFEpvmm7!8_Fx|+ zBOK6yy^NtaZFXZtm}NJu@f$Fm+hh1-p;lG#5aCU>5hliM8As>O7n*@2TgAO!p=$$z z&$&Pu-;Y~ySDOA}@9o2s_Y^%4R{qTNdG}Y@dar#6R_-S}Hs1E~zB^qZUIfkJhx9iK`Pp%X}``OhIxFf~#?!q;gi( zbslGm*elvsvtRn)bbQ))9r`RrJxglu+@6kIpM*c5>TUX-G3m2yUyt*ok4U zom1}k{-L#d$;IW+77kD#{?X9eZX8RAeOiXAI4{*zvz|cNgDK`Vs4LS{9J-#W6xp~3 z4a}4^L9*=MpoQ5DtRvc#M5(9G?i$7;WM26kOqC2+9yaGT7Cf{D@+*y303@BzZNjt5 z6M5|Ywg=l(qE4U_hI+$eY3-}(RqWRfNqVHb=s`qdm(O(S!1Vr37g>ka1&;sW-zgSi zVLq0=k_uMBdtAo~?1#+}#A#n-+NN#sL8SuT%K@^C)4Si1`9m+C&*u#dy|9wauS1Vh z*0F~V<1YR~Hn|0uBT?$yKiu=1$^-rPkSP_-lMCh1Awzo`wILs`1msPZtR}?5x zb|bvAuG@K)J34){|23edT9$eyH)Yl3lI>WWRI`G)X^rA}(DT+E$p)aOyDXpf+;D#w zfsLzJJkVNM3J}u5P95X5VEZY1i$yVaUV|)AJ3W~>1WJ|2bKgjmP<1al^Itrs<$y*0 z7lnV&bc`FKU2}9-+7mMo3H3S*qGN|5{UdjpQf#XyG(2tTNJ1y@8_cq89NB#-d*wZ0NTSs7y5txmJG8)CIm#53hRpyh7h zJ(%y#${cytdN(`(#dvptto3Ay?96xXuSD4wjW*~WF0`cjF_iV>k`Puh=MZkr}dysUY zRH;AbcQI1TS?OJLzXXVblFlNvu}jzoDR5I+#>SRc%HUgP`%%*Y%vqM0?w&SwC}z zFrWFd9+DFBDr(HuTtz>d1-{f3!LZ0WK91P2@%;N2gIx9ej2_IYR_L}_d{Fg=!BmKc zFY=#fW=XaelcUS;#W_N{G}F@dU+!Dm_62)8hV~*tGti#t2v8F~;xC*S>k^4T9mO`o z9}h@+Z!Ps*`p$F7FUD*otmf808^@vluKyk!MuQ=Vukiz@l}Q#?*r~$HrMQw~{%lsC z%CG9_B_E`iFpJ=mgWs9i+G*r|%l^hK=&W7)T!Ox-dUCQT_hYaaB4IBqnWmTM85~xl zNDx?6%OJ`tNsz7LGX+>H)O)>a`MLbdSudI(i7vmktVHE%=g;-(${WA{*6^LQzGzd0 zI~@~c!L^UwMk}%Bh}Z50y`TB^v4>|2@(C ztLu0(ZQ)E5(dql!OK-z+_4YTv3Lvq=+f01s>A+HC4rToW!>36*%5emySC$3?ejE9r znRyhk%D@p+WV88)l3X?g1`aMoO?I6T0lxEyWl|kbuV|PbL1^Y+ zuWFFC@!mXeY&wond+@GRmnYqlb0mD~NU^M601|OyQ4AjH%5A2_6PWee$X4qdAo>3FbFe*ZB2=6hS=2P>ifHqyR^`gN&AXPVoqV`l6gI)*`*JQ zTXM0an=mNxZ5bcnND!?S(K}G9C;FyYrp<=WV^n8(G1k7_EwZd2p%m3u%p)`IUW^rG z?~&-L$<@+Edz%+ow{hA>5^sPCXD;zB(#Y9gssz(JWb&LN8bqxB4?-XH-MSti6~B{G zXz7v+IxfGRxjdEsHbi$o>ecNVkyiD@Vc4c8Y*JuuYWKtP_4iXoBC{%if`RiIq2dI` zH(3J0n4Q`s?)|jU7S|by=Dc4tVnfFa*u(~8`(XQTHG!Hx#Tj!*hduL>xRd@QC^3B( z1?=pM@uazuwCWWM9-xL^<%jL76uqN^*41zT|J*QE-J`N^(z*sr?Y2S?I5&&#_0esC zfAPxQ#6OU4?-kZ;CsG?pEfs}HX_DkOw0;VkJ8y|-kZZrx#`Wf=mpizUj*VLsqT?RW z(TfLPQ&Bco=Jfm=o*EAS+2)xbnr$Ymz^kZaoOH%G6i!=VTAMqwGf>*Es0~vntHFzg zOk(=!YNc85mXjN{_@2$z;fXhhJ2Q8Z^5eND0>tiusC+rSRw6qs`B4PJFPOhdrAL?< zFSR{rmDRj2=d*cX9DU{WQ!lHRw}`3ouLt0p#4E5pOb(N?+t!a9QzqnxGC<5P8RJ#s zqo8I65?^q?72>I70_8jU{CqQ1vCh{r^Vmnr)sEU3@Sgi<2B3G&yqJ@M{0FlNee-x%zp9mKWDvK~?5&DTw{h)bkgqbKUwvg0QohRiWc z29dk~I#m_e*y!vf9=BQfEd_H)8Vz7YiQr8N!3b2belv+TDf(!k`jrwp*c}G0;%w%J z&8_Q-`uF}19deEVQTun;ez(S`+?eg$2gR&gRnjzC2l!-s`mMf{QU`&AUyt7|&GjjZ ze|4v7WADSKNNL5|+r-M?nC}(ocH)xSKDWho;n_D2f+;kG*M~coPLu#66nB=0ct>JQ(Y(EKH2s{VenLj}X7o z(F==_$R26S+t^+R?dH3+mxKt@I*tKQMZvHsg{C8k4QMCZP8RBuz^ODQV_?uei~Xtb$e{E*3IIp5-LRI8c_trow3`>-70;OSbKs7kO0bog-WCs zqdhb+$m~~(7E(_S#*tlko#2N%ljCiJ@(+GMGpmD*z`qwEH!l&qb0tGPFTV8taPr)a zpb{M;EODBs;0-v+Drn|R!PsXJ}z>Yv8Ccng7SqNjFYT_zTKo4Z8Kp}70fTargKh>FY*EH2QLwl}5 zjA+b9r4_uGU4uNmafiS9INBjz2 z$e3QV5r;Lt^`H!<9Gi~bH2(#%WITD3mvKJQmhA5rpO>|XB&n9UIhGZ>67z%b{JrXA zV-~-?9Vf3RDAJlp?hB=v%UCFqN#F_piA#c$+4CWW$qpZrj{Ov(Ie(a*@5JkvB3_fL zh}t~#&KRTUXR!^)ht=}|7>wV{{%CTG%CCj06JjCYxeC5^fccBH&H74< zCxzrY*jsh$qd+aic(Unr^1XtXSaL<$hW)g3QYvpw--mq%M^#tj05sw*ws%4W&QVzI zsluBp5?58sWRugHLG!xos8#G2M(Ok~&+X0Xr@>c%%0Z zw-fAmPPwC{q#&p`NYu$L8NnYo_r=NOzdvAoWm_!<}WL@pb z?w+o(sKm5n_w3|vGYd-qe;$M!Gi#X<)fS?_ZcArV@0d5d+N zm}w!d#frCNIEpNP1ZfJI?t%-Kxc_oS4x-1w+}b`9CKtBP&>Hndp{4mVx6=otHalz& z`JQcqX|6}W=`DbZ(zk=L#dPp~R3wLV%-e#@O-Rgst5D$Dd}@y&+%XICLVy-==c_wDXS zy)%8D*c()?!QYTrj!?^~*j4w<{D^QjlExnbd!+l^@vL7lPP0g201fdOxN%#l+9(2?o zAlE(EH3P8DF)RkhMtuE9C4fu&_DJP%fQnvrT=eD?=Gt?w@bL@$wHcb$X$BokBe4#O zxPayS`s1+I;*tuxZL?etzQ>^mz)gGo*j9A2``C2+U?9WvGMvcuRk-OK-L`+T7Hj^6 zV1GbQZDCiei^yTu+~YPU*wc07W=bUC3t%oPu@Kd3$lj={M8D9VV(GP1@;->kp|ea2 zT0#6j%>T1S6+Tp;u0`*I{ zZ1uPA@QMsSWY`1*W?K6X0^6n9FJC?^haJdQFy5+|@XnChzRO~%@9%E?tLE?%lQhV8 zb&>mmg-d)uzScJ@^EDGyh{q{7K^gaCpzX;U&>N!&i*ETdT>Lj&?hTyf(X2umrwo6{}c#mSD@wJ+V6s`rzA1(lpN2 z>c!{?VYg2{W4kT^!)Ur4h~eB4glj$T(lXvt<|QoNhifm&9kh1`WQuGDB?l*q^3uN1 z)0drjNGk7BLbt0>8T}L=HfoXrf1j~_#e?MlsaB-LcZgZOyFFjLp;@cpK<%F)Z5YCj zd@QH@sb}Jlc8`6J#Q2MR2|{J5kPn(jce^I{RQhJ%tWRuWKc+?Dto2_M7w8+VV>9uj z7JKw~fqiM|AT1~KEm;a#+ud1)Y9p|{59#jm8!m2Coybf>@D2 zQs~Qj!c0H3_S?I;8*Nv$?^3$-OpdzA+|>O&>n3OK<-l$h_P>Z&u~GdP=j_=2OxB7Q zG*x%rGLd%EVy~WyWwm9Ie|xXXVzcdiF<%FUq}f}#xF2}!?&qUXhkMOyT%Awb^OqXf zxNE0DiYx==b_G;mcF4M*nJ!>pZrC`9_U3;B+9w|mikEXHBtNJERT;WKw+YFZAS^Nz zq~KIXLlNW?jPYnmii!85Wi=%rM2qyKIWjxbQv9QyZ{#@-8L_i$A6Hcm-F3*;j~Hj5 zhFx`*;g_bng*5V-A)mGO9M*n>nq7*)7Ox4EW8#+O#1BU}iEB^67pPX9K5$U51% z(^wp$r>7B1gOBWJv;SQX-YX3D3s2$VH-wh%e&8FTgUu*1xNLPluVryF#f~A-m#j2f zm_qaP9HiXJqLN`xFk@~$)t|GN1V2^(#5BHfU}5ec^wJ>Gq}{U)UNiRCwx&KqvAra7j`sD@ zx{$T5Ua8@rv?5sV+^Upm`gE2rrFrtZ_7vx=_qJ~kYpoEdC$tk~Tsl!!+l~*w_;tZ- zA@Ix7a{nvi7W#jtI!``p+p5ar)edyCCmS*ixydsK=V9peuon~hJ2*7vwJ6x79*&6n zU5TWH?>Diver~_yI6Y~Hu^;gi?Tx#cxTjt>)OItBTs?5WHCIX4zPoQ3qr89JT%|A$ z^rg}yzqM!aP?O3rB45)LroLUrWiKF^ns`ut?d^Kg&c^XMTe)qbGyOw`0SP(SI$6rSI!OhAz z{e$Mu%gwen@0+F0v2Z5DW#3&h+!0sR>1WuS&a$8EUWqAmO=X4Fq!eJ~I$(t(+}_Aj z{Tq`pk?+iSnA306RKt-O^LqSLrQ#+LV4*l1F1L$x*(60C5Bo8UxFs0|e=n3LrUI$% zc&Rq|j~WCKG&+d{kS8EUYkU8eh`reek9q!>sGO`N33SF6nlRY22Ha`|z@_wS!R|n- zM_ZG){q~4A0OhGINRrRTP23uafoq}^!L}opWc)NX?x_o-=KK4pL1G_~g?V!R8eNjp zKycv>$XNazCHz<4xutgRkE#UQPtSJrQlgp4y5;{|{CqxC>Shno4Cf}&7g>6gd1v7m zw2e-TO`BJ&2XT+R{#3fj$p0>-1We2cXHES+sHNJmehQ07k8IU zUsL9wvb|R_*&h>Dnry7(7jWTKXrd3&@S+La>jV)N55fCNNr-rBcY4Z|JN4GgkUYXhxsi+*za|Nc~BQsER`mkzVQ_(Unnf z=h1XRcD-$OeTGY#NgXg>g)|*{_n=wxecp^eiZ0oCc`Lk7h!z+hkVkS%zwYZ#{!ooAIji^YV|rmmf8RG>yw+1+!ftD>6q z!dhDTrr=`Rw+6sVh@Jk!XSnbeBj?S(U1`p*6-iY#xSbtFuZHiAkP{eX)2>$u^5F7N z(R9TlPEgNs!bj=(&{|#1xtH+o3&)~XBnhOREWb-}%y=p0iqfk(9Ylb7Y-wx1stdzJ z^&j8c;|MvDIt7r-X1>w^j6@owrni7h3xw1_p7Lrdak!F`7~@Kg5Vb18OU9L)G=|rnB@pq(c9&Z9N&xTyW4%XvBpYL-^5qd8>5I0;^lvAC}y8>VoYL1QCE~u43lai7IyBdd>cox^)QVscdWsF~0%rcrYFsH1F%khx^jD{YcrS~v} z+%Hw$@v_$_40B)y;HI`t*$lirp}M`MYGciP*9Xl>rMrJna&Q?d64Kl7A5YYfiksc> z55AFM5zD;IJzTN=(nup<38~mjky1a*gsI_6 ze9U%Ffp6DE4=9g>n5(FBm&)w+gKzWrJAq;`ov{=Fk=)q6(P_P0a&ymN-~^^YJqaEDN6-KEWBO{!-U=icW}51)tD5+4)6^;>>EY7RGx0W#9r5RbE^d^KlH zNCH=wuq0Ty15En(=L}y-<<;%RO&q}NfDq?T1ZR5|>@PRCoIGBwg&!=YiysYmH{v^9&LpRP@+jRp^(@H`=S)A&I}&QG zXbAu37A@}U{D3Ia7kJp)m;U*cTXRY)ehT=J;Vf-6)?XPlI@wAlAWj_7TdDEi%)lb8 z1pJETqN%;vV~yTe_5evn2_5`88Ixc?tQZL$u`%BgbuCMD7yj0w#iR@c>SBR~6oFHf z*kK=-$p5d68qQ9&metZx3OKtst+AUllG%CkOZvwDkrfla_xS$LShOm>p-J5e3K zqx`3X7F+AvuZ7#o3+Q_0@ya)AU9j| zB27l9I7*oNO4oP+r5(Yohg#a4yt|w`Tis=i6iw0SRi*K}E8=&!oJOj_+}L#R|6HUz`U=c$u^zlauKvLiA83(a&fJr8HCpHA`CJsCje zoCm(z?2W@i6J_|9DiHX!7CndUH}&Q)SiH9qYJ%)Nx8YPVxvy!f0ch80)dW5^&~1cU zFD+R2?iT0pW=Jx;Iji&BW4SgrBS6Aa2K~x5vXt2DQFPd~HAwaNH9TbtKja*KhCgQx zN%|PleMQmA!xL@lVXZX0E`9tfz}ZquH4VBj9x2|jk4+q7(|Jl1GNbkqMd2}d+7re7^N_Wku*mEgCNL_P9~2joq`MV) zbNG&C@9uM~{LjzN(AW2=o3GNyIn!Fa@7W`7I^A}xI~1w{Q5XaR#5}!w!)edDcx}EX zFVxWRFtNWYJsD#Kf3cv6m1q2C71i%VGl-e1%jPLD6*!mr!LSdd(IX5kQB;-$ZS)C_ zERO0`C|pIQNnDtgJNV)EGRvC8~*raG>6YAq$(s3h7g$hR`ov~lX{Zo_i*O}4`P{C*W{$2(d4 zmg6)cYvQaV?FWaF>iy@zj!yIAh5)ZuMM2ytyCA`In>e((+Rfyf?os!nNWfmj^2xBD z-wmRZNtIDu6_e~(8F#r&WOMp-Y6tCOnk&6Q;jlC7PCc`&w))SaOAKO#ERlV=%T^>z zsJlEl+Gl#3{q^~T6drM6u5GasTmg@Ovt*3CT`80ISC#A;n)0cIh7=+byt?F-<6ro% zqi-~U{My&%69@M;hU(BPq-w?l|D0TcX>G4r!rD?%nR*opIeZDm5APk)S@x-tiOMp! z1v|RSQeGs9V4@*6ZW)0i)6~(=23Kl$HFw4-}K@B3FMGwKXipiu-MORJn}`nx+xwtikOA1}>( z^>jvhmGKGM_(LO4F|sm_M_)A^2(=Mhg*N!y48}Hg5o<*|1MXJ$6Y`ZsgmXvidt4NU zCoBaR2#hd<9ywy_x^J|_MQ=(pcs5PDc#>)J33Rg>0wj8+**p<2Sx5v6x;jNL)n(GQ zI1>kd(1_uB+7cH22a>f!rt0oPWPH_rOE1azf#A#d5&=O9#p9U?l4dUPHdcY56fFH? zWAQKoP02cAI3k}S4woG5P4oBU6pZ{{o!Yk4L&sO-!lf%u00svpY=ODU@ z4}rC`04`Q`SP~pn5Fqv7Y)Fd1*AQp9FV(L3!){tF;?kfBz`lyxQ)W$nInHWpTOr|$mn=!_*?ai$^ z`2@sjYMa{Xt0-odbc~IST@cEEXt7j1Jv`f>5{N$NL4Rkvr20Fz{v0A_kmLMaP4=+N zR&{`JfdD1Xu{Ue%?-?<%^IG))26ifQUXdA|ogP!wG){kK1*dc_ zlpyA=>Y(3Ox#JavK^m3Rj~b3yI8DsfjPZ|>e1h?}Q$A>(E&o$zNB#XtQ{~>0pU;rG zX@L&)yp}W`y#NlPr21}6my!0CKU8VQ8vfXqJofhM3rr*Bx4`QrH@{)Jm*YIKH(^d& z2@?rSVn)!bCh5JyPf9P#*vgcayUY4-$F&<~88dh787rF(*T?!&G{uxYDCs}wGpSzC zBv&|WZAT}!q<|eFuot$XI|um97>N~Y$m7ov~1%j6X_{ahrQeI7-( zFv1bjvIb^ACNuwjJQFh)8=&k1NXaJeS|=4D!7-zbk$tvxLWV)N0dtLFH2TQjfqZI} zk`wg2O0A1sx~9Hpy7Tw4uHJ0ir4cLRm6d%ry!wQ59dP1wgrn=pA6nhN~P8k84%X( z`-`7>xx3Gkk!b@w*lj{Gqa@T3PPwgHk-iYCyq3N#gCuNXG8|%onL!xKlu*`6e@5iy z$b`LRaR(jmy9`Gzjm}VbQX@S9&B21a^P<=tqXNN~W;SoZuADm$n6qp>NE_VI>?^{l zMXQw%TKpZb!TYb+mLVXUn|y*S_~e`Z!d_i>K}=h^nv*;aem2J&+0J#|Y4;a+^1troPr9Q+8d1olai`EvswJkC=J5!~Fq3_B>8VlJdmK$hwC#1UDGx-#_64tN9ZD z>3B{`Z0fpGPdhh)e`R=g^uk9(8yS`?x7|avy#mjZPy%u-0Oen0wM5M487Anc+&u2D z`jT_4*iw~_xlxT_3m2*$w(@lH(jdh$#^|^7m!3tD8_ERT&7K!C{2u-!{3H0g$o(*G zAjexAnFLCVK*Z$XbRwnC>Qe6axU`+sD2o_m$Ux|GvVGWA&4^dcNHQ`#4Kej8ehnGZ zWQx~3iv9%lMBzZ@7q+y&K6K~%xH#$=3>~KhfD9w6?r%4u-51YolOv@;Q~ve*GT{hS zfltdZk8}T0dquHIGvhvfRu&Wpu5GrI*Wb55wR>|JzafWU3}3j|6_Ag+v$xt z$X_by%%%DB^Tf)IlJ-ZaFsXfC`2y4(y~m$2)&^}iEe8U10!91!~Q zau}a0sh)+HG)MSVw})=Oi{ZAHdyKw|g<;4!ZTK!D!_DLM?rZxQV69=>EGfZ>Z~t-Q zUIxBCZcY6Eo=*79-cfI$FM-*JukFho;QMh9j98dRb5vt>(7Qaar%a`deIlv%d0nQVRJXXLTBk(oOL9VD3UlYI@<2?YR`M(2^*(O!pYLShw$gr! zSDVkuov~C+iF0%p63`}}S2r++T90hq8HO?kDCzC}BB!q#q>o5CQoC0Rr z=?~al0{Zp;OiMR*rUOKKRuuZ{Ds{*BCOB>B#9w4>(?oQ(64D#|?tQbcvzrLP7q za4;+QyKCvI_T(o%DH~hzQ%uzo;>nML!d^Dw3wpiF36*6UVg3IzjwT_A%1%c&-#g|D zZNqfxqqo>+S@oag!CRa}N(x&4U&=9i3ZGXtmC_J#KKU(qY5v8#Ojq-FF!ofOFQv1c zNPA0tnNdlD67ZpMe)gZY@GWAXAq}7=ns5&EJz}i)G!k}-5w1I~lzF*vKEL|tB%j8_ zF7;n_fm>qw=EAq2nn@{W_$E&Ojsa_BWg7ZfMQIgWH(nR|S-kjt+mV*ptdUV-=Z)`; z!Mx?3f)XUiKS0%&HRE~?RQ$hc=Sk59r8Q1G-=^w%Az^CHs+i(8wicD&81K*V7o;@=3%*7AL+TL$W8cH{(iJN1pgZ{wZdsScjW`~y z3=iR!R~GZuse$LjHa1}~Ic&RXa%Pii8GmiAeG?uP{L$Ct{qLG{ad^k^{ov9V7`1g| z7h9};4}9KNt*Tb+n#K2_8Rx1$Kby&rh!IS?Ii&6g%cp-K$oNebqi`F3ulOuVC@&CZ zT6)lW9p5(1Y^HpmAlam$-wXR2Se`JaMHk&hbpZ$NXjT-qRo5M~2G+(maZT^DPyp4# zG?lEX!MHf?R@^dF6Q!w{p$7~$DqNGc;#`CjcXvpBc~t_=`6l)Y7R@ONIy<=<%MNMX z(JWy@5t7H56%VK2=z=*A@7##?{h{|v>uNyTS80@n6;9GMPjUtBdEF*|553hG)brEW zZbI$3@m^U>8VP?WLTiR^beVM7rMWU~#A8JzZtwtRL{OeKp|5{aZe&XsR^}IS+`LC_ zh8;kz%oG#U>hoLTuTFDY_t{Kv?>)9~M%;8nQH3daYhBUB&c6`)W?kKgZ>kMt z9DK{)^Kp{r^b-}Zxh=(uRKkYXM$TAKEiM%_J>y4jmWN_9dssN<8|GD^FHW~P%NWpW zPS3FRUP}xL8U!{C!1wbC`rmI4;kF`SJB0|@L^aW-y-oKUS>w6shc#(}i%qkL$mq7e zN)FmmY1|bobzno4S-P%ym;Z zdNRFxb7IRqG4XUr@18qg;tACyqiQP;@93^iHN|gHgrH-k>-AUOAwG>t3#b-))s9aX z0OHKoR7qh^_pUL+FV?RaP+9(fPM(f)_K8Eb$5oP$Z{!yqP9--C0#aFuK1`Nv{U2bh z$3qDOr~L=kS_Y{OdS1!`;xGjhsFJD-uDp+w4(r7-0qUjEn;V8i<{jb*eK@M-LFJ+g z7T&yF0uuT{!;nQ16(^ZH<)5=5ZJ2uWZBgRu#jKwx-umTRLX>-`hMmVr(Gna{Kdm1P z+s}CWp1h>g$94suCD%m zehxDfR!P{ot;Fmw4E5VmnMowJs+4Sb+$}mI@lGhk7q|Q5qLEK)e1+BW>~WpNH)r1K z?VC`^n|Io!1y~mAQklmU2KUYV0PK0bkS$ec4^oTuj^7|!6X|idC101YJRaISb04g?Ek|fGi@N_j?z;>rzmB$lSRdod}%D61wnYxX3)zh^)I} zqC25c>d?hsUhA(=7z{6t3p$KYlV{^Kc*>hr3Ir6~Xb`0(Gd(PnlZWM~Sqrq3WMmw> zYy%+V&&o;Yh-vlbHn@&9MB$M=i&imN@=`&Ep``?>O;)#{HG8h?EQkPrr*SY1G%KmCe+;xA~QK_F#xi!v0stGtC4sWa!kv zZkk057Mm*~Is3Lx>0rHRl`{jc62qqA#J#e?PR3BF*d2oU1mYj-SdR)_+~G3h%d-y> zIn;y3bqNO>oWhG-<}(^sIs#}W7} z7#@DS|)Qme~?%XDhy@BKry7&`iXY<$az?zeyRu%V8xO z+jyU0Io%vdr*s8)TqX13X2`ud(UJ*`|FXi&xCt&dxMG2C9Rgn5^t<_q0f-E(9~%Gy zYSpk5kf~iM*RJD@@oqmZAtEq4N8!G3v}sK{(L{IOebQ*ZQ7Lgr$HdNFWMRRrdOBeN z_H$WRSGz{o4cAySa>$>Sd`Xji^|+CVPcWV^=GOilJhF+te7MBwLdsw-+o-KkwnA;f zJ)?DW!cm}i>(w!@m3;kHjwkYK&%CQRz$BicTru{LY?#j;R^zEUf1n)O)-~_d6n1li z1=V{JqA4*3qxxT7`N!$nXU%&sfj4qRUJbP%r7Cd2gW3@+G3NYnb8Y{JLF#v(5MT$7 zCI#5i8`lMS3fNddErY>ZGrh^5-q~*iC;sg^ozs=)Wq>6SYLE@ozxb8%Ijm zh1uZ`1ov|K!P80GMGbN2u8VOl^S%5m!}sD$EWD$;n&N&uE!4i3LQ@`?x$QgK<}_@> zqX_Z6gYg|V6Q8WHVlM(gc`KE7?m=fL>E*w(5EWyN0DzqufU5aV7Chpz+m~Vb8NEp_(r+tk# zj{g3f?(=DZt;6ZL0DG0Ok@1Xx*EF-JDDSk;?NtM4Ta^orW8|nBuyvudPSGmH>QvL} zRLP*a@E=d(#D9PX4@+LB?^p;DJ92ROzoh<6f=AVH{1>Ob(F4bJ?cq=DYB0P9bwRUE z{0yWeDRHM?Ohl>iEA$>p-&)HNj91JtrYdq3**QXgSy1rs{EToE%3))oboniM0F8pe znM{QL-jm|SjGpjeDGD&11UBu^3kL)i=Q>FOlZ@xTP_=bRe7H`?yhL>YNhd9r`mwMnRi@YKmvZ(6&lVWgpg`ltdt z%-TZ^GXD_cuGg<=ZgYikeNN*2e0+(8mD&gUtW~Bem4@>A)c7*7$SCeS4)0d0~`Q9{&DrB znUcE$lH>gH+KWG9dgiE!%_;JX?Ql`^zEiReXx9hzr4#rf_H}M} z7h7^}S(efppH;psK_-Hbm}g*6ImYwctHyQSohAMMt!t~A!j|w)7QVC<*fx!;j+U4=+nvwyrPVaVF~6`M8(y%Qi~B6a^mD zAR{g(@$$&(6VrA7Jk_t)wEYt-T5^8ppF=0MhlGS(&$-+qGiT%3nG@ZMrGfp`(({kb z{CEr;aI$!yQ@m&G{-t{yDr%l|or+jr{I>PO**EWg{rPij-oXN&d=0%v;R-@ufP*q} z_10FqcOI{AO3$&mA3Zy%19a~84`JY|~qwmCss6QikryX=!bFK3d7W zC%bfVr~i(QPg}a-v5cJ5_b$l|FJI)w{@u&Fvn3Qbg7JV?xTLPQzQ&hRWm(FG(%3gg z*Msis0)mF=Y{e$~%FEt z&oo_d+0mr|+1ty&@F(*2tx1oQd8V3Os;~NA+HX|Uvlh4r&=)i_X6zNZuo1XScX|E) zQ;T|JQcTj)uK)b-nlpdGQ|F_=Y4zLDyUv+R*|*6cH|4bH^O%^(&#cOViE}G@{PInr z*6{MK{Tf>3G6Cq>e>|==>vrxuD!M-3T&H@P{`q$Kn65BffX<`tWmrGSt$?UGcZItqZzWP%>m|Hh?*4MM$o+{ z2yjA*sTaWmvL=|aNI@pap~4E;9I)fEAtIv=84VGdq!E`d^^9(+o3FTk-)jI$YM!os JF6*2UngAu{tKt9v literal 0 HcmV?d00001 diff --git a/architecture.svg b/architecture.svg new file mode 100644 index 00000000..4a50b6fc --- /dev/null +++ b/architecture.svg @@ -0,0 +1 @@ +
Loader
Loader
Modules
Modules
Context
Context
Modules
Modules
Events
Events
Service
Service
Core
Core
Fluoro
Fluoro
Message
Message
Session
Session
Command
Command
Events
Events
Regexp
Regexp
Middwares
Middwares
Task
Task
Filter
Filter
Messages
Messages
Adapter
Adapter
Elements
Elements
Api
Api
Plugins
Plugins
Config
Config
Command
Command
Messages
Messages
Session
Session
Events
Events
Regexp
Regexp
Middwares
Middwares
@kotori-bot/core
@kotori-bot/core
Decorators
Decorators
Http
Http
Colors
Colors
Random
Random
Other functions
Other functions
@kotori-bot/tools
@kotori-bot/tools
Cache
Cache
I18n
I18n
@kotori-bot/i18n
@kotori-bot/i18n
Logger
Logger
Transports
Transports
Loader
Loader
Adapters
Adapters
Server
Server
File
File
Database
Database
@kotori-bot/logger
@kotori-bot/logger
Console
Transport
Console...
@kotori-bot/loader
@kotori-bot/loader
Parsers
Parsers
Tsukiko
Tsukiko

Running process 

Running process 
Cli
Cli
Gui
Gui
Dameon
Dameon
kotori-bot
kotori-bot
Run
Run
Cli
Cli
CONFIG FILE
CONFIG FILE
DEFAULT VALUE
DEFAULT VALUE
environment variables
environment variables
CLI PARAMETERS
CLI PARAMETERS
Daemon
Daemon
External Modules
External Modules
Create
Create
Check and merge config 
Check and merge config 
Adapter
Adapter
Plugins
Plugins
Load modules
Load modules
Core
Core
Create bots
Create bots
Error catcher
Error catcher
Check update
Check update
Register contents
Register contents
Context
Context
Emit session events
Emit session events
Listen events
Listen events
Events
Events
Modules
Modules
Messages
Messages
Config
Config
Create core instance
Create core instance
Emit system events
Emit system events
Listen on_message event
Listen on_message event
Emit ready event
Emit ready event
Decorators
Decorators
Set global container
Set global container
Listen system events
Listen system events
Middlewares
Middlewares
Command
Command
Filter
Filter
Create session
Create session
Session
Session
Messages
Messages
Pass
Pass
Emit on_message event
Emit on_message event
Pass
Pass
Regexp
Regexp
task
task
Service
Service
Service
Service
Inject services
Inject services
Inject services
Inject services
Provide services
Provide services
Webui
Webui
Provide services
Provide services
Api
Api
Other
Other
Kams
Kams
Static
Static
Pages
Pages
Sandbox
Sandbox
Belong
Belong
Confirm
Confirm
Send
Send
Prompt
Prompt
Version: 1.6 Last update: 2024.8.10
Version: 1.6 Last update...
Kotori Bot Architecture
Kotori Bot Architecture
Copyright © 2023 - 2024 Arimura Sena All rights reserved
Copyright © 2023 - 20...
https://kotori.js.org
https://kotori.j...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/assets/advanced_architecture.md.Pljt76DU.js b/assets/advanced_architecture.md.Pljt76DU.js new file mode 100644 index 00000000..447f814e --- /dev/null +++ b/assets/advanced_architecture.md.Pljt76DU.js @@ -0,0 +1 @@ +import{N as t}from"./chunks/NpmBadge.BObfAVH-.js";import{c as i,a0 as l,G as a,j as o,a as r,o as s}from"./chunks/framework.P9qPzDnn.js";const n="/architecture.svg",m=JSON.parse('{"title":"Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/architecture.md","filePath":"advanced/architecture.md","lastUpdated":1723295344000}'),d={name:"advanced/architecture.md"},f=Object.assign(d,{setup(u){return(k,e)=>(s(),i("div",null,[e[0]||(e[0]=l('

Architecture

Kotori use workspace developing (monorepo) by pnpm and submodules management by git, and linter and formatter by Biome (fucks eslint and prettier).

Packages

fluoro (submodule)

',4)),a(t,{package:"fluoro"}),e[1]||(e[1]=o("p",null,[r("Fluoro is universal meta-framework,provides "),o("code",null,"Context"),r(),o("code",null,"Modules"),r(" and "),o("code",null,"Events"),r(". it is the base of whole Kotori,more details view "),o("a",{href:"./"},"Fluoro"),r(".")],-1)),e[2]||(e[2]=o("h3",{id:"kotori-bot-core",tabindex:"-1"},[r("@kotori-bot/core "),o("a",{class:"header-anchor",href:"#kotori-bot-core","aria-label":'Permalink to "@kotori-bot/core"'},"​")],-1)),a(t,{package:"@kotori-bot/core"}),e[3]||(e[3]=o("p",null,[r("It is the core of Kotori and provides many important features of kotori (encapsulates "),o("code",null,"fluoro"),r(").It has fully the support for browser and other not node.js (such as "),o("a",{href:"https://bellard.org/quickjs/",target:"_blank",rel:"noreferrer"},"quick.js"),r(" or service-worker),more details view "),o("a",{href:"./browser.html"},"Use in browser"),r(".")],-1)),e[4]||(e[4]=o("h3",{id:"kotori-bot-loader",tabindex:"-1"},[r("@kotori-bot/loader "),o("a",{class:"header-anchor",href:"#kotori-bot-loader","aria-label":'Permalink to "@kotori-bot/loader"'},"​")],-1)),a(t,{package:"@kotori-bot/loader"}),e[5]||(e[5]=o("p",null,[r("It encapsulates "),o("code",null,"@kotori-bot/loader"),r(" and provides some interface and features need server environments (Node.js).")],-1)),e[6]||(e[6]=o("h3",{id:"kotori-bot-logger",tabindex:"-1"},[r("@kotori-bot/logger "),o("a",{class:"header-anchor",href:"#kotori-bot-logger","aria-label":'Permalink to "@kotori-bot/logger"'},"​")],-1)),a(t,{package:"@kotori-bot/logger"}),e[7]||(e[7]=o("p",null,"It is fully functional logger base on adapters thinking and supports browser.",-1)),e[8]||(e[8]=o("h3",{id:"kotori-bot-i18n",tabindex:"-1"},[r("@kotori-bot/i18n "),o("a",{class:"header-anchor",href:"#kotori-bot-i18n","aria-label":'Permalink to "@kotori-bot/i18n"'},"​")],-1)),a(t,{package:"@kotori-bot/i18n"}),e[9]||(e[9]=o("p",null,[r("It is a i18n module,provides "),o("code",null,"i18n"),r(" for "),o("code",null,"@kotori-bot/core"),r(".")],-1)),e[10]||(e[10]=o("h3",{id:"kotori-bot-tools",tabindex:"-1"},[r("@kotori-bot/tools "),o("a",{class:"header-anchor",href:"#kotori-bot-tools","aria-label":'Permalink to "@kotori-bot/tools"'},"​")],-1)),a(t,{package:"@kotori-bot/tools"}),e[11]||(e[11]=o("p",null,[r("It is a tools module,provides some useful tools for "),o("code",null,"@kotori-bot/core"),r(" and "),o("code",null,"@kotori-bot/loader"),r(".")],-1)),e[12]||(e[12]=o("h3",{id:"tsukiko",tabindex:"-1"},[r("tsukiko "),o("a",{class:"header-anchor",href:"#tsukiko","aria-label":'Permalink to "tsukiko"'},"​")],-1)),a(t,{package:"tsukiko"}),e[13]||(e[13]=o("p",null,"It used to parse and check data type at running time.",-1)),e[14]||(e[14]=o("h2",{id:"process-image",tabindex:"-1"},[r("Process image "),o("a",{class:"header-anchor",href:"#process-image","aria-label":'Permalink to "Process image"'},"​")],-1)),e[15]||(e[15]=o("p",null,[o("img",{src:n,alt:"architecture"})],-1))]))}});export{m as __pageData,f as default}; diff --git a/assets/advanced_architecture.md.Pljt76DU.lean.js b/assets/advanced_architecture.md.Pljt76DU.lean.js new file mode 100644 index 00000000..447f814e --- /dev/null +++ b/assets/advanced_architecture.md.Pljt76DU.lean.js @@ -0,0 +1 @@ +import{N as t}from"./chunks/NpmBadge.BObfAVH-.js";import{c as i,a0 as l,G as a,j as o,a as r,o as s}from"./chunks/framework.P9qPzDnn.js";const n="/architecture.svg",m=JSON.parse('{"title":"Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/architecture.md","filePath":"advanced/architecture.md","lastUpdated":1723295344000}'),d={name:"advanced/architecture.md"},f=Object.assign(d,{setup(u){return(k,e)=>(s(),i("div",null,[e[0]||(e[0]=l('

Architecture

Kotori use workspace developing (monorepo) by pnpm and submodules management by git, and linter and formatter by Biome (fucks eslint and prettier).

Packages

fluoro (submodule)

',4)),a(t,{package:"fluoro"}),e[1]||(e[1]=o("p",null,[r("Fluoro is universal meta-framework,provides "),o("code",null,"Context"),r(),o("code",null,"Modules"),r(" and "),o("code",null,"Events"),r(". it is the base of whole Kotori,more details view "),o("a",{href:"./"},"Fluoro"),r(".")],-1)),e[2]||(e[2]=o("h3",{id:"kotori-bot-core",tabindex:"-1"},[r("@kotori-bot/core "),o("a",{class:"header-anchor",href:"#kotori-bot-core","aria-label":'Permalink to "@kotori-bot/core"'},"​")],-1)),a(t,{package:"@kotori-bot/core"}),e[3]||(e[3]=o("p",null,[r("It is the core of Kotori and provides many important features of kotori (encapsulates "),o("code",null,"fluoro"),r(").It has fully the support for browser and other not node.js (such as "),o("a",{href:"https://bellard.org/quickjs/",target:"_blank",rel:"noreferrer"},"quick.js"),r(" or service-worker),more details view "),o("a",{href:"./browser.html"},"Use in browser"),r(".")],-1)),e[4]||(e[4]=o("h3",{id:"kotori-bot-loader",tabindex:"-1"},[r("@kotori-bot/loader "),o("a",{class:"header-anchor",href:"#kotori-bot-loader","aria-label":'Permalink to "@kotori-bot/loader"'},"​")],-1)),a(t,{package:"@kotori-bot/loader"}),e[5]||(e[5]=o("p",null,[r("It encapsulates "),o("code",null,"@kotori-bot/loader"),r(" and provides some interface and features need server environments (Node.js).")],-1)),e[6]||(e[6]=o("h3",{id:"kotori-bot-logger",tabindex:"-1"},[r("@kotori-bot/logger "),o("a",{class:"header-anchor",href:"#kotori-bot-logger","aria-label":'Permalink to "@kotori-bot/logger"'},"​")],-1)),a(t,{package:"@kotori-bot/logger"}),e[7]||(e[7]=o("p",null,"It is fully functional logger base on adapters thinking and supports browser.",-1)),e[8]||(e[8]=o("h3",{id:"kotori-bot-i18n",tabindex:"-1"},[r("@kotori-bot/i18n "),o("a",{class:"header-anchor",href:"#kotori-bot-i18n","aria-label":'Permalink to "@kotori-bot/i18n"'},"​")],-1)),a(t,{package:"@kotori-bot/i18n"}),e[9]||(e[9]=o("p",null,[r("It is a i18n module,provides "),o("code",null,"i18n"),r(" for "),o("code",null,"@kotori-bot/core"),r(".")],-1)),e[10]||(e[10]=o("h3",{id:"kotori-bot-tools",tabindex:"-1"},[r("@kotori-bot/tools "),o("a",{class:"header-anchor",href:"#kotori-bot-tools","aria-label":'Permalink to "@kotori-bot/tools"'},"​")],-1)),a(t,{package:"@kotori-bot/tools"}),e[11]||(e[11]=o("p",null,[r("It is a tools module,provides some useful tools for "),o("code",null,"@kotori-bot/core"),r(" and "),o("code",null,"@kotori-bot/loader"),r(".")],-1)),e[12]||(e[12]=o("h3",{id:"tsukiko",tabindex:"-1"},[r("tsukiko "),o("a",{class:"header-anchor",href:"#tsukiko","aria-label":'Permalink to "tsukiko"'},"​")],-1)),a(t,{package:"tsukiko"}),e[13]||(e[13]=o("p",null,"It used to parse and check data type at running time.",-1)),e[14]||(e[14]=o("h2",{id:"process-image",tabindex:"-1"},[r("Process image "),o("a",{class:"header-anchor",href:"#process-image","aria-label":'Permalink to "Process image"'},"​")],-1)),e[15]||(e[15]=o("p",null,[o("img",{src:n,alt:"architecture"})],-1))]))}});export{m as __pageData,f as default}; diff --git a/assets/advanced_browser.md.CURKrjcr.js b/assets/advanced_browser.md.CURKrjcr.js new file mode 100644 index 00000000..4e9e9d2b --- /dev/null +++ b/assets/advanced_browser.md.CURKrjcr.js @@ -0,0 +1,68 @@ +import{_ as i,c as a,a0 as n,o as h}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"Use in browser","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/browser.md","filePath":"advanced/browser.md","lastUpdated":1723293723000}'),k={name:"advanced/browser.md"};function p(l,s,t,e,r,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Use in browser

To wait better supports...

bash
pnpm install @kotori-bot/core

The @kotori-bot/core package is the core package of the bot,it only used ecmascript standard api, so you can use it in any the environments which support ecmascript >= 2020.

typescript
import { Adapter, Api, Core, Elements, type Message, Messages, MessageScope } from '@kotori-bot/core'
+
+const core = new Core({
+  global: {
+    commandPrefix: '/'
+  }
+})
+
+function MyPlugin(ctx: Core) {
+  ctx.command('echo <msg>').action(({ args: [msg] }, session) => {
+    alert(\`You said: \${msg}\`)
+    console.log(session)
+  })
+}
+
+core.load(MyPlugin)
+
+core.start()
+
+class BrowserAdapter extends Adapter {
+  public platform = 'browser'
+
+  public constructor(ctx: Core) {
+    super(ctx, { commandPrefix: '/', extends: 'browser', master: '1', lang: 'zh_CN' }, 'browser')
+  }
+
+  public api = new (class extends Api {
+    public getSupportedEvents(): ReturnType<Api['getSupportedEvents']> {
+      return ['on_message']
+    }
+  })(this) as Api
+
+  public elements = new (class extends Elements {
+    getSupportsElements(): ReturnType<Elements['getSupportsElements']> {
+      return []
+    }
+
+    decode(message: Message): string {
+      return message.toString()
+    }
+
+    encode(raw: string): Message {
+      return Messages(raw)
+    }
+  })(this) as Elements
+
+  public handle = this.session.bind(this)
+
+  public start() {}
+  public stop() {}
+  public send() {}
+}
+
+const bot = new BrowserAdapter(core)
+
+const result = prompt('input:')
+
+bot.handle('on_message', {
+  type: MessageScope.PRIVATE,
+  message: result ?? '',
+  messageAlt: 'alt',
+  messageId: '1',
+  time: Date.now(),
+  userId: '1',
+  sender: {
+    nickname: 'my-browser'
+  }
+})
`,5)]))}const A=i(k,[["render",p]]);export{y as __pageData,A as default}; diff --git a/assets/advanced_browser.md.CURKrjcr.lean.js b/assets/advanced_browser.md.CURKrjcr.lean.js new file mode 100644 index 00000000..4e9e9d2b --- /dev/null +++ b/assets/advanced_browser.md.CURKrjcr.lean.js @@ -0,0 +1,68 @@ +import{_ as i,c as a,a0 as n,o as h}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"Use in browser","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/browser.md","filePath":"advanced/browser.md","lastUpdated":1723293723000}'),k={name:"advanced/browser.md"};function p(l,s,t,e,r,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Use in browser

To wait better supports...

bash
pnpm install @kotori-bot/core

The @kotori-bot/core package is the core package of the bot,it only used ecmascript standard api, so you can use it in any the environments which support ecmascript >= 2020.

typescript
import { Adapter, Api, Core, Elements, type Message, Messages, MessageScope } from '@kotori-bot/core'
+
+const core = new Core({
+  global: {
+    commandPrefix: '/'
+  }
+})
+
+function MyPlugin(ctx: Core) {
+  ctx.command('echo <msg>').action(({ args: [msg] }, session) => {
+    alert(\`You said: \${msg}\`)
+    console.log(session)
+  })
+}
+
+core.load(MyPlugin)
+
+core.start()
+
+class BrowserAdapter extends Adapter {
+  public platform = 'browser'
+
+  public constructor(ctx: Core) {
+    super(ctx, { commandPrefix: '/', extends: 'browser', master: '1', lang: 'zh_CN' }, 'browser')
+  }
+
+  public api = new (class extends Api {
+    public getSupportedEvents(): ReturnType<Api['getSupportedEvents']> {
+      return ['on_message']
+    }
+  })(this) as Api
+
+  public elements = new (class extends Elements {
+    getSupportsElements(): ReturnType<Elements['getSupportsElements']> {
+      return []
+    }
+
+    decode(message: Message): string {
+      return message.toString()
+    }
+
+    encode(raw: string): Message {
+      return Messages(raw)
+    }
+  })(this) as Elements
+
+  public handle = this.session.bind(this)
+
+  public start() {}
+  public stop() {}
+  public send() {}
+}
+
+const bot = new BrowserAdapter(core)
+
+const result = prompt('input:')
+
+bot.handle('on_message', {
+  type: MessageScope.PRIVATE,
+  message: result ?? '',
+  messageAlt: 'alt',
+  messageId: '1',
+  time: Date.now(),
+  userId: '1',
+  sender: {
+    nickname: 'my-browser'
+  }
+})
`,5)]))}const A=i(k,[["render",p]]);export{y as __pageData,A as default}; diff --git a/assets/advanced_contributing.md.CcXEnDf1.js b/assets/advanced_contributing.md.CcXEnDf1.js new file mode 100644 index 00000000..8fd1b5c0 --- /dev/null +++ b/assets/advanced_contributing.md.CcXEnDf1.js @@ -0,0 +1 @@ +import{_ as e,c as a,a0 as o,o as r}from"./chunks/framework.P9qPzDnn.js";const m=JSON.parse('{"title":"Contributing","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/contributing.md","filePath":"advanced/contributing.md","lastUpdated":1723293723000}'),i={name:"advanced/contributing.md"};function s(n,t,c,d,l,p){return r(),a("div",null,t[0]||(t[0]=[o('

Contributing

TIP

Here need to improved.

This project is open source and we welcome your contributions!

Steps

  1. Fork it!

  2. Create your feature branch: git checkout -b my-new-feature

  3. Commit your changes: git commit -am 'Add some feature'

  4. Push to the branch: git push origin my-new-feature

  5. Submit a pull request 😄

More details please refer to CONTRIBUTING.md

Docs standards

It's used for documentation purposes and styles (such as language and formatting).

',8)]))}const h=e(i,[["render",s]]);export{m as __pageData,h as default}; diff --git a/assets/advanced_contributing.md.CcXEnDf1.lean.js b/assets/advanced_contributing.md.CcXEnDf1.lean.js new file mode 100644 index 00000000..8fd1b5c0 --- /dev/null +++ b/assets/advanced_contributing.md.CcXEnDf1.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,a0 as o,o as r}from"./chunks/framework.P9qPzDnn.js";const m=JSON.parse('{"title":"Contributing","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/contributing.md","filePath":"advanced/contributing.md","lastUpdated":1723293723000}'),i={name:"advanced/contributing.md"};function s(n,t,c,d,l,p){return r(),a("div",null,t[0]||(t[0]=[o('

Contributing

TIP

Here need to improved.

This project is open source and we welcome your contributions!

Steps

  1. Fork it!

  2. Create your feature branch: git checkout -b my-new-feature

  3. Commit your changes: git commit -am 'Add some feature'

  4. Push to the branch: git push origin my-new-feature

  5. Submit a pull request 😄

More details please refer to CONTRIBUTING.md

Docs standards

It's used for documentation purposes and styles (such as language and formatting).

',8)]))}const h=e(i,[["render",s]]);export{m as __pageData,h as default}; diff --git a/assets/advanced_develop.md.CCQONjp6.js b/assets/advanced_develop.md.CCQONjp6.js new file mode 100644 index 00000000..cca1abcf --- /dev/null +++ b/assets/advanced_develop.md.CCQONjp6.js @@ -0,0 +1,5 @@ +import{_ as e,c as a,a0 as i,o as t}from"./chunks/framework.P9qPzDnn.js";const r=JSON.parse('{"title":"Develop","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/develop.md","filePath":"advanced/develop.md","lastUpdated":1723293723000}'),n={name:"advanced/develop.md"};function l(p,s,d,o,h,c){return t(),a("div",null,s[0]||(s[0]=[i(`

Develop

As dependence

bash
pnpm install kotori-bot

Of course, you can also install @kotori-bot/core or @kotori-bot/loader by according your needs, about the difference and modifications between them, see architecture.

typescript
import { Loader } from 'kotori-bot'
+
+const loader = new Loader()
+
+loader.run(true)

Secondary development

1.Clone the repository

bash
git clone https://github.com/kotorijs/kotori

2.Install dependencies

bash
pnpm install

3.Run

bash
pnpm dev

Other scripts:

  • build Build all packages at the workspace
  • build:action Build all packages at the workspace base safe mode.
  • dev:only Only start else nodemon
  • pub Publish all packages at the workspace base public access
  • test Run all unit tests at the workspace
  • version Generate CHANGELOG.md
`,14)]))}const g=e(n,[["render",l]]);export{r as __pageData,g as default}; diff --git a/assets/advanced_develop.md.CCQONjp6.lean.js b/assets/advanced_develop.md.CCQONjp6.lean.js new file mode 100644 index 00000000..cca1abcf --- /dev/null +++ b/assets/advanced_develop.md.CCQONjp6.lean.js @@ -0,0 +1,5 @@ +import{_ as e,c as a,a0 as i,o as t}from"./chunks/framework.P9qPzDnn.js";const r=JSON.parse('{"title":"Develop","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/develop.md","filePath":"advanced/develop.md","lastUpdated":1723293723000}'),n={name:"advanced/develop.md"};function l(p,s,d,o,h,c){return t(),a("div",null,s[0]||(s[0]=[i(`

Develop

As dependence

bash
pnpm install kotori-bot

Of course, you can also install @kotori-bot/core or @kotori-bot/loader by according your needs, about the difference and modifications between them, see architecture.

typescript
import { Loader } from 'kotori-bot'
+
+const loader = new Loader()
+
+loader.run(true)

Secondary development

1.Clone the repository

bash
git clone https://github.com/kotorijs/kotori

2.Install dependencies

bash
pnpm install

3.Run

bash
pnpm dev

Other scripts:

  • build Build all packages at the workspace
  • build:action Build all packages at the workspace base safe mode.
  • dev:only Only start else nodemon
  • pub Publish all packages at the workspace base public access
  • test Run all unit tests at the workspace
  • version Generate CHANGELOG.md
`,14)]))}const g=e(n,[["render",l]]);export{r as __pageData,g as default}; diff --git a/assets/advanced_history.md.FDb9Wd5O.js b/assets/advanced_history.md.FDb9Wd5O.js new file mode 100644 index 00000000..b88ddf11 --- /dev/null +++ b/assets/advanced_history.md.FDb9Wd5O.js @@ -0,0 +1 @@ +import{_ as e,c as a,a0 as o,o as r}from"./chunks/framework.P9qPzDnn.js";const m=JSON.parse('{"title":"History","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/history.md","filePath":"advanced/history.md","lastUpdated":1723293723000}'),n={name:"advanced/history.md"};function i(s,t,d,h,c,l){return r(),a("div",null,t[0]||(t[0]=[o('

History

TIP

Here need to improved.

On May In 2023 years,AI chat models(mainly referred to Claude and OpenAi) rose,I was interested in them. Many people use python to build QQ chatbot and connect to the AI chat models,but as a JavaScript developer, I decided to use JavaScript to do the same thing (Just for fun and to learn).Of course,at that time I didn't know that the community had already the chatbot framework base on Node.js.

At first,I only intended to implement QQ platform's access and the project's name is ISLABot.The name could be followed 2022 years and more early,at that time I was develop another chatbot framework's plugins by chinese language(be like shit),I named the plugin ISLABot(was from the anime character).I forgot the time when started use typescript as developing language for the project.The first commit to github is at 14th on June and the project had already renamed Kotori Bot,at the some time I fell in love with using romaji to named the project.

During the 0.x ~ 1.0 version,I had been adapted to QQ platform(base on go-cqhttp), During that time,I referred to many similar projects's api interface designs and thinkings.Finally,I released v1.0 at 29th on Dec In 2023 and moved repository from my own account biyuehu/kotori-bot to organization account kotorijs/kotori.

Waiting update...

',6)]))}const u=e(n,[["render",i]]);export{m as __pageData,u as default}; diff --git a/assets/advanced_history.md.FDb9Wd5O.lean.js b/assets/advanced_history.md.FDb9Wd5O.lean.js new file mode 100644 index 00000000..b88ddf11 --- /dev/null +++ b/assets/advanced_history.md.FDb9Wd5O.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,a0 as o,o as r}from"./chunks/framework.P9qPzDnn.js";const m=JSON.parse('{"title":"History","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/history.md","filePath":"advanced/history.md","lastUpdated":1723293723000}'),n={name:"advanced/history.md"};function i(s,t,d,h,c,l){return r(),a("div",null,t[0]||(t[0]=[o('

History

TIP

Here need to improved.

On May In 2023 years,AI chat models(mainly referred to Claude and OpenAi) rose,I was interested in them. Many people use python to build QQ chatbot and connect to the AI chat models,but as a JavaScript developer, I decided to use JavaScript to do the same thing (Just for fun and to learn).Of course,at that time I didn't know that the community had already the chatbot framework base on Node.js.

At first,I only intended to implement QQ platform's access and the project's name is ISLABot.The name could be followed 2022 years and more early,at that time I was develop another chatbot framework's plugins by chinese language(be like shit),I named the plugin ISLABot(was from the anime character).I forgot the time when started use typescript as developing language for the project.The first commit to github is at 14th on June and the project had already renamed Kotori Bot,at the some time I fell in love with using romaji to named the project.

During the 0.x ~ 1.0 version,I had been adapted to QQ platform(base on go-cqhttp), During that time,I referred to many similar projects's api interface designs and thinkings.Finally,I released v1.0 at 29th on Dec In 2023 and moved repository from my own account biyuehu/kotori-bot to organization account kotorijs/kotori.

Waiting update...

',6)]))}const u=e(n,[["render",i]]);export{m as __pageData,u as default}; diff --git a/assets/advanced_index.md.epBIxi7X.js b/assets/advanced_index.md.epBIxi7X.js new file mode 100644 index 00000000..64ffa8dc --- /dev/null +++ b/assets/advanced_index.md.epBIxi7X.js @@ -0,0 +1 @@ +import{_ as a,c as o,a0 as r,o as t}from"./chunks/framework.P9qPzDnn.js";const i="/fluoro.png",m=JSON.parse('{"title":"Fluoro","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/index.md","filePath":"advanced/index.md","lastUpdated":1725520614000}'),s={name:"advanced/index.md"};function n(l,e,d,c,u,h){return t(),o("div",null,e[0]||(e[0]=[r('

Fluoro

TIP

Here need to improved.

logo

Fluoro

⚡ A modern and universal Meta-Framework to construct other frameworks. ⚡

It refers to thoughts which are Aspect-Oriented Programming, Inversion of Control and Dependency Injection. Kotori's core is based it.

Why is Fluoro?

Fluoro, its original word is Fluorine (F₂), it is the strongest monatomic oxidant in nature, except for some inert gases, it can react with almost all elements, and its compounds are extremely rich and diverse and have stability. Take this name, hoping Fluoro has strong ability, thus build various diversified frameworks and provide strong underlying support.

Other applications

Misakura is a galgame(Visual novel games) made framework based on tauri, PIXI.js (solid.js) and Fluoro. It used Fluoro to implement scripts(lines command) parser.

MoeHub is a anime and galgame characters showing system, its backend used Fluoro to implement easy to manage database by console interaction.

License

GPL-3.0 license.

',13)]))}const g=a(s,[["render",n]]);export{m as __pageData,g as default}; diff --git a/assets/advanced_index.md.epBIxi7X.lean.js b/assets/advanced_index.md.epBIxi7X.lean.js new file mode 100644 index 00000000..64ffa8dc --- /dev/null +++ b/assets/advanced_index.md.epBIxi7X.lean.js @@ -0,0 +1 @@ +import{_ as a,c as o,a0 as r,o as t}from"./chunks/framework.P9qPzDnn.js";const i="/fluoro.png",m=JSON.parse('{"title":"Fluoro","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/index.md","filePath":"advanced/index.md","lastUpdated":1725520614000}'),s={name:"advanced/index.md"};function n(l,e,d,c,u,h){return t(),o("div",null,e[0]||(e[0]=[r('

Fluoro

TIP

Here need to improved.

logo

Fluoro

⚡ A modern and universal Meta-Framework to construct other frameworks. ⚡

It refers to thoughts which are Aspect-Oriented Programming, Inversion of Control and Dependency Injection. Kotori's core is based it.

Why is Fluoro?

Fluoro, its original word is Fluorine (F₂), it is the strongest monatomic oxidant in nature, except for some inert gases, it can react with almost all elements, and its compounds are extremely rich and diverse and have stability. Take this name, hoping Fluoro has strong ability, thus build various diversified frameworks and provide strong underlying support.

Other applications

Misakura is a galgame(Visual novel games) made framework based on tauri, PIXI.js (solid.js) and Fluoro. It used Fluoro to implement scripts(lines command) parser.

MoeHub is a anime and galgame characters showing system, its backend used Fluoro to implement easy to manage database by console interaction.

License

GPL-3.0 license.

',13)]))}const g=a(s,[["render",n]]);export{m as __pageData,g as default}; diff --git a/assets/advanced_testing.md.BIJx2vTA.js b/assets/advanced_testing.md.BIJx2vTA.js new file mode 100644 index 00000000..aacf6b7d --- /dev/null +++ b/assets/advanced_testing.md.BIJx2vTA.js @@ -0,0 +1 @@ +import{_ as e,c as s,a0 as a,o as n}from"./chunks/framework.P9qPzDnn.js";const u=JSON.parse('{"title":"Testing","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/testing.md","filePath":"advanced/testing.md","lastUpdated":1723293723000}'),i={name:"advanced/testing.md"};function r(o,t,d,l,p,c){return n(),s("div",null,t[0]||(t[0]=[a('

Testing

TIP

Here need to improved.

Kotori used Jest to implement unit tests.

Running tests

To run the tests, run:

bash
pnpm test
',6)]))}const g=e(i,[["render",r]]);export{u as __pageData,g as default}; diff --git a/assets/advanced_testing.md.BIJx2vTA.lean.js b/assets/advanced_testing.md.BIJx2vTA.lean.js new file mode 100644 index 00000000..aacf6b7d --- /dev/null +++ b/assets/advanced_testing.md.BIJx2vTA.lean.js @@ -0,0 +1 @@ +import{_ as e,c as s,a0 as a,o as n}from"./chunks/framework.P9qPzDnn.js";const u=JSON.parse('{"title":"Testing","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/testing.md","filePath":"advanced/testing.md","lastUpdated":1723293723000}'),i={name:"advanced/testing.md"};function r(o,t,d,l,p,c){return n(),s("div",null,t[0]||(t[0]=[a('

Testing

TIP

Here need to improved.

Kotori used Jest to implement unit tests.

Running tests

To run the tests, run:

bash
pnpm test
',6)]))}const g=e(i,[["render",r]]);export{u as __pageData,g as default}; diff --git a/assets/advanced_thanks.md.CK7Fjmcb.js b/assets/advanced_thanks.md.CK7Fjmcb.js new file mode 100644 index 00000000..8f84f7f1 --- /dev/null +++ b/assets/advanced_thanks.md.CK7Fjmcb.js @@ -0,0 +1 @@ +import{_ as a,c as t,a0 as r,o as n}from"./chunks/framework.P9qPzDnn.js";const f=JSON.parse('{"title":"Thanks","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/thanks.md","filePath":"advanced/thanks.md","lastUpdated":1723293723000}'),o={name:"advanced/thanks.md"};function i(s,e,l,h,c,d){return n(),t("div",null,e[0]||(e[0]=[r('

Thanks

Open source is a great thing,the developing process of every open-source projects need other projects' support and reference to help self improvement and walking farther.

List

Thanks, referred more and less them at kotori's whole developing process (the ranking is not in order):

License

GPL-3.0 license.

',7)]))}const k=a(o,[["render",i]]);export{f as __pageData,k as default}; diff --git a/assets/advanced_thanks.md.CK7Fjmcb.lean.js b/assets/advanced_thanks.md.CK7Fjmcb.lean.js new file mode 100644 index 00000000..8f84f7f1 --- /dev/null +++ b/assets/advanced_thanks.md.CK7Fjmcb.lean.js @@ -0,0 +1 @@ +import{_ as a,c as t,a0 as r,o as n}from"./chunks/framework.P9qPzDnn.js";const f=JSON.parse('{"title":"Thanks","description":"","frontmatter":{},"headers":[],"relativePath":"advanced/thanks.md","filePath":"advanced/thanks.md","lastUpdated":1723293723000}'),o={name:"advanced/thanks.md"};function i(s,e,l,h,c,d){return n(),t("div",null,e[0]||(e[0]=[r('

Thanks

Open source is a great thing,the developing process of every open-source projects need other projects' support and reference to help self improvement and walking farther.

List

Thanks, referred more and less them at kotori's whole developing process (the ranking is not in order):

License

GPL-3.0 license.

',7)]))}const k=a(o,[["render",i]]);export{f as __pageData,k as default}; diff --git a/assets/api_index.md.B1SyjzrW.js b/assets/api_index.md.B1SyjzrW.js new file mode 100644 index 00000000..149adaca --- /dev/null +++ b/assets/api_index.md.B1SyjzrW.js @@ -0,0 +1 @@ +import{_ as r,c as t,a0 as o,o as a}from"./chunks/framework.P9qPzDnn.js";const k=JSON.parse('{"title":"Api references","description":"","frontmatter":{},"headers":[],"relativePath":"api/index.md","filePath":"api/index.md","lastUpdated":1723293723000}'),s={name:"api/index.md"};function i(l,e,c,n,m,h){return a(),t("div",null,e[0]||(e[0]=[o('

Api references

This page is currently being written.For the time being, you can only view the TSDoc comments in the source code for details.Italics indicate that the documentation for this content needs to be improved.

Context

Tools

Components

Service

',10)]))}const p=r(s,[["render",i]]);export{k as __pageData,p as default}; diff --git a/assets/api_index.md.B1SyjzrW.lean.js b/assets/api_index.md.B1SyjzrW.lean.js new file mode 100644 index 00000000..149adaca --- /dev/null +++ b/assets/api_index.md.B1SyjzrW.lean.js @@ -0,0 +1 @@ +import{_ as r,c as t,a0 as o,o as a}from"./chunks/framework.P9qPzDnn.js";const k=JSON.parse('{"title":"Api references","description":"","frontmatter":{},"headers":[],"relativePath":"api/index.md","filePath":"api/index.md","lastUpdated":1723293723000}'),s={name:"api/index.md"};function i(l,e,c,n,m,h){return a(),t("div",null,e[0]||(e[0]=[o('

Api references

This page is currently being written.For the time being, you can only view the TSDoc comments in the source code for details.Italics indicate that the documentation for this content needs to be improved.

Context

Tools

Components

Service

',10)]))}const p=r(s,[["render",i]]);export{k as __pageData,p as default}; diff --git a/assets/app.CnTrt7QD.js b/assets/app.CnTrt7QD.js new file mode 100644 index 00000000..7b7f9f63 --- /dev/null +++ b/assets/app.CnTrt7QD.js @@ -0,0 +1 @@ +import{t as i}from"./chunks/theme.DXZpxO3K.js";import{R as o,a1 as u,a2 as c,a3 as l,a4 as f,a5 as d,a6 as m,a7 as h,a8 as g,a9 as A,aa as v,d as P,u as y,v as C,s as b,ab as w,ac as R,ad as E,ae as S}from"./chunks/framework.P9qPzDnn.js";function p(e){if(e.extends){const a=p(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=p(i),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{b(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&w(),R(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/assets/basic_config.md.CIBSN9d7.js b/assets/basic_config.md.CIBSN9d7.js new file mode 100644 index 00000000..36683470 --- /dev/null +++ b/assets/basic_config.md.CIBSN9d7.js @@ -0,0 +1,55 @@ +import{_ as i,c as a,a0 as l,o as n}from"./chunks/framework.P9qPzDnn.js";const g=JSON.parse('{"title":"配置详解","description":"","frontmatter":{},"headers":[],"relativePath":"basic/config.md","filePath":"basic/config.md","lastUpdated":1723345558000}'),h={name:"basic/config.md"};function t(e,s,p,k,d,r){return n(),a("div",null,s[0]||(s[0]=[l(`

配置详解

前面一节已对 kotori.toml 有了大概认识,本节内容将更为全面的介绍它。kotori.toml 是一个 Kotori 程序的核心配置文件,它一般位于 Kotori 根目录,与 package.json 文件同级,使用 TOML 格式。

文件格式

虽然默认使用的是 TOML 格式,但 Kotori 也支持 YAML 格式(.yaml.yml)与 JSON 格式,其它格式使用方法请参考下文

配置项

以下是将先前的配置片段集中在一起的例子(仅作参考请勿直接复制):

toml
[global]
+port = 720
+dbPrefix = "romiChan"
+lang = "en_US"
+commandPrefix = "/"
+noColor = false
+level = 25
+dirs = [
+  "./node_modules/@custom-scope/",
+  "./test_modules"
+]
+
+[adapter.cmd-test]
+extends = "cmd"
+master = 2_333
+nickname = "Kotarou"
+age = 18
+sex = "male"
+self-id = 720
+
+[adapter.kisaki]
+extends = "qq"
+appid = "xxxx"
+secret = "xxxxx"
+master = 2_333
+retry = 10
+
+[plugin.menu]
+alias = "cd"
+keywords = [ "菜单", "功能", "帮助" ]
+content = "菜单 | 小鳥%break%/menu - 查看BOT菜单%break%/hitokoto - 获取一条一言%break%ByHotaru"

global.lang

定义全局使用的语言,目前仅支持英语、日语、台湾语、中文四门语言。

  • 值:LocaleType
  • 默认值:'en_US'
typescript
type LocaleType = 'en_US' | 'ja_JP' | 'zh_TW' | 'zh_CN';

global.commandPrefix

定义全局使用的命令前缀。

  • 值:string
  • 默认值: '/'

global.dirs

定义需要加载的模块目录。

  • 值:string[]
  • 默认值:['./node_modules/', './node_modules/@kotori-bot/']

global.port

定义 Kotori 使用的端口(Http 服务器与 WebSocket 服务器)。

  • 值:number
  • 默认值:720

global.dbPrefix

定义 Kotori 使用的数据库前缀。

  • 值:string
  • 默认值:'romiChan'

global.noColor

定义是否禁用彩色输出。

  • 值:boolean
  • 默认值:false

global.level

定义日志输出级别。

  • 值:LoggerLevel
  • 默认值:25
typescript
export enum LoggerLevel {
+  TRACE = 10,
+  DEBUG = 20,
+  RECORD = 25,
+  INFO = 30,
+  WARN = 40,
+  ERROR = 50,
+  FATAL = 60,
+  SILENT = 70
+}

adapter

定义 Bot。

  • 值:{ [botName: string]: AdapterConfig }
  • 默认值:{}
  • botName:Bot 的唯一标识符,可自定义,建议仅使用小写英语字母、数字、连字符字符([a-z0-9-])
typescript
interface AdapterConfig {
+  extends: string;
+  master?: number;
+  lang?: langType;
+  commandPrefix?: string;
+  [propName: string]?: unknown;
+}

AdapterConfig.extends

定义该 Bot 使用的适配器。

  • 值:string
  • 可选:否

AdapterConfig.master

定义该 Bot 的最高管理员 id(即该用户在平台的 id)。

  • 值:string | number
  • 可选:是

AdapterConfig.lang

定义该 Bot 使用的语言。

  • 值:LocaleType
  • 默认值:继承自 global.lang

AdapterConfig.commandPrefix

定义该 Bot 使用的命令前缀。

  • 值:string
  • 默认值: 继承自 global.commandPrefix

AdapterConfig[propName]

除去以上由 Kotori 内部定义的配置项,extends 中指定的适配器一般会额外定义配置项用于 Bot 内部,这些配置项也可能不存在或为可选,具体请参考该模块的详情页。

plugin

定义插件的配置项。

  • 值:{ [pluginName: string]: PluginConfig }
  • 默认值:{}
  • pluginName:模块的 id,去掉该模块包名中的命名空间与模块前缀(Kotori-plugin-)部分
typescript
interface PluginConfig {
+  filter?: {};
+  [propName: string]?: unknown;
+}

PluginConfig.filter

定义该插件使用的滤器。

  • 值:FilterOption
  • 默认值:{}

关于滤器使用请参考 滤器

PluginConfig[propName]

类似于 AdapterConfig 中的 [propName],该插件也可能会定义一些配置项用于插件内部,具体请参考该模块的详情页。

CLI 参数

Kotori 提供了一些 CLI 参数,用于在启动时修改配置文件中的配置项。

  • --daemon:是否使用守护进程
  • --mode [name]:设置程序运行模式,builddev
  • --dir [path]:设置程序运行根目录
  • --config [name]:设置配置文件名
  • --level [number]:设置日志输出级别
  • --port [number]:设置服务器端口
  • --dbPrefix [string]:设置数据库前缀
  • --noColor:禁用彩色输出

环境变量

Kotori 提供了一些环境变量,用于在启动时修改配置文件中的配置项。

  • NODE_ENV:设置程序运行模式,builddev
  • DIR:设置程序运行根目录
  • CONFIG:设置配置文件名
  • PORT:设置服务器端口
  • DB_PREFIX:设置数据库前缀
  • LEVEL:设置日志输出级别
  • NO_COLOR:禁用彩色输出
  • DAEMON:是否使用守护进程

设置环境变量只需在运行根目录下创建 .env 文件,并以 KEY=VALUE 的形式写入即可,例如:

ini
NODE_ENV=build
+CONFIG=config.toml
+PORT=720
+DB_PREFIX=romiChan
+LEVEL=25
+NO_COLOR=off
+DAEMON=on

NOTE

在环境变量文件中,对于 boolean 值,使用 on 表示 true,使用 off 或其它任何值表示 false

优先级

一般地,CLI 参数 > 环境变量 > 配置文件 > 默认值

`,69)]))}const c=i(h,[["render",t]]);export{g as __pageData,c as default}; diff --git a/assets/basic_config.md.CIBSN9d7.lean.js b/assets/basic_config.md.CIBSN9d7.lean.js new file mode 100644 index 00000000..36683470 --- /dev/null +++ b/assets/basic_config.md.CIBSN9d7.lean.js @@ -0,0 +1,55 @@ +import{_ as i,c as a,a0 as l,o as n}from"./chunks/framework.P9qPzDnn.js";const g=JSON.parse('{"title":"配置详解","description":"","frontmatter":{},"headers":[],"relativePath":"basic/config.md","filePath":"basic/config.md","lastUpdated":1723345558000}'),h={name:"basic/config.md"};function t(e,s,p,k,d,r){return n(),a("div",null,s[0]||(s[0]=[l(`

配置详解

前面一节已对 kotori.toml 有了大概认识,本节内容将更为全面的介绍它。kotori.toml 是一个 Kotori 程序的核心配置文件,它一般位于 Kotori 根目录,与 package.json 文件同级,使用 TOML 格式。

文件格式

虽然默认使用的是 TOML 格式,但 Kotori 也支持 YAML 格式(.yaml.yml)与 JSON 格式,其它格式使用方法请参考下文

配置项

以下是将先前的配置片段集中在一起的例子(仅作参考请勿直接复制):

toml
[global]
+port = 720
+dbPrefix = "romiChan"
+lang = "en_US"
+commandPrefix = "/"
+noColor = false
+level = 25
+dirs = [
+  "./node_modules/@custom-scope/",
+  "./test_modules"
+]
+
+[adapter.cmd-test]
+extends = "cmd"
+master = 2_333
+nickname = "Kotarou"
+age = 18
+sex = "male"
+self-id = 720
+
+[adapter.kisaki]
+extends = "qq"
+appid = "xxxx"
+secret = "xxxxx"
+master = 2_333
+retry = 10
+
+[plugin.menu]
+alias = "cd"
+keywords = [ "菜单", "功能", "帮助" ]
+content = "菜单 | 小鳥%break%/menu - 查看BOT菜单%break%/hitokoto - 获取一条一言%break%ByHotaru"

global.lang

定义全局使用的语言,目前仅支持英语、日语、台湾语、中文四门语言。

  • 值:LocaleType
  • 默认值:'en_US'
typescript
type LocaleType = 'en_US' | 'ja_JP' | 'zh_TW' | 'zh_CN';

global.commandPrefix

定义全局使用的命令前缀。

  • 值:string
  • 默认值: '/'

global.dirs

定义需要加载的模块目录。

  • 值:string[]
  • 默认值:['./node_modules/', './node_modules/@kotori-bot/']

global.port

定义 Kotori 使用的端口(Http 服务器与 WebSocket 服务器)。

  • 值:number
  • 默认值:720

global.dbPrefix

定义 Kotori 使用的数据库前缀。

  • 值:string
  • 默认值:'romiChan'

global.noColor

定义是否禁用彩色输出。

  • 值:boolean
  • 默认值:false

global.level

定义日志输出级别。

  • 值:LoggerLevel
  • 默认值:25
typescript
export enum LoggerLevel {
+  TRACE = 10,
+  DEBUG = 20,
+  RECORD = 25,
+  INFO = 30,
+  WARN = 40,
+  ERROR = 50,
+  FATAL = 60,
+  SILENT = 70
+}

adapter

定义 Bot。

  • 值:{ [botName: string]: AdapterConfig }
  • 默认值:{}
  • botName:Bot 的唯一标识符,可自定义,建议仅使用小写英语字母、数字、连字符字符([a-z0-9-])
typescript
interface AdapterConfig {
+  extends: string;
+  master?: number;
+  lang?: langType;
+  commandPrefix?: string;
+  [propName: string]?: unknown;
+}

AdapterConfig.extends

定义该 Bot 使用的适配器。

  • 值:string
  • 可选:否

AdapterConfig.master

定义该 Bot 的最高管理员 id(即该用户在平台的 id)。

  • 值:string | number
  • 可选:是

AdapterConfig.lang

定义该 Bot 使用的语言。

  • 值:LocaleType
  • 默认值:继承自 global.lang

AdapterConfig.commandPrefix

定义该 Bot 使用的命令前缀。

  • 值:string
  • 默认值: 继承自 global.commandPrefix

AdapterConfig[propName]

除去以上由 Kotori 内部定义的配置项,extends 中指定的适配器一般会额外定义配置项用于 Bot 内部,这些配置项也可能不存在或为可选,具体请参考该模块的详情页。

plugin

定义插件的配置项。

  • 值:{ [pluginName: string]: PluginConfig }
  • 默认值:{}
  • pluginName:模块的 id,去掉该模块包名中的命名空间与模块前缀(Kotori-plugin-)部分
typescript
interface PluginConfig {
+  filter?: {};
+  [propName: string]?: unknown;
+}

PluginConfig.filter

定义该插件使用的滤器。

  • 值:FilterOption
  • 默认值:{}

关于滤器使用请参考 滤器

PluginConfig[propName]

类似于 AdapterConfig 中的 [propName],该插件也可能会定义一些配置项用于插件内部,具体请参考该模块的详情页。

CLI 参数

Kotori 提供了一些 CLI 参数,用于在启动时修改配置文件中的配置项。

  • --daemon:是否使用守护进程
  • --mode [name]:设置程序运行模式,builddev
  • --dir [path]:设置程序运行根目录
  • --config [name]:设置配置文件名
  • --level [number]:设置日志输出级别
  • --port [number]:设置服务器端口
  • --dbPrefix [string]:设置数据库前缀
  • --noColor:禁用彩色输出

环境变量

Kotori 提供了一些环境变量,用于在启动时修改配置文件中的配置项。

  • NODE_ENV:设置程序运行模式,builddev
  • DIR:设置程序运行根目录
  • CONFIG:设置配置文件名
  • PORT:设置服务器端口
  • DB_PREFIX:设置数据库前缀
  • LEVEL:设置日志输出级别
  • NO_COLOR:禁用彩色输出
  • DAEMON:是否使用守护进程

设置环境变量只需在运行根目录下创建 .env 文件,并以 KEY=VALUE 的形式写入即可,例如:

ini
NODE_ENV=build
+CONFIG=config.toml
+PORT=720
+DB_PREFIX=romiChan
+LEVEL=25
+NO_COLOR=off
+DAEMON=on

NOTE

在环境变量文件中,对于 boolean 值,使用 on 表示 true,使用 off 或其它任何值表示 false

优先级

一般地,CLI 参数 > 环境变量 > 配置文件 > 默认值

`,69)]))}const c=i(h,[["render",t]]);export{g as __pageData,c as default}; diff --git a/assets/basic_index.md.BT38T7GH.js b/assets/basic_index.md.BT38T7GH.js new file mode 100644 index 00000000..70a3f32d --- /dev/null +++ b/assets/basic_index.md.BT38T7GH.js @@ -0,0 +1 @@ +import{d as p,o,c as n,j as r,a as t,G as i,a0 as d}from"./chunks/framework.P9qPzDnn.js";import{N as u}from"./chunks/NpmBadge.BObfAVH-.js";const b=p({__name:"Voice",setup(s){function l(){new Audio("/assets/kotori.mp3").play()}return(e,a)=>(o(),n("span",null,[r("input",{type:"image",src:"https://cn.vitejs.dev/voice.svg#voice",onClick:a[0]||(a[0]=g=>l()),class:"voice",style:{"background-color":"rgb(243, 244, 245)",border:"none",padding:"3px","border-radius":"4px","vertical-align":"bottom",height:"1.5em",width:"1.5em"}})]))}}),k=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"basic/index.md","filePath":"basic/index.md","lastUpdated":1723293723000}'),h={name:"basic/index.md"},v=Object.assign(h,{setup(s){return(l,e)=>(o(),n("div",null,[e[10]||(e[10]=r("h1",{id:"简介",tabindex:"-1"},[t("简介 "),r("a",{class:"header-anchor",href:"#简介","aria-label":'Permalink to "简介"'},"​")],-1)),i(u,{package:"kotori-bot"}),e[11]||(e[11]=r("hr",null,null,-1)),e[12]||(e[12]=r("p",null,[t("kotori 是一个"),r("strong",null,"跨平台、解耦合、现代化"),t("于一体的聊天机器人框架,运行于 Node.js 环境,使用 TypeScript 语言开发。")],-1)),e[13]||(e[13]=r("h2",{id:"概述",tabindex:"-1"},[t("概述 "),r("a",{class:"header-anchor",href:"#概述","aria-label":'Permalink to "概述"'},"​")],-1)),r("p",null,[e[0]||(e[0]=t("「Kotori」是一个罗马字,在日语中是「ことり」(小鳥)的意思,发音为 ")),e[1]||(e[1]=r("code",null,"/kotolɪ/",-1)),e[2]||(e[2]=t()),i(b),e[3]||(e[3]=t(",该名字取自于 ")),e[4]||(e[4]=r("a",{href:"http://key.visualarts.gr.jp/",target:"_blank",rel:"noreferrer"},"Key 公式",-1)),e[5]||(e[5]=t(" 的游戏 ")),e[6]||(e[6]=r("a",{href:"https://bgm.tv/subject/4022",target:"_blank",rel:"noreferrer"},"《Rewrite》",-1)),e[7]||(e[7]=t(" 中主要女性角色之一:")),e[8]||(e[8]=r("a",{href:"https://bgm.tv/character/12063",target:"_blank",rel:"noreferrer"},"神户小鸟",-1)),e[9]||(e[9]=t(" (神戸(かんべ) 小鳥(ことり))。 借助 Kotori,可快速搭建一个多平台、功能强大的聊天机器人应用,通过安装不同模块为 Kotori 扩展功能、玩法和个性化配置等。同时,Kotori 为开发者提供了现成的 Cli 用于模块开发与 Kotori 二次开发。"))]),e[14]||(e[14]=d('

特点

  • 跨平台 得益于模块化支持,通过编写各种模块实现不同的功能与聊天平台接入

  • 解耦合 基于控制反转(IOC)与面向切面编程(AOP)思想,减少代码冗余与复杂度

  • 现代化 使用现代化的 ECMAScript 语法规范与强大的 TypeScript 类型支持

扩展支持

平台

  • QQ(基于腾讯官方接口)
  • QQ(基于 OneBot11 标准,适用于 NapCatgo-cqhttp 等项目)
  • CMD 命令行
  • Slack
  • Telegram
  • Email
  • Discord
  • MinecraftBedrock (基于 WebSocket)

即将支持:

  • Kook/开黑啦
  • WeChat/微信
  • Line
  • What's App
  • DingTalk

数据

  • LevelDb

Kotori 使用极为轻量的 LevelDb 作为数据存储。

你是?

  • 框架用户,使用 Kotori 搭建自己的机器人:快速开始
  • 平台用户,使用官方提供的现成机器人:立即使用
  • 开发者
    • 模块开发者,开发 Kotori 模块:开发指南
    • Node.js 开发者,将 Kotori 作为依赖开发自己的项目:接口参考
',12))]))}});export{k as __pageData,v as default}; diff --git a/assets/basic_index.md.BT38T7GH.lean.js b/assets/basic_index.md.BT38T7GH.lean.js new file mode 100644 index 00000000..70a3f32d --- /dev/null +++ b/assets/basic_index.md.BT38T7GH.lean.js @@ -0,0 +1 @@ +import{d as p,o,c as n,j as r,a as t,G as i,a0 as d}from"./chunks/framework.P9qPzDnn.js";import{N as u}from"./chunks/NpmBadge.BObfAVH-.js";const b=p({__name:"Voice",setup(s){function l(){new Audio("/assets/kotori.mp3").play()}return(e,a)=>(o(),n("span",null,[r("input",{type:"image",src:"https://cn.vitejs.dev/voice.svg#voice",onClick:a[0]||(a[0]=g=>l()),class:"voice",style:{"background-color":"rgb(243, 244, 245)",border:"none",padding:"3px","border-radius":"4px","vertical-align":"bottom",height:"1.5em",width:"1.5em"}})]))}}),k=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"basic/index.md","filePath":"basic/index.md","lastUpdated":1723293723000}'),h={name:"basic/index.md"},v=Object.assign(h,{setup(s){return(l,e)=>(o(),n("div",null,[e[10]||(e[10]=r("h1",{id:"简介",tabindex:"-1"},[t("简介 "),r("a",{class:"header-anchor",href:"#简介","aria-label":'Permalink to "简介"'},"​")],-1)),i(u,{package:"kotori-bot"}),e[11]||(e[11]=r("hr",null,null,-1)),e[12]||(e[12]=r("p",null,[t("kotori 是一个"),r("strong",null,"跨平台、解耦合、现代化"),t("于一体的聊天机器人框架,运行于 Node.js 环境,使用 TypeScript 语言开发。")],-1)),e[13]||(e[13]=r("h2",{id:"概述",tabindex:"-1"},[t("概述 "),r("a",{class:"header-anchor",href:"#概述","aria-label":'Permalink to "概述"'},"​")],-1)),r("p",null,[e[0]||(e[0]=t("「Kotori」是一个罗马字,在日语中是「ことり」(小鳥)的意思,发音为 ")),e[1]||(e[1]=r("code",null,"/kotolɪ/",-1)),e[2]||(e[2]=t()),i(b),e[3]||(e[3]=t(",该名字取自于 ")),e[4]||(e[4]=r("a",{href:"http://key.visualarts.gr.jp/",target:"_blank",rel:"noreferrer"},"Key 公式",-1)),e[5]||(e[5]=t(" 的游戏 ")),e[6]||(e[6]=r("a",{href:"https://bgm.tv/subject/4022",target:"_blank",rel:"noreferrer"},"《Rewrite》",-1)),e[7]||(e[7]=t(" 中主要女性角色之一:")),e[8]||(e[8]=r("a",{href:"https://bgm.tv/character/12063",target:"_blank",rel:"noreferrer"},"神户小鸟",-1)),e[9]||(e[9]=t(" (神戸(かんべ) 小鳥(ことり))。 借助 Kotori,可快速搭建一个多平台、功能强大的聊天机器人应用,通过安装不同模块为 Kotori 扩展功能、玩法和个性化配置等。同时,Kotori 为开发者提供了现成的 Cli 用于模块开发与 Kotori 二次开发。"))]),e[14]||(e[14]=d('

特点

  • 跨平台 得益于模块化支持,通过编写各种模块实现不同的功能与聊天平台接入

  • 解耦合 基于控制反转(IOC)与面向切面编程(AOP)思想,减少代码冗余与复杂度

  • 现代化 使用现代化的 ECMAScript 语法规范与强大的 TypeScript 类型支持

扩展支持

平台

  • QQ(基于腾讯官方接口)
  • QQ(基于 OneBot11 标准,适用于 NapCatgo-cqhttp 等项目)
  • CMD 命令行
  • Slack
  • Telegram
  • Email
  • Discord
  • MinecraftBedrock (基于 WebSocket)

即将支持:

  • Kook/开黑啦
  • WeChat/微信
  • Line
  • What's App
  • DingTalk

数据

  • LevelDb

Kotori 使用极为轻量的 LevelDb 作为数据存储。

你是?

  • 框架用户,使用 Kotori 搭建自己的机器人:快速开始
  • 平台用户,使用官方提供的现成机器人:立即使用
  • 开发者
    • 模块开发者,开发 Kotori 模块:开发指南
    • Node.js 开发者,将 Kotori 作为依赖开发自己的项目:接口参考
',12))]))}});export{k as __pageData,v as default}; diff --git a/assets/basic_modules.md.R6u-LxoQ.js b/assets/basic_modules.md.R6u-LxoQ.js new file mode 100644 index 00000000..685e1566 --- /dev/null +++ b/assets/basic_modules.md.R6u-LxoQ.js @@ -0,0 +1,32 @@ +import{_ as i,c as a,a0 as t,o as n}from"./chunks/framework.P9qPzDnn.js";const g=JSON.parse('{"title":"模块安装","description":"","frontmatter":{},"headers":[],"relativePath":"basic/modules.md","filePath":"basic/modules.md","lastUpdated":1723293723000}'),l={name:"basic/modules.md"};function h(e,s,k,p,o,d){return n(),a("div",null,s[0]||(s[0]=[t(`

模块安装

介绍

模块(Modules) 是 Kotori 的重要组成部分之一,通过使用模块以扩展各式各样的功能。

模块根据功能与应用范围不同,主要分为以下三大类型:

  • 插件(Plugin):为用户提供多种功能、玩法、扩展,数量最多的类型
  • 服务(Service):用于提供封装好的接口
  • 适配器(Adapter):用于接入各个聊天平台

寻找模块

Kotori 模块中心 内收录了大部分 Kotori 模块。选择所需模块,在详情页中会有插件的基础信息、介绍、使用说明、配置说明等。

下载与安装

此处以「QQ 适配器服务模块」(@kotori-bot/kotori-plugin-adapter-qq)为例。

模块的包名除去 @xxx/ 的部分(如果有),会有一段相似的开始字段,将其称之为「模块前缀」。通过模块前缀可判断模块类型,如「kotori-plugin-adapter-xxx」表示适配器,「kotori-plugin-database-xxx」表示数据库服务,「kotori-plugin-xxx」表示插件自定义服务,详细内容请参考 开发文档 - 插件范式

使用包管理工具

复制模块详情页里中的安装指令,或手动输入对应模块的 npm 包名,在 Kotori 根目录运行:

bash
npm install @kotori-bot/kotori-plugin-adapter-qq

手动下载安装

WARNING

该方法目前仅建议插件开发者在工作区下可适当使用。

在模块详情页里跳转至对应的 npm 地址或 GitHub 地址,下载模块的构建产物。 解压压缩包并移动至 Kotori 根目录下的 ./modules/ 内。

GitHub 仓库中存有模块的源码,在当前阶段,你应下载并使用模块的构建产物而非源码

务必确保解压后的模块文件夹仅有一层文件夹而非多层,否则将无法识别与加载模块。

添加加载目录

模块安装在 ./modules 目录内请忽略该步骤

通过包管理工具安装的模块一般会安装在 Kotori 根目录下的 ./node_modules/ 内,如若插件包名带有 @xxx/ 的前缀,表示为包的命名空间,上述示例模块中的「@kotori-bot/」为 Kotori 官方包的命名空间,表示官方模块,其余的命名空间或无命名空间的模块为社区模块

所有未安装在 ./modules/ 都应配置 kotori.ymlglobal.dirs 项以设置额外的加载根目录,但对于 ./node_modules/@kotori-bot/ 命名空间已经存在于 Kotori.yml 默认配置中,因此无需担心。

对于其它安装目录或命名空间则需手动添加到 Kotori.yml 中,如:

  • 使用包管理工具安装一个命名空间为 @custom-scope/ 的模块
  • 将模块安装在 Kotori 根目录下的 ./test_modules/

对应配置为:

toml
[global]:
+dirs = [
+  "./node_modules/",
+  "./node_modules/@kotori-bot/",
+  # 上面为默认配置的加载目录
+  "./node_modules/@custom-scope/",
+  "- ./test_modules"
+]

配置模块

根据安装的模块类型不同,配置策略也将不同。

插件

插件配置数据应写在 kotori.ymlplugin.<plugin-name> 项下,其中 <plugin-name> 为插件名字,不应含有包的命名空间与模块前缀,值必须是一个对象。插件的配置项由插件本身提供与指定,并非所有插件本身都会提供配置项。一般地,有提供配置项的插件内都会有一套默认配置,因此不配置也可以正常运行插件。插件的配置和说明可参考该插件的详情页,此处以 「菜单插件」(@kotori-bot/kotori-plugin-menu)为例,在详情页查看配置说明后在 kotori.yml 中配置相关内容:

toml
[plugin.menu]
+alias = "cd"
+keywords = [ "菜单", "功能", "帮助" ]
+content = "菜单 | 小鳥%break%/menu - 查看BOT菜单%break%/hitokoto - 获取一条一言%break%ByHotaru"

适配器

适配器配置数据应写在 kotori.ymladapter[instanceName] 项下,其中 instanceName 为适配器实例(以下简称「Bot」)名字应由小写英语字母、数字、连字符([a-z0-9])组成,值必须是一个对象。适配器的配置数据不会作用于适配器模块,Kotori 会根据配置数据创建对应 Bot。对于适配器的配置,必须提供一些必要配置项才能确保实例的正常运行,其中有部分配置项由 Kotori 内部定义,如:

toml
[adapter.cmd-test]
+extends = "cmd"
+master = 2_333

「cmd-test」是该 Bot 的名字也是在 kotori 程序运行中的唯一标识符,不可重复。extends 用于指定该实例使用的适配器,值为适配器模块的包名除去命名空间与适配器服务前缀的字符串,如:使用「@kotori-bot/kotori-plugin-adapter-qq」适配器,则应填入「qq」。master 用于指定该实例的最高管理员(Admin),值类型可为数字或字符串,非必填。 除去由 Kotori 内部定义的配置项以外,一般还需要填入该适配器要求传入的必要配置项。

toml
[adapter.cmd-test]
+extends = "cmd"
+master = 2_333
+nickname = "Kotarou"
+age = 18
+sex = "male"
+self-id = 720

cmd 适配器即「@kotori-bot/kotori-plugin-adapter-cmd」,属于 kotori 预装模块之一,为 kotori 程序当前所在控制台提供聊天交互功能,也是最方便的测试机器人的场所(但并不推荐,因为只支持文字交互,模块开发有更好的测试场所选择,详细内容请参考 开发文档 - 项目构建

不过此处使用的 cmd 适配器定义的配置项均有默认值因此为可选。接着使用「@kotori-bot/kotori-plugin-adapter-qq」适配器再创建一个 Bot:

toml
[adapter.cmd-test]
+extends = "cmd"
+master = 2_333
+nickname = "Kotarou"
+age = 18
+sex = "male"
+self-id = 720
+
+[adapter.kisaki]
+extends = "qq"
+appid = "xxxx"
+secret = "xxxxx"
+master = 2_333
+retry = 10

查看 QQ 适配器的详情页面可知,appidsecret 为其定义的必要配置项,retry 为其定义的可选配置项,关于 QQ 适配器的具体使用与配置项含义请查看其插件详情页。

关于配置文件的详细介绍请参考 配置详解

`,41)]))}const c=i(l,[["render",h]]);export{g as __pageData,c as default}; diff --git a/assets/basic_modules.md.R6u-LxoQ.lean.js b/assets/basic_modules.md.R6u-LxoQ.lean.js new file mode 100644 index 00000000..685e1566 --- /dev/null +++ b/assets/basic_modules.md.R6u-LxoQ.lean.js @@ -0,0 +1,32 @@ +import{_ as i,c as a,a0 as t,o as n}from"./chunks/framework.P9qPzDnn.js";const g=JSON.parse('{"title":"模块安装","description":"","frontmatter":{},"headers":[],"relativePath":"basic/modules.md","filePath":"basic/modules.md","lastUpdated":1723293723000}'),l={name:"basic/modules.md"};function h(e,s,k,p,o,d){return n(),a("div",null,s[0]||(s[0]=[t(`

模块安装

介绍

模块(Modules) 是 Kotori 的重要组成部分之一,通过使用模块以扩展各式各样的功能。

模块根据功能与应用范围不同,主要分为以下三大类型:

  • 插件(Plugin):为用户提供多种功能、玩法、扩展,数量最多的类型
  • 服务(Service):用于提供封装好的接口
  • 适配器(Adapter):用于接入各个聊天平台

寻找模块

Kotori 模块中心 内收录了大部分 Kotori 模块。选择所需模块,在详情页中会有插件的基础信息、介绍、使用说明、配置说明等。

下载与安装

此处以「QQ 适配器服务模块」(@kotori-bot/kotori-plugin-adapter-qq)为例。

模块的包名除去 @xxx/ 的部分(如果有),会有一段相似的开始字段,将其称之为「模块前缀」。通过模块前缀可判断模块类型,如「kotori-plugin-adapter-xxx」表示适配器,「kotori-plugin-database-xxx」表示数据库服务,「kotori-plugin-xxx」表示插件自定义服务,详细内容请参考 开发文档 - 插件范式

使用包管理工具

复制模块详情页里中的安装指令,或手动输入对应模块的 npm 包名,在 Kotori 根目录运行:

bash
npm install @kotori-bot/kotori-plugin-adapter-qq

手动下载安装

WARNING

该方法目前仅建议插件开发者在工作区下可适当使用。

在模块详情页里跳转至对应的 npm 地址或 GitHub 地址,下载模块的构建产物。 解压压缩包并移动至 Kotori 根目录下的 ./modules/ 内。

GitHub 仓库中存有模块的源码,在当前阶段,你应下载并使用模块的构建产物而非源码

务必确保解压后的模块文件夹仅有一层文件夹而非多层,否则将无法识别与加载模块。

添加加载目录

模块安装在 ./modules 目录内请忽略该步骤

通过包管理工具安装的模块一般会安装在 Kotori 根目录下的 ./node_modules/ 内,如若插件包名带有 @xxx/ 的前缀,表示为包的命名空间,上述示例模块中的「@kotori-bot/」为 Kotori 官方包的命名空间,表示官方模块,其余的命名空间或无命名空间的模块为社区模块

所有未安装在 ./modules/ 都应配置 kotori.ymlglobal.dirs 项以设置额外的加载根目录,但对于 ./node_modules/@kotori-bot/ 命名空间已经存在于 Kotori.yml 默认配置中,因此无需担心。

对于其它安装目录或命名空间则需手动添加到 Kotori.yml 中,如:

  • 使用包管理工具安装一个命名空间为 @custom-scope/ 的模块
  • 将模块安装在 Kotori 根目录下的 ./test_modules/

对应配置为:

toml
[global]:
+dirs = [
+  "./node_modules/",
+  "./node_modules/@kotori-bot/",
+  # 上面为默认配置的加载目录
+  "./node_modules/@custom-scope/",
+  "- ./test_modules"
+]

配置模块

根据安装的模块类型不同,配置策略也将不同。

插件

插件配置数据应写在 kotori.ymlplugin.<plugin-name> 项下,其中 <plugin-name> 为插件名字,不应含有包的命名空间与模块前缀,值必须是一个对象。插件的配置项由插件本身提供与指定,并非所有插件本身都会提供配置项。一般地,有提供配置项的插件内都会有一套默认配置,因此不配置也可以正常运行插件。插件的配置和说明可参考该插件的详情页,此处以 「菜单插件」(@kotori-bot/kotori-plugin-menu)为例,在详情页查看配置说明后在 kotori.yml 中配置相关内容:

toml
[plugin.menu]
+alias = "cd"
+keywords = [ "菜单", "功能", "帮助" ]
+content = "菜单 | 小鳥%break%/menu - 查看BOT菜单%break%/hitokoto - 获取一条一言%break%ByHotaru"

适配器

适配器配置数据应写在 kotori.ymladapter[instanceName] 项下,其中 instanceName 为适配器实例(以下简称「Bot」)名字应由小写英语字母、数字、连字符([a-z0-9])组成,值必须是一个对象。适配器的配置数据不会作用于适配器模块,Kotori 会根据配置数据创建对应 Bot。对于适配器的配置,必须提供一些必要配置项才能确保实例的正常运行,其中有部分配置项由 Kotori 内部定义,如:

toml
[adapter.cmd-test]
+extends = "cmd"
+master = 2_333

「cmd-test」是该 Bot 的名字也是在 kotori 程序运行中的唯一标识符,不可重复。extends 用于指定该实例使用的适配器,值为适配器模块的包名除去命名空间与适配器服务前缀的字符串,如:使用「@kotori-bot/kotori-plugin-adapter-qq」适配器,则应填入「qq」。master 用于指定该实例的最高管理员(Admin),值类型可为数字或字符串,非必填。 除去由 Kotori 内部定义的配置项以外,一般还需要填入该适配器要求传入的必要配置项。

toml
[adapter.cmd-test]
+extends = "cmd"
+master = 2_333
+nickname = "Kotarou"
+age = 18
+sex = "male"
+self-id = 720

cmd 适配器即「@kotori-bot/kotori-plugin-adapter-cmd」,属于 kotori 预装模块之一,为 kotori 程序当前所在控制台提供聊天交互功能,也是最方便的测试机器人的场所(但并不推荐,因为只支持文字交互,模块开发有更好的测试场所选择,详细内容请参考 开发文档 - 项目构建

不过此处使用的 cmd 适配器定义的配置项均有默认值因此为可选。接着使用「@kotori-bot/kotori-plugin-adapter-qq」适配器再创建一个 Bot:

toml
[adapter.cmd-test]
+extends = "cmd"
+master = 2_333
+nickname = "Kotarou"
+age = 18
+sex = "male"
+self-id = 720
+
+[adapter.kisaki]
+extends = "qq"
+appid = "xxxx"
+secret = "xxxxx"
+master = 2_333
+retry = 10

查看 QQ 适配器的详情页面可知,appidsecret 为其定义的必要配置项,retry 为其定义的可选配置项,关于 QQ 适配器的具体使用与配置项含义请查看其插件详情页。

关于配置文件的详细介绍请参考 配置详解

`,41)]))}const c=i(l,[["render",h]]);export{g as __pageData,c as default}; diff --git a/assets/basic_start.md.UB_T-Yyu.js b/assets/basic_start.md.UB_T-Yyu.js new file mode 100644 index 00000000..65ccf67b --- /dev/null +++ b/assets/basic_start.md.UB_T-Yyu.js @@ -0,0 +1,17 @@ +import{_ as i,c as a,a0 as t,o as e}from"./chunks/framework.P9qPzDnn.js";const c=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"basic/start.md","filePath":"basic/start.md","lastUpdated":1723345558000}'),h={name:"basic/start.md"};function n(l,s,p,k,d,r){return e(),a("div",null,s[0]||(s[0]=[t(`

快速开始

一键使用仓库

尽管 Kotori 的安装几乎已可以说是开箱即用的地步,只需要简单动用一下包管理器同时写入配置文件即可完成安装,但鉴于这仅仅安装了本体,并未附带一些基础且必要的模块,因此这里有一份来自于社区的 Kotori 手把手安装教程,该仓库提供了一个包含基础模块的 package.json 与 Kotori 配置文件以及启动脚本。

NOTE

如若视频加载不出来请考虑使用 VPN,当然这并不重要。

下载该仓库

  • 方法 1:使用 git 克隆
bash
git clone https://github.com/kotorijs/kotori-app.git
  • 方法 2:直接下载压缩包并解压

下载地址

安装依赖

1.安装 Node.js

2.安装项目依赖

支持 npmyarn 主流包管理器安装,pnpm 安装后可能存在启动问题,cnpmdenobun 未经测试,但理论仍可以进行安装并运行。先进入仓库根目录,输入以下任一命令安装:

bash
npm install

如若出现安装失败问题则强制安装:

bash
npm install --force

强制更新所有包:

bash
npm update --force

配置 kotori.toml

关于 kotori.toml 的详细介绍请参考 配置详解

正式启动

在仓库根目录打开命令行输入:

bash
npm exec kotori

当然,也可以直接使用仓库根目录下提供的两个启动文件:

  • Windows 平台下使用 start.bat
  • Linux/Mac 平台下使用 start.sh

启动完成后,在控制台内输入 /status 查看,输入 /help 查看帮助内容

进入 Webui

启动 Kotori 后,会在控制台看到以下类似信息:

log
7/19 23:59:59 LOG (1372799) : Http server started at http://127.0.0.1:720
+7/20 0:0:0 LOG (1372799) : WebSocket server started at ws://127.0.0.1:720
+KotoriO > 当前未设置 Webui 账号与密码,请输入 /webui 指令以进行初始化

此处的 http://127.0.0.1:720 即为 Kotori 网页控制台,第一次启动会提示设置用户名与密码,通过输入 /webui 命令进行设置:

bash
/webui
+KotoriO > 请输入 Webui 用户名:
+Admin
+KotoriO > 请输入 Webui 密码:
+kotori666
+8/11 10:37:5 LOG (1435470) [cmd/cmd-test]: User 2333 exec command webui successfully
+KotoriO > 配置成功!请再次输入指令以查看运行状态
+/webui
+8/11 10:47:30 LOG (1435470) [cmd/cmd-test]: User 2333 exec command webui successfully
+KotoriO > Webui 服务已启动!运行端口:720

当想重置用户名或密码时也可以输入以下指令:

bash
/webui -R
+8/11 10:35:51 LOG (1372799) [cmd/cmd-test]: User 2333 exec command webui -R successfully
+KotoriO > Webui 账户数据已重置

安装适配器与插件

  • 适配器:用于对接各个聊天平台,比如说你要用 qq 即安装 qq 适配器即可

  • 插件:扩展机器人的各种功能

  • 模块中心

此处收录了大部分的 Kotori 模块,选择自己喜欢的模块打开详情页查看说明,复制包名使用你的包管理器进行安装。以下指令会为你安装一些重要的基础插件:

更新 Kotori 与模块

一般地,在需要更新时使用以下命令即可进行更新:

bash
npm update -f

此外,当变动较大时可重新重复上述安装步骤。

使用 GUI

Kotori 内置了一个简易的交互式命令行功能,用于执行简单的操作,在根目录下输入以下命令:

bash
npm exec kotori ui

ui1

gui2

启用守护进程

程序运行中可能总会发生一些不会如用户所愿的错误和异常,为了避免这种情况,Kotori 提供了守护进程功能,当程序崩溃时,守护进程会自动重启程序,而在默认情况下(即程序处于 build 模式),守护进程是会自动启用的,想改变这一策略可更改环境变量或 CLI 参数,具体参见 配置详解

bash
24/8/11 10:35:56 INFO (1372340) : [Daemon] Starting...

当 Kotori 启动时出现以上消息则表明守护进程成功启用。同时在启用守护进程后,也可以通过指令 /restart(来自「@kotori-bot/kotori-plugin-core」) 手动进行重启:

bash
/restart
+KotoriO > Kotori 正在重启中...
+8/11 10:35:56 LOG (1372799) [cmd/cmd-test]: User 2333 exec command restart successfully
+24/8/11 10:35:56 WARN (1372340) : [Daemon] Restarting...

当然,守护进程在程序崩溃时也有一套判定规则,如若程序在短时间内多次崩溃,则视为存在重大异常问题,此时便会停止自动重启需要人工进行排查原因。。

从源码构建

请参考 作为依赖与二次开发

其它方式

N.A

`,57)]))}const g=i(h,[["render",n]]);export{c as __pageData,g as default}; diff --git a/assets/basic_start.md.UB_T-Yyu.lean.js b/assets/basic_start.md.UB_T-Yyu.lean.js new file mode 100644 index 00000000..65ccf67b --- /dev/null +++ b/assets/basic_start.md.UB_T-Yyu.lean.js @@ -0,0 +1,17 @@ +import{_ as i,c as a,a0 as t,o as e}from"./chunks/framework.P9qPzDnn.js";const c=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"basic/start.md","filePath":"basic/start.md","lastUpdated":1723345558000}'),h={name:"basic/start.md"};function n(l,s,p,k,d,r){return e(),a("div",null,s[0]||(s[0]=[t(`

快速开始

一键使用仓库

尽管 Kotori 的安装几乎已可以说是开箱即用的地步,只需要简单动用一下包管理器同时写入配置文件即可完成安装,但鉴于这仅仅安装了本体,并未附带一些基础且必要的模块,因此这里有一份来自于社区的 Kotori 手把手安装教程,该仓库提供了一个包含基础模块的 package.json 与 Kotori 配置文件以及启动脚本。

NOTE

如若视频加载不出来请考虑使用 VPN,当然这并不重要。

下载该仓库

  • 方法 1:使用 git 克隆
bash
git clone https://github.com/kotorijs/kotori-app.git
  • 方法 2:直接下载压缩包并解压

下载地址

安装依赖

1.安装 Node.js

2.安装项目依赖

支持 npmyarn 主流包管理器安装,pnpm 安装后可能存在启动问题,cnpmdenobun 未经测试,但理论仍可以进行安装并运行。先进入仓库根目录,输入以下任一命令安装:

bash
npm install

如若出现安装失败问题则强制安装:

bash
npm install --force

强制更新所有包:

bash
npm update --force

配置 kotori.toml

关于 kotori.toml 的详细介绍请参考 配置详解

正式启动

在仓库根目录打开命令行输入:

bash
npm exec kotori

当然,也可以直接使用仓库根目录下提供的两个启动文件:

  • Windows 平台下使用 start.bat
  • Linux/Mac 平台下使用 start.sh

启动完成后,在控制台内输入 /status 查看,输入 /help 查看帮助内容

进入 Webui

启动 Kotori 后,会在控制台看到以下类似信息:

log
7/19 23:59:59 LOG (1372799) : Http server started at http://127.0.0.1:720
+7/20 0:0:0 LOG (1372799) : WebSocket server started at ws://127.0.0.1:720
+KotoriO > 当前未设置 Webui 账号与密码,请输入 /webui 指令以进行初始化

此处的 http://127.0.0.1:720 即为 Kotori 网页控制台,第一次启动会提示设置用户名与密码,通过输入 /webui 命令进行设置:

bash
/webui
+KotoriO > 请输入 Webui 用户名:
+Admin
+KotoriO > 请输入 Webui 密码:
+kotori666
+8/11 10:37:5 LOG (1435470) [cmd/cmd-test]: User 2333 exec command webui successfully
+KotoriO > 配置成功!请再次输入指令以查看运行状态
+/webui
+8/11 10:47:30 LOG (1435470) [cmd/cmd-test]: User 2333 exec command webui successfully
+KotoriO > Webui 服务已启动!运行端口:720

当想重置用户名或密码时也可以输入以下指令:

bash
/webui -R
+8/11 10:35:51 LOG (1372799) [cmd/cmd-test]: User 2333 exec command webui -R successfully
+KotoriO > Webui 账户数据已重置

安装适配器与插件

  • 适配器:用于对接各个聊天平台,比如说你要用 qq 即安装 qq 适配器即可

  • 插件:扩展机器人的各种功能

  • 模块中心

此处收录了大部分的 Kotori 模块,选择自己喜欢的模块打开详情页查看说明,复制包名使用你的包管理器进行安装。以下指令会为你安装一些重要的基础插件:

更新 Kotori 与模块

一般地,在需要更新时使用以下命令即可进行更新:

bash
npm update -f

此外,当变动较大时可重新重复上述安装步骤。

使用 GUI

Kotori 内置了一个简易的交互式命令行功能,用于执行简单的操作,在根目录下输入以下命令:

bash
npm exec kotori ui

ui1

gui2

启用守护进程

程序运行中可能总会发生一些不会如用户所愿的错误和异常,为了避免这种情况,Kotori 提供了守护进程功能,当程序崩溃时,守护进程会自动重启程序,而在默认情况下(即程序处于 build 模式),守护进程是会自动启用的,想改变这一策略可更改环境变量或 CLI 参数,具体参见 配置详解

bash
24/8/11 10:35:56 INFO (1372340) : [Daemon] Starting...

当 Kotori 启动时出现以上消息则表明守护进程成功启用。同时在启用守护进程后,也可以通过指令 /restart(来自「@kotori-bot/kotori-plugin-core」) 手动进行重启:

bash
/restart
+KotoriO > Kotori 正在重启中...
+8/11 10:35:56 LOG (1372799) [cmd/cmd-test]: User 2333 exec command restart successfully
+24/8/11 10:35:56 WARN (1372340) : [Daemon] Restarting...

当然,守护进程在程序崩溃时也有一套判定规则,如若程序在短时间内多次崩溃,则视为存在重大异常问题,此时便会停止自动重启需要人工进行排查原因。。

从源码构建

请参考 作为依赖与二次开发

其它方式

N.A

`,57)]))}const g=i(h,[["render",n]]);export{c as __pageData,g as default}; diff --git a/assets/basic_usage.md.ggWDU75P.js b/assets/basic_usage.md.ggWDU75P.js new file mode 100644 index 00000000..0d117ffa --- /dev/null +++ b/assets/basic_usage.md.ggWDU75P.js @@ -0,0 +1,45 @@ +import{_ as s,c as a,a0 as l,o as e}from"./chunks/framework.P9qPzDnn.js";const c=JSON.parse('{"title":"立即使用","description":"","frontmatter":{},"headers":[],"relativePath":"basic/usage.md","filePath":"basic/usage.md","lastUpdated":1723293723000}'),t={name:"basic/usage.md"};function n(o,i,h,p,k,r){return e(),a("div",null,i[0]||(i[0]=[l(`

立即使用

TIP

本篇适用于想立即体验基于 Kotori 搭建的 Bot 实际效果、或单纯想使用由官方提供的各平台 Bot 服务的平台用户。


服务平台

目前共提供 2 个平台、四个 Bot:

QQ

Kanbe Kotori(小鳥一号)

小鳥二号

基于 OneBot11 标准的第三方 QQ 机器人(@Kotori-bot/kotori-plugin-adapter-onebot)。

立即使用:Kotori 交流群

小鳥三号

基于 Tencent 官方 API(@Kotori-bot/kotori-plugin-adapter-qq)。相比于第三方 QQ 机器人,限制较多(不可发送主动消息、URL 需备案等),其余功能与「小鳥二号」基本一致。

立即使用:Kotori 交流群

Misakura

基于 OneBot11 标准的第三方 QQ 机器人。

立即使用:Kotori 交流群

Telegram

Sena

基于 @kotori-bot/adapter-telegram 的 Telegram 机器人。

立即使用:@Sena0620Bot

Discord

Slack

功能一览

WARNING

以下内容已严重过期

以下展示并非全部功能。

@kotori-bot/kotori-plugin-core

  • /core 查看实例统计信息
  • /bot 查看当前 bot 信息与运行状态
  • /bots 查看所有 bot 信息与运行状态
  • /version 查看版本信息
  • /about 帮助信息
  • /update 检查更新

@kotori-bot/kotori-plugin-help

  • /help [command] 查看指令帮助信息

@kotori-bot/kotori-plugin-menu

/menu 查看 BOT 菜单 别名:cd

kotori-plugin-random-img

  • /sex [tags] Pixiv 图片
  • /sexh HuliImg 图片
  • /bing 必应每日图
  • /day 60s 带你看世界
  • /earth 实时地球
  • /china 实时中国

kotori-plugin-bangumi

  • /bgm <content> [order:number=1] 番组计划搜索游戏/动漫
  • /bgmc 获取番组计划今日放送
bash
/bgm 素晴日
+> 原名:素晴らしき日々~不連続存在~公式ビジュアルアーカイヴ
+中文名:素晴之日 不连续的存在 Official Visual Archive
+介绍:人気アダルトゲームブランド「ケロQ」から、実に6年ぶりに発売された新作『素晴らしき日々 ~不連続存在~』。その魅力をギュッと閉じ込めたファン必携の一冊。描き下ろしイラスト&原作を担当したSCA-自(すかぢ)氏の新作書き下ろしテキスト満載でお届け。
+标签:素晴らしき日々 设定集 电波 神作 素晴日 公式书 2010 百合 FanBook 悬疑 画集 画集・設定資料集 推理 VFB
+详情:https://bgm.tv/subject/8318
+[image]

kotori-plugin-bilibili

  • /bili <bvid> Bilibili 视频信息查询
  • /bilier <uid> Bilibili 用户信息查询

kotori-plugin-hitokoto

  • /hitokotos 随机语录
  • /hitokoto 获取一条一言
bash
/hitokoto
+> 如果人们不相信数学简单,那是因为他们没有意识到人生有多复杂。——冯诺依曼
+类型:俗语

kotori-plugin-mediawiki

  • /wiki <content> [order] 搜索 MediaWiki
  • /wikil 查看 MediaWiki 列表
bash
/wiki 月社妃
+> 标题:月社妃
+内容:月社妃(日语:月社(つきやしろ) 妃(きさき))是由ウグイスカグラ所制作的18禁galgame《纸上的魔法使》及其衍生作品的登场角色。是主人公四条琉璃的同胞妹妹。
+https://mzh.moegirl.org.cn/.php?curid=384932
+来源:萌娘百科

kotori-plugin-github

  • /github <repository> 查询 Github 仓库信息
bash
/github kotorijs/kotori
+> 地址:kotorijs/kotori
+描述:Cross platform, decoupled, and modernized ChatBot framework base on NodeJS
+语言:TypeScript
+所有者:kotorijs
+创建时间:
+2023-06-14T11:45:16Z
+最后更新时间:2023-12-31T15:28:10Z
+最后推送时间:2024-01-14T09:48:13Z
+开源协议:GNU General Public License v3.0

kotori-plugin-music

  • /music <name> [order:number=1] 网易云点歌 序号默认为 1,填 0 显示歌曲列表
bash
/music 夢水の調べ
+> 歌曲ID:2077744375
+歌曲标题:夢水の調べ
+歌曲作者:おはる
+歌曲下载:http://music.163.com/song/media/outer/url?id=2077744375.mp3
+歌曲封面:[image]

kotori-plugin-weather

  • /weather <area> 查询城市天气
bash
/weather 北京
+> 城市:北京市
+日期:周四
+温度:-6~4℃
+天气:晴
+风度:南风-2级
+空气质量:良
+
+日期:周五
+温度:-5~0℃
+天气:阴
+风度:东风-1级
+空气质量:良
+
+日期:周六
+温度:-8~0℃
+天气:阴
+风度:东北风-1级
+空气质量:良
`,53)]))}const g=s(t,[["render",n]]);export{c as __pageData,g as default}; diff --git a/assets/basic_usage.md.ggWDU75P.lean.js b/assets/basic_usage.md.ggWDU75P.lean.js new file mode 100644 index 00000000..0d117ffa --- /dev/null +++ b/assets/basic_usage.md.ggWDU75P.lean.js @@ -0,0 +1,45 @@ +import{_ as s,c as a,a0 as l,o as e}from"./chunks/framework.P9qPzDnn.js";const c=JSON.parse('{"title":"立即使用","description":"","frontmatter":{},"headers":[],"relativePath":"basic/usage.md","filePath":"basic/usage.md","lastUpdated":1723293723000}'),t={name:"basic/usage.md"};function n(o,i,h,p,k,r){return e(),a("div",null,i[0]||(i[0]=[l(`

立即使用

TIP

本篇适用于想立即体验基于 Kotori 搭建的 Bot 实际效果、或单纯想使用由官方提供的各平台 Bot 服务的平台用户。


服务平台

目前共提供 2 个平台、四个 Bot:

QQ

Kanbe Kotori(小鳥一号)

小鳥二号

基于 OneBot11 标准的第三方 QQ 机器人(@Kotori-bot/kotori-plugin-adapter-onebot)。

立即使用:Kotori 交流群

小鳥三号

基于 Tencent 官方 API(@Kotori-bot/kotori-plugin-adapter-qq)。相比于第三方 QQ 机器人,限制较多(不可发送主动消息、URL 需备案等),其余功能与「小鳥二号」基本一致。

立即使用:Kotori 交流群

Misakura

基于 OneBot11 标准的第三方 QQ 机器人。

立即使用:Kotori 交流群

Telegram

Sena

基于 @kotori-bot/adapter-telegram 的 Telegram 机器人。

立即使用:@Sena0620Bot

Discord

Slack

功能一览

WARNING

以下内容已严重过期

以下展示并非全部功能。

@kotori-bot/kotori-plugin-core

  • /core 查看实例统计信息
  • /bot 查看当前 bot 信息与运行状态
  • /bots 查看所有 bot 信息与运行状态
  • /version 查看版本信息
  • /about 帮助信息
  • /update 检查更新

@kotori-bot/kotori-plugin-help

  • /help [command] 查看指令帮助信息

@kotori-bot/kotori-plugin-menu

/menu 查看 BOT 菜单 别名:cd

kotori-plugin-random-img

  • /sex [tags] Pixiv 图片
  • /sexh HuliImg 图片
  • /bing 必应每日图
  • /day 60s 带你看世界
  • /earth 实时地球
  • /china 实时中国

kotori-plugin-bangumi

  • /bgm <content> [order:number=1] 番组计划搜索游戏/动漫
  • /bgmc 获取番组计划今日放送
bash
/bgm 素晴日
+> 原名:素晴らしき日々~不連続存在~公式ビジュアルアーカイヴ
+中文名:素晴之日 不连续的存在 Official Visual Archive
+介绍:人気アダルトゲームブランド「ケロQ」から、実に6年ぶりに発売された新作『素晴らしき日々 ~不連続存在~』。その魅力をギュッと閉じ込めたファン必携の一冊。描き下ろしイラスト&原作を担当したSCA-自(すかぢ)氏の新作書き下ろしテキスト満載でお届け。
+标签:素晴らしき日々 设定集 电波 神作 素晴日 公式书 2010 百合 FanBook 悬疑 画集 画集・設定資料集 推理 VFB
+详情:https://bgm.tv/subject/8318
+[image]

kotori-plugin-bilibili

  • /bili <bvid> Bilibili 视频信息查询
  • /bilier <uid> Bilibili 用户信息查询

kotori-plugin-hitokoto

  • /hitokotos 随机语录
  • /hitokoto 获取一条一言
bash
/hitokoto
+> 如果人们不相信数学简单,那是因为他们没有意识到人生有多复杂。——冯诺依曼
+类型:俗语

kotori-plugin-mediawiki

  • /wiki <content> [order] 搜索 MediaWiki
  • /wikil 查看 MediaWiki 列表
bash
/wiki 月社妃
+> 标题:月社妃
+内容:月社妃(日语:月社(つきやしろ) 妃(きさき))是由ウグイスカグラ所制作的18禁galgame《纸上的魔法使》及其衍生作品的登场角色。是主人公四条琉璃的同胞妹妹。
+https://mzh.moegirl.org.cn/.php?curid=384932
+来源:萌娘百科

kotori-plugin-github

  • /github <repository> 查询 Github 仓库信息
bash
/github kotorijs/kotori
+> 地址:kotorijs/kotori
+描述:Cross platform, decoupled, and modernized ChatBot framework base on NodeJS
+语言:TypeScript
+所有者:kotorijs
+创建时间:
+2023-06-14T11:45:16Z
+最后更新时间:2023-12-31T15:28:10Z
+最后推送时间:2024-01-14T09:48:13Z
+开源协议:GNU General Public License v3.0

kotori-plugin-music

  • /music <name> [order:number=1] 网易云点歌 序号默认为 1,填 0 显示歌曲列表
bash
/music 夢水の調べ
+> 歌曲ID:2077744375
+歌曲标题:夢水の調べ
+歌曲作者:おはる
+歌曲下载:http://music.163.com/song/media/outer/url?id=2077744375.mp3
+歌曲封面:[image]

kotori-plugin-weather

  • /weather <area> 查询城市天气
bash
/weather 北京
+> 城市:北京市
+日期:周四
+温度:-6~4℃
+天气:晴
+风度:南风-2级
+空气质量:良
+
+日期:周五
+温度:-5~0℃
+天气:阴
+风度:东风-1级
+空气质量:良
+
+日期:周六
+温度:-8~0℃
+天气:阴
+风度:东北风-1级
+空气质量:良
`,53)]))}const g=s(t,[["render",n]]);export{c as __pageData,g as default}; diff --git a/assets/chunks/NpmBadge.BObfAVH-.js b/assets/chunks/NpmBadge.BObfAVH-.js new file mode 100644 index 00000000..b75fac00 --- /dev/null +++ b/assets/chunks/NpmBadge.BObfAVH-.js @@ -0,0 +1 @@ +import{d as r,h as t,o,c as p,j as d,_ as g}from"./framework.P9qPzDnn.js";const l=["href","title"],i=["src","alt"],m=r({__name:"NpmBadge",props:{package:{type:String,required:!0},distTag:{type:String,required:!1,default:"latest"}},setup(a){const e=a,n=t(()=>`https://www.npmjs.com/package/${e.package}`),s=t(()=>e.distTag?`${e.package}@${e.distTag}`:e.package),c=t(()=>`https://badgen.net/npm/v/${e.package}/${e.distTag}?label=${encodeURIComponent(s.value)}`);return(u,k)=>(o(),p("a",{class:"npm-badge",href:n.value,title:a.package,target:"_blank",rel:"noopener noreferrer"},[d("img",{src:c.value,alt:a.package},null,8,i)],8,l))}}),f=g(m,[["__scopeId","data-v-8bf061d3"]]);export{f as N}; diff --git a/assets/chunks/framework.P9qPzDnn.js b/assets/chunks/framework.P9qPzDnn.js new file mode 100644 index 00000000..307ad28a --- /dev/null +++ b/assets/chunks/framework.P9qPzDnn.js @@ -0,0 +1,18 @@ +/** +* @vue/shared v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Es(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const te={},St=[],Ue=()=>{},wo=()=>!1,Xt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ts=e=>e.startsWith("onUpdate:"),ce=Object.assign,Cs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},So=Object.prototype.hasOwnProperty,z=(e,t)=>So.call(e,t),B=Array.isArray,xt=e=>En(e)==="[object Map]",Hr=e=>En(e)==="[object Set]",q=e=>typeof e=="function",re=e=>typeof e=="string",Ge=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",$r=e=>(ne(e)||q(e))&&q(e.then)&&q(e.catch),Dr=Object.prototype.toString,En=e=>Dr.call(e),xo=e=>En(e).slice(8,-1),jr=e=>En(e)==="[object Object]",As=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Et=Es(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Tn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Eo=/-(\w)/g,Le=Tn(e=>e.replace(Eo,(t,n)=>n?n.toUpperCase():"")),To=/\B([A-Z])/g,st=Tn(e=>e.replace(To,"-$1").toLowerCase()),Cn=Tn(e=>e.charAt(0).toUpperCase()+e.slice(1)),dn=Tn(e=>e?`on${Cn(e)}`:""),et=(e,t)=>!Object.is(e,t),kn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Co=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ao=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let Gs;const An=()=>Gs||(Gs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Rs(e){if(B(e)){const t={};for(let n=0;n{if(n){const s=n.split(Oo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Os(e){let t="";if(re(e))t=e;else if(B(e))for(let n=0;n!!(e&&e.__v_isRef===!0),No=e=>re(e)?e:e==null?"":B(e)||ne(e)&&(e.toString===Dr||!q(e.toString))?Br(e)?No(e.value):JSON.stringify(e,kr,2):String(e),kr=(e,t)=>Br(t)?kr(e,t.value):xt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[Wn(s,i)+" =>"]=r,n),{})}:Hr(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Wn(n))}:Ge(t)?Wn(t):ne(t)&&!B(t)&&!jr(t)?String(t):t,Wn=(e,t="")=>{var n;return Ge(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let be;class Fo{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=be,!t&&be&&(this.index=(be.scopes||(be.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(Ht){let t=Ht;for(Ht=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Ft;){let t=Ft;for(Ft=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Yr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Xr(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Ls(s),$o(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function fs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Jr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Jr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Vt))return;e.globalVersion=Vt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!fs(e)){e.flags&=-3;return}const n=ee,s=Ne;ee=e,Ne=!0;try{Yr(e);const r=e.fn(e._value);(t.version===0||et(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ee=n,Ne=s,Xr(e),e.flags&=-3}}function Ls(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)Ls(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function $o(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ne=!0;const zr=[];function rt(){zr.push(Ne),Ne=!1}function it(){const e=zr.pop();Ne=e===void 0?!0:e}function Ys(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ee;ee=void 0;try{t()}finally{ee=n}}}let Vt=0;class Do{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Rn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!ee||!Ne||ee===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ee)n=this.activeLink=new Do(ee,this),ee.deps?(n.prevDep=ee.depsTail,ee.depsTail.nextDep=n,ee.depsTail=n):ee.deps=ee.depsTail=n,Qr(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ee.depsTail,n.nextDep=void 0,ee.depsTail.nextDep=n,ee.depsTail=n,ee.deps===n&&(ee.deps=s)}return n}trigger(t){this.version++,Vt++,this.notify(t)}notify(t){Ms();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Is()}}}function Qr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Qr(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const yn=new WeakMap,dt=Symbol(""),us=Symbol(""),Ut=Symbol("");function ge(e,t,n){if(Ne&&ee){let s=yn.get(e);s||yn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Rn),r.map=s,r.key=n),r.track()}}function Ke(e,t,n,s,r,i){const o=yn.get(e);if(!o){Vt++;return}const l=c=>{c&&c.trigger()};if(Ms(),t==="clear")o.forEach(l);else{const c=B(e),u=c&&As(n);if(c&&n==="length"){const a=Number(s);o.forEach((h,v)=>{(v==="length"||v===Ut||!Ge(v)&&v>=a)&&l(h)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),u&&l(o.get(Ut)),t){case"add":c?u&&l(o.get("length")):(l(o.get(dt)),xt(e)&&l(o.get(us)));break;case"delete":c||(l(o.get(dt)),xt(e)&&l(o.get(us)));break;case"set":xt(e)&&l(o.get(dt));break}}Is()}function jo(e,t){const n=yn.get(e);return n&&n.get(t)}function _t(e){const t=J(e);return t===e?t:(ge(t,"iterate",Ut),Ie(e)?t:t.map(me))}function On(e){return ge(e=J(e),"iterate",Ut),e}const Vo={__proto__:null,[Symbol.iterator](){return qn(this,Symbol.iterator,me)},concat(...e){return _t(this).concat(...e.map(t=>B(t)?_t(t):t))},entries(){return qn(this,"entries",e=>(e[1]=me(e[1]),e))},every(e,t){return Be(this,"every",e,t,void 0,arguments)},filter(e,t){return Be(this,"filter",e,t,n=>n.map(me),arguments)},find(e,t){return Be(this,"find",e,t,me,arguments)},findIndex(e,t){return Be(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Be(this,"findLast",e,t,me,arguments)},findLastIndex(e,t){return Be(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Be(this,"forEach",e,t,void 0,arguments)},includes(...e){return Gn(this,"includes",e)},indexOf(...e){return Gn(this,"indexOf",e)},join(e){return _t(this).join(e)},lastIndexOf(...e){return Gn(this,"lastIndexOf",e)},map(e,t){return Be(this,"map",e,t,void 0,arguments)},pop(){return Lt(this,"pop")},push(...e){return Lt(this,"push",e)},reduce(e,...t){return Xs(this,"reduce",e,t)},reduceRight(e,...t){return Xs(this,"reduceRight",e,t)},shift(){return Lt(this,"shift")},some(e,t){return Be(this,"some",e,t,void 0,arguments)},splice(...e){return Lt(this,"splice",e)},toReversed(){return _t(this).toReversed()},toSorted(e){return _t(this).toSorted(e)},toSpliced(...e){return _t(this).toSpliced(...e)},unshift(...e){return Lt(this,"unshift",e)},values(){return qn(this,"values",me)}};function qn(e,t,n){const s=On(e),r=s[t]();return s!==e&&!Ie(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const Uo=Array.prototype;function Be(e,t,n,s,r,i){const o=On(e),l=o!==e&&!Ie(e),c=o[t];if(c!==Uo[t]){const h=c.apply(e,i);return l?me(h):h}let u=n;o!==e&&(l?u=function(h,v){return n.call(this,me(h),v,e)}:n.length>2&&(u=function(h,v){return n.call(this,h,v,e)}));const a=c.call(o,u,s);return l&&r?r(a):a}function Xs(e,t,n,s){const r=On(e);let i=n;return r!==e&&(Ie(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,me(l),c,e)}),r[t](i,...s)}function Gn(e,t,n){const s=J(e);ge(s,"iterate",Ut);const r=s[t](...n);return(r===-1||r===!1)&&Fs(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function Lt(e,t,n=[]){rt(),Ms();const s=J(e)[t].apply(e,n);return Is(),it(),s}const Bo=Es("__proto__,__v_isRef,__isVue"),Zr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ge));function ko(e){Ge(e)||(e=String(e));const t=J(this);return ge(t,"has",e),t.hasOwnProperty(e)}class ei{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Zo:ri:i?si:ni).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=B(t);if(!r){let c;if(o&&(c=Vo[n]))return c;if(n==="hasOwnProperty")return ko}const l=Reflect.get(t,n,le(t)?t:s);return(Ge(n)?Zr.has(n):Bo(n))||(r||ge(t,"get",n),i)?l:le(l)?o&&As(n)?l:l.value:ne(l)?r?In(l):Mn(l):l}}class ti extends ei{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=yt(i);if(!Ie(s)&&!yt(s)&&(i=J(i),s=J(s)),!B(t)&&le(i)&&!le(s))return c?!1:(i.value=s,!0)}const o=B(t)&&As(n)?Number(n)e,en=e=>Reflect.getPrototypeOf(e);function Yo(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=xt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,u=r[e](...s),a=n?ds:t?hs:me;return!t&&ge(i,"iterate",c?us:dt),{next(){const{value:h,done:v}=u.next();return v?{value:h,done:v}:{value:l?[a(h[0]),a(h[1])]:a(h),done:v}},[Symbol.iterator](){return this}}}}function tn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Xo(e,t){const n={get(r){const i=this.__v_raw,o=J(i),l=J(r);e||(et(r,l)&&ge(o,"get",r),ge(o,"get",l));const{has:c}=en(o),u=t?ds:e?hs:me;if(c.call(o,r))return u(i.get(r));if(c.call(o,l))return u(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&ge(J(r),"iterate",dt),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=J(i),l=J(r);return e||(et(r,l)&&ge(o,"has",r),ge(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=J(l),u=t?ds:e?hs:me;return!e&&ge(c,"iterate",dt),l.forEach((a,h)=>r.call(i,u(a),u(h),o))}};return ce(n,e?{add:tn("add"),set:tn("set"),delete:tn("delete"),clear:tn("clear")}:{add(r){!t&&!Ie(r)&&!yt(r)&&(r=J(r));const i=J(this);return en(i).has.call(i,r)||(i.add(r),Ke(i,"add",r,r)),this},set(r,i){!t&&!Ie(i)&&!yt(i)&&(i=J(i));const o=J(this),{has:l,get:c}=en(o);let u=l.call(o,r);u||(r=J(r),u=l.call(o,r));const a=c.call(o,r);return o.set(r,i),u?et(i,a)&&Ke(o,"set",r,i):Ke(o,"add",r,i),this},delete(r){const i=J(this),{has:o,get:l}=en(i);let c=o.call(i,r);c||(r=J(r),c=o.call(i,r)),l&&l.call(i,r);const u=i.delete(r);return c&&Ke(i,"delete",r,void 0),u},clear(){const r=J(this),i=r.size!==0,o=r.clear();return i&&Ke(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=Yo(r,e,t)}),n}function Ps(e,t){const n=Xo(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const Jo={get:Ps(!1,!1)},zo={get:Ps(!1,!0)},Qo={get:Ps(!0,!1)};const ni=new WeakMap,si=new WeakMap,ri=new WeakMap,Zo=new WeakMap;function el(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function tl(e){return e.__v_skip||!Object.isExtensible(e)?0:el(xo(e))}function Mn(e){return yt(e)?e:Ns(e,!1,Ko,Jo,ni)}function nl(e){return Ns(e,!1,Go,zo,si)}function In(e){return Ns(e,!0,qo,Qo,ri)}function Ns(e,t,n,s,r){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=tl(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function ht(e){return yt(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function Ie(e){return!!(e&&e.__v_isShallow)}function Fs(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function hn(e){return!z(e,"__v_skip")&&Object.isExtensible(e)&&Vr(e,"__v_skip",!0),e}const me=e=>ne(e)?Mn(e):e,hs=e=>ne(e)?In(e):e;function le(e){return e?e.__v_isRef===!0:!1}function ue(e){return oi(e,!1)}function ii(e){return oi(e,!0)}function oi(e,t){return le(e)?e:new sl(e,t)}class sl{constructor(t,n){this.dep=new Rn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:me(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ie(t)||yt(t);t=s?t:J(t),et(t,n)&&(this._rawValue=t,this._value=s?t:me(t),this.dep.trigger())}}function li(e){return le(e)?e.value:e}const rl={get:(e,t,n)=>t==="__v_raw"?e:li(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return le(r)&&!le(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function ci(e){return ht(e)?e:new Proxy(e,rl)}class il{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Rn,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function ol(e){return new il(e)}class ll{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return jo(J(this._object),this._key)}}class cl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function al(e,t,n){return le(e)?e:q(e)?new cl(e):ne(e)&&arguments.length>1?fl(e,t,n):ue(e)}function fl(e,t,n){const s=e[t];return le(s)?s:new ll(e,t,n)}class ul{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Rn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Vt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ee!==this)return Gr(this,!0),!0}get value(){const t=this.dep.track();return Jr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function dl(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new ul(s,r,n)}const nn={},vn=new WeakMap;let ft;function hl(e,t=!1,n=ft){if(n){let s=vn.get(n);s||vn.set(n,s=[]),s.push(e)}}function pl(e,t,n=te){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,u=p=>r?p:Ie(p)||r===!1||r===0?Ze(p,1):Ze(p);let a,h,v,S,L=!1,O=!1;if(le(e)?(h=()=>e.value,L=Ie(e)):ht(e)?(h=()=>u(e),L=!0):B(e)?(O=!0,L=e.some(p=>ht(p)||Ie(p)),h=()=>e.map(p=>{if(le(p))return p.value;if(ht(p))return u(p);if(q(p))return c?c(p,2):p()})):q(e)?t?h=c?()=>c(e,2):e:h=()=>{if(v){rt();try{v()}finally{it()}}const p=ft;ft=a;try{return c?c(e,3,[S]):e(S)}finally{ft=p}}:h=Ue,t&&r){const p=h,A=r===!0?1/0:r;h=()=>Ze(p(),A)}const G=Wr(),U=()=>{a.stop(),G&&G.active&&Cs(G.effects,a)};if(i&&t){const p=t;t=(...A)=>{p(...A),U()}}let W=O?new Array(e.length).fill(nn):nn;const g=p=>{if(!(!(a.flags&1)||!a.dirty&&!p))if(t){const A=a.run();if(r||L||(O?A.some((D,j)=>et(D,W[j])):et(A,W))){v&&v();const D=ft;ft=a;try{const j=[A,W===nn?void 0:O&&W[0]===nn?[]:W,S];c?c(t,3,j):t(...j),W=A}finally{ft=D}}}else a.run()};return l&&l(g),a=new Kr(h),a.scheduler=o?()=>o(g,!1):g,S=p=>hl(p,!1,a),v=a.onStop=()=>{const p=vn.get(a);if(p){if(c)c(p,4);else for(const A of p)A();vn.delete(a)}},t?s?g(!0):W=a.run():o?o(g.bind(null,!0),!0):a.run(),U.pause=a.pause.bind(a),U.resume=a.resume.bind(a),U.stop=U,U}function Ze(e,t=1/0,n){if(t<=0||!ne(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,le(e))Ze(e.value,t,n);else if(B(e))for(let s=0;s{Ze(s,t,n)});else if(jr(e)){for(const s in e)Ze(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ze(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Jt(e,t,n,s){try{return s?e(...s):e()}catch(r){Ln(r,t,n)}}function He(e,t,n,s){if(q(e)){const r=Jt(e,t,n,s);return r&&$r(r)&&r.catch(i=>{Ln(i,t,n)}),r}if(B(e)){const r=[];for(let i=0;i>>1,r=we[s],i=Bt(r);i=Bt(n)?we.push(e):we.splice(ml(t),0,e),e.flags|=1,fi()}}function fi(){_n||(_n=ai.then(ui))}function yl(e){B(e)?Tt.push(...e):Je&&e.id===-1?Je.splice(wt+1,0,e):e.flags&1||(Tt.push(e),e.flags|=1),fi()}function Js(e,t,n=je+1){for(;nBt(n)-Bt(s));if(Tt.length=0,Je){Je.push(...t);return}for(Je=t,wt=0;wte.id==null?e.flags&2?-1:1/0:e.id;function ui(e){try{for(je=0;je{s._d&&cr(-1);const i=wn(t);let o;try{o=e(...r)}finally{wn(i),s._d&&cr(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Ve(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;oe.__isTeleport,ze=Symbol("_leaveCb"),sn=Symbol("_enterCb");function bl(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Ot(()=>{e.isMounted=!0}),Si(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],pi={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Re,onEnter:Re,onAfterEnter:Re,onEnterCancelled:Re,onBeforeLeave:Re,onLeave:Re,onAfterLeave:Re,onLeaveCancelled:Re,onBeforeAppear:Re,onAppear:Re,onAfterAppear:Re,onAppearCancelled:Re},gi=e=>{const t=e.subTree;return t.component?gi(t.component):t},wl={name:"BaseTransition",props:pi,setup(e,{slots:t}){const n=jn(),s=bl();return()=>{const r=t.default&&vi(t.default(),!0);if(!r||!r.length)return;const i=mi(r),o=J(e),{mode:l}=o;if(s.isLeaving)return Yn(i);const c=zs(i);if(!c)return Yn(i);let u=ps(c,o,s,n,h=>u=h);c.type!==ye&&kt(c,u);let a=n.subTree&&zs(n.subTree);if(a&&a.type!==ye&&!ut(c,a)&&gi(n).type!==ye){let h=ps(a,o,s,n);if(kt(a,h),l==="out-in"&&c.type!==ye)return s.isLeaving=!0,h.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete h.afterLeave,a=void 0},Yn(i);l==="in-out"&&c.type!==ye?h.delayLeave=(v,S,L)=>{const O=yi(s,a);O[String(a.key)]=a,v[ze]=()=>{S(),v[ze]=void 0,delete u.delayedLeave,a=void 0},u.delayedLeave=()=>{L(),delete u.delayedLeave,a=void 0}}:a=void 0}else a&&(a=void 0);return i}}};function mi(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ye){t=n;break}}return t}const Sl=wl;function yi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function ps(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:u,onAfterEnter:a,onEnterCancelled:h,onBeforeLeave:v,onLeave:S,onAfterLeave:L,onLeaveCancelled:O,onBeforeAppear:G,onAppear:U,onAfterAppear:W,onAppearCancelled:g}=t,p=String(e.key),A=yi(n,e),D=(I,_)=>{I&&He(I,s,9,_)},j=(I,_)=>{const P=_[1];D(I,_),B(I)?I.every(b=>b.length<=1)&&P():I.length<=1&&P()},K={mode:o,persisted:l,beforeEnter(I){let _=c;if(!n.isMounted)if(i)_=G||c;else return;I[ze]&&I[ze](!0);const P=A[p];P&&ut(e,P)&&P.el[ze]&&P.el[ze](),D(_,[I])},enter(I){let _=u,P=a,b=h;if(!n.isMounted)if(i)_=U||u,P=W||a,b=g||h;else return;let V=!1;const se=I[sn]=ie=>{V||(V=!0,ie?D(b,[I]):D(P,[I]),K.delayedLeave&&K.delayedLeave(),I[sn]=void 0)};_?j(_,[I,se]):se()},leave(I,_){const P=String(e.key);if(I[sn]&&I[sn](!0),n.isUnmounting)return _();D(v,[I]);let b=!1;const V=I[ze]=se=>{b||(b=!0,_(),se?D(O,[I]):D(L,[I]),I[ze]=void 0,A[P]===e&&delete A[P])};A[P]=e,S?j(S,[I,V]):V()},clone(I){const _=ps(I,t,n,s,r);return r&&r(_),_}};return K}function Yn(e){if(Nn(e))return e=nt(e),e.children=null,e}function zs(e){if(!Nn(e))return hi(e.type)&&e.children?mi(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function kt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,kt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function vi(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iWt(L,t&&(B(t)?t[O]:t),n,s,r));return}if(pt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Wt(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?js(s.component):s.el,o=r?null:i,{i:l,r:c}=e,u=t&&t.r,a=l.refs===te?l.refs={}:l.refs,h=l.setupState,v=J(h),S=h===te?()=>!1:L=>z(v,L);if(u!=null&&u!==c&&(re(u)?(a[u]=null,S(u)&&(h[u]=null)):le(u)&&(u.value=null)),q(c))Jt(c,l,12,[o,a]);else{const L=re(c),O=le(c);if(L||O){const G=()=>{if(e.f){const U=L?S(c)?h[c]:a[c]:c.value;r?B(U)&&Cs(U,i):B(U)?U.includes(i)||U.push(i):L?(a[c]=[i],S(c)&&(h[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else L?(a[c]=o,S(c)&&(h[c]=o)):O&&(c.value=o,e.k&&(a[e.k]=o))};o?(G.id=-1,Ce(G,n)):G()}}}let Qs=!1;const bt=()=>{Qs||(console.error("Hydration completed but contains mismatches."),Qs=!0)},xl=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",El=e=>e.namespaceURI.includes("MathML"),rn=e=>{if(e.nodeType===1){if(xl(e))return"svg";if(El(e))return"mathml"}},on=e=>e.nodeType===8;function Tl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:u}}=e,a=(g,p)=>{if(!p.hasChildNodes()){n(null,g,p),bn(),p._vnode=g;return}h(p.firstChild,g,null,null,null),bn(),p._vnode=g},h=(g,p,A,D,j,K=!1)=>{K=K||!!p.dynamicChildren;const I=on(g)&&g.data==="[",_=()=>O(g,p,A,D,j,I),{type:P,ref:b,shapeFlag:V,patchFlag:se}=p;let ie=g.nodeType;p.el=g,se===-2&&(K=!1,p.dynamicChildren=null);let H=null;switch(P){case gt:ie!==3?p.children===""?(c(p.el=r(""),o(g),g),H=g):H=_():(g.data!==p.children&&(bt(),g.data=p.children),H=i(g));break;case ye:W(g)?(H=i(g),U(p.el=g.content.firstChild,g,A)):ie!==8||I?H=_():H=i(g);break;case Dt:if(I&&(g=i(g),ie=g.nodeType),ie===1||ie===3){H=g;const Y=!p.children.length;for(let F=0;F{K=K||!!p.dynamicChildren;const{type:I,props:_,patchFlag:P,shapeFlag:b,dirs:V,transition:se}=p,ie=I==="input"||I==="option";if(ie||P!==-1){V&&Ve(p,null,A,"created");let H=!1;if(W(g)){H=ji(null,se)&&A&&A.vnode.props&&A.vnode.props.appear;const F=g.content.firstChild;H&&se.beforeEnter(F),U(F,g,A),p.el=g=F}if(b&16&&!(_&&(_.innerHTML||_.textContent))){let F=S(g.firstChild,p,g,A,D,j,K);for(;F;){ln(g,1)||bt();const ae=F;F=F.nextSibling,l(ae)}}else if(b&8){let F=p.children;F[0]===` +`&&(g.tagName==="PRE"||g.tagName==="TEXTAREA")&&(F=F.slice(1)),g.textContent!==F&&(ln(g,0)||bt(),g.textContent=p.children)}if(_){if(ie||!K||P&48){const F=g.tagName.includes("-");for(const ae in _)(ie&&(ae.endsWith("value")||ae==="indeterminate")||Xt(ae)&&!Et(ae)||ae[0]==="."||F)&&s(g,ae,null,_[ae],void 0,A)}else if(_.onClick)s(g,"onClick",null,_.onClick,void 0,A);else if(P&4&&ht(_.style))for(const F in _.style)_.style[F]}let Y;(Y=_&&_.onVnodeBeforeMount)&&Oe(Y,A,p),V&&Ve(p,null,A,"beforeMount"),((Y=_&&_.onVnodeMounted)||V||H)&&Gi(()=>{Y&&Oe(Y,A,p),H&&se.enter(g),V&&Ve(p,null,A,"mounted")},D)}return g.nextSibling},S=(g,p,A,D,j,K,I)=>{I=I||!!p.dynamicChildren;const _=p.children,P=_.length;for(let b=0;b{const{slotScopeIds:I}=p;I&&(j=j?j.concat(I):I);const _=o(g),P=S(i(g),p,_,A,D,j,K);return P&&on(P)&&P.data==="]"?i(p.anchor=P):(bt(),c(p.anchor=u("]"),_,P),P)},O=(g,p,A,D,j,K)=>{if(ln(g.parentElement,1)||bt(),p.el=null,K){const P=G(g);for(;;){const b=i(g);if(b&&b!==P)l(b);else break}}const I=i(g),_=o(g);return l(g),n(null,p,_,I,A,D,rn(_),j),A&&(A.vnode.el=p.el,Ki(A,p.el)),I},G=(g,p="[",A="]")=>{let D=0;for(;g;)if(g=i(g),g&&on(g)&&(g.data===p&&D++,g.data===A)){if(D===0)return i(g);D--}return g},U=(g,p,A)=>{const D=p.parentNode;D&&D.replaceChild(g,p);let j=A;for(;j;)j.vnode.el===p&&(j.vnode.el=j.subTree.el=g),j=j.parent},W=g=>g.nodeType===1&&g.tagName==="TEMPLATE";return[a,h]}const Zs="data-allow-mismatch",Cl={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function ln(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(Zs);)e=e.parentElement;const n=e&&e.getAttribute(Zs);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(Cl[t])}}An().requestIdleCallback;An().cancelIdleCallback;const pt=e=>!!e.type.__asyncLoader,Nn=e=>e.type.__isKeepAlive;function Al(e,t){wi(e,"a",t)}function Rl(e,t){wi(e,"da",t)}function wi(e,t,n=fe){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Fn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Nn(r.parent.vnode)&&Ol(s,t,n,r),r=r.parent}}function Ol(e,t,n,s){const r=Fn(t,e,s,!0);Hn(()=>{Cs(s[t],r)},n)}function Fn(e,t,n=fe,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{rt();const l=zt(n),c=He(t,n,e,o);return l(),it(),c});return s?r.unshift(i):r.push(i),i}}const Ye=e=>(t,n=fe)=>{(!Gt||e==="sp")&&Fn(e,(...s)=>t(...s),n)},Ml=Ye("bm"),Ot=Ye("m"),Il=Ye("bu"),Ll=Ye("u"),Si=Ye("bum"),Hn=Ye("um"),Pl=Ye("sp"),Nl=Ye("rtg"),Fl=Ye("rtc");function Hl(e,t=fe){Fn("ec",e,t)}const xi="components";function Xa(e,t){return Ti(xi,e,!0,t)||e}const Ei=Symbol.for("v-ndc");function Ja(e){return re(e)?Ti(xi,e,!1)||e:e||Ei}function Ti(e,t,n=!0,s=!1){const r=ve||fe;if(r){const i=r.type;{const l=bc(i,!1);if(l&&(l===t||l===Le(t)||l===Cn(Le(t))))return i}const o=er(r[e]||i[e],t)||er(r.appContext[e],t);return!o&&s?i:o}}function er(e,t){return e&&(e[t]||e[Le(t)]||e[Cn(Le(t))])}function za(e,t,n,s){let r;const i=n,o=B(e);if(o||re(e)){const l=o&&ht(e);let c=!1;l&&(c=!Ie(e),e=On(e)),r=new Array(e.length);for(let u=0,a=e.length;ut(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,u=l.length;cqt(t)?!(t.type===ye||t.type===Se&&!Ci(t.children)):!0)?e:null}function Za(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:dn(s)]=e[s];return n}const gs=e=>e?Qi(e)?js(e):gs(e.parent):null,$t=ce(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>gs(e.parent),$root:e=>gs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ri(e),$forceUpdate:e=>e.f||(e.f=()=>{Hs(e.update)}),$nextTick:e=>e.n||(e.n=Pn.bind(e.proxy)),$watch:e=>rc.bind(e)}),Xn=(e,t)=>e!==te&&!e.__isScriptSetup&&z(e,t),$l={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let u;if(t[0]!=="$"){const S=o[t];if(S!==void 0)switch(S){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Xn(s,t))return o[t]=1,s[t];if(r!==te&&z(r,t))return o[t]=2,r[t];if((u=e.propsOptions[0])&&z(u,t))return o[t]=3,i[t];if(n!==te&&z(n,t))return o[t]=4,n[t];ms&&(o[t]=0)}}const a=$t[t];let h,v;if(a)return t==="$attrs"&&ge(e.attrs,"get",""),a(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==te&&z(n,t))return o[t]=4,n[t];if(v=c.config.globalProperties,z(v,t))return v[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Xn(r,t)?(r[t]=n,!0):s!==te&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==te&&z(e,o)||Xn(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z($t,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ef(){return Dl().slots}function Dl(){const e=jn();return e.setupContext||(e.setupContext=eo(e))}function tr(e){return B(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ms=!0;function jl(e){const t=Ri(e),n=e.proxy,s=e.ctx;ms=!1,t.beforeCreate&&nr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:u,created:a,beforeMount:h,mounted:v,beforeUpdate:S,updated:L,activated:O,deactivated:G,beforeDestroy:U,beforeUnmount:W,destroyed:g,unmounted:p,render:A,renderTracked:D,renderTriggered:j,errorCaptured:K,serverPrefetch:I,expose:_,inheritAttrs:P,components:b,directives:V,filters:se}=t;if(u&&Vl(u,s,null),o)for(const Y in o){const F=o[Y];q(F)&&(s[Y]=F.bind(n))}if(r){const Y=r.call(n,n);ne(Y)&&(e.data=Mn(Y))}if(ms=!0,i)for(const Y in i){const F=i[Y],ae=q(F)?F.bind(n,n):q(F.get)?F.get.bind(n,n):Ue,Qt=!q(F)&&q(F.set)?F.set.bind(n):Ue,ot=oe({get:ae,set:Qt});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>ot.value,set:$e=>ot.value=$e})}if(l)for(const Y in l)Ai(l[Y],s,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(F=>{ql(F,Y[F])})}a&&nr(a,e,"c");function H(Y,F){B(F)?F.forEach(ae=>Y(ae.bind(n))):F&&Y(F.bind(n))}if(H(Ml,h),H(Ot,v),H(Il,S),H(Ll,L),H(Al,O),H(Rl,G),H(Hl,K),H(Fl,D),H(Nl,j),H(Si,W),H(Hn,p),H(Pl,I),B(_))if(_.length){const Y=e.exposed||(e.exposed={});_.forEach(F=>{Object.defineProperty(Y,F,{get:()=>n[F],set:ae=>n[F]=ae})})}else e.exposed||(e.exposed={});A&&e.render===Ue&&(e.render=A),P!=null&&(e.inheritAttrs=P),b&&(e.components=b),V&&(e.directives=V),I&&bi(e)}function Vl(e,t,n=Ue){B(e)&&(e=ys(e));for(const s in e){const r=e[s];let i;ne(r)?"default"in r?i=At(r.from||s,r.default,!0):i=At(r.from||s):i=At(r),le(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function nr(e,t,n){He(B(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ai(e,t,n,s){let r=s.includes(".")?ki(n,s):()=>n[s];if(re(e)){const i=t[e];q(i)&&Fe(r,i)}else if(q(e))Fe(r,e.bind(n));else if(ne(e))if(B(e))e.forEach(i=>Ai(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Fe(r,i,e)}}function Ri(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(u=>Sn(c,u,o,!0)),Sn(c,t,o)),ne(t)&&i.set(t,c),c}function Sn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Sn(e,i,n,!0),r&&r.forEach(o=>Sn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Ul[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Ul={data:sr,props:rr,emits:rr,methods:Nt,computed:Nt,beforeCreate:_e,created:_e,beforeMount:_e,mounted:_e,beforeUpdate:_e,updated:_e,beforeDestroy:_e,beforeUnmount:_e,destroyed:_e,unmounted:_e,activated:_e,deactivated:_e,errorCaptured:_e,serverPrefetch:_e,components:Nt,directives:Nt,watch:kl,provide:sr,inject:Bl};function sr(e,t){return t?e?function(){return ce(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function Bl(e,t){return Nt(ys(e),ys(t))}function ys(e){if(B(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}const Mi={},Ii=()=>Object.create(Mi),Li=e=>Object.getPrototypeOf(e)===Mi;function Gl(e,t,n,s=!1){const r={},i=Ii();e.propsDefaults=Object.create(null),Pi(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:nl(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Yl(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let u=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[v,S]=Ni(h,t,!0);ce(o,v),S&&l.push(...S)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return ne(e)&&s.set(e,St),St;if(B(i))for(let a=0;ae[0]==="_"||e==="$stable",$s=e=>B(e)?e.map(Me):[Me(e)],Jl=(e,t,n)=>{if(t._n)return t;const s=vl((...r)=>$s(t(...r)),n);return s._c=!1,s},Hi=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Fi(r))continue;const i=e[r];if(q(i))t[r]=Jl(r,i,s);else if(i!=null){const o=$s(i);t[r]=()=>o}}},$i=(e,t)=>{const n=$s(t);e.slots.default=()=>n},Di=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},zl=(e,t,n)=>{const s=e.slots=Ii();if(e.vnode.shapeFlag&32){const r=t._;r?(Di(s,t,n),n&&Vr(s,"_",r,!0)):Hi(t,s)}else t&&$i(e,t)},Ql=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=te;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:Di(r,t,n):(i=!t.$stable,Hi(t,r)),o=t}else t&&($i(e,t),o={default:1});if(i)for(const l in r)!Fi(l)&&o[l]==null&&delete r[l]},Ce=Gi;function Zl(e){return ec(e,Tl)}function ec(e,t){const n=An();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:u,setElementText:a,parentNode:h,nextSibling:v,setScopeId:S=Ue,insertStaticContent:L}=e,O=(f,d,m,x=null,y=null,w=null,R=void 0,C=null,T=!!d.dynamicChildren)=>{if(f===d)return;f&&!ut(f,d)&&(x=Zt(f),$e(f,y,w,!0),f=null),d.patchFlag===-2&&(T=!1,d.dynamicChildren=null);const{type:E,ref:$,shapeFlag:M}=d;switch(E){case gt:G(f,d,m,x);break;case ye:U(f,d,m,x);break;case Dt:f==null&&W(d,m,x,R);break;case Se:b(f,d,m,x,y,w,R,C,T);break;default:M&1?A(f,d,m,x,y,w,R,C,T):M&6?V(f,d,m,x,y,w,R,C,T):(M&64||M&128)&&E.process(f,d,m,x,y,w,R,C,T,vt)}$!=null&&y&&Wt($,f&&f.ref,w,d||f,!d)},G=(f,d,m,x)=>{if(f==null)s(d.el=l(d.children),m,x);else{const y=d.el=f.el;d.children!==f.children&&u(y,d.children)}},U=(f,d,m,x)=>{f==null?s(d.el=c(d.children||""),m,x):d.el=f.el},W=(f,d,m,x)=>{[f.el,f.anchor]=L(f.children,d,m,x,f.el,f.anchor)},g=({el:f,anchor:d},m,x)=>{let y;for(;f&&f!==d;)y=v(f),s(f,m,x),f=y;s(d,m,x)},p=({el:f,anchor:d})=>{let m;for(;f&&f!==d;)m=v(f),r(f),f=m;r(d)},A=(f,d,m,x,y,w,R,C,T)=>{d.type==="svg"?R="svg":d.type==="math"&&(R="mathml"),f==null?D(d,m,x,y,w,R,C,T):I(f,d,y,w,R,C,T)},D=(f,d,m,x,y,w,R,C)=>{let T,E;const{props:$,shapeFlag:M,transition:N,dirs:k}=f;if(T=f.el=o(f.type,w,$&&$.is,$),M&8?a(T,f.children):M&16&&K(f.children,T,null,x,y,Jn(f,w),R,C),k&&Ve(f,null,x,"created"),j(T,f,f.scopeId,R,x),$){for(const Z in $)Z!=="value"&&!Et(Z)&&i(T,Z,null,$[Z],w,x);"value"in $&&i(T,"value",null,$.value,w),(E=$.onVnodeBeforeMount)&&Oe(E,x,f)}k&&Ve(f,null,x,"beforeMount");const X=ji(y,N);X&&N.beforeEnter(T),s(T,d,m),((E=$&&$.onVnodeMounted)||X||k)&&Ce(()=>{E&&Oe(E,x,f),X&&N.enter(T),k&&Ve(f,null,x,"mounted")},y)},j=(f,d,m,x,y)=>{if(m&&S(f,m),x)for(let w=0;w{for(let E=T;E{const C=d.el=f.el;let{patchFlag:T,dynamicChildren:E,dirs:$}=d;T|=f.patchFlag&16;const M=f.props||te,N=d.props||te;let k;if(m&<(m,!1),(k=N.onVnodeBeforeUpdate)&&Oe(k,m,d,f),$&&Ve(d,f,m,"beforeUpdate"),m&<(m,!0),(M.innerHTML&&N.innerHTML==null||M.textContent&&N.textContent==null)&&a(C,""),E?_(f.dynamicChildren,E,C,m,x,Jn(d,y),w):R||F(f,d,C,null,m,x,Jn(d,y),w,!1),T>0){if(T&16)P(C,M,N,m,y);else if(T&2&&M.class!==N.class&&i(C,"class",null,N.class,y),T&4&&i(C,"style",M.style,N.style,y),T&8){const X=d.dynamicProps;for(let Z=0;Z{k&&Oe(k,m,d,f),$&&Ve(d,f,m,"updated")},x)},_=(f,d,m,x,y,w,R)=>{for(let C=0;C{if(d!==m){if(d!==te)for(const w in d)!Et(w)&&!(w in m)&&i(f,w,d[w],null,y,x);for(const w in m){if(Et(w))continue;const R=m[w],C=d[w];R!==C&&w!=="value"&&i(f,w,C,R,y,x)}"value"in m&&i(f,"value",d.value,m.value,y)}},b=(f,d,m,x,y,w,R,C,T)=>{const E=d.el=f?f.el:l(""),$=d.anchor=f?f.anchor:l("");let{patchFlag:M,dynamicChildren:N,slotScopeIds:k}=d;k&&(C=C?C.concat(k):k),f==null?(s(E,m,x),s($,m,x),K(d.children||[],m,$,y,w,R,C,T)):M>0&&M&64&&N&&f.dynamicChildren?(_(f.dynamicChildren,N,m,y,w,R,C),(d.key!=null||y&&d===y.subTree)&&Vi(f,d,!0)):F(f,d,m,$,y,w,R,C,T)},V=(f,d,m,x,y,w,R,C,T)=>{d.slotScopeIds=C,f==null?d.shapeFlag&512?y.ctx.activate(d,m,x,R,T):se(d,m,x,y,w,R,T):ie(f,d,T)},se=(f,d,m,x,y,w,R)=>{const C=f.component=mc(f,x,y);if(Nn(f)&&(C.ctx.renderer=vt),yc(C,!1,R),C.asyncDep){if(y&&y.registerDep(C,H,R),!f.el){const T=C.subTree=de(ye);U(null,T,d,m)}}else H(C,f,d,m,y,w,R)},ie=(f,d,m)=>{const x=d.component=f.component;if(ac(f,d,m))if(x.asyncDep&&!x.asyncResolved){Y(x,d,m);return}else x.next=d,x.update();else d.el=f.el,x.vnode=d},H=(f,d,m,x,y,w,R)=>{const C=()=>{if(f.isMounted){let{next:M,bu:N,u:k,parent:X,vnode:Z}=f;{const Ee=Ui(f);if(Ee){M&&(M.el=Z.el,Y(f,M,R)),Ee.asyncDep.then(()=>{f.isUnmounted||C()});return}}let Q=M,xe;lt(f,!1),M?(M.el=Z.el,Y(f,M,R)):M=Z,N&&kn(N),(xe=M.props&&M.props.onVnodeBeforeUpdate)&&Oe(xe,X,M,Z),lt(f,!0);const he=zn(f),Pe=f.subTree;f.subTree=he,O(Pe,he,h(Pe.el),Zt(Pe),f,y,w),M.el=he.el,Q===null&&Ki(f,he.el),k&&Ce(k,y),(xe=M.props&&M.props.onVnodeUpdated)&&Ce(()=>Oe(xe,X,M,Z),y)}else{let M;const{el:N,props:k}=d,{bm:X,m:Z,parent:Q,root:xe,type:he}=f,Pe=pt(d);if(lt(f,!1),X&&kn(X),!Pe&&(M=k&&k.onVnodeBeforeMount)&&Oe(M,Q,d),lt(f,!0),N&&Bn){const Ee=()=>{f.subTree=zn(f),Bn(N,f.subTree,f,y,null)};Pe&&he.__asyncHydrate?he.__asyncHydrate(N,f,Ee):Ee()}else{xe.ce&&xe.ce._injectChildStyle(he);const Ee=f.subTree=zn(f);O(null,Ee,m,x,f,y,w),d.el=Ee.el}if(Z&&Ce(Z,y),!Pe&&(M=k&&k.onVnodeMounted)){const Ee=d;Ce(()=>Oe(M,Q,Ee),y)}(d.shapeFlag&256||Q&&pt(Q.vnode)&&Q.vnode.shapeFlag&256)&&f.a&&Ce(f.a,y),f.isMounted=!0,d=m=x=null}};f.scope.on();const T=f.effect=new Kr(C);f.scope.off();const E=f.update=T.run.bind(T),$=f.job=T.runIfDirty.bind(T);$.i=f,$.id=f.uid,T.scheduler=()=>Hs($),lt(f,!0),E()},Y=(f,d,m)=>{d.component=f;const x=f.vnode.props;f.vnode=d,f.next=null,Yl(f,d.props,x,m),Ql(f,d.children,m),rt(),Js(f),it()},F=(f,d,m,x,y,w,R,C,T=!1)=>{const E=f&&f.children,$=f?f.shapeFlag:0,M=d.children,{patchFlag:N,shapeFlag:k}=d;if(N>0){if(N&128){Qt(E,M,m,x,y,w,R,C,T);return}else if(N&256){ae(E,M,m,x,y,w,R,C,T);return}}k&8?($&16&&Mt(E,y,w),M!==E&&a(m,M)):$&16?k&16?Qt(E,M,m,x,y,w,R,C,T):Mt(E,y,w,!0):($&8&&a(m,""),k&16&&K(M,m,x,y,w,R,C,T))},ae=(f,d,m,x,y,w,R,C,T)=>{f=f||St,d=d||St;const E=f.length,$=d.length,M=Math.min(E,$);let N;for(N=0;N$?Mt(f,y,w,!0,!1,M):K(d,m,x,y,w,R,C,T,M)},Qt=(f,d,m,x,y,w,R,C,T)=>{let E=0;const $=d.length;let M=f.length-1,N=$-1;for(;E<=M&&E<=N;){const k=f[E],X=d[E]=T?Qe(d[E]):Me(d[E]);if(ut(k,X))O(k,X,m,null,y,w,R,C,T);else break;E++}for(;E<=M&&E<=N;){const k=f[M],X=d[N]=T?Qe(d[N]):Me(d[N]);if(ut(k,X))O(k,X,m,null,y,w,R,C,T);else break;M--,N--}if(E>M){if(E<=N){const k=N+1,X=k<$?d[k].el:x;for(;E<=N;)O(null,d[E]=T?Qe(d[E]):Me(d[E]),m,X,y,w,R,C,T),E++}}else if(E>N)for(;E<=M;)$e(f[E],y,w,!0),E++;else{const k=E,X=E,Z=new Map;for(E=X;E<=N;E++){const Te=d[E]=T?Qe(d[E]):Me(d[E]);Te.key!=null&&Z.set(Te.key,E)}let Q,xe=0;const he=N-X+1;let Pe=!1,Ee=0;const It=new Array(he);for(E=0;E=he){$e(Te,y,w,!0);continue}let De;if(Te.key!=null)De=Z.get(Te.key);else for(Q=X;Q<=N;Q++)if(It[Q-X]===0&&ut(Te,d[Q])){De=Q;break}De===void 0?$e(Te,y,w,!0):(It[De-X]=E+1,De>=Ee?Ee=De:Pe=!0,O(Te,d[De],m,null,y,w,R,C,T),xe++)}const Ks=Pe?tc(It):St;for(Q=Ks.length-1,E=he-1;E>=0;E--){const Te=X+E,De=d[Te],qs=Te+1<$?d[Te+1].el:x;It[E]===0?O(null,De,m,qs,y,w,R,C,T):Pe&&(Q<0||E!==Ks[Q]?ot(De,m,qs,2):Q--)}}},ot=(f,d,m,x,y=null)=>{const{el:w,type:R,transition:C,children:T,shapeFlag:E}=f;if(E&6){ot(f.component.subTree,d,m,x);return}if(E&128){f.suspense.move(d,m,x);return}if(E&64){R.move(f,d,m,vt);return}if(R===Se){s(w,d,m);for(let M=0;MC.enter(w),y);else{const{leave:M,delayLeave:N,afterLeave:k}=C,X=()=>s(w,d,m),Z=()=>{M(w,()=>{X(),k&&k()})};N?N(w,X,Z):Z()}else s(w,d,m)},$e=(f,d,m,x=!1,y=!1)=>{const{type:w,props:R,ref:C,children:T,dynamicChildren:E,shapeFlag:$,patchFlag:M,dirs:N,cacheIndex:k}=f;if(M===-2&&(y=!1),C!=null&&Wt(C,null,m,f,!0),k!=null&&(d.renderCache[k]=void 0),$&256){d.ctx.deactivate(f);return}const X=$&1&&N,Z=!pt(f);let Q;if(Z&&(Q=R&&R.onVnodeBeforeUnmount)&&Oe(Q,d,f),$&6)bo(f.component,m,x);else{if($&128){f.suspense.unmount(m,x);return}X&&Ve(f,null,d,"beforeUnmount"),$&64?f.type.remove(f,d,m,vt,x):E&&!E.hasOnce&&(w!==Se||M>0&&M&64)?Mt(E,d,m,!1,!0):(w===Se&&M&384||!y&&$&16)&&Mt(T,d,m),x&&ks(f)}(Z&&(Q=R&&R.onVnodeUnmounted)||X)&&Ce(()=>{Q&&Oe(Q,d,f),X&&Ve(f,null,d,"unmounted")},m)},ks=f=>{const{type:d,el:m,anchor:x,transition:y}=f;if(d===Se){_o(m,x);return}if(d===Dt){p(f);return}const w=()=>{r(m),y&&!y.persisted&&y.afterLeave&&y.afterLeave()};if(f.shapeFlag&1&&y&&!y.persisted){const{leave:R,delayLeave:C}=y,T=()=>R(m,w);C?C(f.el,w,T):T()}else w()},_o=(f,d)=>{let m;for(;f!==d;)m=v(f),r(f),f=m;r(d)},bo=(f,d,m)=>{const{bum:x,scope:y,job:w,subTree:R,um:C,m:T,a:E}=f;or(T),or(E),x&&kn(x),y.stop(),w&&(w.flags|=8,$e(R,f,d,m)),C&&Ce(C,d),Ce(()=>{f.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&f.asyncDep&&!f.asyncResolved&&f.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},Mt=(f,d,m,x=!1,y=!1,w=0)=>{for(let R=w;R{if(f.shapeFlag&6)return Zt(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const d=v(f.anchor||f.el),m=d&&d[_l];return m?v(m):d};let Vn=!1;const Ws=(f,d,m)=>{f==null?d._vnode&&$e(d._vnode,null,null,!0):O(d._vnode||null,f,d,null,null,null,m),d._vnode=f,Vn||(Vn=!0,Js(),bn(),Vn=!1)},vt={p:O,um:$e,m:ot,r:ks,mt:se,mc:K,pc:F,pbc:_,n:Zt,o:e};let Un,Bn;return[Un,Bn]=t(vt),{render:Ws,hydrate:Un,createApp:Kl(Ws,Un)}}function Jn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function lt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function ji(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Vi(e,t,n=!1){const s=e.children,r=t.children;if(B(s)&&B(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function Ui(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ui(t)}function or(e){if(e)for(let t=0;tAt(nc);function Bi(e,t){return $n(e,null,t)}function tf(e,t){return $n(e,null,{flush:"post"})}function Fe(e,t,n){return $n(e,t,n)}function $n(e,t,n=te){const{immediate:s,deep:r,flush:i,once:o}=n,l=ce({},n),c=t&&s||!t&&i!=="post";let u;if(Gt){if(i==="sync"){const S=sc();u=S.__watcherHandles||(S.__watcherHandles=[])}else if(!c){const S=()=>{};return S.stop=Ue,S.resume=Ue,S.pause=Ue,S}}const a=fe;l.call=(S,L,O)=>He(S,a,L,O);let h=!1;i==="post"?l.scheduler=S=>{Ce(S,a&&a.suspense)}:i!=="sync"&&(h=!0,l.scheduler=(S,L)=>{L?S():Hs(S)}),l.augmentJob=S=>{t&&(S.flags|=4),h&&(S.flags|=2,a&&(S.id=a.uid,S.i=a))};const v=pl(e,t,l);return Gt&&(u?u.push(v):c&&v()),v}function rc(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?ki(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=zt(this),l=$n(r,i.bind(s),n);return o(),l}function ki(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${st(t)}Modifiers`];function oc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||te;let r=n;const i=t.startsWith("update:"),o=i&&ic(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>re(a)?a.trim():a)),o.number&&(r=n.map(Co)));let l,c=s[l=dn(t)]||s[l=dn(Le(t))];!c&&i&&(c=s[l=dn(st(t))]),c&&He(c,e,6,r);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,He(u,e,6,r)}}function Wi(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=u=>{const a=Wi(u,t,!0);a&&(l=!0,ce(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ne(e)&&s.set(e,null),null):(B(i)?i.forEach(c=>o[c]=null):ce(o,i),ne(e)&&s.set(e,o),o)}function Dn(e,t){return!e||!Xt(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,st(t))||z(e,t))}function zn(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:u,renderCache:a,props:h,data:v,setupState:S,ctx:L,inheritAttrs:O}=e,G=wn(e);let U,W;try{if(n.shapeFlag&4){const p=r||s,A=p;U=Me(u.call(A,p,a,h,S,v,L)),W=l}else{const p=t;U=Me(p.length>1?p(h,{attrs:l,slots:o,emit:c}):p(h,null)),W=t.props?l:lc(l)}}catch(p){jt.length=0,Ln(p,e,1),U=de(ye)}let g=U;if(W&&O!==!1){const p=Object.keys(W),{shapeFlag:A}=g;p.length&&A&7&&(i&&p.some(Ts)&&(W=cc(W,i)),g=nt(g,W,!1,!0))}return n.dirs&&(g=nt(g,null,!1,!0),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&kt(g,n.transition),U=g,wn(G),U}const lc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Xt(n))&&((t||(t={}))[n]=e[n]);return t},cc=(e,t)=>{const n={};for(const s in e)(!Ts(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function ac(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?lr(s,o,u):!!o;if(c&8){const a=t.dynamicProps;for(let h=0;he.__isSuspense;function Gi(e,t){t&&t.pendingBranch?B(e)?t.effects.push(...e):t.effects.push(e):yl(e)}const Se=Symbol.for("v-fgt"),gt=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Dt=Symbol.for("v-stc"),jt=[];let Ae=null;function _s(e=!1){jt.push(Ae=e?null:[])}function fc(){jt.pop(),Ae=jt[jt.length-1]||null}let Kt=1;function cr(e,t=!1){Kt+=e,e<0&&Ae&&t&&(Ae.hasOnce=!0)}function Yi(e){return e.dynamicChildren=Kt>0?Ae||St:null,fc(),Kt>0&&Ae&&Ae.push(e),e}function nf(e,t,n,s,r,i){return Yi(Ji(e,t,n,s,r,i,!0))}function bs(e,t,n,s,r){return Yi(de(e,t,n,s,r,!0))}function qt(e){return e?e.__v_isVNode===!0:!1}function ut(e,t){return e.type===t.type&&e.key===t.key}const Xi=({key:e})=>e??null,pn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||le(e)||q(e)?{i:ve,r:e,k:t,f:!!n}:e:null);function Ji(e,t=null,n=null,s=0,r=null,i=e===Se?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Xi(t),ref:t&&pn(t),scopeId:di,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ve};return l?(Ds(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),Kt>0&&!o&&Ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ae.push(c),c}const de=uc;function uc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Ei)&&(e=ye),qt(e)){const l=nt(e,t,!0);return n&&Ds(l,n),Kt>0&&!i&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(wc(e)&&(e=e.__vccOpts),t){t=dc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=Os(l)),ne(c)&&(Fs(c)&&!B(c)&&(c=ce({},c)),t.style=Rs(c))}const o=re(e)?1:qi(e)?128:hi(e)?64:ne(e)?4:q(e)?2:0;return Ji(e,t,n,s,r,o,i,!0)}function dc(e){return e?Fs(e)||Li(e)?ce({},e):e:null}function nt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,u=t?hc(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Xi(u),ref:t&&t.ref?n&&i?B(i)?i.concat(pn(t)):[i,pn(t)]:pn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Se?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&nt(e.ssContent),ssFallback:e.ssFallback&&nt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&kt(a,c.clone(a)),a}function zi(e=" ",t=0){return de(gt,null,e,t)}function sf(e,t){const n=de(Dt,null,e);return n.staticCount=t,n}function rf(e="",t=!1){return t?(_s(),bs(ye,null,e)):de(ye,null,e)}function Me(e){return e==null||typeof e=="boolean"?de(ye):B(e)?de(Se,null,e.slice()):qt(e)?Qe(e):de(gt,null,String(e))}function Qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function Ds(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(B(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ds(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Li(t)?t._ctx=ve:r===3&&ve&&(ve.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:ve},n=32):(t=String(t),s&64?(n=16,t=[zi(t)]):n=8);e.children=t,e.shapeFlag|=n}function hc(...e){const t={};for(let n=0;nfe||ve;let xn,ws;{const e=An(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};xn=t("__VUE_INSTANCE_SETTERS__",n=>fe=n),ws=t("__VUE_SSR_SETTERS__",n=>Gt=n)}const zt=e=>{const t=fe;return xn(e),e.scope.on(),()=>{e.scope.off(),xn(t)}},ar=()=>{fe&&fe.scope.off(),xn(null)};function Qi(e){return e.vnode.shapeFlag&4}let Gt=!1;function yc(e,t=!1,n=!1){t&&ws(t);const{props:s,children:r}=e.vnode,i=Qi(e);Gl(e,s,i,t),zl(e,r,n);const o=i?vc(e,t):void 0;return t&&ws(!1),o}function vc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,$l);const{setup:s}=n;if(s){rt();const r=e.setupContext=s.length>1?eo(e):null,i=zt(e),o=Jt(s,e,0,[e.props,r]),l=$r(o);if(it(),i(),(l||e.sp)&&!pt(e)&&bi(e),l){if(o.then(ar,ar),t)return o.then(c=>{fr(e,c)}).catch(c=>{Ln(c,e,0)});e.asyncDep=o}else fr(e,o)}else Zi(e)}function fr(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=ci(t)),Zi(e)}function Zi(e,t,n){const s=e.type;e.render||(e.render=s.render||Ue);{const r=zt(e);rt();try{jl(e)}finally{it(),r()}}}const _c={get(e,t){return ge(e,"get",""),e[t]}};function eo(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,_c),slots:e.slots,emit:e.emit,expose:t}}function js(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ci(hn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in $t)return $t[n](e)},has(t,n){return n in t||n in $t}})):e.proxy}function bc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function wc(e){return q(e)&&"__vccOpts"in e}const oe=(e,t)=>dl(e,t,Gt);function Ss(e,t,n){const s=arguments.length;return s===2?ne(t)&&!B(t)?qt(t)?de(e,null,[t]):de(e,t):de(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&qt(n)&&(n=[n]),de(e,t,n))}const Sc="3.5.13";/** +* @vue/runtime-dom v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let xs;const ur=typeof window<"u"&&window.trustedTypes;if(ur)try{xs=ur.createPolicy("vue",{createHTML:e=>e})}catch{}const to=xs?e=>xs.createHTML(e):e=>e,xc="http://www.w3.org/2000/svg",Ec="http://www.w3.org/1998/Math/MathML",We=typeof document<"u"?document:null,dr=We&&We.createElement("template"),Tc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?We.createElementNS(xc,e):t==="mathml"?We.createElementNS(Ec,e):n?We.createElement(e,{is:n}):We.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>We.createTextNode(e),createComment:e=>We.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>We.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{dr.innerHTML=to(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=dr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Xe="transition",Pt="animation",Yt=Symbol("_vtc"),no={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Cc=ce({},pi,no),Ac=e=>(e.displayName="Transition",e.props=Cc,e),of=Ac((e,{slots:t})=>Ss(Sl,Rc(e),t)),ct=(e,t=[])=>{B(e)?e.forEach(n=>n(...t)):e&&e(...t)},hr=e=>e?B(e)?e.some(t=>t.length>1):e.length>1:!1;function Rc(e){const t={};for(const b in e)b in no||(t[b]=e[b]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:u=o,appearToClass:a=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:v=`${n}-leave-active`,leaveToClass:S=`${n}-leave-to`}=e,L=Oc(r),O=L&&L[0],G=L&&L[1],{onBeforeEnter:U,onEnter:W,onEnterCancelled:g,onLeave:p,onLeaveCancelled:A,onBeforeAppear:D=U,onAppear:j=W,onAppearCancelled:K=g}=t,I=(b,V,se,ie)=>{b._enterCancelled=ie,at(b,V?a:l),at(b,V?u:o),se&&se()},_=(b,V)=>{b._isLeaving=!1,at(b,h),at(b,S),at(b,v),V&&V()},P=b=>(V,se)=>{const ie=b?j:W,H=()=>I(V,b,se);ct(ie,[V,H]),pr(()=>{at(V,b?c:i),ke(V,b?a:l),hr(ie)||gr(V,s,O,H)})};return ce(t,{onBeforeEnter(b){ct(U,[b]),ke(b,i),ke(b,o)},onBeforeAppear(b){ct(D,[b]),ke(b,c),ke(b,u)},onEnter:P(!1),onAppear:P(!0),onLeave(b,V){b._isLeaving=!0;const se=()=>_(b,V);ke(b,h),b._enterCancelled?(ke(b,v),vr()):(vr(),ke(b,v)),pr(()=>{b._isLeaving&&(at(b,h),ke(b,S),hr(p)||gr(b,s,G,se))}),ct(p,[b,se])},onEnterCancelled(b){I(b,!1,void 0,!0),ct(g,[b])},onAppearCancelled(b){I(b,!0,void 0,!0),ct(K,[b])},onLeaveCancelled(b){_(b),ct(A,[b])}})}function Oc(e){if(e==null)return null;if(ne(e))return[Qn(e.enter),Qn(e.leave)];{const t=Qn(e);return[t,t]}}function Qn(e){return Ao(e)}function ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Yt]||(e[Yt]=new Set)).add(t)}function at(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Yt];n&&(n.delete(t),n.size||(e[Yt]=void 0))}function pr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Mc=0;function gr(e,t,n,s){const r=e._endId=++Mc,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=Ic(e,t);if(!o)return s();const u=o+"end";let a=0;const h=()=>{e.removeEventListener(u,v),i()},v=S=>{S.target===e&&++a>=c&&h()};setTimeout(()=>{a(n[L]||"").split(", "),r=s(`${Xe}Delay`),i=s(`${Xe}Duration`),o=mr(r,i),l=s(`${Pt}Delay`),c=s(`${Pt}Duration`),u=mr(l,c);let a=null,h=0,v=0;t===Xe?o>0&&(a=Xe,h=o,v=i.length):t===Pt?u>0&&(a=Pt,h=u,v=c.length):(h=Math.max(o,u),a=h>0?o>u?Xe:Pt:null,v=a?a===Xe?i.length:c.length:0);const S=a===Xe&&/\b(transform|all)(,|$)/.test(s(`${Xe}Property`).toString());return{type:a,timeout:h,propCount:v,hasTransform:S}}function mr(e,t){for(;e.lengthyr(n)+yr(e[s])))}function yr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function vr(){return document.body.offsetHeight}function Lc(e,t,n){const s=e[Yt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const _r=Symbol("_vod"),Pc=Symbol("_vsh"),Nc=Symbol(""),Fc=/(^|;)\s*display\s*:/;function Hc(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&gn(s,l,"")}else for(const o in t)n[o]==null&&gn(s,o,"");for(const o in n)o==="display"&&(i=!0),gn(s,o,n[o])}else if(r){if(t!==n){const o=s[Nc];o&&(n+=";"+o),s.cssText=n,i=Fc.test(n)}}else t&&e.removeAttribute("style");_r in e&&(e[_r]=i?s.display:"",e[Pc]&&(s.display="none"))}const br=/\s*!important$/;function gn(e,t,n){if(B(n))n.forEach(s=>gn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=$c(e,t);br.test(n)?e.setProperty(st(s),n.replace(br,""),"important"):e[s]=n}}const wr=["Webkit","Moz","ms"],Zn={};function $c(e,t){const n=Zn[t];if(n)return n;let s=Le(t);if(s!=="filter"&&s in e)return Zn[t]=s;s=Cn(s);for(let r=0;res||(Bc.then(()=>es=0),es=Date.now());function Wc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;He(Kc(s,n.value),t,5,[s])};return n.value=e,n.attached=kc(),n}function Kc(e,t){if(B(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Ar=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,qc=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?Lc(e,s,o):t==="style"?Hc(e,n,s):Xt(t)?Ts(t)||Vc(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Gc(e,t,s,o))?(Er(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&xr(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!re(s))?Er(e,Le(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),xr(e,t,s,o))};function Gc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Ar(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Ar(t)&&re(n)?!1:t in e}const Yc=["ctrl","shift","alt","meta"],Xc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Yc.some(n=>e[`${n}Key`]&&!t.includes(n))},lf=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=st(r.key);if(t.some(o=>o===i||Jc[o]===i))return e(r)})},zc=ce({patchProp:qc},Tc);let ts,Rr=!1;function Qc(){return ts=Rr?ts:Zl(zc),Rr=!0,ts}const af=(...e)=>{const t=Qc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=ea(s);if(r)return n(r,!0,Zc(r))},t};function Zc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ea(e){return re(e)?document.querySelector(e):e}const ff=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},ta=window.__VP_SITE_DATA__;function Vs(e){return Wr()?(Ho(e),!0):!1}function tt(e){return typeof e=="function"?e():li(e)}const so=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const na=Object.prototype.toString,sa=e=>na.call(e)==="[object Object]",ro=()=>{},Or=ra();function ra(){var e,t;return so&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function ia(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const io=e=>e();function oa(e=io){const t=ue(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:In(t),pause:n,resume:s,eventFilter:r}}function la(e){return jn()}function oo(...e){if(e.length!==1)return al(...e);const t=e[0];return typeof t=="function"?In(ol(()=>({get:t,set:ro}))):ue(t)}function ca(e,t,n={}){const{eventFilter:s=io,...r}=n;return Fe(e,ia(s,t),r)}function aa(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=oa(s);return{stop:ca(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function Us(e,t=!0,n){la()?Ot(e,n):t?e():Pn(e)}const qe=so?window:void 0;function lo(e){var t;const n=tt(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Rt(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=qe):[t,n,s,r]=e,!t)return ro;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(a=>a()),i.length=0},l=(a,h,v,S)=>(a.addEventListener(h,v,S),()=>a.removeEventListener(h,v,S)),c=Fe(()=>[lo(t),tt(r)],([a,h])=>{if(o(),!a)return;const v=sa(h)?{...h}:h;i.push(...n.flatMap(S=>s.map(L=>l(a,S,L,v))))},{immediate:!0,flush:"post"}),u=()=>{c(),o()};return Vs(u),u}function fa(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function uf(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=qe,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=fa(t);return Rt(r,i,a=>{a.repeat&&tt(l)||c(a)&&n(a)},o)}function ua(){const e=ue(!1),t=jn();return t&&Ot(()=>{e.value=!0},t),e}function da(e){const t=ua();return oe(()=>(t.value,!!e()))}function co(e,t={}){const{window:n=qe}=t,s=da(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=ue(!1),o=u=>{i.value=u.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=Bi(()=>{s.value&&(l(),r=n.matchMedia(tt(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return Vs(()=>{c(),l(),r=void 0}),i}const cn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},an="__vueuse_ssr_handlers__",ha=pa();function pa(){return an in cn||(cn[an]=cn[an]||{}),cn[an]}function ao(e,t){return ha[e]||t}function Bs(e){return co("(prefers-color-scheme: dark)",e)}function ga(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const ma={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Mr="vueuse-storage";function ya(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:a,window:h=qe,eventFilter:v,onError:S=_=>{console.error(_)},initOnMounted:L}=s,O=(a?ii:ue)(typeof t=="function"?t():t);if(!n)try{n=ao("getDefaultStorage",()=>{var _;return(_=qe)==null?void 0:_.localStorage})()}catch(_){S(_)}if(!n)return O;const G=tt(t),U=ga(G),W=(r=s.serializer)!=null?r:ma[U],{pause:g,resume:p}=aa(O,()=>D(O.value),{flush:i,deep:o,eventFilter:v});h&&l&&Us(()=>{n instanceof Storage?Rt(h,"storage",K):Rt(h,Mr,I),L&&K()}),L||K();function A(_,P){if(h){const b={key:e,oldValue:_,newValue:P,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",b):new CustomEvent(Mr,{detail:b}))}}function D(_){try{const P=n.getItem(e);if(_==null)A(P,null),n.removeItem(e);else{const b=W.write(_);P!==b&&(n.setItem(e,b),A(P,b))}}catch(P){S(P)}}function j(_){const P=_?_.newValue:n.getItem(e);if(P==null)return c&&G!=null&&n.setItem(e,W.write(G)),G;if(!_&&u){const b=W.read(P);return typeof u=="function"?u(b,G):U==="object"&&!Array.isArray(b)?{...G,...b}:b}else return typeof P!="string"?P:W.read(P)}function K(_){if(!(_&&_.storageArea!==n)){if(_&&_.key==null){O.value=G;return}if(!(_&&_.key!==e)){g();try{(_==null?void 0:_.newValue)!==W.write(O.value)&&(O.value=j(_))}catch(P){S(P)}finally{_?Pn(p):p()}}}}function I(_){K(_.detail)}return O}const va="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function _a(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=qe,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:a=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},v=Bs({window:r}),S=oe(()=>v.value?"dark":"light"),L=c||(o==null?oo(s):ya(o,s,i,{window:r,listenToStorageChanges:l})),O=oe(()=>L.value==="auto"?S.value:L.value),G=ao("updateHTMLAttrs",(p,A,D)=>{const j=typeof p=="string"?r==null?void 0:r.document.querySelector(p):lo(p);if(!j)return;const K=new Set,I=new Set;let _=null;if(A==="class"){const b=D.split(/\s/g);Object.values(h).flatMap(V=>(V||"").split(/\s/g)).filter(Boolean).forEach(V=>{b.includes(V)?K.add(V):I.add(V)})}else _={key:A,value:D};if(K.size===0&&I.size===0&&_===null)return;let P;a&&(P=r.document.createElement("style"),P.appendChild(document.createTextNode(va)),r.document.head.appendChild(P));for(const b of K)j.classList.add(b);for(const b of I)j.classList.remove(b);_&&j.setAttribute(_.key,_.value),a&&(r.getComputedStyle(P).opacity,document.head.removeChild(P))});function U(p){var A;G(t,n,(A=h[p])!=null?A:p)}function W(p){e.onChanged?e.onChanged(p,U):U(p)}Fe(O,W,{flush:"post",immediate:!0}),Us(()=>W(O.value));const g=oe({get(){return u?L.value:O.value},set(p){L.value=p}});try{return Object.assign(g,{store:L,system:S,state:O})}catch{return g}}function ba(e={}){const{valueDark:t="dark",valueLight:n="",window:s=qe}=e,r=_a({...e,onChanged:(l,c)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=oe(()=>r.system?r.system.value:Bs({window:s}).value?"dark":"light");return oe({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function ns(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function fo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const ss=new WeakMap;function df(e,t=!1){const n=ue(t);let s=null,r="";Fe(oo(e),l=>{const c=ns(tt(l));if(c){const u=c;if(ss.get(u)||ss.set(u,u.style.overflow),u.style.overflow!=="hidden"&&(r=u.style.overflow),u.style.overflow==="hidden")return n.value=!0;if(n.value)return u.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=ns(tt(e));!l||n.value||(Or&&(s=Rt(l,"touchmove",c=>{wa(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=ns(tt(e));!l||!n.value||(Or&&(s==null||s()),l.style.overflow=r,ss.delete(l),n.value=!1)};return Vs(o),oe({get(){return n.value},set(l){l?i():o()}})}function hf(e={}){const{window:t=qe,behavior:n="auto"}=e;if(!t)return{x:ue(0),y:ue(0)};const s=ue(t.scrollX),r=ue(t.scrollY),i=oe({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=oe({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Rt(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function pf(e={}){const{window:t=qe,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=ue(n),c=ue(s),u=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(u(),Us(u),Rt("resize",u,{passive:!0}),r){const a=co("(orientation: portrait)");Fe(a,()=>u())}return{width:l,height:c}}const rs={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var is={};const uo=/^(?:[a-z]+:|\/\/)/i,Sa="vitepress-theme-appearance",xa=/#.*$/,Ea=/[?#].*$/,Ta=/(?:(^|\/)index)?\.(?:md|html)$/,pe=typeof document<"u",ho={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Ca(e,t,n=!1){if(t===void 0)return!1;if(e=Ir(`/${e}`),n)return new RegExp(t).test(e);if(Ir(t)!==e)return!1;const s=t.match(xa);return s?(pe?location.hash:"")===s[0]:!0}function Ir(e){return decodeURI(e).replace(Ea,"").replace(Ta,"$1")}function Aa(e){return uo.test(e)}function Ra(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Aa(n)&&Ca(t,`/${n}/`,!0))||"root"}function Oa(e,t){var s,r,i,o,l,c,u;const n=Ra(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:go(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function po(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=Ma(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function Ma(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Ia(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function go(e,t){return[...e.filter(n=>!Ia(t,n)),...t]}const La=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Pa=/^[a-z]:/i;function Lr(e){const t=Pa.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(La,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const os=new Set;function Na(e){if(os.size===0){const n=typeof process=="object"&&(is==null?void 0:is.VITE_EXTRA_EXTENSIONS)||(rs==null?void 0:rs.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>os.add(s))}const t=e.split(".").pop();return t==null||!os.has(t.toLowerCase())}const Fa=Symbol(),mt=ii(ta);function gf(e){const t=oe(()=>Oa(mt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?ue(!0):n==="force-auto"?Bs():n?ba({storageKey:Sa,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):ue(!1),r=ue(pe?location.hash:"");return pe&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Fe(()=>e.data,()=>{r.value=pe?location.hash:""}),{site:t,theme:oe(()=>t.value.themeConfig),page:oe(()=>e.data),frontmatter:oe(()=>e.data.frontmatter),params:oe(()=>e.data.params),lang:oe(()=>t.value.lang),dir:oe(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:oe(()=>t.value.localeIndex||"root"),title:oe(()=>po(t.value,e.data)),description:oe(()=>e.data.description||t.value.description),isDark:s,hash:oe(()=>r.value)}}function Ha(){const e=At(Fa);if(!e)throw new Error("vitepress data not properly injected in app");return e}function $a(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Pr(e){return uo.test(e)||!e.startsWith("/")?e:$a(mt.value.base,e)}function Da(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),pe){const n="/";t=Lr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Lr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let mn=[];function mf(e){mn.push(e),Hn(()=>{mn=mn.filter(t=>t!==e)})}function ja(){let e=mt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Nr(e,n);else if(Array.isArray(e))for(const s of e){const r=Nr(s,n);if(r){t=r;break}}return t}function Nr(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const Va=Symbol(),mo="http://a.com",Ua=()=>({path:"/",component:null,data:ho});function yf(e,t){const n=Mn(Ua()),s={route:n,go:r};async function r(l=pe?location.href:"/"){var c,u;l=ls(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(pe&&l!==ls(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((u=s.onAfterRouteChanged)==null?void 0:u.call(s,l)))}let i=null;async function o(l,c=0,u=!1){var v,S;if(await((v=s.onBeforePageLoad)==null?void 0:v.call(s,l))===!1)return;const a=new URL(l,mo),h=i=a.pathname;try{let L=await e(h);if(!L)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:O,__pageData:G}=L;if(!O)throw new Error(`Invalid route component: ${O}`);await((S=s.onAfterPageLoad)==null?void 0:S.call(s,l)),n.path=pe?h:Pr(h),n.component=hn(O),n.data=hn(G),pe&&Pn(()=>{let U=mt.value.base+G.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!mt.value.cleanUrls&&!U.endsWith("/")&&(U+=".html"),U!==a.pathname&&(a.pathname=U,l=U+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let W=null;try{W=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(g){console.warn(g)}if(W){Fr(W,a.hash);return}}window.scrollTo(0,c)})}}catch(L){if(!/fetch|Page not found/.test(L.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(L),!u)try{const O=await fetch(mt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await O.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=pe?h:Pr(h),n.component=t?hn(t):null;const O=pe?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...ho,relativePath:O}}}}return pe&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const u=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(u==null)return;const{href:a,origin:h,pathname:v,hash:S,search:L}=new URL(u,c.baseURI),O=new URL(location.href);h===O.origin&&Na(v)&&(l.preventDefault(),v===O.pathname&&L===O.search?(S!==O.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:O.href,newURL:a}))),S?Fr(c,S,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(ls(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function Ba(){const e=At(Va);if(!e)throw new Error("useRouter() is called without provider.");return e}function yo(){return Ba().route}function Fr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-ja()+i;requestAnimationFrame(r)}}function ls(e){const t=new URL(e,mo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),mt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const fn=()=>mn.forEach(e=>e()),vf=_i({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=yo(),{frontmatter:n,site:s}=Ha();return Fe(n,fn,{deep:!0,flush:"post"}),()=>Ss(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?Ss(t.component,{onVnodeMounted:fn,onVnodeUpdated:fn,onVnodeUnmounted:fn}):"404 Page Not Found"])}}),_f=_i({setup(e,{slots:t}){const n=ue(!1);return Ot(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function bf(){pe&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(u=>u.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function wf(){if(pe){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let u=c.textContent||"";o&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),ka(u).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function ka(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function Sf(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=cs(l);for(const u of document.head.children)if(u.isEqualNode(c)){s.push(u);return}});return}const o=i.map(cs);s.forEach((l,c)=>{const u=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));u!==-1?delete o[u]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};Bi(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],u=po(o,i);u!==document.title&&(document.title=u);const a=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==a&&h.setAttribute("content",a):cs(["meta",{name:"description",content:a}]),r(go(o.head,Ka(c)))})}function cs([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function Wa(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Ka(e){return e.filter(t=>!Wa(t))}const as=new Set,vo=()=>document.createElement("link"),qa=e=>{const t=vo();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Ga=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let un;const Ya=pe&&(un=vo())&&un.relList&&un.relList.supports&&un.relList.supports("prefetch")?qa:Ga;function xf(){if(!pe||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!as.has(c)){as.add(c);const u=Da(c);u&&Ya(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):as.add(l))})})};Ot(s);const r=yo();Fe(()=>r.path,s),Hn(()=>{n&&n.disconnect()})}export{ef as $,ja as A,Xa as B,za as C,ii as D,mf as E,Se as F,de as G,Ja as H,uo as I,yo as J,hc as K,At as L,pf as M,Rs as N,uf as O,Pn as P,hf as Q,pe as R,In as S,of as T,df as U,ql as V,cf as W,Za as X,Si as Y,lf as Z,ff as _,zi as a,sf as a0,Sf as a1,Va as a2,gf as a3,Fa as a4,vf as a5,_f as a6,mt as a7,af as a8,yf as a9,Da as aa,xf as ab,wf as ac,bf as ad,Ss as ae,bs as b,nf as c,_i as d,rf as e,Na as f,Pr as g,oe as h,Aa as i,Ji as j,li as k,Ca as l,co as m,Os as n,_s as o,ue as p,Fe as q,Qa as r,Bi as s,No as t,Ha as u,Ot as v,vl as w,Hn as x,tf as y,Ll as z}; diff --git a/assets/chunks/theme.DXZpxO3K.js b/assets/chunks/theme.DXZpxO3K.js new file mode 100644 index 00000000..827a7c3c --- /dev/null +++ b/assets/chunks/theme.DXZpxO3K.js @@ -0,0 +1 @@ +import{d as m,o as a,c,r as d,n as w,a as z,t as S,b as k,w as f,e as h,T as ue,_ as g,u as $e,i as Ae,f as Be,g as de,h as y,j as l,k as r,l as q,m as re,p as T,q as D,s as X,v as O,x as Q,y as ve,z as Ee,A as Fe,B as W,F as C,C as A,D as ye,E as Z,G as _,H as E,I as Pe,J as x,K as j,L as ee,M as De,N as pe,O as Oe,P as Le,Q as Ve,R as te,S as Ge,U as Se,V as Te,W as Ue,X as je,Y as ze,Z as qe,$ as We}from"./framework.P9qPzDnn.js";const Ke=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),c("span",{class:w(["VPBadge",e.type])},[d(e.$slots,"default",{},()=>[z(S(e.text),1)])],2))}}),Je={key:0,class:"VPBackdrop"},Re=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),k(ue,{name:"fade"},{default:f(()=>[e.show?(a(),c("div",Je)):h("",!0)]),_:1}))}}),Ye=g(Re,[["__scopeId","data-v-d220041e"]]),V=$e;function Xe(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function ie(o){return/^\//.test(o)?o:`/${o}`}function fe(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(Ae(o)||o.startsWith("#")||!n.startsWith("http")||!Be(e))return o;const{site:i}=V(),u=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${s}`);return de(u)}function J({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:i}=V(),u=y(()=>{var v,$;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:(($=e.value.locales[t.value])==null?void 0:$.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([v,$])=>u.value.label===$.label?[]:{text:$.label,link:Qe($.link||(v==="root"?"/":`/${v}/`),n.value.i18nRouting!==!1&&o,s.value.relativePath.slice(u.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:u}}function Qe(o,e,t,s){return e?o.replace(/\/$/,"")+ie(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const Ze={class:"NotFound"},xe={class:"code"},et={class:"title"},tt={class:"quote"},nt={class:"action"},st=["href","aria-label"],ot=m({__name:"NotFound",setup(o){const{theme:e}=V(),{currentLang:t}=J();return(s,n)=>{var i,u,p,v,$;return a(),c("div",Ze,[l("p",xe,S(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),l("h1",et,S(((u=r(e).notFound)==null?void 0:u.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=l("div",{class:"divider"},null,-1)),l("blockquote",tt,S(((p=r(e).notFound)==null?void 0:p.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),l("div",nt,[l("a",{class:"link",href:r(de)(r(t).link),"aria-label":((v=r(e).notFound)==null?void 0:v.linkLabel)??"go to home"},S((($=r(e).notFound)==null?void 0:$.linkText)??"Take me home"),9,st)])])}}}),at=g(ot,[["__scopeId","data-v-314d6823"]]);function Ne(o,e){if(Array.isArray(o))return R(o);if(o==null)return[];e=ie(e);const t=Object.keys(o).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(ie(n))),s=t?o[t]:[];return Array.isArray(s)?R(s):R(s.items,s.base)}function rt(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function it(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function le(o,e){return Array.isArray(e)?e.some(t=>le(o,t)):q(o,e.link)?!0:e.items?le(o,e.items):!1}function R(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=R(s.items,n)),s})}function G(){const{frontmatter:o,page:e,theme:t}=V(),s=re("(min-width: 960px)"),n=T(!1),i=y(()=>{const H=t.value.sidebar,N=e.value.relativePath;return H?Ne(H,N):[]}),u=T(i.value);D(i,(H,N)=>{JSON.stringify(H)!==JSON.stringify(N)&&(u.value=i.value)});const p=y(()=>o.value.sidebar!==!1&&u.value.length>0&&o.value.layout!=="home"),v=y(()=>$?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),$=y(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),L=y(()=>p.value&&s.value),b=y(()=>p.value?rt(u.value):[]);function P(){n.value=!0}function M(){n.value=!1}function I(){n.value?M():P()}return{isOpen:n,sidebar:u,sidebarGroups:b,hasSidebar:p,hasAside:$,leftAside:v,isSidebarEnabled:L,open:P,close:M,toggle:I}}function lt(o,e){let t;X(()=>{t=o.value?document.activeElement:void 0}),O(()=>{window.addEventListener("keyup",s)}),Q(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function ct(o){const{page:e,hash:t}=V(),s=T(!1),n=y(()=>o.value.collapsed!=null),i=y(()=>!!o.value.link),u=T(!1),p=()=>{u.value=q(e.value.relativePath,o.value.link)};D([e,o,t],p),O(p);const v=y(()=>u.value?!0:o.value.items?le(e.value.relativePath,o.value.items):!1),$=y(()=>!!(o.value.items&&o.value.items.length));X(()=>{s.value=!!(n.value&&o.value.collapsed)}),ve(()=>{(u.value||v.value)&&(s.value=!1)});function L(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:i,isActiveLink:u,hasActiveLink:v,hasChildren:$,toggle:L}}function ut(){const{hasSidebar:o}=G(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const ce=[];function Me(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function he(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:dt(t),link:"#"+t.id,level:s}});return vt(e,o)}function dt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function vt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return ht(o,s,n)}function pt(o,e){const{isAsideEnabled:t}=ut(),s=Xe(i,100);let n=null;O(()=>{requestAnimationFrame(i),window.addEventListener("scroll",s)}),Ee(()=>{u(location.hash)}),Q(()=>{window.removeEventListener("scroll",s)});function i(){if(!t.value)return;const p=window.scrollY,v=window.innerHeight,$=document.body.offsetHeight,L=Math.abs(p+v-$)<1,b=ce.map(({element:M,link:I})=>({link:I,top:ft(M)})).filter(({top:M})=>!Number.isNaN(M)).sort((M,I)=>M.top-I.top);if(!b.length){u(null);return}if(p<1){u(null);return}if(L){u(b[b.length-1].link);return}let P=null;for(const{link:M,top:I}of b){if(I>p+Fe()+4)break;P=M}u(P)}function u(p){n&&n.classList.remove("active"),p==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(p)}"]`);const v=n;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function ft(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}function ht(o,e,t){ce.length=0;const s=[],n=[];return o.forEach(i=>{const u={...i,children:[]};let p=n[n.length-1];for(;p&&p.level>=u.level;)n.pop(),p=n[n.length-1];if(u.element.classList.contains("ignore-header")||p&&"shouldIgnore"in p){n.push({level:u.level,shouldIgnore:!0});return}u.level>t||u.level{const n=W("VPDocOutlineItem",!0);return a(),c("ul",{class:w(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),c(C,null,A(t.headers,({children:i,link:u,title:p})=>(a(),c("li",null,[l("a",{class:"outline-link",href:u,onClick:e,title:p},S(p),9,mt),i!=null&&i.length?(a(),k(n,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Ie=g(_t,[["__scopeId","data-v-9e933ec1"]]),kt={class:"content"},gt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},bt=m({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=V(),s=ye([]);Z(()=>{s.value=he(e.value.outline??t.value.outline)});const n=T(),i=T();return pt(n,i),(u,p)=>(a(),c("nav",{"aria-labelledby":"doc-outline-aria-label",class:w(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[l("div",kt,[l("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),l("div",gt,S(r(Me)(r(t))),1),_(Ie,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),$t=g(bt,[["__scopeId","data-v-d595de97"]]),yt={class:"VPDocAsideCarbonAds"},Pt=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),c("div",yt,[_(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Lt={class:"VPDocAside"},Vt=m({__name:"VPDocAside",setup(o){const{theme:e}=V();return(t,s)=>(a(),c("div",Lt,[d(t.$slots,"aside-top",{},void 0,!0),d(t.$slots,"aside-outline-before",{},void 0,!0),_($t),d(t.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=l("div",{class:"spacer"},null,-1)),d(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),k(Pt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),d(t.$slots,"aside-ads-after",{},void 0,!0),d(t.$slots,"aside-bottom",{},void 0,!0)]))}}),St=g(Vt,[["__scopeId","data-v-3de71ef9"]]);function Tt(){const{theme:o,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Nt(){const{page:o,theme:e,frontmatter:t}=V();return y(()=>{var $,L,b,P,M,I,H,N;const s=Ne(e.value.sidebar,o.value.relativePath),n=it(s),i=Mt(n,B=>B.link.replace(/[?#].*$/,"")),u=i.findIndex(B=>q(o.value.relativePath,B.link)),p=(($=e.value.docFooter)==null?void 0:$.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:p?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((b=i[u-1])==null?void 0:b.docFooterText)??((P=i[u-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((M=i[u-1])==null?void 0:M.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((I=i[u+1])==null?void 0:I.docFooterText)??((H=i[u+1])==null?void 0:H.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=i[u+1])==null?void 0:N.link)}}})}function Mt(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const F=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&Pe.test(e.href)||e.target==="_blank");return(n,i)=>(a(),k(E(t.value),{class:w(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?r(fe)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:f(()=>[d(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),It={class:"VPLastUpdated"},wt=["datetime"],Ct=m({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:s}=V(),n=y(()=>new Date(t.value.lastUpdated)),i=y(()=>n.value.toISOString()),u=T("");return O(()=>{X(()=>{var p,v,$;u.value=new Intl.DateTimeFormat((v=(p=e.value.lastUpdated)==null?void 0:p.formatOptions)!=null&&v.forceLocale?s.value:void 0,(($=e.value.lastUpdated)==null?void 0:$.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(p,v)=>{var $;return a(),c("p",It,[z(S((($=r(e).lastUpdated)==null?void 0:$.text)||r(e).lastUpdatedText||"Last updated")+": ",1),l("time",{datetime:i.value},S(u.value),9,wt)])}}}),Ht=g(Ct,[["__scopeId","data-v-12f2da6a"]]),At={key:0,class:"VPDocFooter"},Bt={key:0,class:"edit-info"},Et={key:0,class:"edit-link"},Ft={key:1,class:"last-updated"},Dt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Ot={class:"pager"},Gt=["innerHTML"],Ut=["innerHTML"],jt={class:"pager"},zt=["innerHTML"],qt=["innerHTML"],Wt=m({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=V(),n=Tt(),i=Nt(),u=y(()=>e.value.editLink&&s.value.editLink!==!1),p=y(()=>t.value.lastUpdated),v=y(()=>u.value||p.value||i.value.prev||i.value.next);return($,L)=>{var b,P,M,I;return v.value?(a(),c("footer",At,[d($.$slots,"doc-footer-before",{},void 0,!0),u.value||p.value?(a(),c("div",Bt,[u.value?(a(),c("div",Et,[_(F,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:f(()=>[L[0]||(L[0]=l("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),z(" "+S(r(n).text),1)]),_:1},8,["href"])])):h("",!0),p.value?(a(),c("div",Ft,[_(Ht)])):h("",!0)])):h("",!0),(b=r(i).prev)!=null&&b.link||(P=r(i).next)!=null&&P.link?(a(),c("nav",Dt,[L[1]||(L[1]=l("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),l("div",Ot,[(M=r(i).prev)!=null&&M.link?(a(),k(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:f(()=>{var H;return[l("span",{class:"desc",innerHTML:((H=r(e).docFooter)==null?void 0:H.prev)||"Previous page"},null,8,Gt),l("span",{class:"title",innerHTML:r(i).prev.text},null,8,Ut)]}),_:1},8,["href"])):h("",!0)]),l("div",jt,[(I=r(i).next)!=null&&I.link?(a(),k(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:f(()=>{var H;return[l("span",{class:"desc",innerHTML:((H=r(e).docFooter)==null?void 0:H.next)||"Next page"},null,8,zt),l("span",{class:"title",innerHTML:r(i).next.text},null,8,qt)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),Kt=g(Wt,[["__scopeId","data-v-e4c276ab"]]),Jt={class:"container"},Rt={class:"aside-container"},Yt={class:"aside-content"},Xt={class:"content"},Qt={class:"content-container"},Zt={class:"main"},xt=m({__name:"VPDoc",setup(o){const{theme:e}=V(),t=x(),{hasSidebar:s,hasAside:n,leftAside:i}=G(),u=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(p,v)=>{const $=W("Content");return a(),c("div",{class:w(["VPDoc",{"has-sidebar":r(s),"has-aside":r(n)}])},[d(p.$slots,"doc-top",{},void 0,!0),l("div",Jt,[r(n)?(a(),c("div",{key:0,class:w(["aside",{"left-aside":r(i)}])},[v[0]||(v[0]=l("div",{class:"aside-curtain"},null,-1)),l("div",Rt,[l("div",Yt,[_(St,null,{"aside-top":f(()=>[d(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[d(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[d(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[d(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[d(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[d(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),l("div",Xt,[l("div",Qt,[d(p.$slots,"doc-before",{},void 0,!0),l("main",Zt,[_($,{class:w(["vp-doc",[u.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),_(Kt,null,{"doc-footer-before":f(()=>[d(p.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),d(p.$slots,"doc-after",{},void 0,!0)])])]),d(p.$slots,"doc-bottom",{},void 0,!0)],2)}}}),en=g(xt,[["__scopeId","data-v-13b8f1e2"]]),tn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.href&&Pe.test(e.href)),s=y(()=>e.tag||(e.href?"a":"button"));return(n,i)=>(a(),k(E(s.value),{class:w(["VPButton",[n.size,n.theme]]),href:n.href?r(fe)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[z(S(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),nn=g(tn,[["__scopeId","data-v-df2cf507"]]),sn=["src","alt"],on=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=W("VPImage",!0);return e.image?(a(),c(C,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),c("img",j({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(de)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,sn)):(a(),c(C,{key:1},[_(s,j({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),_(s,j({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Y=g(on,[["__scopeId","data-v-964b1c62"]]),an={class:"container"},rn={class:"main"},ln={key:0,class:"name"},cn=["innerHTML"],un=["innerHTML"],dn=["innerHTML"],vn={key:0,class:"actions"},pn={key:0,class:"image"},fn={class:"image-container"},hn=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=ee("hero-image-slot-exists");return(t,s)=>(a(),c("div",{class:w(["VPHero",{"has-image":t.image||r(e)}])},[l("div",an,[l("div",rn,[d(t.$slots,"home-hero-info-before",{},void 0,!0),d(t.$slots,"home-hero-info",{},()=>[t.name?(a(),c("h1",ln,[l("span",{innerHTML:t.name,class:"clip"},null,8,cn)])):h("",!0),t.text?(a(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,un)):h("",!0),t.tagline?(a(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,dn)):h("",!0)],!0),d(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),c("div",vn,[(a(!0),c(C,null,A(t.actions,n=>(a(),c("div",{key:n.link,class:"action"},[_(nn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),d(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),c("div",pn,[l("div",fn,[s[0]||(s[0]=l("div",{class:"image-bg"},null,-1)),d(t.$slots,"home-hero-image",{},()=>[t.image?(a(),k(Y,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),mn=g(hn,[["__scopeId","data-v-8d45dfd5"]]),_n=m({__name:"VPHomeHero",setup(o){const{frontmatter:e}=V();return(t,s)=>r(e).hero?(a(),k(mn,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":f(()=>[d(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[d(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[d(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[d(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[d(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),kn={class:"box"},gn={key:0,class:"icon"},bn=["innerHTML"],$n=["innerHTML"],yn=["innerHTML"],Pn={key:4,class:"link-text"},Ln={class:"link-text-value"},Vn=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),k(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[l("article",kn,[typeof e.icon=="object"&&e.icon.wrap?(a(),c("div",gn,[_(Y,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),k(Y,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,bn)):h("",!0),l("h2",{class:"title",innerHTML:e.title},null,8,$n),e.details?(a(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,yn)):h("",!0),e.linkText?(a(),c("div",Pn,[l("p",Ln,[z(S(e.linkText)+" ",1),t[0]||(t[0]=l("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Sn=g(Vn,[["__scopeId","data-v-810fe4d1"]]),Tn={key:0,class:"VPFeatures"},Nn={class:"container"},Mn={class:"items"},In=m({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),c("div",Tn,[l("div",Nn,[l("div",Mn,[(a(!0),c(C,null,A(s.features,i=>(a(),c("div",{key:i.title,class:w(["item",[t.value]])},[_(Sn,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),wn=g(In,[["__scopeId","data-v-1d713b99"]]),Cn=m({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=V();return(t,s)=>r(e).features?(a(),k(wn,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),Hn=m({__name:"VPHomeContent",setup(o){const{width:e}=De({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),c("div",{class:"vp-doc container",style:pe(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[d(t.$slots,"default",{},void 0,!0)],4))}}),An=g(Hn,[["__scopeId","data-v-c6e93e4e"]]),Bn={class:"VPHome"},En=m({__name:"VPHome",setup(o){const{frontmatter:e}=V();return(t,s)=>{const n=W("Content");return a(),c("div",Bn,[d(t.$slots,"home-hero-before",{},void 0,!0),_(_n,null,{"home-hero-info-before":f(()=>[d(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[d(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[d(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[d(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[d(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),d(t.$slots,"home-hero-after",{},void 0,!0),d(t.$slots,"home-features-before",{},void 0,!0),_(Cn),d(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),k(An,{key:0},{default:f(()=>[_(n)]),_:1})):(a(),k(n,{key:1}))])}}}),Fn=g(En,[["__scopeId","data-v-f253ebe2"]]),Dn={},On={class:"VPPage"};function Gn(o,e){const t=W("Content");return a(),c("div",On,[d(o.$slots,"page-top"),_(t),d(o.$slots,"page-bottom")])}const Un=g(Dn,[["render",Gn]]),jn=m({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=V(),{hasSidebar:s}=G();return(n,i)=>(a(),c("div",{class:w(["VPContent",{"has-sidebar":r(s),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?d(n.$slots,"not-found",{key:0},()=>[_(at)],!0):r(t).layout==="page"?(a(),k(Un,{key:1},{"page-top":f(()=>[d(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[d(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),k(Fn,{key:2},{"home-hero-before":f(()=>[d(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[d(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[d(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[d(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[d(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[d(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[d(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[d(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[d(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),k(E(r(t).layout),{key:3})):(a(),k(en,{key:4},{"doc-top":f(()=>[d(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[d(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[d(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[d(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[d(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[d(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[d(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[d(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[d(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[d(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[d(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),zn=g(jn,[["__scopeId","data-v-7eb770b7"]]),qn={class:"container"},Wn=["innerHTML"],Kn=["innerHTML"],Jn=m({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=G();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),c("footer",{key:0,class:w(["VPFooter",{"has-sidebar":r(s)}])},[l("div",qn,[r(e).footer.message?(a(),c("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,Wn)):h("",!0),r(e).footer.copyright?(a(),c("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,Kn)):h("",!0)])],2)):h("",!0)}}),Rn=g(Jn,[["__scopeId","data-v-8c586fe8"]]);function Yn(){const{theme:o,frontmatter:e}=V(),t=ye([]),s=y(()=>t.value.length>0);return Z(()=>{t.value=he(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const Xn={class:"menu-text"},Qn={class:"header"},Zn={class:"outline"},xn=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=V(),s=T(!1),n=T(0),i=T(),u=T();function p(b){var P;(P=i.value)!=null&&P.contains(b.target)||(s.value=!1)}D(s,b=>{if(b){document.addEventListener("click",p);return}document.removeEventListener("click",p)}),Oe("Escape",()=>{s.value=!1}),Z(()=>{s.value=!1});function v(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function $(b){b.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),Le(()=>{s.value=!1}))}function L(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,P)=>(a(),c("div",{class:"VPLocalNavOutlineDropdown",style:pe({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[b.headers.length>0?(a(),c("button",{key:0,onClick:v,class:w({open:s.value})},[l("span",Xn,S(r(Me)(r(t))),1),P[0]||(P[0]=l("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),c("button",{key:1,onClick:L},S(r(t).returnToTopLabel||"Return to top"),1)),_(ue,{name:"flyout"},{default:f(()=>[s.value?(a(),c("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:$},[l("div",Qn,[l("a",{class:"top-link",href:"#",onClick:L},S(r(t).returnToTopLabel||"Return to top"),1)]),l("div",Zn,[_(Ie,{headers:b.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),es=g(xn,[["__scopeId","data-v-5bcce627"]]),ts={class:"container"},ns=["aria-expanded"],ss={class:"menu-text"},os=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=G(),{headers:n}=Yn(),{y:i}=Ve(),u=T(0);O(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Z(()=>{n.value=he(t.value.outline??e.value.outline)});const p=y(()=>n.value.length===0),v=y(()=>p.value&&!s.value),$=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:p.value,fixed:v.value}));return(L,b)=>r(t).layout!=="home"&&(!v.value||r(i)>=u.value)?(a(),c("div",{key:0,class:w($.value)},[l("div",ts,[r(s)?(a(),c("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=P=>L.$emit("open-menu"))},[b[1]||(b[1]=l("span",{class:"vpi-align-left menu-icon"},null,-1)),l("span",ss,S(r(e).sidebarMenuLabel||"Menu"),1)],8,ns)):h("",!0),_(es,{headers:r(n),navHeight:u.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),as=g(os,[["__scopeId","data-v-d38f1bb7"]]);function rs(){const o=T(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=x();return D(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const is={},ls={class:"VPSwitch",type:"button",role:"switch"},cs={class:"check"},us={key:0,class:"icon"};function ds(o,e){return a(),c("button",ls,[l("span",cs,[o.$slots.default?(a(),c("span",us,[d(o.$slots,"default",{},void 0,!0)])):h("",!0)])])}const vs=g(is,[["render",ds],["__scopeId","data-v-e23c1592"]]),ps=m({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=V(),s=ee("toggle-appearance",()=>{e.value=!e.value}),n=T("");return ve(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,u)=>(a(),k(vs,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(s)},{default:f(()=>u[0]||(u[0]=[l("span",{class:"vpi-sun sun"},null,-1),l("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),me=g(ps,[["__scopeId","data-v-327cf911"]]),fs={key:0,class:"VPNavBarAppearance"},hs=m({__name:"VPNavBarAppearance",setup(o){const{site:e}=V();return(t,s)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),c("div",fs,[_(me)])):h("",!0)}}),ms=g(hs,[["__scopeId","data-v-c319a4c2"]]),_e=T();let we=!1,ae=0;function _s(o){const e=T(!1);if(te){!we&&ks(),ae++;const t=D(_e,s=>{var n,i,u;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(u=o.onBlur)==null||u.call(o))});Q(()=>{t(),ae--,ae||gs()})}return Ge(e)}function ks(){document.addEventListener("focusin",Ce),we=!0,_e.value=document.activeElement}function gs(){document.removeEventListener("focusin",Ce)}function Ce(){_e.value=document.activeElement}const bs={class:"VPMenuLink"},$s=["innerHTML"],ys=m({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,s)=>(a(),c("div",bs,[_(F,{class:w({active:r(q)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:f(()=>[l("span",{innerHTML:t.item.text},null,8,$s)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=g(ys,[["__scopeId","data-v-6d9cb10e"]]),Ps={class:"VPMenuGroup"},Ls={key:0,class:"title"},Vs=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Ps,[e.text?(a(),c("p",Ls,S(e.text),1)):h("",!0),(a(!0),c(C,null,A(e.items,s=>(a(),c(C,null,["link"in s?(a(),k(ne,{key:0,item:s},null,8,["item"])):h("",!0)],64))),256))]))}}),Ss=g(Vs,[["__scopeId","data-v-c73fface"]]),Ts={class:"VPMenu"},Ns={key:0,class:"items"},Ms=m({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),c("div",Ts,[e.items?(a(),c("div",Ns,[(a(!0),c(C,null,A(e.items,s=>(a(),c(C,{key:JSON.stringify(s)},["link"in s?(a(),k(ne,{key:0,item:s},null,8,["item"])):"component"in s?(a(),k(E(s.component),j({key:1,ref_for:!0},s.props),null,16)):(a(),k(Ss,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):h("",!0),d(e.$slots,"default",{},void 0,!0)]))}}),Is=g(Ms,[["__scopeId","data-v-4abdfca2"]]),ws=["aria-expanded","aria-label"],Cs={key:0,class:"text"},Hs=["innerHTML"],As={key:1,class:"vpi-more-horizontal icon"},Bs={class:"menu"},Es=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=T(!1),t=T();_s({el:t,onBlur:s});function s(){e.value=!1}return(n,i)=>(a(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=u=>e.value=!0),onMouseleave:i[2]||(i[2]=u=>e.value=!1)},[l("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=u=>e.value=!e.value)},[n.button||n.icon?(a(),c("span",Cs,[n.icon?(a(),c("span",{key:0,class:w([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(a(),c("span",{key:1,innerHTML:n.button},null,8,Hs)):h("",!0),i[3]||(i[3]=l("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),c("span",As))],8,ws),l("div",Bs,[_(Is,{items:n.items},{default:f(()=>[d(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ke=g(Es,[["__scopeId","data-v-405682cb"]]),Fs=["href","aria-label","innerHTML"],Ds=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=T();O(async()=>{var i;await Le();const n=(i=t.value)==null?void 0:i.children[0];n instanceof HTMLElement&&n.className.startsWith("vpi-social-")&&(getComputedStyle(n).maskImage||getComputedStyle(n).webkitMaskImage)==="none"&&n.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const s=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,i)=>(a(),c("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:s.value},null,8,Fs))}}),Os=g(Ds,[["__scopeId","data-v-3edd214b"]]),Gs={class:"VPSocialLinks"},Us=m({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),c("div",Gs,[(a(!0),c(C,null,A(e.links,({link:s,icon:n,ariaLabel:i})=>(a(),k(Os,{key:s,icon:n,link:s,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),ge=g(Us,[["__scopeId","data-v-5e24eb64"]]),js={key:0,class:"group translations"},zs={class:"trans-title"},qs={key:1,class:"group"},Ws={class:"item appearance"},Ks={class:"label"},Js={class:"appearance-action"},Rs={key:2,class:"group"},Ys={class:"item social-links"},Xs=m({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=V(),{localeLinks:s,currentLang:n}=J({correspondingLink:!0}),i=y(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(u,p)=>i.value?(a(),k(ke,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[r(s).length&&r(n).label?(a(),c("div",js,[l("p",zs,S(r(n).label),1),(a(!0),c(C,null,A(r(s),v=>(a(),k(ne,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),c("div",qs,[l("div",Ws,[l("p",Ks,S(r(t).darkModeSwitchLabel||"Appearance"),1),l("div",Js,[_(me)])])])):h("",!0),r(t).socialLinks?(a(),c("div",Rs,[l("div",Ys,[_(ge,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),Qs=g(Xs,[["__scopeId","data-v-432caf41"]]),Zs=["aria-expanded"],xs=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),c("button",{type:"button",class:w(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},t[1]||(t[1]=[l("span",{class:"container"},[l("span",{class:"top"}),l("span",{class:"middle"}),l("span",{class:"bottom"})],-1)]),10,Zs))}}),eo=g(xs,[["__scopeId","data-v-a20145d7"]]),to=["innerHTML"],no=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,s)=>(a(),k(F,{class:w({VPNavBarMenuLink:!0,active:r(q)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:f(()=>[l("span",{innerHTML:t.item.text},null,8,to)]),_:1},8,["class","href","target","rel","no-icon"]))}}),so=g(no,[["__scopeId","data-v-22ff4594"]]),oo=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=V(),s=i=>"component"in i?!1:"link"in i?q(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(s),n=y(()=>s(e.item));return(i,u)=>(a(),k(ke,{class:w({VPNavBarMenuGroup:!0,active:r(q)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),ao={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ro=m({__name:"VPNavBarMenu",setup(o){const{theme:e}=V();return(t,s)=>r(e).nav?(a(),c("nav",ao,[s[0]||(s[0]=l("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),c(C,null,A(r(e).nav,n=>(a(),c(C,{key:JSON.stringify(n)},["link"in n?(a(),k(so,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(E(n.component),j({key:1,ref_for:!0},n.props),null,16)):(a(),k(oo,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),io=g(ro,[["__scopeId","data-v-6e009845"]]);function lo(o){const{localeIndex:e,theme:t}=V();function s(n){var I,H,N;const i=n.split("."),u=(I=t.value.search)==null?void 0:I.options,p=u&&typeof u=="object",v=p&&((N=(H=u.locales)==null?void 0:H[e.value])==null?void 0:N.translations)||null,$=p&&u.translations||null;let L=v,b=$,P=o;const M=i.pop();for(const B of i){let U=null;const K=P==null?void 0:P[B];K&&(U=P=K);const se=b==null?void 0:b[B];se&&(U=b=se);const oe=L==null?void 0:L[B];oe&&(U=L=oe),K||(P=U),se||(b=U),oe||(L=U)}return(L==null?void 0:L[M])??(b==null?void 0:b[M])??(P==null?void 0:P[M])??""}return s}const co=["aria-label"],uo={class:"DocSearch-Button-Container"},vo={class:"DocSearch-Button-Placeholder"},be=m({__name:"VPNavBarSearchButton",setup(o){const t=lo({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[l("span",uo,[n[0]||(n[0]=l("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),l("span",vo,S(r(t)("button.buttonText")),1)]),n[1]||(n[1]=l("span",{class:"DocSearch-Button-Keys"},[l("kbd",{class:"DocSearch-Button-Key"}),l("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,co))}}),po={class:"VPNavBarSearch"},fo={id:"local-search"},ho={key:1,id:"docsearch"},mo=m({__name:"VPNavBarSearch",setup(o){const e=()=>null,t=()=>null,{theme:s}=V(),n=T(!1),i=T(!1);O(()=>{});function u(){n.value||(n.value=!0,setTimeout(p,16))}function p(){const L=new Event("keydown");L.key="k",L.metaKey=!0,window.dispatchEvent(L),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||p()},16)}const v=T(!1),$="";return(L,b)=>{var P;return a(),c("div",po,[r($)==="local"?(a(),c(C,{key:0},[v.value?(a(),k(r(e),{key:0,onClose:b[0]||(b[0]=M=>v.value=!1)})):h("",!0),l("div",fo,[_(be,{onClick:b[1]||(b[1]=M=>v.value=!0)})])],64)):r($)==="algolia"?(a(),c(C,{key:1},[n.value?(a(),k(r(t),{key:0,algolia:((P=r(s).search)==null?void 0:P.options)??r(s).algolia,onVnodeBeforeMount:b[2]||(b[2]=M=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(a(),c("div",ho,[_(be,{onClick:u})]))],64)):h("",!0)])}}}),_o=m({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(a(),k(ge,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),ko=g(_o,[["__scopeId","data-v-8f8d6fed"]]),go=["href","rel","target"],bo=["innerHTML"],$o={key:2},yo=m({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=V(),{hasSidebar:s}=G(),{currentLang:n}=J(),i=y(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),u=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),p=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,$)=>(a(),c("div",{class:w(["VPNavBarTitle",{"has-sidebar":r(s)}])},[l("a",{class:"title",href:i.value??r(fe)(r(n).link),rel:u.value,target:p.value},[d(v.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),k(Y,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(a(),c("span",{key:1,innerHTML:r(t).siteTitle},null,8,bo)):r(t).siteTitle===void 0?(a(),c("span",$o,S(r(e).title),1)):h("",!0),d(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,go)],2))}}),Po=g(yo,[["__scopeId","data-v-34d5de26"]]),Lo={class:"items"},Vo={class:"title"},So=m({__name:"VPNavBarTranslations",setup(o){const{theme:e}=V(),{localeLinks:t,currentLang:s}=J({correspondingLink:!0});return(n,i)=>r(t).length&&r(s).label?(a(),k(ke,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:f(()=>[l("div",Lo,[l("p",Vo,S(r(s).label),1),(a(!0),c(C,null,A(r(t),u=>(a(),k(ne,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),To=g(So,[["__scopeId","data-v-9bfc6a91"]]),No={class:"wrapper"},Mo={class:"container"},Io={class:"title"},wo={class:"content"},Co={class:"content-body"},Ho=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=Ve(),{hasSidebar:s}=G(),{frontmatter:n}=V(),i=T({});return ve(()=>{i.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(u,p)=>(a(),c("div",{class:w(["VPNavBar",i.value])},[l("div",No,[l("div",Mo,[l("div",Io,[_(Po,null,{"nav-bar-title-before":f(()=>[d(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[d(u.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),l("div",wo,[l("div",Co,[d(u.$slots,"nav-bar-content-before",{},void 0,!0),_(mo,{class:"search"}),_(io,{class:"menu"}),_(To,{class:"translations"}),_(ms,{class:"appearance"}),_(ko,{class:"social-links"}),_(Qs,{class:"extra"}),d(u.$slots,"nav-bar-content-after",{},void 0,!0),_(eo,{class:"hamburger",active:u.isScreenOpen,onClick:p[0]||(p[0]=v=>u.$emit("toggle-screen"))},null,8,["active"])])])])]),p[1]||(p[1]=l("div",{class:"divider"},[l("div",{class:"divider-line"})],-1))],2))}}),Ao=g(Ho,[["__scopeId","data-v-a01e6a85"]]),Bo={key:0,class:"VPNavScreenAppearance"},Eo={class:"text"},Fo=m({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=V();return(s,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),c("div",Bo,[l("p",Eo,S(r(t).darkModeSwitchLabel||"Appearance"),1),_(me)])):h("",!0)}}),Do=g(Fo,[["__scopeId","data-v-d75f9d29"]]),Oo=["innerHTML"],Go=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=ee("close-screen");return(t,s)=>(a(),k(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:f(()=>[l("span",{innerHTML:t.item.text},null,8,Oo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Uo=g(Go,[["__scopeId","data-v-a0e8f5e2"]]),jo=["innerHTML"],zo=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=ee("close-screen");return(t,s)=>(a(),k(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:f(()=>[l("span",{innerHTML:t.item.text},null,8,jo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),He=g(zo,[["__scopeId","data-v-774c2599"]]),qo={class:"VPNavScreenMenuGroupSection"},Wo={key:0,class:"title"},Ko=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",qo,[e.text?(a(),c("p",Wo,S(e.text),1)):h("",!0),(a(!0),c(C,null,A(e.items,s=>(a(),k(He,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Jo=g(Ko,[["__scopeId","data-v-104421fc"]]),Ro=["aria-controls","aria-expanded"],Yo=["innerHTML"],Xo=["id"],Qo={key:0,class:"item"},Zo={key:1,class:"item"},xo={key:2,class:"group"},ea=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=T(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,u)=>(a(),c("div",{class:w(["VPNavScreenMenuGroup",{open:t.value}])},[l("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[l("span",{class:"button-text",innerHTML:i.text},null,8,Yo),u[0]||(u[0]=l("span",{class:"vpi-plus button-icon"},null,-1))],8,Ro),l("div",{id:s.value,class:"items"},[(a(!0),c(C,null,A(i.items,p=>(a(),c(C,{key:JSON.stringify(p)},["link"in p?(a(),c("div",Qo,[_(He,{item:p},null,8,["item"])])):"component"in p?(a(),c("div",Zo,[(a(),k(E(p.component),j({ref_for:!0},p.props,{"screen-menu":""}),null,16))])):(a(),c("div",xo,[_(Jo,{text:p.text,items:p.items},null,8,["text","items"])]))],64))),128))],8,Xo)],2))}}),ta=g(ea,[["__scopeId","data-v-dc123f70"]]),na={key:0,class:"VPNavScreenMenu"},sa=m({__name:"VPNavScreenMenu",setup(o){const{theme:e}=V();return(t,s)=>r(e).nav?(a(),c("nav",na,[(a(!0),c(C,null,A(r(e).nav,n=>(a(),c(C,{key:JSON.stringify(n)},["link"in n?(a(),k(Uo,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(E(n.component),j({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),k(ta,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),oa=m({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(a(),k(ge,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),aa={class:"list"},ra=m({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=J({correspondingLink:!0}),s=T(!1);function n(){s.value=!s.value}return(i,u)=>r(e).length&&r(t).label?(a(),c("div",{key:0,class:w(["VPNavScreenTranslations",{open:s.value}])},[l("button",{class:"title",onClick:n},[u[0]||(u[0]=l("span",{class:"vpi-languages icon lang"},null,-1)),z(" "+S(r(t).label)+" ",1),u[1]||(u[1]=l("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),l("ul",aa,[(a(!0),c(C,null,A(r(e),p=>(a(),c("li",{key:p.link,class:"item"},[_(F,{class:"link",href:p.link},{default:f(()=>[z(S(p.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),ia=g(ra,[["__scopeId","data-v-82c9b97d"]]),la={class:"container"},ca=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=T(null),t=Se(te?document.body:null);return(s,n)=>(a(),k(ue,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:f(()=>[s.open?(a(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[l("div",la,[d(s.$slots,"nav-screen-content-before",{},void 0,!0),_(sa,{class:"menu"}),_(ia,{class:"translations"}),_(Do,{class:"appearance"}),_(oa,{class:"social-links"}),d(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),ua=g(ca,[["__scopeId","data-v-eed74814"]]),da={key:0,class:"VPNav"},va=m({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=rs(),{frontmatter:n}=V(),i=y(()=>n.value.navbar!==!1);return Te("close-screen",t),X(()=>{te&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(u,p)=>i.value?(a(),c("header",da,[_(Ao,{"is-screen-open":r(e),onToggleScreen:r(s)},{"nav-bar-title-before":f(()=>[d(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[d(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[d(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[d(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),_(ua,{open:r(e)},{"nav-screen-content-before":f(()=>[d(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[d(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),pa=g(va,[["__scopeId","data-v-1d136424"]]),fa=["role","tabindex"],ha={key:1,class:"items"},ma=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:i,hasActiveLink:u,hasChildren:p,toggle:v}=ct(y(()=>e.item)),$=y(()=>p.value?"section":"div"),L=y(()=>n.value?"a":"div"),b=y(()=>p.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),M=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":u.value}]);function I(N){"key"in N&&N.key!=="Enter"||!e.item.link&&v()}function H(){e.item.link&&v()}return(N,B)=>{const U=W("VPSidebarItem",!0);return a(),k(E($.value),{class:w(["VPSidebarItem",M.value])},{default:f(()=>[N.item.text?(a(),c("div",j({key:0,class:"item",role:P.value},je(N.item.items?{click:I,keydown:I}:{},!0),{tabindex:N.item.items&&0}),[B[1]||(B[1]=l("div",{class:"indicator"},null,-1)),N.item.link?(a(),k(F,{key:0,tag:L.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:f(()=>[(a(),k(E(b.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),k(E(b.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(a(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:H,onKeydown:Ue(H,["enter"]),tabindex:"0"},B[0]||(B[0]=[l("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,fa)):h("",!0),N.item.items&&N.item.items.length?(a(),c("div",ha,[N.depth<5?(a(!0),c(C,{key:0},A(N.item.items,K=>(a(),k(U,{key:K.text,item:K,depth:N.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),_a=g(ma,[["__scopeId","data-v-dad44e86"]]),ka=m({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=T(!0);let t=null;return O(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),ze(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(a(!0),c(C,null,A(s.items,i=>(a(),c("div",{key:i.text,class:w(["group",{"no-transition":e.value}])},[_(_a,{item:i,depth:0},null,8,["item"])],2))),128))}}),ga=g(ka,[["__scopeId","data-v-994dc249"]]),ba={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},$a=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=G(),s=o,n=T(null),i=Se(te?document.body:null);D([s,n],()=>{var p;s.open?(i.value=!0,(p=n.value)==null||p.focus()):i.value=!1},{immediate:!0,flush:"post"});const u=T(0);return D(e,()=>{u.value+=1},{deep:!0}),(p,v)=>r(t)?(a(),c("aside",{key:0,class:w(["VPSidebar",{open:p.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=qe(()=>{},["stop"]))},[v[2]||(v[2]=l("div",{class:"curtain"},null,-1)),l("nav",ba,[v[1]||(v[1]=l("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),d(p.$slots,"sidebar-nav-before",{},void 0,!0),(a(),k(ga,{items:r(e),key:u.value},null,8,["items"])),d(p.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),ya=g($a,[["__scopeId","data-v-3746e67f"]]),Pa=m({__name:"VPSkipLink",setup(o){const e=x(),t=T();D(()=>e.path,()=>t.value.focus());function s({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const u=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",u)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",u),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),c(C,null,[l("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),l("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),La=g(Pa,[["__scopeId","data-v-474ecce8"]]),Va=m({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=G(),n=x();D(()=>n.path,s),lt(e,s);const{frontmatter:i}=V(),u=We(),p=y(()=>!!u["home-hero-image"]);return Te("hero-image-slot-exists",p),(v,$)=>{const L=W("Content");return r(i).layout!==!1?(a(),c("div",{key:0,class:w(["Layout",r(i).pageClass])},[d(v.$slots,"layout-top",{},void 0,!0),_(La),_(Ye,{class:"backdrop",show:r(e),onClick:r(s)},null,8,["show","onClick"]),_(pa,null,{"nav-bar-title-before":f(()=>[d(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[d(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[d(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[d(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[d(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[d(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),_(as,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),_(ya,{open:r(e)},{"sidebar-nav-before":f(()=>[d(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[d(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),_(zn,null,{"page-top":f(()=>[d(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[d(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[d(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[d(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[d(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[d(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[d(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[d(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[d(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[d(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[d(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[d(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[d(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[d(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[d(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[d(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[d(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[d(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[d(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[d(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[d(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[d(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[d(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),_(Rn),d(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),k(L,{key:1}))}}}),Sa=g(Va,[["__scopeId","data-v-793c26c5"]]),Ta={Layout:Sa,enhanceApp:({app:o})=>{o.component("Badge",Ke)}},Na={class:"custom-home"},Ma={class:"hero"},Ia={class:"hero-content"},wa={class:"hero-title"},Ca={class:"gradient-text"},Ha={class:"hero-subtitle"},Aa={class:"hero-tagline"},Ba={class:"hero-buttons"},Ea=["href"],Fa=["href"],Da={class:"hero-image"},Oa={class:"image-container"},Ga=["src","alt"],Ua={class:"features"},ja={class:"features-grid"},za={class:"feature-icon"},qa={class:"carousel-section"},Wa={class:"carousel-container"},Ka=["src","alt"],Ja=["disabled"],Ra=["disabled"],Ya={class:"carousel-dots"},Xa=["onClick"],Qa={__name:"CustomHome",setup(o){const{frontmatter:e}=$e(),t=T(0),s=T(!1),n=T(null),i=()=>{s.value||(s.value=!0,t.value=(t.value+1)%e.value.images.length,setTimeout(()=>{s.value=!1},500))},u=()=>{s.value||(s.value=!0,t.value=t.value===0?e.value.images.length-1:t.value-1,setTimeout(()=>{s.value=!1},500))},p=P=>{s.value||t.value===P||(s.value=!0,t.value=P,setTimeout(()=>{s.value=!1},500))},v=()=>{n.value=setInterval(i,5e3)},$=()=>{n.value&&(clearInterval(n.value),n.value=null)},L=()=>$(),b=()=>v();return O(()=>{v();const P=document.querySelector(".carousel-container");P&&(P.addEventListener("mouseenter",L),P.addEventListener("mouseleave",b))}),Q(()=>{$();const P=document.querySelector(".carousel-container");P&&(P.removeEventListener("mouseenter",L),P.removeEventListener("mouseleave",b))}),(P,M)=>(a(),c("div",Na,[l("div",Ma,[l("div",Ia,[l("h1",wa,[l("span",Ca,S(r(e).hero.name),1)]),l("p",Ha,S(r(e).hero.text),1),l("p",Aa,S(r(e).hero.tagline),1),l("div",Ba,[l("a",{class:"button primary",href:r(e).hero.actions[0].link},S(r(e).hero.actions[0].text),9,Ea),r(e).hero.actions[1]?(a(),c("a",{key:0,class:"button secondary",href:r(e).hero.actions[1].link},S(r(e).hero.actions[1].text),9,Fa)):h("",!0)])]),l("div",Da,[l("div",Oa,[l("img",{src:r(e).hero.image.src,alt:r(e).hero.image.alt},null,8,Ga)]),M[0]||(M[0]=l("div",{class:"floating-elements"},[l("div",{class:"element element-1"}),l("div",{class:"element element-2"}),l("div",{class:"element element-3"})],-1))])]),l("div",Ua,[l("div",ja,[(a(!0),c(C,null,A(r(e).features,I=>(a(),c("div",{key:I.title,class:"feature-card"},[l("div",za,S(I.icon),1),l("strong",null,S(I.title),1),l("p",null,S(I.details),1)]))),128))])]),l("div",qa,[l("div",Wa,[l("div",{class:"carousel-track",style:pe({transform:`translateX(-${t.value*100}%)`})},[(a(!0),c(C,null,A(r(e).images,(I,H)=>(a(),c("div",{key:H,class:"carousel-slide"},[l("img",{src:I.src,alt:I.alt},null,8,Ka)]))),128))],4),l("button",{class:"carousel-button prev",onClick:u,disabled:s.value}," ← ",8,Ja),l("button",{class:"carousel-button next",onClick:i,disabled:s.value}," → ",8,Ra),l("div",Ya,[(a(!0),c(C,null,A(r(e).images,(I,H)=>(a(),c("button",{key:H,class:w(["carousel-dot",{active:t.value===H}]),onClick:N=>p(H)},null,10,Xa))),128))])])])]))}},Za=g(Qa,[["__scopeId","data-v-58648596"]]),er={...Ta,enhanceApp({app:o,router:e,siteData:t}){o.component("CustomHome",Za)}};export{er as t}; diff --git a/assets/data_details.json b/assets/data_details.json new file mode 100644 index 00000000..e3fe0e0a --- /dev/null +++ b/assets/data_details.json @@ -0,0 +1,958 @@ +{ + "meta": { + "registry": "https://registry.npmjs.org/", + "time": 1734957251843, + "total": 38 + }, + "list": [ + { + "name": "@kotori-bot/kotori-plugin-webui", + "description": "网页控制台", + "category": [ + "official", + "plugin" + ], + "version": "1.4.1", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1708491654698, + "modified": 1727856998729 + }, + "dist": { + "dependencies": 1, + "fileCount": 84, + "unpackedSize": 3952587, + "tarball": "https://registry.npmjs.org/@kotori-bot/kotori-plugin-webui/-/kotori-plugin-webui-1.4.1.tgz" + }, + "keywords": [], + "readme": "# @kotori-bot/kotori-plugin-webui\r\n\r\nWeb front end repository: [kotorijs/webui](https://github.com/kotorijs/webui)\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n\r\n## TODO\r\n\r\n- [x] Add authorization for websocket server\r\n- [x] Login at the same time\r\n- [x] Console outputting support for cmd adapter\r\n- [x] Websocket verify\r\n- [x] Sync offline and other data\r\n" + }, + { + "name": "kotori-plugin-goodnight", + "description": "早晚安插件", + "category": [ + "plugin" + ], + "version": "1.3.5", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848079212, + "modified": 1723200621314 + }, + "dist": { + "dependencies": 0, + "fileCount": 9, + "unpackedSize": 48231, + "tarball": "https://registry.npmjs.org/kotori-plugin-goodnight/-/kotori-plugin-goodnight-1.3.5.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-goodnight\r\n\r\nAnd in case i don't see you,good afternoon,good evening,and good night!\r\n\r\n## Regexps\r\n\r\n- 早|早安|早上好\r\n- 晚|晚安|晚上好\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "@kotori-bot/kotori-plugin-core", + "description": "核心插件", + "category": [ + "official", + "plugin" + ], + "version": "1.4.4", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848079647, + "modified": 1723200616576 + }, + "dist": { + "dependencies": 0, + "fileCount": 9, + "unpackedSize": 60989, + "tarball": "https://registry.npmjs.org/@kotori-bot/kotori-plugin-core/-/kotori-plugin-core-1.4.4.tgz" + }, + "keywords": [], + "readme": "# @kotori-bot/kotori-plugin-core\n\nBase on tencent api.\n\n## Commands\n\n- `/core` View instance statistics\n- `/bot` View current bot info and running status\n- `/bots` View all bots info and running status\n- `/about` View about info\n\n```text\n/core\n> Global Language: en_US\nRoot Directory: \\usr\\kotori\nRunning Mode: dev\nNumber of Modules: 21\nNumber of Services: 3\nNumber of Bots: 1\nNumber of Middlewares: 1\nNumber of Commands: 27\nNumber of Regexps: 25\n\n/bot\n> ID: cmd-test\nLanguage: en_US\nPlatform: cmd\nSelf ID: 720\nConnect Time: 24/2/4 18:36:36\nMessages Received: 16\nMessages Sent: 15\nOffline Times: 0\nLast Message Time: 24/2/4 18:45:45\n\n/bots\n> Bot List:\n----------\nID: cmd-test\nLanguage: en_US\nPlatform: cmd\nStatus: online\n\n/about\n> Kotori Version: 1.2.0\nLicense: GPL-3.0\nNodeJS Version: v18.18.1\n```\n\n## Reference\n\n- [Kotori Docs](https://kotori.js.org/)\n" + }, + { + "name": "kotori-plugin-better-join", + "description": "趣味的进群欢迎提示", + "category": [ + "plugin" + ], + "version": "1.2.2", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848078986, + "modified": 1723200531994 + }, + "dist": { + "dependencies": 0, + "fileCount": 7, + "unpackedSize": 47180, + "tarball": "https://registry.npmjs.org/kotori-plugin-better-join/-/kotori-plugin-better-join-1.2.2.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-better-join\r\n\r\n更好的(奇奇怪怪的)新人加入群聊欢迎。\r\n\r\n## 自定义语录\r\n\r\n```typescript\r\n// ./src/data.ts\r\nexport default [\r\n // ...\r\n];\r\n```\r\n\r\n## 鸣谢\r\n\r\n- QQ:337**\\*\\***042 提供的部分语录\r\n" + }, + { + "name": "@kotori-bot/adapter-telegram", + "description": "Telegram 适配器", + "category": [ + "official", + "adapter" + ], + "version": "1.0.2", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1723122127391, + "modified": 1723200527589 + }, + "dist": { + "dependencies": 3, + "fileCount": 11, + "unpackedSize": 49987, + "tarball": "https://registry.npmjs.org/@kotori-bot/adapter-telegram/-/adapter-telegram-1.0.2.tgz" + }, + "keywords": [ + "telegram" + ], + "readme": "# @kotori-bot/adapter-telegram\r\n\r\nSupports for telegram. Create own bot: [@BotFather](https://t.me/BotFather). And if you are in China, you can set proxy to connect telegram api.\r\n\r\n## Config\r\n\r\n```typescript\r\nexport const config = Tsu.Object({\r\n token: Tsu.String().describe(\"Bot's token\"),\r\n proxy: Tsu.String().optional().describe('Proxy address (if you are in China)')\r\n})\r\n```\r\n\r\n## Supports\r\n\r\n### Events\r\n\r\n- on_message (fully supported)\r\n\r\n### Api\r\n\r\n- sendPrivateMsg\r\n- sendGroupMsg\r\n- sendChannelMsg\r\n\r\n### Elements\r\n\r\n- text\r\n- image\r\n- voice\r\n- audio\r\n- video\r\n- location\r\n\r\n## TODO\r\n\r\nSupport more standard api...\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n- [Telegram APIs](https://core.telegram.org/api)\r\n" + }, + { + "name": "kotori-plugin-bilibili", + "description": "哔哩哔哩插件", + "category": [ + "plugin" + ], + "version": "1.3.0", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848078987, + "modified": 1723199800260 + }, + "dist": { + "dependencies": 0, + "fileCount": 5, + "unpackedSize": 41139, + "tarball": "https://registry.npmjs.org/kotori-plugin-bilibili/-/kotori-plugin-bilibili-1.3.0.tgz" + }, + "keywords": [], + "readme": "# ~~kotori-plugin-bilibili~~\r\n\r\n## Commands\r\n\r\n```\r\n/bili - Bilibili video info query\r\n/bilier - Bilibili User Information Query\r\n```\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "kotori-plugin-weather", + "description": "天气查询", + "category": [ + "plugin" + ], + "version": "1.1.2", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848095942, + "modified": 1723122267841 + }, + "dist": { + "dependencies": 0, + "fileCount": 9, + "unpackedSize": 40762, + "tarball": "https://registry.npmjs.org/kotori-plugin-weather/-/kotori-plugin-weather-1.1.2.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-weather\r\n\r\n## Commands\r\n\r\n- `/weather ` Query city weather\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "kotori-plugin-testing", + "description": "测试用的插件,提供了 eval 和 echo 指令", + "category": [ + "plugin" + ], + "version": "1.3.0", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848089484, + "modified": 1723122262797 + }, + "dist": { + "dependencies": 0, + "fileCount": 5, + "unpackedSize": 39810, + "tarball": "https://registry.npmjs.org/kotori-plugin-testing/-/kotori-plugin-testing-1.3.0.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-testing\n\n## Reference\n\n- [Kotori Docs](https://kotori.js.org/)\n" + }, + { + "name": "kotori-plugin-sed", + "description": "社工查询插件", + "category": [ + "plugin" + ], + "version": "1.0.1", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1708491637185, + "modified": 1723122257759 + }, + "dist": { + "dependencies": 0, + "fileCount": 10, + "unpackedSize": 46915, + "tarball": "https://registry.npmjs.org/kotori-plugin-sed/-/kotori-plugin-sed-1.0.1.tgz" + }, + "keywords": [], + "readme": "ERROR: No README data found!" + }, + { + "name": "kotori-plugin-run-code", + "description": "在线运行 JavaScript 和 Lua 代码", + "category": [ + "plugin" + ], + "version": "1.0.3", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1708491632698, + "modified": 1723122252764 + }, + "dist": { + "dependencies": 0, + "fileCount": 13, + "unpackedSize": 44925, + "tarball": "https://registry.npmjs.org/kotori-plugin-run-code/-/kotori-plugin-run-code-1.0.3.tgz" + }, + "keywords": [], + "readme": "# Run-code\r\n\r\nRun code with javascript and lua\r\n\r\n**Version:** 1.1.0\r\n**Author:** himeno\r\n**License:** GPL-3.0\r\n\r\n## List of command\r\n\r\n- /runjs <...code> - Run JavaScript code\r\n- /runlua <...code> - Run Lua Code\r\n\r\n## Lang Support\r\n\r\n- ja_JP\r\n- en_US\r\n- zh_TW\r\n- zh_CN\r\n" + }, + { + "name": "kotori-plugin-requester", + "description": "给主人报告的插件", + "category": [ + "plugin" + ], + "version": "1.1.2", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1708491627595, + "modified": 1723122247401 + }, + "dist": { + "dependencies": 0, + "fileCount": 10, + "unpackedSize": 53878, + "tarball": "https://registry.npmjs.org/kotori-plugin-requester/-/kotori-plugin-requester-1.1.2.tgz" + }, + "keywords": [], + "readme": "# Requester\r\n\r\nListen delete message and request event call to master\r\n\r\n**Version:** 1.0.0\r\n**Author:** himeno\r\n**License:** GPL-3.0\r\n\r\n## List of event\r\n\r\n- onGroupIncrease\r\n- onGroupDecrease\r\n- onGroupAdmin\r\n- onGroupBan\r\n- onGroupRecall\r\n- onFriendRecall\r\n- onGroupRequest\r\n- onFriendRequest\r\n- onGroupMsg\r\n- onPrivateMsg\r\n\r\n## Lang Support\r\n\r\n- ja_JP\r\n- en_US\r\n- zh_TW\r\n- zh_CN\r\n" + }, + { + "name": "kotori-plugin-randomimg", + "description": "Pixiv 等多种随机图片", + "category": [ + "plugin" + ], + "version": "1.2.3", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848089223, + "modified": 1723122242285 + }, + "dist": { + "dependencies": 0, + "fileCount": 10, + "unpackedSize": 43666, + "tarball": "https://registry.npmjs.org/kotori-plugin-randomimg/-/kotori-plugin-randomimg-1.2.3.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-random-img\r\n\r\n## Commands\r\n\r\n- `/sex [tags]` Pixiv images\r\n- `/sexh` HuliImg images\r\n- `/bing` Bing daily image\r\n- `/day` See the world daily\r\n- `/earth` Real-time Earth\r\n- `/china` Real-time China\r\n\r\n```test\r\n/sex 足\r\n> Image coming right up...please be patient\r\n> PID: 84449466\r\nTitle: フランちゃん\r\nAuthor: うてきろ\r\nTags: 東方 东方 東方Project 东方Project フランドール・スカーレット 芙兰朵露・斯卡蕾特 絆創膏 创可贴 理性を破壊する程度の能力 足以破坏理性的能力 くわえたくしあげ shirt held up with the mouth BAN装甲 剥ぎ取られたパンツ R-17.9\r\n> [image,https://i.pixiv.re/img-original/img/2020/09/18/18/23/39/84449466_p0.jpg]\r\n\r\n```\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "kotori-plugin-nmsl", + "description": "孙笑川在线帮你翻译成抽象话", + "category": [ + "plugin" + ], + "version": "2.1.1", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848089133, + "modified": 1723122231195 + }, + "dist": { + "dependencies": 0, + "fileCount": 9, + "unpackedSize": 96768, + "tarball": "https://registry.npmjs.org/kotori-plugin-nmsl/-/kotori-plugin-nmsl-2.1.1.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-nmsl\r\n\r\n孙笑川在线帮你翻译成抽象话。\r\n\r\n## Commands\r\n\r\n- `/nmsl [...抽🐘话]` 孙G在🧵帮你翻译成抽🐘话\r\n\r\n```text\r\n/nmsl 愚者说:平等 !但是世人皆知,世上并没有平等! 愚者说:自由 !但是世人皆知,世上并没有自由! 愚者说:爱情 !但是世人皆知,爱情随时会背叛! 愚者说:莫杀人 !但是世人皆知,世界充满了杀戮! 愚者说:切莫说谎 !但是世人皆知,愚者就在说谎!——间宫卓司《美好的每一天~不连续的存在》 24/2/4 20:32:32\r\n> 翻译🎀果👇\r\n愚者说:平等!但是世人皆知,世⬆并没🈶平等! 愚者说:自由!但是世人皆知,世⬆并没🈶自由! 愚者说:💓情!但是世人皆知,💓情随时会背叛! 愚者说:莫🍤!但是世人皆知,🌏充🈵🌶️杀戮! 愚者说:切莫说谎!但是世人皆知,愚者就在说谎!——间宫卓司《美👌每1️⃣天~8️⃣连续💧存在》\r\n抽象度:11\r\n```\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n- [gaowanliang/NMSL](https://github.com/gaowanliang/NMSL)\r\n\r\n## Tips\r\n\r\n> 仅供娱乐\r\n" + }, + { + "name": "kotori-plugin-penis", + "description": "查看今日牛牛的长度和排行", + "category": [ + "plugin" + ], + "version": "1.2.3", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848089203, + "modified": 1723122225587 + }, + "dist": { + "dependencies": 0, + "fileCount": 9, + "unpackedSize": 47268, + "tarball": "https://registry.npmjs.org/kotori-plugin-penis/-/kotori-plugin-penis-1.2.3.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-newnew\r\n\r\n查看今日长度,fasong `/今日长度` 或 `今日长度`。\r\n\r\n## Config\r\n\r\n```typescript\r\ninterface Config {\r\n max?: number;\r\n min?: number;\r\n joke?: number;\r\n avgMinNum?: number;\r\n}\r\n```\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "kotori-plugin-music", + "description": "网易云音乐搜索", + "category": [ + "plugin" + ], + "version": "1.2.4", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848089043, + "modified": 1723122219136 + }, + "dist": { + "dependencies": 0, + "fileCount": 13, + "unpackedSize": 45990, + "tarball": "https://registry.npmjs.org/kotori-plugin-music/-/kotori-plugin-music-1.2.4.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-music\r\n\r\n## Commands\r\n\r\n- `/music <...name>` NetEase Cloud music\r\n - `-o, --order: number` Order number\r\n\r\n```text\r\n/music 虚無の先で愛を見つける\r\n> Song ID: 2077749631\r\nSong Title: 虚無の先で愛を見つける-Piano ver\r\nSong Author: おはる\r\nSong Download: http://music.163.com/song/media/outer/url?id=2077749631.mp3\r\nSong Cover: [image,http://p1.music.126.net/77V-Bc4EoboXGOZZ8TxDBQ==/109951168879037291.jpg?param=300x300]\r\n\r\n/music 虚無の先で愛を見つける -o 0\r\n> 1.虚無の先で愛を見つける-Piano ver - おはる\r\nResend command and input [number] to choose corresponding content\r\nExample: /command content 2\r\n```\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "kotori-plugin-minecraft", + "description": "Minecraft JE/BE 服务器,账号皮肤,最新版本查询", + "category": [ + "plugin" + ], + "version": "1.0.2", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1708491607634, + "modified": 1723122212921 + }, + "dist": { + "dependencies": 0, + "fileCount": 12, + "unpackedSize": 55105, + "tarball": "https://registry.npmjs.org/kotori-plugin-minecraft/-/kotori-plugin-minecraft-1.0.2.tgz" + }, + "keywords": [], + "readme": "ERROR: No README data found!" + }, + { + "name": "kotori-plugin-mediawiki", + "description": "维基搜索,支持自定义多个维基", + "category": [ + "plugin" + ], + "version": "1.2.5", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848088999, + "modified": 1723122207322 + }, + "dist": { + "dependencies": 0, + "fileCount": 13, + "unpackedSize": 48701, + "tarball": "https://registry.npmjs.org/kotori-plugin-mediawiki/-/kotori-plugin-mediawiki-1.2.5.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-mediawiki\r\n\r\nmediawiki search tool.\r\n\r\n## Commands\r\n\r\n- `/wiki [order:number]` Search MediaWiki\r\n- `/wikil` View MediaWiki list\r\n\r\n```test\r\n/wiki 月社妃\r\n> Title: 月社妃\r\nContent: 月社妃(日语:月社(つきやしろ) 妃(きさき))是由ウグイスカグラ所制作的18禁galgame《纸上的魔法使》及其衍生作品的登场角色。是主人公四条琉璃的同胞妹妹。\r\nhttps://mzh.moegirl.org.cn/index.php?curid=384932\r\nSource: 萌娘百科\r\n/wikil\r\n> MediaWiki List:\r\n1. 萌娘百科 - https://mzh.moegirl.org.cn/api.php\r\n2. MCWIKI - https://minecraft.fandom.com/zh/api.php\r\n\r\n```\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "kotori-plugin-manger", + "description": "简易群管插件", + "category": [ + "plugin" + ], + "version": "1.0.5", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1708491596825, + "modified": 1723122201497 + }, + "dist": { + "dependencies": 0, + "fileCount": 9, + "unpackedSize": 50455, + "tarball": "https://registry.npmjs.org/kotori-plugin-manger/-/kotori-plugin-manger-1.0.5.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-manger\r\n\r\nGroups Mange tools.\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "kotori-plugin-hitokotos", + "description": "随机一言,十七种不同语录", + "category": [ + "plugin" + ], + "version": "1.2.1", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848089056, + "modified": 1723122196673 + }, + "dist": { + "dependencies": 0, + "fileCount": 9, + "unpackedSize": 41187, + "tarball": "https://registry.npmjs.org/kotori-plugin-hitokotos/-/kotori-plugin-hitokotos-1.2.1.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-hitokotos\r\n\r\nSeventeen kind of different sentences.\r\n\r\n## Commands\r\n\r\n- `/hitokoto` Get A Hitokoto\r\n- `/hitokotos` Random Quotations\r\n\r\n```text\r\n/hitokoto\r\n> 愚者说:平等 !但是世人皆知,世上并没有平等! 愚者说:自由 !但是世人皆知,世上并没有自由! 愚者说:爱情 !但是世人皆知,爱情随时会背叛! 愚者说:莫杀人 !但是世人皆知,世界充满了杀戮! 愚者说:切莫说谎 !但是世人皆知,愚者就在说谎!——间宫卓司《美好的每一天~不连续的存在》\r\n\r\n/hitokotos\r\n> 随机语录\r\n一言 一言2\r\n诗词 情话\r\n骚话 笑话\r\n人生语录 社会语录\r\n网抑云 毒鸡汤\r\n舔狗语录 爱情语录\r\n温柔语录 个性签名\r\n经典语录 英汉语录\r\n```\r\n\r\n## Regexps\r\n\r\n- 一言\r\n- 一言2\r\n- 诗词\r\n- 情话\r\n- 骚话\r\n- 笑话\r\n- 人生语录\r\n- 社会语录\r\n- 网抑云\r\n- 毒鸡汤\r\n- 舔狗语录\r\n- 爱情语录\r\n- 温柔语录\r\n- 个性签名\r\n- 经典语录\r\n- 英汉语录\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "@kotori-bot/kotori-plugin-helper", + "description": "查看指令帮助", + "category": [ + "official", + "plugin" + ], + "version": "1.3.1", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848088127, + "modified": 1723122191799 + }, + "dist": { + "dependencies": 0, + "fileCount": 9, + "unpackedSize": 45195, + "tarball": "https://registry.npmjs.org/@kotori-bot/kotori-plugin-helper/-/kotori-plugin-helper-1.3.1.tgz" + }, + "keywords": [], + "readme": "# @kotori-bot/kotori-plugin-helper\r\n\r\n## Commands\r\n\r\n- `/help [...command]` View command help info\r\n- `/menu` View Bot's menu\r\n\r\n```bash\r\n> Found the following related commands:\r\n/core - View instance statistics\r\n/bot - View current bot info and running status\r\n/bots - View all bots info and running status\r\n/about - View about info\r\n/help [...command] - View command help info\r\n```\r\n\r\n## Config\r\n\r\n```typescript\r\ninterface Config extends ModuleConfig {\r\n alias?: string; // alias of /menu\r\n keywords?: string[]; // keyowrds of /menu\r\n content: string; // content of menu\r\n}\r\n```\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "kotori-plugin-grouper", + "description": "群聊活跃排行与小游戏", + "category": [ + "plugin" + ], + "version": "1.3.0", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848079073, + "modified": 1723122186371 + }, + "dist": { + "dependencies": 0, + "fileCount": 5, + "unpackedSize": 45590, + "tarball": "https://registry.npmjs.org/kotori-plugin-grouper/-/kotori-plugin-grouper-1.3.0.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-grouper\r\n\r\ngroups activity ranking and simple games!\r\n\r\n# Regexps\r\n\r\n- 签到|打卡\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "kotori-plugin-github", + "description": "GitHub 仓库搜索", + "category": [ + "plugin" + ], + "version": "1.3.0", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848079248, + "modified": 1723122175873 + }, + "dist": { + "dependencies": 0, + "fileCount": 9, + "unpackedSize": 41295, + "tarball": "https://registry.npmjs.org/kotori-plugin-github/-/kotori-plugin-github-1.3.0.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-github\r\n\r\nGithub repository searching.\r\n\r\n## Commands\r\n\r\n- `/github ` Query Github repository info\r\n\r\n```text\r\n/github kotorijs/kotori\r\n> URL: kotorijs/kotori\r\nDescription: Cross platform, decoupled, and modernized ChatBot framework base on NodeJS\r\nLanguage: TypeScript\r\nOwner: kotorijs\r\nCreated: 2023-06-14T11:45:16Z\r\nLast updated: 2024-01-30T09:55:47Z\r\nLast push: 2024-02-03T12:51:17Z\r\nOpen source license: GNU General Public License v3.0\r\n> [image,https://opengraph.githubassets.com/c9f4179f4d560950b2355c82aa2b7750bffd945744f9b8ea3f93cc24779745a0/kotorijs/kotori]\r\n```\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "@kotori-bot/kotori-plugin-filter", + "description": "模块加载过滤器", + "category": [ + "official", + "plugin" + ], + "version": "1.1.0", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1717680461375, + "modified": 1723122170497 + }, + "dist": { + "dependencies": 2, + "fileCount": 5, + "unpackedSize": 40594, + "tarball": "https://registry.npmjs.org/@kotori-bot/kotori-plugin-filter/-/kotori-plugin-filter-1.1.0.tgz" + }, + "keywords": [], + "readme": "# @kotori-bot/kotori-plugin-filter\r\n\r\nfilter plugin for kotori-bot loader\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "kotori-plugin-drift-bottle", + "description": "漂流瓶插件", + "category": [ + "plugin" + ], + "version": "1.0.3", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1708491561490, + "modified": 1723122165520 + }, + "dist": { + "dependencies": 0, + "fileCount": 9, + "unpackedSize": 41696, + "tarball": "https://registry.npmjs.org/kotori-plugin-drift-bottle/-/kotori-plugin-drift-bottle-1.0.3.tgz" + }, + "keywords": [], + "readme": "# drift-bottle\r\n\r\nthrow and pick bottles\r\n\r\n**Version:** 1.0.0\r\n**Author:** himeno\r\n**License:** GPL-3.0\r\n**Front Plugin:** grouper\r\n\r\n## List of command\r\n\r\n- /print <...content> - send a message on privates#^^\r\n- /echo <...message> - send a message on group\\*^^\r\n\r\n## Config\r\n\r\n```ts\r\nexport default {\r\n\tmaxNum: 3,\r\n};\r\n```\r\n\r\n## Lang Support\r\n\r\n- ja_JP\r\n- en_US\r\n- zh_TW\r\n- zh_CN\r\n" + }, + { + "name": "kotori-plugin-color", + "description": "随机颜色图片、日本传统色、中国传统色", + "category": [ + "plugin" + ], + "version": "1.0.3", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1717818140140, + "modified": 1723122153732 + }, + "dist": { + "dependencies": 0, + "fileCount": 12, + "unpackedSize": 319937, + "tarball": "https://registry.npmjs.org/kotori-plugin-color/-/kotori-plugin-color-1.0.3.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-color\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "kotori-plugin-bangumi", + "description": "番组计划插件", + "category": [ + "plugin" + ], + "version": "1.2.4", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848078986, + "modified": 1723122140012 + }, + "dist": { + "dependencies": 0, + "fileCount": 11, + "unpackedSize": 46856, + "tarball": "https://registry.npmjs.org/kotori-plugin-bangumi/-/kotori-plugin-bangumi-1.2.4.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-bangumi\r\n\r\n## Commands\r\n\r\n- `/bgm [order: number = 1]` Search games/anime on Bangumi\r\n- `/bgmc` Get today's Bangumi schedule\r\n\r\n```text\r\n/bgm 素晴らしき日々~不連続存在~\r\n> Original Name: 素晴らしき日々~不連続存在~公式ビジュアルアーカイヴ\r\nChinese Name: 素晴之日 不连续的存在 Official Visual Archive\r\nSummary: 人気アダルトゲームブランド「ケロQ」から、実に6年ぶりに発売された新作『素晴らしき日々 ~不連続存在~』。その魅力をギュッと閉じ込めたファン必携の一冊。描き下ろしイラスト&原作を担当したSCA-自(すかぢ)氏の新作書き下ろしテキスト満載でお届け。\r\nTags: 素晴らしき日々 设定集 电波 神作 素晴日 公式书 2010 百合 悬疑 画集・設定資料集 画集 FanBook 推理 fanbook VFB\r\nDetails: https://bgm.tv/subject/8318\r\n[image,https://lain.bgm.tv/pic/cover/l/3f/e2/8318_HbCYx.jpg]\r\n```\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "kotori-plugin-bangumi", + "description": "番组计划插件", + "category": [ + "plugin" + ], + "version": "1.2.4", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848078986, + "modified": 1723122140012 + }, + "dist": { + "dependencies": 0, + "fileCount": 11, + "unpackedSize": 46856, + "tarball": "https://registry.npmjs.org/kotori-plugin-bangumi/-/kotori-plugin-bangumi-1.2.4.tgz" + }, + "keywords": [], + "readme": "# kotori-plugin-bangumi\r\n\r\n## Commands\r\n\r\n- `/bgm [order: number = 1]` Search games/anime on Bangumi\r\n- `/bgmc` Get today's Bangumi schedule\r\n\r\n```text\r\n/bgm 素晴らしき日々~不連続存在~\r\n> Original Name: 素晴らしき日々~不連続存在~公式ビジュアルアーカイヴ\r\nChinese Name: 素晴之日 不连续的存在 Official Visual Archive\r\nSummary: 人気アダルトゲームブランド「ケロQ」から、実に6年ぶりに発売された新作『素晴らしき日々 ~不連続存在~』。その魅力をギュッと閉じ込めたファン必携の一冊。描き下ろしイラスト&原作を担当したSCA-自(すかぢ)氏の新作書き下ろしテキスト満載でお届け。\r\nTags: 素晴らしき日々 设定集 电波 神作 素晴日 公式书 2010 百合 悬疑 画集・設定資料集 画集 FanBook 推理 fanbook VFB\r\nDetails: https://bgm.tv/subject/8318\r\n[image,https://lain.bgm.tv/pic/cover/l/3f/e2/8318_HbCYx.jpg]\r\n```\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "@kotori-bot/kotori-plugin-alias", + "description": "用户级别名设置", + "category": [ + "official", + "plugin" + ], + "version": "1.0.2", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1708491534668, + "modified": 1723122134585 + }, + "dist": { + "dependencies": 0, + "fileCount": 8, + "unpackedSize": 41112, + "tarball": "https://registry.npmjs.org/@kotori-bot/kotori-plugin-alias/-/kotori-plugin-alias-1.0.2.tgz" + }, + "keywords": [], + "readme": "ERROR: No README data found!" + }, + { + "name": "@kotori-bot/adapter-slack", + "description": "Slack 适配器", + "category": [ + "official", + "adapter" + ], + "version": "1.0.0", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1723122122109, + "modified": 1723122122846 + }, + "dist": { + "dependencies": 1, + "fileCount": 11, + "unpackedSize": 49415, + "tarball": "https://registry.npmjs.org/@kotori-bot/adapter-slack/-/adapter-slack-1.0.0.tgz" + }, + "keywords": [ + "slack" + ], + "readme": "# @kotori-bot/adapter-slack\n\nSupports for slack. Create own bot: [Getting started](https://slack.dev/bolt-js/getting-started).\n\n## Config\n\n```typescript\nexport const config = Tsu.Object({\n token: Tsu.String().describe(\"Bot's token\"),\n appToken: Tsu.String().describe('Application token (Use for socket connection)'),\n signingSecret: Tsu.String().describe('Signing secret')\n})\n```\n\n## Supports\n\n### Events\n\n- on_message (fully supported)\n\n### Api\n\n- sendPrivateMsg\n- sendGroupMsg\n- sendChannelMsg\n\n### Elements\n\n- text\n- image\n- voice\n- video\n\n## TODO\n\nSupport more standard api...\n\n## Reference\n\n- [Kotori Docs](https://kotori.js.org/)\n- [slack api](https://api.slack.com/docs)\n" + }, + { + "name": "@kotori-bot/kotori-plugin-adapter-sandbox", + "description": "模块测试环境,虚拟沙盒适配器", + "category": [ + "official", + "adapter" + ], + "version": "1.1.0", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1708491525667, + "modified": 1723122116832 + }, + "dist": { + "dependencies": 0, + "fileCount": 13, + "unpackedSize": 75294, + "tarball": "https://registry.npmjs.org/@kotori-bot/kotori-plugin-adapter-sandbox/-/kotori-plugin-adapter-sandbox-1.1.0.tgz" + }, + "keywords": [], + "readme": "# @kotori-bot/kotori-plugin-adapter-onebot\r\n\r\nTo test bot for Kotori.\r\n\r\n## Config\r\n\r\nNo configuration is required.\r\n\r\n## Supports\r\n\r\n### Events\r\n\r\n- on_message (exclude `RequestScope.CHANNEL`)\r\n- on_message_delete (exclude `MessageScope.CHANNEL`)\r\n- on_group_increase\r\n- on_group_decrease\r\n- on_group_whole_ban\r\n- on_friend_decrease\r\n- on_friend_increase\r\n- on_group_ban\r\n- on_group_admin\r\n\r\n### Api\r\n\r\n- sendPrivateMsg\r\n- sendGroupMsg\r\n- deleteMsg\r\n- getUserInfo\r\n- getFriendList\r\n- getGroupInfo\r\n- getGroupList\r\n- getGroupMemberInfo\r\n- getGroupMemberList\r\n- setGroupName\r\n- leaveGroup\r\n- setGroupAdmin\r\n- setGroupCard\r\n- setGroupBan\r\n- setGroupWholeBan\r\n- setGroupKick\r\n\r\n### Elements\r\n\r\n- text\r\n- mention\r\n- mentionAll\r\n- image\r\n- voice\r\n- audio\r\n- video\r\n- reply\r\n- file\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n" + }, + { + "name": "@kotori-bot/kotori-plugin-adapter-qq", + "description": "基于 Tencent 官方 API 的适配器", + "category": [ + "official", + "adapter" + ], + "version": "1.2.0", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848078985, + "modified": 1723122112172 + }, + "dist": { + "dependencies": 2, + "fileCount": 15, + "unpackedSize": 62708, + "tarball": "https://registry.npmjs.org/@kotori-bot/kotori-plugin-adapter-qq/-/kotori-plugin-adapter-qq-1.2.0.tgz" + }, + "keywords": [ + "qq", + "tencent" + ], + "readme": "# @kotori-bot/kotori-plugin-adapter-onebot\n\nBase on tencent api.\n\n## Config\n\n```typescript\nexport const config = Tsu.Object({\n appid: Tsu.String().describe('Appid, get from https://q.qq.com/qqbot/'),\n secret: Tsu.String().describe(\"Bot's secret \"),\n retry: Tsu.Number().positive().default(10).describe('try reconnect times when disconnected (seconds)')\n})\n```\n\n## Supports\n\n### Events\n\n- on_message\n\n### Api\n\n- sendGroupMsg\n- sendChannelMsg\n\n### Elements\n\n- text\n- image\n- voice\n- mention\n- video\n\n## Reference\n\n- [Kotori Docs](https://kotori.js.org/)\n- [QQ机器人文档](https://bot.q.qq.com/wiki/develop/api-v2/)\n" + }, + { + "name": "@kotori-bot/kotori-plugin-adapter-onebot", + "description": "基于 OneBot11 标准的适配器", + "category": [ + "official", + "adapter" + ], + "version": "2.1.0", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848078986, + "modified": 1723122106908 + }, + "dist": { + "dependencies": 2, + "fileCount": 13, + "unpackedSize": 75843, + "tarball": "https://registry.npmjs.org/@kotori-bot/kotori-plugin-adapter-onebot/-/kotori-plugin-adapter-onebot-2.1.0.tgz" + }, + "keywords": [ + "onebot", + "onebot11", + "qq", + "liteloader", + "LiteLoaderNTQQ", + "NapCat", + "go-cqhttp" + ], + "readme": "# @kotori-bot/kotori-plugin-adapter-onebot\n\n![OneBot 11](https://img.shields.io/badge/OneBot-11-black?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAABwCAMAAADxPgR5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxQTFRF////29vbr6+vAAAAk1hCcwAAAAR0Uk5T////AEAqqfQAAAKcSURBVHja7NrbctswDATQXfD//zlpO7FlmwAWIOnOtNaTM5JwDMa8E+PNFz7g3waJ24fviyDPgfhz8fHP39cBcBL9KoJbQUxjA2iYqHL3FAnvzhL4GtVNUcoSZe6eSHizBcK5LL7dBr2AUZlev1ARRHCljzRALIEog6H3U6bCIyqIZdAT0eBuJYaGiJaHSjmkYIZd+qSGWAQnIaz2OArVnX6vrItQvbhZJtVGB5qX9wKqCMkb9W7aexfCO/rwQRBzsDIsYx4AOz0nhAtWu7bqkEQBO0Pr+Ftjt5fFCUEbm0Sbgdu8WSgJ5NgH2iu46R/o1UcBXJsFusWF/QUaz3RwJMEgngfaGGdSxJkE/Yg4lOBryBiMwvAhZrVMUUvwqU7F05b5WLaUIN4M4hRocQQRnEedgsn7TZB3UCpRrIJwQfqvGwsg18EnI2uSVNC8t+0QmMXogvbPg/xk+Mnw/6kW/rraUlvqgmFreAA09xW5t0AFlHrQZ3CsgvZm0FbHNKyBmheBKIF2cCA8A600aHPmFtRB1XvMsJAiza7LpPog0UJwccKdzw8rdf8MyN2ePYF896LC5hTzdZqxb6VNXInaupARLDNBWgI8spq4T0Qb5H4vWfPmHo8OyB1ito+AysNNz0oglj1U955sjUN9d41LnrX2D/u7eRwxyOaOpfyevCWbTgDEoilsOnu7zsKhjRCsnD/QzhdkYLBLXjiK4f3UWmcx2M7PO21CKVTH84638NTplt6JIQH0ZwCNuiWAfvuLhdrcOYPVO9eW3A67l7hZtgaY9GZo9AFc6cryjoeFBIWeU+npnk/nLE0OxCHL1eQsc1IciehjpJv5mqCsjeopaH6r15/MrxNnVhu7tmcslay2gO2Z1QfcfX0JMACG41/u0RrI9QAAAABJRU5ErkJggg==)\n\nBase on [OneBot 11 Standard](https://github.com/botuniverse/onebot-11), you can use the these programs that support OneBot 11's implement to connect with qq:\n\n- For Linux: [NapCat](https://napneko.github.io/)\n- For Windows: [LiteLoaderQQNT](https://liteloaderqqnt.github.io/) with [LLOneBot](https://llonebot.github.io/)\n- No more available: [go-cqhttp](https://docs.go-cqhttp.org/)\n\n## Config\n\n```typescript\nexport const config = Tsu.Union(\n Tsu.Object({\n mode: Tsu.Literal('ws').describe('Connect mode: WebSocket'),\n port: Tsu.Number().port().describe('WebSocket server port'),\n address: Tsu.String()\n .regexp(/^ws(s)?:\\/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w-./?%&=]*)?$/)\n .default('ws://127.0.0.1')\n .describe('WebSocket address'),\n retry: Tsu.Number().int().min(1).default(10).describe('try reconnect times when disconnected')\n }),\n Tsu.Object({\n mode: Tsu.Literal('ws-reverse').describe('Connect mode: WebSocket Reverse')\n })\n)\n```\n\n## Supports\n\n### Events\n\n- on_message (exclude `MessageScope.CHANNEL`)\n- on_message_delete (exclude `MessageScope.CHANNEL`)\n- on_request (exclude `RequestScope.CHANNEL`)\n- on_group_increase\n- on_group_decrease\n- on_group_admin\n- on_group_ban\n- custom: onebot_poke\n\n### Api\n\n- sendPrivateMsg\n- sendGroupMsg\n- deleteMsg\n- getUserInfo\n- getFriendList\n- getGroupInfo\n- getGroupList\n- getGroupMemberInfo\n- getGroupMemberList\n- setGroupName\n- leaveGroup\n- setGroupAdmin\n- setGroupCard\n- setGroupAvatar\n- setGroupBan\n- setGroupWholeBan\n- setGroupNotice\n- setGroupKick\n\n### Elements\n\n- text\n- mention\n- mentionAll\n- image\n- voice\n- video\n- reply\n\n## Reference\n\n- [Kotori Docs](https://kotori.js.org/)\n- [go-cqhttp 帮助中心](https://docs.go-cqhttp.org/)\n- [OneBot](https://onebot.dev/)\n" + }, + { + "name": "kotori-plugin-adapter-minecraft", + "description": "Minecraft 基岩版原生 WebSocket 适配器", + "category": [ + "adapter" + ], + "version": "2.0.1", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1714896768531, + "modified": 1723122101932 + }, + "dist": { + "dependencies": 2, + "fileCount": 11, + "unpackedSize": 49619, + "tarball": "https://registry.npmjs.org/kotori-plugin-adapter-minecraft/-/kotori-plugin-adapter-minecraft-2.0.1.tgz" + }, + "keywords": [ + "minecraft", + "websocket", + "minecraft bedrock", + "mojang" + ], + "readme": "# @kotori-bot/kotori-plugin-adapter-minecraft\r\n\r\nBase on `mcwss` package for Minecraft Bedrock Edition, support `private` and `group` scope.\r\n\r\n## Config\r\n\r\n```typescript\r\nexport const config = Tsu.Object({\r\n nickname: Tsu.String().default('Romi').describe('Bot\\'s name'),\r\n template: Tsu.Union(Tsu.Null(), Tsu.String()).default('<%nickname%> %msg%').describe('The template of bot sent message ')\r\n})\r\n```\r\n\r\n## Supports\r\n\r\n### Events\r\n\r\n- on_message (`MessageScope.PRIVATE` and `MessageScope.GROUP`)\r\n\r\n### Api\r\n\r\n- sendPrivateMsg\r\n\r\n### Elements\r\n\r\n- text\r\n- mention\r\n- mentionAll\r\n\r\n## TODO\r\n\r\n### Todo Events\r\n\r\n- on_group_increase\r\n- on_group_decrease\r\n- on_group_ban\r\n\r\n### Todo Api\r\n\r\n- getGroupMemberInfo\r\n- getGroupMemberList\r\n- setGroupAdmin\r\n- setGroupBan\r\n- setGroupKick\r\n\r\n### Other\r\n\r\nAdapter server [LeviLamina](https://github.com/LiteLDev/LeviLamina/) and Java Edition.\r\n\r\n## Reference\r\n\r\n- [Kotori Docs](https://kotori.js.org/)\r\n- [McWss](https://github.com/biyuehu/mcwss)\r\n" + }, + { + "name": "@kotori-bot/adapter-mail", + "description": "电子邮箱适配器", + "category": [ + "official", + "adapter" + ], + "version": "1.0.0", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1723122096213, + "modified": 1723122096860 + }, + "dist": { + "dependencies": 6, + "fileCount": 16, + "unpackedSize": 61373, + "tarball": "https://registry.npmjs.org/@kotori-bot/adapter-mail/-/adapter-mail-1.0.0.tgz" + }, + "keywords": [], + "readme": "# @kotori-bot/adapter-mail\n\nSupports for email. Such as `Google Mail`, `QQ Mail`, `163 Mail` and more...\n\n## Config\n\n```typescript\nexport const config = Tsu.Object({\n title: Tsu.String().domain().default('Love from kotori bot mailer').describe('Mail default title'),\n commandEnable: Tsu.Boolean()\n .default(true)\n .describe(\"Whether to enable command, other bot's master can send mail by the command, please set at top mail bot\"),\n forward: Tsu.Array(Tsu.String())\n .default([])\n .describe(\"bots' identity, will forward to the bot's master on receiving mail, please set at top mail bot\"),\n user: Tsu.String().describe('Email address'),\n interval: Tsu.Number().default(60).describe('Check mail interval (seconds)'),\n password: Tsu.String().describe('Email password'),\n imapHost: Tsu.String().describe('IMAP server host'),\n imapPort: Tsu.Number().describe('IMAP server port'),\n smtpHost: Tsu.String().describe('SMTP server host'),\n smtpPort: Tsu.Number().describe('SMTP server port')\n})\n```\n\n## Supports\n\n### Events\n\n- on_message (only `MessageScope.PRIVATE`)\n\n### Api\n\n- sendPrivateMsg\n\n### Elements\n\n- text\n- mention\n- image\n- voice\n- video\n- file\n- reply\n\n## Reference\n\n- [Kotori Docs](https://kotori.js.org/)\n" + }, + { + "name": "@kotori-bot/adapter-discord", + "description": "Discord 适配器", + "category": [ + "official", + "adapter" + ], + "version": "1.0.0", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1723122075270, + "modified": 1723122075861 + }, + "dist": { + "dependencies": 1, + "fileCount": 11, + "unpackedSize": 48677, + "tarball": "https://registry.npmjs.org/@kotori-bot/adapter-discord/-/adapter-discord-1.0.0.tgz" + }, + "keywords": [ + "discord" + ], + "readme": "# @kotori-bot/adapter-discord\n\nSupports for discord. Create own bot: [Discord Developer Portal](https://discord.com/developers/applications).\n\n## Config\n\n```typescript\nexport const config = Tsu.Object({\n token: Tsu.String().describe(\"Bot's token\")\n})\n```\n\n## Supports\n\n### Events\n\n- on_message (only `MessageScope.CHANNEL`)\n- on_message_delete (only `MessageScope.CHANNEL`)\n\n### Api\n\n- sendChannelMsg\n\n### Elements\n\n- text\n\n## TODO\n\nSupport more standard api...\n\n## Reference\n\n- [Kotori Docs](https://kotori.js.org/)\n- [discord.js](https://discord.js.org/)\n" + }, + { + "name": "@kotori-bot/kotori-plugin-adapter-cmd", + "description": "基于控制台的适配器", + "category": [ + "official", + "adapter" + ], + "version": "1.1.1", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1703848078451, + "modified": 1723121849869 + }, + "dist": { + "dependencies": 0, + "fileCount": 11, + "unpackedSize": 48184, + "tarball": "https://registry.npmjs.org/@kotori-bot/kotori-plugin-adapter-cmd/-/kotori-plugin-adapter-cmd-1.1.1.tgz" + }, + "keywords": [], + "readme": "# @kotori-bot/kotori-plugin-adapter-cmd\n\nBase on console i/o, a method for quickly testing modules, only support `MessageScope.PRIVATE`.\n\n## Config\n\n```typescript\nexport const config = Tsu.Object({\n nickname: Tsu.String().default('Kotarou').describe('User\\'s nickname'),\n 'self-nickname': Tsu.String().default('KotoriO').describe('Bot\\'s nickname'),\n 'self-id': Tsu.String().default('720').describe('Bot\\'s id'),\n})\n```\n\n## Supports\n\n### Events\n\n- on_message (only `MessageScope.PRIVATE`)\n\n### Api\n\n- sendPrivateMsg\n\n### Elements\n\n- text\n- mention\n- mentionAll\n\n## Reference\n\n- [Kotori Docs](https://kotori.js.org/)\n" + }, + { + "name": "@kotori-bot/kotori-plugin-access", + "description": "权限插件,用于设置多个机器人管理员", + "category": [ + "official", + "plugin" + ], + "version": "1.0.2", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1708489191006, + "modified": 1723121844094 + }, + "dist": { + "dependencies": 0, + "fileCount": 8, + "unpackedSize": 41009, + "tarball": "https://registry.npmjs.org/@kotori-bot/kotori-plugin-access/-/kotori-plugin-access-1.0.2.tgz" + }, + "keywords": [], + "readme": "ERROR: No README data found!" + }, + { + "name": "@kotori-bot/kotori-plugin-status", + "description": "查看服务器运行状态", + "category": [ + "official", + "plugin" + ], + "version": "1.0.0", + "author": { + "name": "Arimura Sena", + "email": "biyuehuya@gmail.com" + }, + "time": { + "created": 1708491642556, + "modified": 1708491643354 + }, + "dist": { + "dependencies": 0, + "fileCount": 9, + "unpackedSize": 41389, + "tarball": "https://registry.npmjs.org/@kotori-bot/kotori-plugin-status/-/kotori-plugin-status-1.0.0.tgz" + }, + "keywords": [], + "readme": "" + } + ] +} \ No newline at end of file diff --git a/assets/deps.json b/assets/deps.json new file mode 100644 index 00000000..d335be70 --- /dev/null +++ b/assets/deps.json @@ -0,0 +1,12 @@ +{ + "kotori-bot": "^1.6.4", + "@kotori-bot/kotori-plugin-access": "^1.0.2", + "@kotori-bot/kotori-plugin-adapter-cmd": "^1.1.1", + "@kotori-bot/kotori-plugin-adapter-sandbox": "^1.1.0", + "@kotori-bot/kotori-plugin-alias": "^1.0.2", + "@kotori-bot/kotori-plugin-core": "^1.4.4", + "@kotori-bot/kotori-plugin-filter": "^1.1.0", + "@kotori-bot/kotori-plugin-helper": "^1.3.1", + "@kotori-bot/kotori-plugin-status": "^1.0.0", + "@kotori-bot/kotori-plugin-webui": "^1.4.1" +} \ No newline at end of file diff --git a/assets/guide_base_command.md.B1nKVjKI.js b/assets/guide_base_command.md.B1nKVjKI.js new file mode 100644 index 00000000..8e4c2389 --- /dev/null +++ b/assets/guide_base_command.md.B1nKVjKI.js @@ -0,0 +1,204 @@ +import{_ as i,c as a,a0 as h,o as k}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"指令注册","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/command.md","filePath":"guide/base/command.md","lastUpdated":1723293723000}'),n={name:"guide/base/command.md"};function t(l,s,p,e,d,r){return k(),a("div",null,s[0]||(s[0]=[h(`

指令注册

引入

在上一节中学习了事件系统的使用,现在通过 on_message 事件实现一个小功能:

typescript
ctx.on('on_message', (session) => {
+  if (!session.message.startsWith('/')) return;
+  const command = session.message.slice(1);
+
+  if (command === 'echo') {
+    const content = command.slice(5);
+    session.send(content ? content : '输入内容为空');
+  } else if (command === 'time') {
+    session.send(\`现在的时间是 \${new Date().getTime()}\`);
+  } else {
+    session.send('未知的指令');
+  }
+});

当收到「/echo xxx」消息时将发送「xxx」;当收到「/time」消息时将发送当前时间戳;两者都不是时发送「未知的指令」。然而当结果越来越多后,if...else 语句也会越来越多,显然,这是十分糟糕的。尽管可以考虑将条件内容作为键、结果处理包装成回调函数作为值,以键值对形式装进一个对象或者 Map 中,然后遍历执行。但是当条件越来越复杂时,字符串的键远无法满足需求,同时也可能有相当一部分内容仅在私聊或者群聊下可用,其次,参数的处理也需要在结果处理内部中完成,这是十分复杂与繁琐的,因此便有入了本节内容。

基本使用

指令(Command) 是 Kotori 的核心功能,也是最常见的交互方式,指令实质是 Kotori 内部对 on_message 事件的再处理与封装,这点与后续将学习的中间件和正则匹配是一致的,因此也可以看作是一个事件处理的语法糖。通过 ctx.command() 可注册一条指令,参数为指令模板字符,返回 Command 实例对象,实例上有着若干方法用于装饰该指令,其返回值同样为当前指令的实例对象。

typescript
ctx.command('echo <...content>').action((data) => data.args.join(' '));
+
+ctx.command('time').action(() => {
+  const time = new Date().getTime();
+  return time;
+});

指令模板字符

typescript
ctx.command('bar');
+ctx.command('car <arg1> <arg2>');
+ctx.command('dar <arg1> [arg2] [arg3=value]');
+ctx.command('ear [arg1:number=1] [...args:string] - 指令描述');

上述演示了指令模板字符的基本格式。

  • 尖括号 <> 表示必要参数,方括号 [] 为可选参数
  • 括号内部内容格式是 参数名:参数类型,参数名应为小写字母与数字([a-z0-9])组成,参数类型可省略,默认 string,支持的类型有: stringnumberboolean
  • 可选参数中可在参数类型后添加 =值 设置默认参数
  • 参数中可在参数名前添加 ... 设置剩余参数,与 TypeScript 不同的是,剩余参数的类型不需要加上数组表示
  • 在指令模板字符最后添加 - 指令描述 设置指令描述
  • 指令内容为截止到第一个参数出现之前的字符串(不含空格)
  • 参数名应尽量语义化;剩余参数应在所有参数最后面;应仅在可选参数中设置默认参数;必要参数应在可选参数之前;指令模板字符不应包含指令前缀

选项

通过 Command.option() 设置指令选项,接受两个参数:

  1. 该选项的缩写名
  2. 选项模板字符,可设置多个指令选项
typescript
ctx
+  .command('bar')
+  .option('S', 'speaker - 这是选项的描述')
+  .option('G', 'global:boolean - 这是一个布尔类型的选项')
+  .option('T', 'time:number - 这是一个数字类型的选项');
  • 一般地,使用单个大写字母作为缩写名,解析器将把字符串中单个连接符 - 开头内容作为选项缩写名解析
  • 使用多个小写字母作为全名(多个单词使用 单个连接符 - 解析),解析器将把字符串中两个连接符 -- 开头的内容作为选项全名解析
  • 在选项模板字符最后添加 - 指令描述 设置选项描述
  • 类似地,选项模板字符有着与指令模板字符一样的类型注解方式,默认 string,支持的类型有: stringnumberboolean
  • 选项模板字符不支持设置默认值

回调函数

通过 Command.action() 设置指令的回调函数,且每个指令仅可设置一个回调函数,回调函数中接收两个参数:

  1. argsoptions 两个键组成的对象,类型分别为 (string | number | boolean)[]Record<string, string | number | boolean>,分别代表用户输入的参数值与选项值
  2. 会话事件数据

options 中的键为对应选项的全名而非缩写名。

typescript
ctx.command('bar <...args>').action((data) => {
+  ctx.logger.info(data.args); // 输出参数值数组
+  ctx.logger.info(data.options); // 输出选项值对象
+  session.send('这是一条消息');
+});

回调函数中的第二个参数为当前会话事件数据 sessionsession 对象包含了当前指令触发产生的所有上下文信息,比如消息 id、消息类型、触发指令的账号、Bot 实例等,在处理函数中可以方便地与 Bot 进行交互。还可以从 session 中获取诸如发送消息等实用工具函数。下文将详细讲解 session 对象相关内容,此处仅做演示。

typescript
ctx.command('at').action((_, session) => {
+  session.send(\`你好,\${session.el.at(session.userId)},你的名字是 \${session.sender.nickname}\`);
+});

作用域

通过 Command.scope() 设置指令作用域,值类型为 MessageScope,如若不设置则默认所有场景均可使用。

typescript
export enum MessageScope {
+  PRIVATE, // 私聊
+  GROUP // 群聊
+}
typescript
ctx
+  .command('test')
+  .scope(MessageScope.PRIVATE)
+  .action(() => '这是一条仅私聊可用的消息');
+
+ctx
+  .command('hello')
+  .scope(MessageScope.GROUP)
+  .action((_, session) => {
+    session.send(\`这是一条仅群聊可用的消息\`);
+  });

别名

通过 Command.alias() 设置指令别名,参数为 string | string[]

typescript
ctx
+  .command('original')
+  .alias('o') // 别名可以是单个字符串
+  .alias(['ori', 'org']) // 也可以是字符串数组
+  .action(() => '这是原版指令');

权限

通过 Command.access() 设置指令权限,值类型为 CommandAccess

typescript
export const enum CommandAccess {
+  MEMBER, // 所有成员可用,默认值,权限最低
+  MANGER, // 管理员(群管理员/群主或 Bot 管理员)及以上权限可用
+  ADMIN // 仅该 Bot 最高管理员可用
+}

CommandAccess.ADMIN 对应 kotori.yml 中的 AdapterConfig.master 选项

typescript
ctx
+  .command('op')
+  .access(CommandAccess.ADMIN)
+  .action(() => '这是一条特殊指令');

帮助信息

通过 Command.help() 设置指令帮助信息,相对于指令模板字符中的指令描述,其提供更为详尽全面的信息。

typescript
ctx.command('bar').help('这里是指令的帮助信息');

返回值处理

在上述众多演示中,可能你已注意到,与事件系统不同,指令的回调函数可以直接返回一个值作为消息发出,而不必使用 session.send() 方法。其本质上是自动将回调函数返回值作为参数传入 session.quick() 方法,具体处理逻辑请参考下文。

typescript
ctx.command('concat <str1> <str2>').action(({ args: [str1, str2] }) => str1 + str2);
+
+ctx.command('render').action(() => ['template.text', { content: '这是模板内容' }]);
+
+ctx.command('fetch').action(async () => {
+  const res = await ctx.http.get('https://api.example.com');
+  return ['template.status', { status: res.status }];
+});

对于返回数组的情况设计国际化相关内容,将在第三章中讲解

子指令

试想一下,有一个指令 list 有着多个操作,如查询、添加、删除列表等,大可以使用多个完全独立的指令如 list_querylist_addlist_remove,但这并不优雅。此处通过注册一个指令并判断其第一个参数的值执行相应操作

typescript
/* 错误示例不要抄 */
+ctx.command('black query - manger.descr.black.query').action(({ args }, session) => {
+  switch (args[0]) {
+    case 'query':
+      /* ... */
+      break;
+    case 'add':
+      /* ... */
+      break;
+    case 'remove':
+      /* ... */
+      break;
+    default:
+      return \`无效的参数 \${args[0]}\`;
+  }
+  /* ... */
+});

但是,其需要判断 args[0] 并处理无效时的情况,额外的代码嵌套依旧不够优雅。且多个操作下对于参数个数要求不一,如查询可以直接输入 list query,但对于添加/删除往往需要在后方再传入一个参数以指定添加/删除目标 list add xxx。因此,当同一指令有多个操作(即多个指令回调函数)且各个操作间相对独立时可使用子指令。基础用法:

typescript
ctx.command('cmd sub1').action(() => '操作1');
+ctx.command('cmd sub2').action(() => '操作2');
+
+// 甚至可以支持嵌套子指令...
+ctx.command('cmd sub3 sub1').action(() => '操作3的操作1');
+ctx.command('cmd sub3 sub2').action(() => '操作3的第二个操作');
+
+// 多个不同子指令间可设置不同的权限、作用域等,互不影响
+ctx
+  .command('cmd sub4 group')
+  .action(() => '这个子指令仅群聊可用')
+  .scope(MessageScope.GROUP);
+
+ctx
+  .command('cmd sub4 manger')
+  .action(() => '这个子指令仅管理员可用')
+  .access(CommandAccess.MANGER);
+
+  ctx
+  .command('cmd sub4 ADMIN_private')
+  .action(() => '这个子指令仅最高管理员且在私聊下可用')
+  .access(CommandAccess.ADMIN),
+  .scope(MessageScope.PRIVATE);

使用子指令实现 list 指令:

typescript
ctx.command('list query - 查询列表').action(() => {
+  /* ... */
+});
+
+ctx
+  .command('list add <target> - 从列表中添加指定目标')
+  .action(() => {
+    /* ... */
+  })
+  .access(CommandAccess.MANGER);
+
+ctx
+  .command('list remove <target> - 从列表中删除指定目标')
+  .action(() => {
+    /* ... */
+  })
+  .access(CommandAccess.MANGER);

会话事件数据

上一节的会话事件部分和本节中均提到了会话事件数据 session,又或是后面的中间件与正则匹配,都会有着它的身影。而指令系统作为 Kotori 中使用最广泛的功能且当前你已掌握事件系统的概念,会话事件数据的内容得以放在此处进行详细讲解。

重要属性

typescript
export interface EventDataApiBase {
+  type?: MessageScope;
+  api: Api;
+  el: Elements;
+  userId: EventDataTargetId;
+  groupId?: EventDataTargetId;
+  operatorId?: EventDataTargetId;
+  i18n: I18n;
+  send(message: MessageRaw): void;
+  format(template: string, data: Record<string, unknown> | CommandArgType[]): string;
+  quick(message: MessageQuick): void;
+  prompt(message?: MessageRaw): Promise<MessageRaw>;
+  confirm(options?: { message: MessageRaw; sure: MessageRaw }): Promise<boolean>;
+  error<T extends Exclude<keyof CommandResult, CommandResultNoArgs>>(
+    type: T,
+    data: CommandResult[T] extends object ? CommandResult[T] : never
+  ): CommandError;
+  error<T extends CommandResultNoArgs>(type: T): CommandError;
+  extra?: unknown;
+}

session 对象本质上就是一个事件数据对象(即会话事件),上述是会话事件的共有属性,不同会话事件中有着不同的额外属性,如 EventDataGroupMsg 事件有 messageIdsendermessagegroupId,而 EventDataPrivateMsg 事件没有 groupIdEventDataPrivateRecall 事件其中的仅有 messageId,这些额外属性均不在当前讨论范围内,具体内容参考接口文档。对于上述的共有属性在当前阶段也不必全部掌握。

  • api: Api 实例对象,提供多个与当前聊天平台的交互接口
  • el: Elements 实例对象,api.adapter.elements 属性的语法糖
  • i18n: 国际化相关方法

字符串处理

typescript
export type CommandArgType = string | number | boolean;
+type ObjectArgs = Record<string, CommandArgType>;
+type ArrayArgs = CommandArgType[];

session.format() 方法是一个简单的模板字符串替换工具(此处请区别于 JavaScript 中的 「模板字符串」)。接收两个参数:

  1. 源字符串
  2. 模板字符串参数,其类型有两种,分别为 ObjectArgsArrayArgs
typescript
ctx.command('himeki').action((_, { format }) => {
+  format('名字:%name%\\n身高:%height%cm\\n口头禅:%msg%', {
+    name: 'Ichinose Himeki',
+    height: 153,
+    msg: '最喜欢你了,欧尼酱'
+  });
+  // 等同于:
+  format('名字:{0}\\n身高:{1}cm\\n口头禅:{2}', ['Ichinose Himeki', 153, '最喜欢你了,欧尼酱']);
+  // 最终输出:名字:Ichinose Himeki\\n年龄:153\\n口头禅:最喜欢你了,欧尼酱
+});

通过上述代码可知:

  • 对象模板:通过 %key% 的形式进行替换,与对象键值一一对应,其更具有语义性,适合文本长且参数较多使用,但使用过多易造成代码冗余
  • 数组模板:通过 {index} 的形式进行替换,与数组索引一一对应,缺少语义性但更简洁,适合短文本使用,不易造成代码冗余
  • 模板字符串替换适合动态获取数据后呈现数据
  • 适当的对模板字符串参数嵌套使用 session.format() 可实现较为复杂的动态数据展示,但不宜过多

消息发送

在上一节已提到 session.send() 方法是对 session.api 上发送消息方法的封装,而 session.quick() 方法则是对 session.send() 的封装。一般地,在有会话事件数据可使用且无特殊需求下,均推荐使用 session.quick(),后续所有代码演示无特殊情况也默认使用该方法。

  • 对于 string 将调用 i18n.locale() 方法实现国际化
  • 对于 [string, ObjectArgs | ArrayArgs] 参数,将先遍历数组中第二个值下的所有属性并调用 i18n.locale() 进行替换,然后将其传入 session.format() 方法
  • 对于 undefined''voidnull0 则不作处理(一般不允许传入这些东西,主要发生在指令处理的回调函数返回值上)
  • 对于 Error 则另作处理(一般不允许传入这些东西,主要发生在指令处理的回调函数返回值上)
  • 对于 Promise 则等待 Promise 完成后再做上述处理

关于 i18n.locale() 方法当前可粗略理解为:传入一个已预定好且唯一的字符串值,根据当前使用语言返回相应语言文本。当然,不理解并不妨碍你使用 session.quick() 方法

json
// locales/zh_CN.json
+{
+  "test.msg.himeki.hitokoto": "最喜欢你了,欧尼酱",
+  "test.msg.himeki": "名字:{0}\\n身高:{1}cm\\n口头禅:{2}"
+}
typescript
// src/index.ts
+// 告诉 Kotori 自动加载国际化文件
+export const lang = [__dirname, '../locales'];
+
+export function (ctx: Context) {
+  ctx.command('himeki').action((_, session) => {
+    // 使用 session.send():
+    const hitokoto = session.i18n.locale('test.msg.himeki.hitokoto');
+    const msg = session.format(session.i18n.locale('test.msg.himeki'), ['Ichinose Himeki', 153, hitokoto]);
+    session.send(msg);
+    // 使用 session.quick():
+    session.quick(['test.msg.himeki', ['Ichinose Himeki', 153, 'test.msg.himeki.hitokoto']]);
+    // 直接返回:
+    return ['test.msg.himeki', ['Ichinose Himeki', 153, 'test.msg.himeki.hitokoto']];
+  });
+}

会话交互

目前 Kotori 原生提供了两个会话交互方法:session.prompt()session.confirm(),它们和浏览器中的 prompt()confirm() 类似,分别对应为输入框和提示框。

typescript
ctx.command('question').action(async (_, session) => {
+  await session.quick('这里有一个问题想问你...');
+  const likeme = await session.confirm({
+    message: '你喜欢我吗?',
+    sure: '喜欢'
+  });
+  if (!likeme) return '伤透了我的心';
+  const ago = Number(await session.prompt('喜欢我多久了?'));
+  if (Number.isNaN(ago) || ago < 0) return '这可不是一个有效的Number啊!';
+  await session.quick(ago >= 0 && ago <= 1 ? '什么嘛...原来才刚刚开始喜欢啊' : \`居然喜欢了 \${ago} 这么久啊!\`);
+  return '谢谢你的喜欢哦~';
+});

WARNING

一次性有多个会话交互(消息、输入、确认...)时请注意不用遗漏 await 关键词,否则可能会有一些意料之外的效果。

  • 两者参数均只有一个且可选
  • session.prompt() 参数为 string,对应提示消息,返回 Promise<string>
  • session.confirm() 参数为 { message: string, sure: string },分别对应提示消息和确认消息(只有用户发送消息与确认消息完全一致时返回 true 反之 false),返回 Promise<boolean>

NOTE

目前会话交互功能甚少,内容也不全面,如对 i18n 支持不够完善、需手动进行数据校验、Promise 超时等问题,如有能力欢迎你前来帮助 Kotori 完善。

错误处理

随着功能的不断增多,不稳定性也随之增多,面对用户传入的各种奇怪数据,虽有着 Kotori 本身的指令参数和数据校验用于防护,但这并不能百分百避免所有错误发生,因此学会自行错误处理至关重要。以下是 Kotori 内置的指令错误类型可供参考:

typescript
type CommandArgTypeSign = 'string' | 'number' | 'boolean';
+
+interface CommandParseResult {
+  option_error: { expected: CommandArgTypeSign; reality: CommandArgTypeSign; target: string }; // 选项类型错误
+  arg_error: { expected: CommandArgTypeSign; reality: CommandArgTypeSign; index: number }; // 参数类型错误
+  arg_many: { expected: number; reality: number }; // 参数过多
+  arg_few: CommandParseResult['arg_many']; // 参数过少
+  syntax: { index: number; char: string }; // 语法错误(引号、反斜杠问题)
+  unknown: { input: string }; // 未知的指令
+}
+
+export interface CommandResult extends CommandParseResult {
+  error: { error: unknown }; // 未知错误
+  data_error: { target: string | number };
+  res_error: { error: TsuError };
+  num_error: null;
+  no_access_manger: null; // 无管理员权限
+  no_access_admin: null; // 无最高管理员权限
+  disable: null;
+  exists: { target: string };
+  no_exists: CommandResult['exists'];
+}

Kotori 中指令指令错误分为两大类:

  • 指令解析时错误:即上述的 CommandParseResult,这些在指令系统不需要你操心,因为它们已全部交由上游的 Kotori 内置中间件进行处理,在解析指令时就会被发现
  • 指令运行时错误:即上述的 Omit<CommandResult, keyof CommandParseResult>,它们有的发生在指令执行前(如 no_access_mangerno_access_admin),又或者 error 这种错误之外的错误(执行回调函数时捕获的错误),这两者也不需要你操心

需要操心的是剩下可能发生在指令执行期间的错误,这些错误无法由 Kotori 处理,全需要你在编写代码时手动处理:

  • data_error 参数错误(不同于参数类型错误)
  • res_error 资源错误(主要是指网络请求第三方 Api 时返回数据类型有误)
  • num_error 序号错误(主要是指需要用户传入数字进行选择的情况)
  • exists 目标已存在(如添加目标到名单里但目标已存在于名单)
  • no_exists 目标不存在(如删除目标从名单里但目标不存在于名单)

使用 session.error() 方法即可在运行时阶段抛出错误,

typescript
export function main(ctx: Context) {
+  ctx.command('hitokoto').action(async (_, session) => {
+    const res = await ctx.http.get('https://hotaru.icu/api/hitokoto/v2/');
+    /* 这里有一些检查数据的操作 */
+    if (condition) return session.error('res', { error: new Error() }); // 这里会有些小问题,代码仅做演示,请勿照抄
+    return ['今日一言: {0}{1}', [res.data, res.data.from ? \`——\${res.data.from}\` : '']];
+  });
+}

上述代码展示了其非常经典的一个例子,机器人的功能往往部分来自于网络接口请求,确保其第三方内容的稳定性更是必要的,因此对获取的数据进行检查,然后再进行访问属性操作,如若获取的数据与预期不一致则使用 session.error() 抛出错误

ctx.http 是一个网络请求工具,基于 Axios 封装,具体内容参考接口文档;此处的「检查数据的操作」实际上指 Schema,这将在第三章中讲解

`,86)]))}const A=i(n,[["render",t]]);export{y as __pageData,A as default}; diff --git a/assets/guide_base_command.md.B1nKVjKI.lean.js b/assets/guide_base_command.md.B1nKVjKI.lean.js new file mode 100644 index 00000000..8e4c2389 --- /dev/null +++ b/assets/guide_base_command.md.B1nKVjKI.lean.js @@ -0,0 +1,204 @@ +import{_ as i,c as a,a0 as h,o as k}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"指令注册","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/command.md","filePath":"guide/base/command.md","lastUpdated":1723293723000}'),n={name:"guide/base/command.md"};function t(l,s,p,e,d,r){return k(),a("div",null,s[0]||(s[0]=[h(`

指令注册

引入

在上一节中学习了事件系统的使用,现在通过 on_message 事件实现一个小功能:

typescript
ctx.on('on_message', (session) => {
+  if (!session.message.startsWith('/')) return;
+  const command = session.message.slice(1);
+
+  if (command === 'echo') {
+    const content = command.slice(5);
+    session.send(content ? content : '输入内容为空');
+  } else if (command === 'time') {
+    session.send(\`现在的时间是 \${new Date().getTime()}\`);
+  } else {
+    session.send('未知的指令');
+  }
+});

当收到「/echo xxx」消息时将发送「xxx」;当收到「/time」消息时将发送当前时间戳;两者都不是时发送「未知的指令」。然而当结果越来越多后,if...else 语句也会越来越多,显然,这是十分糟糕的。尽管可以考虑将条件内容作为键、结果处理包装成回调函数作为值,以键值对形式装进一个对象或者 Map 中,然后遍历执行。但是当条件越来越复杂时,字符串的键远无法满足需求,同时也可能有相当一部分内容仅在私聊或者群聊下可用,其次,参数的处理也需要在结果处理内部中完成,这是十分复杂与繁琐的,因此便有入了本节内容。

基本使用

指令(Command) 是 Kotori 的核心功能,也是最常见的交互方式,指令实质是 Kotori 内部对 on_message 事件的再处理与封装,这点与后续将学习的中间件和正则匹配是一致的,因此也可以看作是一个事件处理的语法糖。通过 ctx.command() 可注册一条指令,参数为指令模板字符,返回 Command 实例对象,实例上有着若干方法用于装饰该指令,其返回值同样为当前指令的实例对象。

typescript
ctx.command('echo <...content>').action((data) => data.args.join(' '));
+
+ctx.command('time').action(() => {
+  const time = new Date().getTime();
+  return time;
+});

指令模板字符

typescript
ctx.command('bar');
+ctx.command('car <arg1> <arg2>');
+ctx.command('dar <arg1> [arg2] [arg3=value]');
+ctx.command('ear [arg1:number=1] [...args:string] - 指令描述');

上述演示了指令模板字符的基本格式。

  • 尖括号 <> 表示必要参数,方括号 [] 为可选参数
  • 括号内部内容格式是 参数名:参数类型,参数名应为小写字母与数字([a-z0-9])组成,参数类型可省略,默认 string,支持的类型有: stringnumberboolean
  • 可选参数中可在参数类型后添加 =值 设置默认参数
  • 参数中可在参数名前添加 ... 设置剩余参数,与 TypeScript 不同的是,剩余参数的类型不需要加上数组表示
  • 在指令模板字符最后添加 - 指令描述 设置指令描述
  • 指令内容为截止到第一个参数出现之前的字符串(不含空格)
  • 参数名应尽量语义化;剩余参数应在所有参数最后面;应仅在可选参数中设置默认参数;必要参数应在可选参数之前;指令模板字符不应包含指令前缀

选项

通过 Command.option() 设置指令选项,接受两个参数:

  1. 该选项的缩写名
  2. 选项模板字符,可设置多个指令选项
typescript
ctx
+  .command('bar')
+  .option('S', 'speaker - 这是选项的描述')
+  .option('G', 'global:boolean - 这是一个布尔类型的选项')
+  .option('T', 'time:number - 这是一个数字类型的选项');
  • 一般地,使用单个大写字母作为缩写名,解析器将把字符串中单个连接符 - 开头内容作为选项缩写名解析
  • 使用多个小写字母作为全名(多个单词使用 单个连接符 - 解析),解析器将把字符串中两个连接符 -- 开头的内容作为选项全名解析
  • 在选项模板字符最后添加 - 指令描述 设置选项描述
  • 类似地,选项模板字符有着与指令模板字符一样的类型注解方式,默认 string,支持的类型有: stringnumberboolean
  • 选项模板字符不支持设置默认值

回调函数

通过 Command.action() 设置指令的回调函数,且每个指令仅可设置一个回调函数,回调函数中接收两个参数:

  1. argsoptions 两个键组成的对象,类型分别为 (string | number | boolean)[]Record<string, string | number | boolean>,分别代表用户输入的参数值与选项值
  2. 会话事件数据

options 中的键为对应选项的全名而非缩写名。

typescript
ctx.command('bar <...args>').action((data) => {
+  ctx.logger.info(data.args); // 输出参数值数组
+  ctx.logger.info(data.options); // 输出选项值对象
+  session.send('这是一条消息');
+});

回调函数中的第二个参数为当前会话事件数据 sessionsession 对象包含了当前指令触发产生的所有上下文信息,比如消息 id、消息类型、触发指令的账号、Bot 实例等,在处理函数中可以方便地与 Bot 进行交互。还可以从 session 中获取诸如发送消息等实用工具函数。下文将详细讲解 session 对象相关内容,此处仅做演示。

typescript
ctx.command('at').action((_, session) => {
+  session.send(\`你好,\${session.el.at(session.userId)},你的名字是 \${session.sender.nickname}\`);
+});

作用域

通过 Command.scope() 设置指令作用域,值类型为 MessageScope,如若不设置则默认所有场景均可使用。

typescript
export enum MessageScope {
+  PRIVATE, // 私聊
+  GROUP // 群聊
+}
typescript
ctx
+  .command('test')
+  .scope(MessageScope.PRIVATE)
+  .action(() => '这是一条仅私聊可用的消息');
+
+ctx
+  .command('hello')
+  .scope(MessageScope.GROUP)
+  .action((_, session) => {
+    session.send(\`这是一条仅群聊可用的消息\`);
+  });

别名

通过 Command.alias() 设置指令别名,参数为 string | string[]

typescript
ctx
+  .command('original')
+  .alias('o') // 别名可以是单个字符串
+  .alias(['ori', 'org']) // 也可以是字符串数组
+  .action(() => '这是原版指令');

权限

通过 Command.access() 设置指令权限,值类型为 CommandAccess

typescript
export const enum CommandAccess {
+  MEMBER, // 所有成员可用,默认值,权限最低
+  MANGER, // 管理员(群管理员/群主或 Bot 管理员)及以上权限可用
+  ADMIN // 仅该 Bot 最高管理员可用
+}

CommandAccess.ADMIN 对应 kotori.yml 中的 AdapterConfig.master 选项

typescript
ctx
+  .command('op')
+  .access(CommandAccess.ADMIN)
+  .action(() => '这是一条特殊指令');

帮助信息

通过 Command.help() 设置指令帮助信息,相对于指令模板字符中的指令描述,其提供更为详尽全面的信息。

typescript
ctx.command('bar').help('这里是指令的帮助信息');

返回值处理

在上述众多演示中,可能你已注意到,与事件系统不同,指令的回调函数可以直接返回一个值作为消息发出,而不必使用 session.send() 方法。其本质上是自动将回调函数返回值作为参数传入 session.quick() 方法,具体处理逻辑请参考下文。

typescript
ctx.command('concat <str1> <str2>').action(({ args: [str1, str2] }) => str1 + str2);
+
+ctx.command('render').action(() => ['template.text', { content: '这是模板内容' }]);
+
+ctx.command('fetch').action(async () => {
+  const res = await ctx.http.get('https://api.example.com');
+  return ['template.status', { status: res.status }];
+});

对于返回数组的情况设计国际化相关内容,将在第三章中讲解

子指令

试想一下,有一个指令 list 有着多个操作,如查询、添加、删除列表等,大可以使用多个完全独立的指令如 list_querylist_addlist_remove,但这并不优雅。此处通过注册一个指令并判断其第一个参数的值执行相应操作

typescript
/* 错误示例不要抄 */
+ctx.command('black query - manger.descr.black.query').action(({ args }, session) => {
+  switch (args[0]) {
+    case 'query':
+      /* ... */
+      break;
+    case 'add':
+      /* ... */
+      break;
+    case 'remove':
+      /* ... */
+      break;
+    default:
+      return \`无效的参数 \${args[0]}\`;
+  }
+  /* ... */
+});

但是,其需要判断 args[0] 并处理无效时的情况,额外的代码嵌套依旧不够优雅。且多个操作下对于参数个数要求不一,如查询可以直接输入 list query,但对于添加/删除往往需要在后方再传入一个参数以指定添加/删除目标 list add xxx。因此,当同一指令有多个操作(即多个指令回调函数)且各个操作间相对独立时可使用子指令。基础用法:

typescript
ctx.command('cmd sub1').action(() => '操作1');
+ctx.command('cmd sub2').action(() => '操作2');
+
+// 甚至可以支持嵌套子指令...
+ctx.command('cmd sub3 sub1').action(() => '操作3的操作1');
+ctx.command('cmd sub3 sub2').action(() => '操作3的第二个操作');
+
+// 多个不同子指令间可设置不同的权限、作用域等,互不影响
+ctx
+  .command('cmd sub4 group')
+  .action(() => '这个子指令仅群聊可用')
+  .scope(MessageScope.GROUP);
+
+ctx
+  .command('cmd sub4 manger')
+  .action(() => '这个子指令仅管理员可用')
+  .access(CommandAccess.MANGER);
+
+  ctx
+  .command('cmd sub4 ADMIN_private')
+  .action(() => '这个子指令仅最高管理员且在私聊下可用')
+  .access(CommandAccess.ADMIN),
+  .scope(MessageScope.PRIVATE);

使用子指令实现 list 指令:

typescript
ctx.command('list query - 查询列表').action(() => {
+  /* ... */
+});
+
+ctx
+  .command('list add <target> - 从列表中添加指定目标')
+  .action(() => {
+    /* ... */
+  })
+  .access(CommandAccess.MANGER);
+
+ctx
+  .command('list remove <target> - 从列表中删除指定目标')
+  .action(() => {
+    /* ... */
+  })
+  .access(CommandAccess.MANGER);

会话事件数据

上一节的会话事件部分和本节中均提到了会话事件数据 session,又或是后面的中间件与正则匹配,都会有着它的身影。而指令系统作为 Kotori 中使用最广泛的功能且当前你已掌握事件系统的概念,会话事件数据的内容得以放在此处进行详细讲解。

重要属性

typescript
export interface EventDataApiBase {
+  type?: MessageScope;
+  api: Api;
+  el: Elements;
+  userId: EventDataTargetId;
+  groupId?: EventDataTargetId;
+  operatorId?: EventDataTargetId;
+  i18n: I18n;
+  send(message: MessageRaw): void;
+  format(template: string, data: Record<string, unknown> | CommandArgType[]): string;
+  quick(message: MessageQuick): void;
+  prompt(message?: MessageRaw): Promise<MessageRaw>;
+  confirm(options?: { message: MessageRaw; sure: MessageRaw }): Promise<boolean>;
+  error<T extends Exclude<keyof CommandResult, CommandResultNoArgs>>(
+    type: T,
+    data: CommandResult[T] extends object ? CommandResult[T] : never
+  ): CommandError;
+  error<T extends CommandResultNoArgs>(type: T): CommandError;
+  extra?: unknown;
+}

session 对象本质上就是一个事件数据对象(即会话事件),上述是会话事件的共有属性,不同会话事件中有着不同的额外属性,如 EventDataGroupMsg 事件有 messageIdsendermessagegroupId,而 EventDataPrivateMsg 事件没有 groupIdEventDataPrivateRecall 事件其中的仅有 messageId,这些额外属性均不在当前讨论范围内,具体内容参考接口文档。对于上述的共有属性在当前阶段也不必全部掌握。

  • api: Api 实例对象,提供多个与当前聊天平台的交互接口
  • el: Elements 实例对象,api.adapter.elements 属性的语法糖
  • i18n: 国际化相关方法

字符串处理

typescript
export type CommandArgType = string | number | boolean;
+type ObjectArgs = Record<string, CommandArgType>;
+type ArrayArgs = CommandArgType[];

session.format() 方法是一个简单的模板字符串替换工具(此处请区别于 JavaScript 中的 「模板字符串」)。接收两个参数:

  1. 源字符串
  2. 模板字符串参数,其类型有两种,分别为 ObjectArgsArrayArgs
typescript
ctx.command('himeki').action((_, { format }) => {
+  format('名字:%name%\\n身高:%height%cm\\n口头禅:%msg%', {
+    name: 'Ichinose Himeki',
+    height: 153,
+    msg: '最喜欢你了,欧尼酱'
+  });
+  // 等同于:
+  format('名字:{0}\\n身高:{1}cm\\n口头禅:{2}', ['Ichinose Himeki', 153, '最喜欢你了,欧尼酱']);
+  // 最终输出:名字:Ichinose Himeki\\n年龄:153\\n口头禅:最喜欢你了,欧尼酱
+});

通过上述代码可知:

  • 对象模板:通过 %key% 的形式进行替换,与对象键值一一对应,其更具有语义性,适合文本长且参数较多使用,但使用过多易造成代码冗余
  • 数组模板:通过 {index} 的形式进行替换,与数组索引一一对应,缺少语义性但更简洁,适合短文本使用,不易造成代码冗余
  • 模板字符串替换适合动态获取数据后呈现数据
  • 适当的对模板字符串参数嵌套使用 session.format() 可实现较为复杂的动态数据展示,但不宜过多

消息发送

在上一节已提到 session.send() 方法是对 session.api 上发送消息方法的封装,而 session.quick() 方法则是对 session.send() 的封装。一般地,在有会话事件数据可使用且无特殊需求下,均推荐使用 session.quick(),后续所有代码演示无特殊情况也默认使用该方法。

  • 对于 string 将调用 i18n.locale() 方法实现国际化
  • 对于 [string, ObjectArgs | ArrayArgs] 参数,将先遍历数组中第二个值下的所有属性并调用 i18n.locale() 进行替换,然后将其传入 session.format() 方法
  • 对于 undefined''voidnull0 则不作处理(一般不允许传入这些东西,主要发生在指令处理的回调函数返回值上)
  • 对于 Error 则另作处理(一般不允许传入这些东西,主要发生在指令处理的回调函数返回值上)
  • 对于 Promise 则等待 Promise 完成后再做上述处理

关于 i18n.locale() 方法当前可粗略理解为:传入一个已预定好且唯一的字符串值,根据当前使用语言返回相应语言文本。当然,不理解并不妨碍你使用 session.quick() 方法

json
// locales/zh_CN.json
+{
+  "test.msg.himeki.hitokoto": "最喜欢你了,欧尼酱",
+  "test.msg.himeki": "名字:{0}\\n身高:{1}cm\\n口头禅:{2}"
+}
typescript
// src/index.ts
+// 告诉 Kotori 自动加载国际化文件
+export const lang = [__dirname, '../locales'];
+
+export function (ctx: Context) {
+  ctx.command('himeki').action((_, session) => {
+    // 使用 session.send():
+    const hitokoto = session.i18n.locale('test.msg.himeki.hitokoto');
+    const msg = session.format(session.i18n.locale('test.msg.himeki'), ['Ichinose Himeki', 153, hitokoto]);
+    session.send(msg);
+    // 使用 session.quick():
+    session.quick(['test.msg.himeki', ['Ichinose Himeki', 153, 'test.msg.himeki.hitokoto']]);
+    // 直接返回:
+    return ['test.msg.himeki', ['Ichinose Himeki', 153, 'test.msg.himeki.hitokoto']];
+  });
+}

会话交互

目前 Kotori 原生提供了两个会话交互方法:session.prompt()session.confirm(),它们和浏览器中的 prompt()confirm() 类似,分别对应为输入框和提示框。

typescript
ctx.command('question').action(async (_, session) => {
+  await session.quick('这里有一个问题想问你...');
+  const likeme = await session.confirm({
+    message: '你喜欢我吗?',
+    sure: '喜欢'
+  });
+  if (!likeme) return '伤透了我的心';
+  const ago = Number(await session.prompt('喜欢我多久了?'));
+  if (Number.isNaN(ago) || ago < 0) return '这可不是一个有效的Number啊!';
+  await session.quick(ago >= 0 && ago <= 1 ? '什么嘛...原来才刚刚开始喜欢啊' : \`居然喜欢了 \${ago} 这么久啊!\`);
+  return '谢谢你的喜欢哦~';
+});

WARNING

一次性有多个会话交互(消息、输入、确认...)时请注意不用遗漏 await 关键词,否则可能会有一些意料之外的效果。

  • 两者参数均只有一个且可选
  • session.prompt() 参数为 string,对应提示消息,返回 Promise<string>
  • session.confirm() 参数为 { message: string, sure: string },分别对应提示消息和确认消息(只有用户发送消息与确认消息完全一致时返回 true 反之 false),返回 Promise<boolean>

NOTE

目前会话交互功能甚少,内容也不全面,如对 i18n 支持不够完善、需手动进行数据校验、Promise 超时等问题,如有能力欢迎你前来帮助 Kotori 完善。

错误处理

随着功能的不断增多,不稳定性也随之增多,面对用户传入的各种奇怪数据,虽有着 Kotori 本身的指令参数和数据校验用于防护,但这并不能百分百避免所有错误发生,因此学会自行错误处理至关重要。以下是 Kotori 内置的指令错误类型可供参考:

typescript
type CommandArgTypeSign = 'string' | 'number' | 'boolean';
+
+interface CommandParseResult {
+  option_error: { expected: CommandArgTypeSign; reality: CommandArgTypeSign; target: string }; // 选项类型错误
+  arg_error: { expected: CommandArgTypeSign; reality: CommandArgTypeSign; index: number }; // 参数类型错误
+  arg_many: { expected: number; reality: number }; // 参数过多
+  arg_few: CommandParseResult['arg_many']; // 参数过少
+  syntax: { index: number; char: string }; // 语法错误(引号、反斜杠问题)
+  unknown: { input: string }; // 未知的指令
+}
+
+export interface CommandResult extends CommandParseResult {
+  error: { error: unknown }; // 未知错误
+  data_error: { target: string | number };
+  res_error: { error: TsuError };
+  num_error: null;
+  no_access_manger: null; // 无管理员权限
+  no_access_admin: null; // 无最高管理员权限
+  disable: null;
+  exists: { target: string };
+  no_exists: CommandResult['exists'];
+}

Kotori 中指令指令错误分为两大类:

  • 指令解析时错误:即上述的 CommandParseResult,这些在指令系统不需要你操心,因为它们已全部交由上游的 Kotori 内置中间件进行处理,在解析指令时就会被发现
  • 指令运行时错误:即上述的 Omit<CommandResult, keyof CommandParseResult>,它们有的发生在指令执行前(如 no_access_mangerno_access_admin),又或者 error 这种错误之外的错误(执行回调函数时捕获的错误),这两者也不需要你操心

需要操心的是剩下可能发生在指令执行期间的错误,这些错误无法由 Kotori 处理,全需要你在编写代码时手动处理:

  • data_error 参数错误(不同于参数类型错误)
  • res_error 资源错误(主要是指网络请求第三方 Api 时返回数据类型有误)
  • num_error 序号错误(主要是指需要用户传入数字进行选择的情况)
  • exists 目标已存在(如添加目标到名单里但目标已存在于名单)
  • no_exists 目标不存在(如删除目标从名单里但目标不存在于名单)

使用 session.error() 方法即可在运行时阶段抛出错误,

typescript
export function main(ctx: Context) {
+  ctx.command('hitokoto').action(async (_, session) => {
+    const res = await ctx.http.get('https://hotaru.icu/api/hitokoto/v2/');
+    /* 这里有一些检查数据的操作 */
+    if (condition) return session.error('res', { error: new Error() }); // 这里会有些小问题,代码仅做演示,请勿照抄
+    return ['今日一言: {0}{1}', [res.data, res.data.from ? \`——\${res.data.from}\` : '']];
+  });
+}

上述代码展示了其非常经典的一个例子,机器人的功能往往部分来自于网络接口请求,确保其第三方内容的稳定性更是必要的,因此对获取的数据进行检查,然后再进行访问属性操作,如若获取的数据与预期不一致则使用 session.error() 抛出错误

ctx.http 是一个网络请求工具,基于 Axios 封装,具体内容参考接口文档;此处的「检查数据的操作」实际上指 Schema,这将在第三章中讲解

`,86)]))}const A=i(n,[["render",t]]);export{y as __pageData,A as default}; diff --git a/assets/guide_base_events.md.BKi_1qAf.js b/assets/guide_base_events.md.BKi_1qAf.js new file mode 100644 index 00000000..de0faa7a --- /dev/null +++ b/assets/guide_base_events.md.BKi_1qAf.js @@ -0,0 +1,63 @@ +import{_ as i,c as a,a0 as h,o as n}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"事件系统","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/events.md","filePath":"guide/base/events.md","lastUpdated":1712229374000}'),k={name:"guide/base/events.md"};function t(p,s,l,e,d,r){return n(),a("div",null,s[0]||(s[0]=[h(`

事件系统

事件系统(Events) 的上游是事件订阅者模式(Events Emiter),该设计模式与事件系统共同构成了 Kotori 的基础,Kotori 内部通过订阅事件保持各部分间的联系和协作任务。同时也有来自各个聊天平台的事件,通过订阅这些事件能实现丰富多样的功能。

订阅事件

事件系统的使用方法与常规的事件订阅者一致,通过 ctx.on() 订阅一个事件,第一个参数为事件名,第二个参数为回调函数,事件被触发时事件数据将作为实际参数传给回调函数。

typescript
import { MessageScope } from 'kotori-bot';
+
+// ...
+
+ctx.on('on_message', (session) => {
+  if (session.message !== '你是谁') return;
+  if (session.type === MessageScope.GROUP) {
+    session.api.sendGroupMsg('是 Kotori!', session.groupId);
+  } else {
+    session.api.sendPrivateMsg('是 Kotori!', session.userId);
+  }
+});

从上述代码中可以看出,当收到消息时,如果不是「你是谁」则立即退出,执行完毕。如果是则判断 session.type 的值,调用相应的发送消息接口发送「是 Kotori!」。根据语义化命名可知:session.type 为消息类型,值是一个 MessageScope 枚举值,分为 「GROUP」(群聊)和「PRIVATE」(私聊);session.apiApi 的实例对象,提供了多种与聊天平台交互的接口,此处用到的 sendG丨groupMsgsendPrivateMsg 分别是发送群聊消息与发送私聊消息,第一个参数为消息内容,第二个参数分别为群聊 id 与用户 id。

id 一般为对应聊天平台提供的 id/uid,叫法不一,值类型为 string 或 number。如当你收到由适配器 @kotori-bot/kotori-plugin-adapter-onebot 发出的消息时,groupId 为 QQ 群号,userId 为 QQ 号。

上面的代码每次都需要判断消息类型再执行相应方法,显得有点繁琐,因此 kotori 提供了一个语法糖:

typescript
ctx.on('on_message', (session) => {
+  if (session.message !== '你是谁') return;
+  session.send('是 Kotori!');
+  }
+});

使用 session.send() 只需要传入消息内容即可,消息类型判断和传入相应 id 的工作已在该方法内部完成。session 上还有不少与之类似的语法糖,将在后面章节中逐一提到,也因如此,session.send() 在实际开发中使用率并不高,因为它对你后面将了解的内容而言依旧很繁琐。

取消订阅事件

正如订阅事件是「on」,取消订阅事件则是「off」。ctx.off() 的使用方法与 ctx.on() 一致。

typescript
const handle = (session: Session['on_message']) => {
+  ctx.off('on_message', handle);
+  // ...
+};
+
+ctx.on('on_message', handle);

上述代码中,触发事件后会立即取消订阅事件,意味着它只会被触发一次。ctx.on() 在执行后会返回取消订阅自己的方法,因此可以这样简化:

typescript
const off = ctx.on('on_message', (session) => {
+  off();
+  // ...
+});

使用 ctx.once() 再进一步简化:

typescript
ctx.once('on_message', (session) => {
+  // ...
+});

工作流程与上面一致,通过 ctx.once() 订阅事件,在触发后会立即取消订阅。

使用 ctx.offAll() 取消订阅指定事件名下所有事件:

typescript
ctx.once('on_message', (session) => {
+  // ...
+});
+
+ctx.once('on_message', (session) => {
+  // ...
+});
+
+ctx.on('on_message', (session) => {
+  if (session.message === '消失吧!') return;
+    ctx.offAll('on_message');
+  }
+});

在第三个回调函数中,当收到消息「消失吧!」时将取消订阅所有 on_message 事件。

事件类型

Kotori 中事件类型大致分为三类:

  • 系统事件(System Event):与生命周期和适配器有关的事件,回调函数中的参数名一般为 data
  • 会话事件(Session Event):与聊天平台有关的事件,回调函数中的参数名一般为 session
  • 自定义事件(Custom Event):由模块定义的事件,一般用于模块内部或多个模块间通信,参数量不固定。

系统事件

常见的系统事件有:

  • ready :当加载完所有模块时触发
  • dispose :当 Kotori 关闭时触发
  • status :当 Bot 的在线状态改变时触发

通过 status 实现 Bot 上线后自动发送消息给最高管理员:

typescript
ctx.on('status', (data) => {
+  if (data.status !== 'online') return;
+  const { api, config } = data.adapter;
+  api.sendPrivateMsg('上线了!', config.master);
+});

由于 status 是由适配器发出的系统事件,它并没有类似于会话事件中的 session.send(),因此只能使用最原始的办法发送消息。status 的事件数据中仅有两个值,一个是 data.status 表示当前在线状态(「online」或「offline」),data.adapter 为目标 Bot,Bot 上有 adapter.apiadapter.config,前者等价于会话事件中的 session.api,后者为 Bot 配置,来自于 kotori.yml

会话事件

常见的会话事件有:

  • on_message :当收到消息时触发
  • on_recall :当有消息撤回时触发
  • on_group_increase :当群人数增加时触发

通过 on_group_increase 实现群欢迎:

typescript
ctx.on('on_group_increase', (session) => {
+  session.send(\`因为遇见了\${session.el.at(session.userId)},我的世界才充满颜色!\`);
+});

其中 session.elsession.api 类似,是 Elements 的实例对象,它提供了用于转换消息元素的接口,如 session.el.at() 传入用户 id 转换成艾特消息,session.el.image() 传入图片 URL 转换成图片消息。当然,并不是所有聊天平台都支持所有的消息元素,应以具体聊天平台为准。

自定义事件与发出事件

得益于 TypeScript 有着 声明合并(Declaration Merging) 的特性,在模块中可通过其实现自定义事件的局部声明。

typescript
declare module 'kotori-bot' {
+  interface EventsMapping {
+    custom_event1(data: string): void;
+  }
+}
+
+ctx.on('custom_event1', (data) => {
+  ctx.logger.debug(data);
+});

Kotori 中所有事件均定义在 EventsMapping 接口上。custom_event1 事件触发后将打印事件数据。

ctx.logger 是一个日志打印工具,ctx.logger.debug() 意味着打印内容仅在 dev 模式下运行 Kotori 可见,具体内容请参考接口文档

然而,订阅事件后,事件却从来没有发出,因此需要发出事件:

typescript
// ...
+
+ctx.emit('custom_event1', '这是事件数据');
+ctx.emit('custom_event1', '这里也是事件数据');

ctx.emit() 第一个参数为事件名,然后为剩余参数,剩余参数与该事件参数一一对应。虽然 Kotori 中系统事件与会话事件的参数均只有一个,但是可以在自定义事件中实现任意多个参数:

typescript
declare module 'kotori-bot' {
+  interface EventsMapping {
+    custom_event2(arg1: string, arg2: number, arg3: boolean): void;
+    custom_event3(...args: any[]): void;
+  }
+}
+
+ctx.emit('custom_event2', 'string', 42, true);
+ctx.emit('custom_event3', 'string1', 'string2', 233, 2333, { value: 42 });

TIP

一般地,自定义事件应只用于单个模块内部,用于多个模块间相互通信传输数据时,每个涉及模块应先加载定义自定义事件的模块,以免出现类型定义的问题。

`,46)]))}const o=i(k,[["render",t]]);export{y as __pageData,o as default}; diff --git a/assets/guide_base_events.md.BKi_1qAf.lean.js b/assets/guide_base_events.md.BKi_1qAf.lean.js new file mode 100644 index 00000000..de0faa7a --- /dev/null +++ b/assets/guide_base_events.md.BKi_1qAf.lean.js @@ -0,0 +1,63 @@ +import{_ as i,c as a,a0 as h,o as n}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"事件系统","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/events.md","filePath":"guide/base/events.md","lastUpdated":1712229374000}'),k={name:"guide/base/events.md"};function t(p,s,l,e,d,r){return n(),a("div",null,s[0]||(s[0]=[h(`

事件系统

事件系统(Events) 的上游是事件订阅者模式(Events Emiter),该设计模式与事件系统共同构成了 Kotori 的基础,Kotori 内部通过订阅事件保持各部分间的联系和协作任务。同时也有来自各个聊天平台的事件,通过订阅这些事件能实现丰富多样的功能。

订阅事件

事件系统的使用方法与常规的事件订阅者一致,通过 ctx.on() 订阅一个事件,第一个参数为事件名,第二个参数为回调函数,事件被触发时事件数据将作为实际参数传给回调函数。

typescript
import { MessageScope } from 'kotori-bot';
+
+// ...
+
+ctx.on('on_message', (session) => {
+  if (session.message !== '你是谁') return;
+  if (session.type === MessageScope.GROUP) {
+    session.api.sendGroupMsg('是 Kotori!', session.groupId);
+  } else {
+    session.api.sendPrivateMsg('是 Kotori!', session.userId);
+  }
+});

从上述代码中可以看出,当收到消息时,如果不是「你是谁」则立即退出,执行完毕。如果是则判断 session.type 的值,调用相应的发送消息接口发送「是 Kotori!」。根据语义化命名可知:session.type 为消息类型,值是一个 MessageScope 枚举值,分为 「GROUP」(群聊)和「PRIVATE」(私聊);session.apiApi 的实例对象,提供了多种与聊天平台交互的接口,此处用到的 sendG丨groupMsgsendPrivateMsg 分别是发送群聊消息与发送私聊消息,第一个参数为消息内容,第二个参数分别为群聊 id 与用户 id。

id 一般为对应聊天平台提供的 id/uid,叫法不一,值类型为 string 或 number。如当你收到由适配器 @kotori-bot/kotori-plugin-adapter-onebot 发出的消息时,groupId 为 QQ 群号,userId 为 QQ 号。

上面的代码每次都需要判断消息类型再执行相应方法,显得有点繁琐,因此 kotori 提供了一个语法糖:

typescript
ctx.on('on_message', (session) => {
+  if (session.message !== '你是谁') return;
+  session.send('是 Kotori!');
+  }
+});

使用 session.send() 只需要传入消息内容即可,消息类型判断和传入相应 id 的工作已在该方法内部完成。session 上还有不少与之类似的语法糖,将在后面章节中逐一提到,也因如此,session.send() 在实际开发中使用率并不高,因为它对你后面将了解的内容而言依旧很繁琐。

取消订阅事件

正如订阅事件是「on」,取消订阅事件则是「off」。ctx.off() 的使用方法与 ctx.on() 一致。

typescript
const handle = (session: Session['on_message']) => {
+  ctx.off('on_message', handle);
+  // ...
+};
+
+ctx.on('on_message', handle);

上述代码中,触发事件后会立即取消订阅事件,意味着它只会被触发一次。ctx.on() 在执行后会返回取消订阅自己的方法,因此可以这样简化:

typescript
const off = ctx.on('on_message', (session) => {
+  off();
+  // ...
+});

使用 ctx.once() 再进一步简化:

typescript
ctx.once('on_message', (session) => {
+  // ...
+});

工作流程与上面一致,通过 ctx.once() 订阅事件,在触发后会立即取消订阅。

使用 ctx.offAll() 取消订阅指定事件名下所有事件:

typescript
ctx.once('on_message', (session) => {
+  // ...
+});
+
+ctx.once('on_message', (session) => {
+  // ...
+});
+
+ctx.on('on_message', (session) => {
+  if (session.message === '消失吧!') return;
+    ctx.offAll('on_message');
+  }
+});

在第三个回调函数中,当收到消息「消失吧!」时将取消订阅所有 on_message 事件。

事件类型

Kotori 中事件类型大致分为三类:

  • 系统事件(System Event):与生命周期和适配器有关的事件,回调函数中的参数名一般为 data
  • 会话事件(Session Event):与聊天平台有关的事件,回调函数中的参数名一般为 session
  • 自定义事件(Custom Event):由模块定义的事件,一般用于模块内部或多个模块间通信,参数量不固定。

系统事件

常见的系统事件有:

  • ready :当加载完所有模块时触发
  • dispose :当 Kotori 关闭时触发
  • status :当 Bot 的在线状态改变时触发

通过 status 实现 Bot 上线后自动发送消息给最高管理员:

typescript
ctx.on('status', (data) => {
+  if (data.status !== 'online') return;
+  const { api, config } = data.adapter;
+  api.sendPrivateMsg('上线了!', config.master);
+});

由于 status 是由适配器发出的系统事件,它并没有类似于会话事件中的 session.send(),因此只能使用最原始的办法发送消息。status 的事件数据中仅有两个值,一个是 data.status 表示当前在线状态(「online」或「offline」),data.adapter 为目标 Bot,Bot 上有 adapter.apiadapter.config,前者等价于会话事件中的 session.api,后者为 Bot 配置,来自于 kotori.yml

会话事件

常见的会话事件有:

  • on_message :当收到消息时触发
  • on_recall :当有消息撤回时触发
  • on_group_increase :当群人数增加时触发

通过 on_group_increase 实现群欢迎:

typescript
ctx.on('on_group_increase', (session) => {
+  session.send(\`因为遇见了\${session.el.at(session.userId)},我的世界才充满颜色!\`);
+});

其中 session.elsession.api 类似,是 Elements 的实例对象,它提供了用于转换消息元素的接口,如 session.el.at() 传入用户 id 转换成艾特消息,session.el.image() 传入图片 URL 转换成图片消息。当然,并不是所有聊天平台都支持所有的消息元素,应以具体聊天平台为准。

自定义事件与发出事件

得益于 TypeScript 有着 声明合并(Declaration Merging) 的特性,在模块中可通过其实现自定义事件的局部声明。

typescript
declare module 'kotori-bot' {
+  interface EventsMapping {
+    custom_event1(data: string): void;
+  }
+}
+
+ctx.on('custom_event1', (data) => {
+  ctx.logger.debug(data);
+});

Kotori 中所有事件均定义在 EventsMapping 接口上。custom_event1 事件触发后将打印事件数据。

ctx.logger 是一个日志打印工具,ctx.logger.debug() 意味着打印内容仅在 dev 模式下运行 Kotori 可见,具体内容请参考接口文档

然而,订阅事件后,事件却从来没有发出,因此需要发出事件:

typescript
// ...
+
+ctx.emit('custom_event1', '这是事件数据');
+ctx.emit('custom_event1', '这里也是事件数据');

ctx.emit() 第一个参数为事件名,然后为剩余参数,剩余参数与该事件参数一一对应。虽然 Kotori 中系统事件与会话事件的参数均只有一个,但是可以在自定义事件中实现任意多个参数:

typescript
declare module 'kotori-bot' {
+  interface EventsMapping {
+    custom_event2(arg1: string, arg2: number, arg3: boolean): void;
+    custom_event3(...args: any[]): void;
+  }
+}
+
+ctx.emit('custom_event2', 'string', 42, true);
+ctx.emit('custom_event3', 'string1', 'string2', 233, 2333, { value: 42 });

TIP

一般地,自定义事件应只用于单个模块内部,用于多个模块间相互通信传输数据时,每个涉及模块应先加载定义自定义事件的模块,以免出现类型定义的问题。

`,46)]))}const o=i(k,[["render",t]]);export{y as __pageData,o as default}; diff --git a/assets/guide_base_middleware.md.Do_XwOya.js b/assets/guide_base_middleware.md.Do_XwOya.js new file mode 100644 index 00000000..bb797538 --- /dev/null +++ b/assets/guide_base_middleware.md.Do_XwOya.js @@ -0,0 +1,59 @@ +import{_ as i,c as a,a0 as n,o as h}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"中间件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/middleware.md","filePath":"guide/base/middleware.md","lastUpdated":1723293723000}'),k={name:"guide/base/middleware.md"};function l(p,s,t,e,d,r){return h(),a("div",null,s[0]||(s[0]=[n(`

中间件

中间件(Middleware) 是 Kotori 中另一种监听消息事件的语法糖,与指令系统类似,它也是对 on_message 事件的再处理与封装。中间件的主要用途是提前判断或者过滤掉不必要的消息事件,这样后续的指令和正则表达式等位于下游的设施也不会被这些消息事件触发,从而提高效率。

中间件的工作原理与 Express 等后端框架中的中间件概念基本一致。每次收到消息时,Kotori 会依次执行所有已注册的中间件,只有当所有中间件都通过时,该消息事件才会真正被处理。

注册中间件

通过 ctx.midware() 注册一个中间件,该方法接受两个参数:

  1. 中间件回调函数
  2. 可选的中间件优先级,默认为 50

优先级数字越小(但不能为负数)则优先级越高,如果两个中间件的优先级相同,则按照注册顺序执行,先注册的中间件会先执行。

WARNING

如无特殊需求建议请勿更改优先级,否则可能会导致一些意料之外的问题。

typescript
ctx.midware((next, session) => {
+  // 中间件逻辑...
+  next(); // 通过此中间件
+}, 80); // 优先级为 80

中间件回调函数接收两个参数:

  1. next 函数,调用它将执行下一个中间件
  2. session 对象,包含当前消息事件的上下文信息

在中间件内部,你可以根据消息内容或发送者等信息决定是否调用 next() 函数。如果调用了 next() 则通过此中间件,否则此消息事件将被过滤掉,不再执行后续的中间件和其他处理逻辑。

移除中间件

ctx.midware() 方法的返回值是一个可以用于移除该中间件的函数。

typescript
const dispose = ctx.midware((next) => {
+  // ...
+  next();
+});
+
+// 移除中间件
+dispose();

使用示例

基本使用

typescript
ctx.midware((next, session) => {
+  console.log('收到一条消息');
+  next();
+});
+
+ctx.midware((next, session) => {
+  console.log('这是另一个中间件');
+  session.quick('这条消息将被发送');
+  next();
+});

上述代码注册了两个中间件,每当收到一条消息时,它们都会被执行。第一个中间件只打印日志,第二个则先打印日志,然后发送一条消息。由于两个中间件都调用了 next() 函数,因此该消息事件会继续被处理。

过滤消息

typescript
ctx.midware((next, session) => {
+  if (session.message !== 'hello') return;
+  next();
+});
+
+ctx.command('hello').action(() => 'Hello World!');

这个示例中的中间件会过滤掉消息内容不是「hello」的消息事件。只有当消息是「hello」时,中间件才会调用 next()让该消息事件继续被处理。通过使用中间件,我们可以在消息流经 Kotori 的各个环节进行拦截和处理,实现更加灵活和可控的消息处理逻辑。

限制命令使用频率

WARNING

以下内容由 Claude3 生成,不保证可用性。

有时我们需要限制某些命令的使用频率,以防止被滥用。这时可以使用中间件来实现这一功能。

typescript
// 用于存储命令使用记录
+const cmdUsageRecord = new Map();
+
+ctx.midware((next, session) => {
+  // 检查是否为命令消息
+  if (!session.message.startsWith('/')) {
+    next(); // 非命令消息,直接通过
+    return;
+  }
+
+  const cmd = session.message.slice(1); // 获取命令名
+  const userId = session.userId; // 获取发送者ID
+
+  // 如果此命令无使用记录,则新建一个记录
+  if (!cmdUsageRecord.has(cmd)) {
+    cmdUsageRecord.set(cmd, new Map());
+  }
+  const userRecord = cmdUsageRecord.get(cmd);
+
+  // 获取该用户对此命令的最后使用时间
+  const lastUsedAt = userRecord.get(userId) || 0;
+
+  // 计算距离最后一次使用的时间间隔(单位:秒)
+  constInterval = (Date.now() - lastUsedAt) / 1000;
+
+  // 如果间隔小于10秒,则拒绝执行该命令
+  if (Interval < 10) {
+    session.quick('命令使用过于频繁,请稍后再试');
+    return;
+  }
+
+  // 更新该用户对此命令的最后使用时间
+  userRecord.set(userId, Date.now());
+
+  next(); // 通过中间件
+}, 10); // 设置较高优先级

上述代码定义了一个中间件,用于限制命令的使用频率。具体逻辑如下:

  1. 首先检查收到的消息是否以 / 开头,如果不是则直接调用 next()通过该中间件。
  2. 获取命令名和发送者 ID。
  3. 检查是否存在该命令的使用记录,如果没有则新建一个记录。
  4. 获取该用户对此命令的最后使用时间,如果不存在则认为是第一次使用,最后使用时间设为 0。
  5. 计算距离上次使用的时间间隔(单位为秒)。
  6. 如果时间间隔小于 10 秒,则拒绝执行该命令,发送 '命令使用过于频繁,请稍后再试'
  7. 如果时间间隔大于等于 10 秒,则更新该用户对此命令的最后使用时间,并调用 next()通过该中间件。

该中间件的优先级设为 10,这是为了让它能够比大多数命令优先执行。我们使用 Map 来存储命令使用记录,外层 Map 的键为命令名,值为另一个 Map,内层 Map 的键为用户 ID,值为该用户最后一次使用该命令的时间戳。

通过这种方式,我们可以精确地控制每个用户对每个命令的使用频率,并且只对命令消息生效,不会影响到其他普通消息的处理。需要注意的是,这个示例使用了内存来存储命令使用记录,因此在重启 Bot 后记录会被清空。在实际应用中,你可以将记录持久化存储到数据库中。

`,30)]))}const c=i(k,[["render",l]]);export{y as __pageData,c as default}; diff --git a/assets/guide_base_middleware.md.Do_XwOya.lean.js b/assets/guide_base_middleware.md.Do_XwOya.lean.js new file mode 100644 index 00000000..bb797538 --- /dev/null +++ b/assets/guide_base_middleware.md.Do_XwOya.lean.js @@ -0,0 +1,59 @@ +import{_ as i,c as a,a0 as n,o as h}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"中间件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/middleware.md","filePath":"guide/base/middleware.md","lastUpdated":1723293723000}'),k={name:"guide/base/middleware.md"};function l(p,s,t,e,d,r){return h(),a("div",null,s[0]||(s[0]=[n(`

中间件

中间件(Middleware) 是 Kotori 中另一种监听消息事件的语法糖,与指令系统类似,它也是对 on_message 事件的再处理与封装。中间件的主要用途是提前判断或者过滤掉不必要的消息事件,这样后续的指令和正则表达式等位于下游的设施也不会被这些消息事件触发,从而提高效率。

中间件的工作原理与 Express 等后端框架中的中间件概念基本一致。每次收到消息时,Kotori 会依次执行所有已注册的中间件,只有当所有中间件都通过时,该消息事件才会真正被处理。

注册中间件

通过 ctx.midware() 注册一个中间件,该方法接受两个参数:

  1. 中间件回调函数
  2. 可选的中间件优先级,默认为 50

优先级数字越小(但不能为负数)则优先级越高,如果两个中间件的优先级相同,则按照注册顺序执行,先注册的中间件会先执行。

WARNING

如无特殊需求建议请勿更改优先级,否则可能会导致一些意料之外的问题。

typescript
ctx.midware((next, session) => {
+  // 中间件逻辑...
+  next(); // 通过此中间件
+}, 80); // 优先级为 80

中间件回调函数接收两个参数:

  1. next 函数,调用它将执行下一个中间件
  2. session 对象,包含当前消息事件的上下文信息

在中间件内部,你可以根据消息内容或发送者等信息决定是否调用 next() 函数。如果调用了 next() 则通过此中间件,否则此消息事件将被过滤掉,不再执行后续的中间件和其他处理逻辑。

移除中间件

ctx.midware() 方法的返回值是一个可以用于移除该中间件的函数。

typescript
const dispose = ctx.midware((next) => {
+  // ...
+  next();
+});
+
+// 移除中间件
+dispose();

使用示例

基本使用

typescript
ctx.midware((next, session) => {
+  console.log('收到一条消息');
+  next();
+});
+
+ctx.midware((next, session) => {
+  console.log('这是另一个中间件');
+  session.quick('这条消息将被发送');
+  next();
+});

上述代码注册了两个中间件,每当收到一条消息时,它们都会被执行。第一个中间件只打印日志,第二个则先打印日志,然后发送一条消息。由于两个中间件都调用了 next() 函数,因此该消息事件会继续被处理。

过滤消息

typescript
ctx.midware((next, session) => {
+  if (session.message !== 'hello') return;
+  next();
+});
+
+ctx.command('hello').action(() => 'Hello World!');

这个示例中的中间件会过滤掉消息内容不是「hello」的消息事件。只有当消息是「hello」时,中间件才会调用 next()让该消息事件继续被处理。通过使用中间件,我们可以在消息流经 Kotori 的各个环节进行拦截和处理,实现更加灵活和可控的消息处理逻辑。

限制命令使用频率

WARNING

以下内容由 Claude3 生成,不保证可用性。

有时我们需要限制某些命令的使用频率,以防止被滥用。这时可以使用中间件来实现这一功能。

typescript
// 用于存储命令使用记录
+const cmdUsageRecord = new Map();
+
+ctx.midware((next, session) => {
+  // 检查是否为命令消息
+  if (!session.message.startsWith('/')) {
+    next(); // 非命令消息,直接通过
+    return;
+  }
+
+  const cmd = session.message.slice(1); // 获取命令名
+  const userId = session.userId; // 获取发送者ID
+
+  // 如果此命令无使用记录,则新建一个记录
+  if (!cmdUsageRecord.has(cmd)) {
+    cmdUsageRecord.set(cmd, new Map());
+  }
+  const userRecord = cmdUsageRecord.get(cmd);
+
+  // 获取该用户对此命令的最后使用时间
+  const lastUsedAt = userRecord.get(userId) || 0;
+
+  // 计算距离最后一次使用的时间间隔(单位:秒)
+  constInterval = (Date.now() - lastUsedAt) / 1000;
+
+  // 如果间隔小于10秒,则拒绝执行该命令
+  if (Interval < 10) {
+    session.quick('命令使用过于频繁,请稍后再试');
+    return;
+  }
+
+  // 更新该用户对此命令的最后使用时间
+  userRecord.set(userId, Date.now());
+
+  next(); // 通过中间件
+}, 10); // 设置较高优先级

上述代码定义了一个中间件,用于限制命令的使用频率。具体逻辑如下:

  1. 首先检查收到的消息是否以 / 开头,如果不是则直接调用 next()通过该中间件。
  2. 获取命令名和发送者 ID。
  3. 检查是否存在该命令的使用记录,如果没有则新建一个记录。
  4. 获取该用户对此命令的最后使用时间,如果不存在则认为是第一次使用,最后使用时间设为 0。
  5. 计算距离上次使用的时间间隔(单位为秒)。
  6. 如果时间间隔小于 10 秒,则拒绝执行该命令,发送 '命令使用过于频繁,请稍后再试'
  7. 如果时间间隔大于等于 10 秒,则更新该用户对此命令的最后使用时间,并调用 next()通过该中间件。

该中间件的优先级设为 10,这是为了让它能够比大多数命令优先执行。我们使用 Map 来存储命令使用记录,外层 Map 的键为命令名,值为另一个 Map,内层 Map 的键为用户 ID,值为该用户最后一次使用该命令的时间戳。

通过这种方式,我们可以精确地控制每个用户对每个命令的使用频率,并且只对命令消息生效,不会影响到其他普通消息的处理。需要注意的是,这个示例使用了内存来存储命令使用记录,因此在重启 Bot 后记录会被清空。在实际应用中,你可以将记录持久化存储到数据库中。

`,30)]))}const c=i(k,[["render",l]]);export{y as __pageData,c as default}; diff --git a/assets/guide_base_regexp.md.kd1jlc-g.js b/assets/guide_base_regexp.md.kd1jlc-g.js new file mode 100644 index 00000000..7bdfbf34 --- /dev/null +++ b/assets/guide_base_regexp.md.kd1jlc-g.js @@ -0,0 +1,48 @@ +import{_ as i,c as a,a0 as h,o as k}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"正则匹配","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/regexp.md","filePath":"guide/base/regexp.md","lastUpdated":1723293723000}'),n={name:"guide/base/regexp.md"};function p(t,s,l,e,d,r){return k(),a("div",null,s[0]||(s[0]=[h(`

正则匹配

正则匹配(RegExp) 同样是 Kotori 中一种监听消息事件的语法糖。它的主要用途是通过正则表达式匹配消息内容,然后执行相应的处理逻辑。值得一提的是,正则匹配位于消息事件的最后一环(在中间件和指令之后执行),这意味着只有通过了所有中间件和指令的消息,才会进入正则匹配的环节。

正则匹配依赖于正则表达式的强大功能,可以实现多种匹配模式,例如完全匹配、模糊匹配等,为消息处理提供了更大的灵活性。

注册正则匹配

通过 ctx.regexp() 注册一个正则匹配,该方法接受两个参数:

  1. match: 用于匹配消息内容的正则表达式
  2. callback: 当正则匹配成功时执行的回调函数
typescript
ctx.regexp(/^\\/start$/, (match, session) => {
+  session.send('游戏开始!');
+});

上述代码注册了一个正则匹配,当收到消息内容为 /start 时,它会执行回调函数,并向发送者发送 '游戏开始!' 消息。

callback 函数接收两个参数:

  1. match: 正则匹配结果,是一个数组,第一项为完整匹配结果,后续项为各个捕获组的内容
  2. session: 当前消息事件的上下文信息

在回调函数中,你可以根据匹配结果执行相应的逻辑,回调函数的返回值将作为消息发送的内容。

移除正则匹配

ctx.regexp() 方法的返回值是一个可以用于移除该正则匹配的函数。

typescript
const off = ctx.regexp(/pattern/, () => {
+  /* ... */
+});
+
+// 移除正则匹配
+off();

正则匹配示例

简单匹配

typescript
ctx.regexp(/^\\/echo (.+)$/, (match, session) => {
+  const content = match[1]; // 捕获组内容
+  session.send(content); // 回声匹配消息
+});

上述代码注册了一个正则匹配,用于实现 「/echo」 命令。当收到类似 「/echo 你好」 的消息时,正则会匹配到 你好 并将其作为第一个捕获组,然后在回调函数中将捕获组的内容作为消息发送出去。

复杂匹配

typescript
ctx.regexp(/^((数学|语文|英语)\\b)\\s*(\\d+)$/, (match, session) => {
+  const [, , subject, score] = match;
+  let msg;
+  switch (subject) {
+    case '数学':
+      msg = \`数学 \${score}\`;
+      break;
+    case '语文':
+      msg = \`语文 \${score}\`;
+      break;
+    case '英语':
+      msg = \`英语 \${score}\`;
+      break;
+    default:
+      msg = '不支持的科目';
+  }
+  session.send(msg);
+});

这个例子演示了一个稍微复杂的正则匹配。正则 /^算((数学|语文|英语)\\b)\\s*(\\d+)分$/ 用于匹配像 「算数学98分」、「算 语文80分」 这样的消息。正则中使用了一个命名捕获组 (?<subject>...)(不过这个语法还未被 Node.js 完全支持,因此这里使用了普通的捕获组)。

在回调函数中,我们通过数组解构拿到匹配的学科和分数,然后根据不同的学科返回对应的消息内容。

模糊匹配

typescript
ctx.regexp(/\\s*?/, (match, session) => {
+  session.send('我在这里');
+});

这个例子展示了如何使用正则进行模糊匹配。正则 /在\\s*吗?/ 可以匹配 「在吗」、「在 吗」 以及 「在」 这三种情况。使用 ? 可以使前面的字符或字符组成为可选。

多个匹配

typescript
ctx.regexp(/^(|||)\\s*(\\d+)\\s*(|||)?\\s*(\\d+)?$/, (match, session) => {
+  const [, op1, n1, op2, n2] = match;
+  let result;
+  switch (op1) {
+    case '':
+      result = n2 ? parseInt(n1) + parseInt(n2) : parseInt(n1);
+      break;
+    case '':
+      result = n2 ? parseInt(n1) - parseInt(n2) : -parseInt(n1);
+      break;
+    case '':
+      result = n2 ? parseInt(n1) * parseInt(n2) : parseInt(n1);
+      break;
+    case '':
+      result = n2 ? parseInt(n1) / parseInt(n2) : 1 / parseInt(n1);
+      break;
+  }
+  session.send(\`结果是: \${result}\`);
+});

这个例子展示了如何在一个正则匹配中处理多个匹配情况。正则 /^(加|减|乘|除)\\s*(\\d+)\\s*(加|减|乘|除)?\\s*(\\d+)?$/ 可以匹配像 「加10「、「减20「、「乘30」、「除40「、「加10除2「 这样的算术表达式。

在回调函数中,我们根据匹配的运算符和操作数进行相应的计算,并将结果作为消息发送出去。需要注意的是,这里我们使用了可选的捕获组,因此在处理单个操作数的情况时需要进行判断。

通过正则匹配的强大功能,我们可以灵活地处理各种复杂的消息,实现个性化的交互体验。而将正则匹配与其他功能(如指令系统、数据持久化等)相结合,就能构建出更加强大的应用程序。

`,30)]))}const A=i(n,[["render",p]]);export{y as __pageData,A as default}; diff --git a/assets/guide_base_regexp.md.kd1jlc-g.lean.js b/assets/guide_base_regexp.md.kd1jlc-g.lean.js new file mode 100644 index 00000000..7bdfbf34 --- /dev/null +++ b/assets/guide_base_regexp.md.kd1jlc-g.lean.js @@ -0,0 +1,48 @@ +import{_ as i,c as a,a0 as h,o as k}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"正则匹配","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/regexp.md","filePath":"guide/base/regexp.md","lastUpdated":1723293723000}'),n={name:"guide/base/regexp.md"};function p(t,s,l,e,d,r){return k(),a("div",null,s[0]||(s[0]=[h(`

正则匹配

正则匹配(RegExp) 同样是 Kotori 中一种监听消息事件的语法糖。它的主要用途是通过正则表达式匹配消息内容,然后执行相应的处理逻辑。值得一提的是,正则匹配位于消息事件的最后一环(在中间件和指令之后执行),这意味着只有通过了所有中间件和指令的消息,才会进入正则匹配的环节。

正则匹配依赖于正则表达式的强大功能,可以实现多种匹配模式,例如完全匹配、模糊匹配等,为消息处理提供了更大的灵活性。

注册正则匹配

通过 ctx.regexp() 注册一个正则匹配,该方法接受两个参数:

  1. match: 用于匹配消息内容的正则表达式
  2. callback: 当正则匹配成功时执行的回调函数
typescript
ctx.regexp(/^\\/start$/, (match, session) => {
+  session.send('游戏开始!');
+});

上述代码注册了一个正则匹配,当收到消息内容为 /start 时,它会执行回调函数,并向发送者发送 '游戏开始!' 消息。

callback 函数接收两个参数:

  1. match: 正则匹配结果,是一个数组,第一项为完整匹配结果,后续项为各个捕获组的内容
  2. session: 当前消息事件的上下文信息

在回调函数中,你可以根据匹配结果执行相应的逻辑,回调函数的返回值将作为消息发送的内容。

移除正则匹配

ctx.regexp() 方法的返回值是一个可以用于移除该正则匹配的函数。

typescript
const off = ctx.regexp(/pattern/, () => {
+  /* ... */
+});
+
+// 移除正则匹配
+off();

正则匹配示例

简单匹配

typescript
ctx.regexp(/^\\/echo (.+)$/, (match, session) => {
+  const content = match[1]; // 捕获组内容
+  session.send(content); // 回声匹配消息
+});

上述代码注册了一个正则匹配,用于实现 「/echo」 命令。当收到类似 「/echo 你好」 的消息时,正则会匹配到 你好 并将其作为第一个捕获组,然后在回调函数中将捕获组的内容作为消息发送出去。

复杂匹配

typescript
ctx.regexp(/^((数学|语文|英语)\\b)\\s*(\\d+)$/, (match, session) => {
+  const [, , subject, score] = match;
+  let msg;
+  switch (subject) {
+    case '数学':
+      msg = \`数学 \${score}\`;
+      break;
+    case '语文':
+      msg = \`语文 \${score}\`;
+      break;
+    case '英语':
+      msg = \`英语 \${score}\`;
+      break;
+    default:
+      msg = '不支持的科目';
+  }
+  session.send(msg);
+});

这个例子演示了一个稍微复杂的正则匹配。正则 /^算((数学|语文|英语)\\b)\\s*(\\d+)分$/ 用于匹配像 「算数学98分」、「算 语文80分」 这样的消息。正则中使用了一个命名捕获组 (?<subject>...)(不过这个语法还未被 Node.js 完全支持,因此这里使用了普通的捕获组)。

在回调函数中,我们通过数组解构拿到匹配的学科和分数,然后根据不同的学科返回对应的消息内容。

模糊匹配

typescript
ctx.regexp(/\\s*?/, (match, session) => {
+  session.send('我在这里');
+});

这个例子展示了如何使用正则进行模糊匹配。正则 /在\\s*吗?/ 可以匹配 「在吗」、「在 吗」 以及 「在」 这三种情况。使用 ? 可以使前面的字符或字符组成为可选。

多个匹配

typescript
ctx.regexp(/^(|||)\\s*(\\d+)\\s*(|||)?\\s*(\\d+)?$/, (match, session) => {
+  const [, op1, n1, op2, n2] = match;
+  let result;
+  switch (op1) {
+    case '':
+      result = n2 ? parseInt(n1) + parseInt(n2) : parseInt(n1);
+      break;
+    case '':
+      result = n2 ? parseInt(n1) - parseInt(n2) : -parseInt(n1);
+      break;
+    case '':
+      result = n2 ? parseInt(n1) * parseInt(n2) : parseInt(n1);
+      break;
+    case '':
+      result = n2 ? parseInt(n1) / parseInt(n2) : 1 / parseInt(n1);
+      break;
+  }
+  session.send(\`结果是: \${result}\`);
+});

这个例子展示了如何在一个正则匹配中处理多个匹配情况。正则 /^(加|减|乘|除)\\s*(\\d+)\\s*(加|减|乘|除)?\\s*(\\d+)?$/ 可以匹配像 「加10「、「减20「、「乘30」、「除40「、「加10除2「 这样的算术表达式。

在回调函数中,我们根据匹配的运算符和操作数进行相应的计算,并将结果作为消息发送出去。需要注意的是,这里我们使用了可选的捕获组,因此在处理单个操作数的情况时需要进行判断。

通过正则匹配的强大功能,我们可以灵活地处理各种复杂的消息,实现个性化的交互体验。而将正则匹配与其他功能(如指令系统、数据持久化等)相结合,就能构建出更加强大的应用程序。

`,30)]))}const A=i(n,[["render",p]]);export{y as __pageData,A as default}; diff --git a/assets/guide_components_adapter.md.BkEYU-ym.js b/assets/guide_components_adapter.md.BkEYU-ym.js new file mode 100644 index 00000000..0ef84080 --- /dev/null +++ b/assets/guide_components_adapter.md.BkEYU-ym.js @@ -0,0 +1 @@ +import{_ as t,c as r,j as a,a as o,o as n}from"./chunks/framework.P9qPzDnn.js";const _=JSON.parse('{"title":"实现适配器类","description":"","frontmatter":{},"headers":[],"relativePath":"guide/components/adapter.md","filePath":"guide/components/adapter.md","lastUpdated":1712229374000}'),s={name:"guide/components/adapter.md"};function d(p,e,c,i,l,m){return n(),r("div",null,e[0]||(e[0]=[a("h1",{id:"实现适配器类",tabindex:"-1"},[o("实现适配器类 "),a("a",{class:"header-anchor",href:"#实现适配器类","aria-label":'Permalink to "实现适配器类"'},"​")],-1)]))}const u=t(s,[["render",d]]);export{_ as __pageData,u as default}; diff --git a/assets/guide_components_adapter.md.BkEYU-ym.lean.js b/assets/guide_components_adapter.md.BkEYU-ym.lean.js new file mode 100644 index 00000000..0ef84080 --- /dev/null +++ b/assets/guide_components_adapter.md.BkEYU-ym.lean.js @@ -0,0 +1 @@ +import{_ as t,c as r,j as a,a as o,o as n}from"./chunks/framework.P9qPzDnn.js";const _=JSON.parse('{"title":"实现适配器类","description":"","frontmatter":{},"headers":[],"relativePath":"guide/components/adapter.md","filePath":"guide/components/adapter.md","lastUpdated":1712229374000}'),s={name:"guide/components/adapter.md"};function d(p,e,c,i,l,m){return n(),r("div",null,e[0]||(e[0]=[a("h1",{id:"实现适配器类",tabindex:"-1"},[o("实现适配器类 "),a("a",{class:"header-anchor",href:"#实现适配器类","aria-label":'Permalink to "实现适配器类"'},"​")],-1)]))}const u=t(s,[["render",d]]);export{_ as __pageData,u as default}; diff --git a/assets/guide_components_api.md.CDibfftx.js b/assets/guide_components_api.md.CDibfftx.js new file mode 100644 index 00000000..e6ed07e4 --- /dev/null +++ b/assets/guide_components_api.md.CDibfftx.js @@ -0,0 +1 @@ +import{_ as t,c as o,j as a,a as n,o as r}from"./chunks/framework.P9qPzDnn.js";const _=JSON.parse('{"title":"实现接口类","description":"","frontmatter":{},"headers":[],"relativePath":"guide/components/api.md","filePath":"guide/components/api.md","lastUpdated":1712229374000}'),s={name:"guide/components/api.md"};function i(d,e,p,c,l,m){return r(),o("div",null,e[0]||(e[0]=[a("h1",{id:"实现接口类",tabindex:"-1"},[n("实现接口类 "),a("a",{class:"header-anchor",href:"#实现接口类","aria-label":'Permalink to "实现接口类"'},"​")],-1)]))}const u=t(s,[["render",i]]);export{_ as __pageData,u as default}; diff --git a/assets/guide_components_api.md.CDibfftx.lean.js b/assets/guide_components_api.md.CDibfftx.lean.js new file mode 100644 index 00000000..e6ed07e4 --- /dev/null +++ b/assets/guide_components_api.md.CDibfftx.lean.js @@ -0,0 +1 @@ +import{_ as t,c as o,j as a,a as n,o as r}from"./chunks/framework.P9qPzDnn.js";const _=JSON.parse('{"title":"实现接口类","description":"","frontmatter":{},"headers":[],"relativePath":"guide/components/api.md","filePath":"guide/components/api.md","lastUpdated":1712229374000}'),s={name:"guide/components/api.md"};function i(d,e,p,c,l,m){return r(),o("div",null,e[0]||(e[0]=[a("h1",{id:"实现接口类",tabindex:"-1"},[n("实现接口类 "),a("a",{class:"header-anchor",href:"#实现接口类","aria-label":'Permalink to "实现接口类"'},"​")],-1)]))}const u=t(s,[["render",i]]);export{_ as __pageData,u as default}; diff --git a/assets/guide_components_custom.md.BNIS-43m.js b/assets/guide_components_custom.md.BNIS-43m.js new file mode 100644 index 00000000..62ac9548 --- /dev/null +++ b/assets/guide_components_custom.md.BNIS-43m.js @@ -0,0 +1 @@ +import{_ as a,c as o,j as t,a as s,o as n}from"./chunks/framework.P9qPzDnn.js";const f=JSON.parse('{"title":"自定义服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/components/custom.md","filePath":"guide/components/custom.md","lastUpdated":1712229374000}'),r={name:"guide/components/custom.md"};function c(d,e,i,m,p,l){return n(),o("div",null,e[0]||(e[0]=[t("h1",{id:"自定义服务",tabindex:"-1"},[s("自定义服务 "),t("a",{class:"header-anchor",href:"#自定义服务","aria-label":'Permalink to "自定义服务"'},"​")],-1)]))}const _=a(r,[["render",c]]);export{f as __pageData,_ as default}; diff --git a/assets/guide_components_custom.md.BNIS-43m.lean.js b/assets/guide_components_custom.md.BNIS-43m.lean.js new file mode 100644 index 00000000..62ac9548 --- /dev/null +++ b/assets/guide_components_custom.md.BNIS-43m.lean.js @@ -0,0 +1 @@ +import{_ as a,c as o,j as t,a as s,o as n}from"./chunks/framework.P9qPzDnn.js";const f=JSON.parse('{"title":"自定义服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/components/custom.md","filePath":"guide/components/custom.md","lastUpdated":1712229374000}'),r={name:"guide/components/custom.md"};function c(d,e,i,m,p,l){return n(),o("div",null,e[0]||(e[0]=[t("h1",{id:"自定义服务",tabindex:"-1"},[s("自定义服务 "),t("a",{class:"header-anchor",href:"#自定义服务","aria-label":'Permalink to "自定义服务"'},"​")],-1)]))}const _=a(r,[["render",c]]);export{f as __pageData,_ as default}; diff --git a/assets/guide_components_elements.md.BEJCY6Yx.js b/assets/guide_components_elements.md.BEJCY6Yx.js new file mode 100644 index 00000000..b6c36108 --- /dev/null +++ b/assets/guide_components_elements.md.BEJCY6Yx.js @@ -0,0 +1 @@ +import{_ as a,c as n,j as t,a as s,o}from"./chunks/framework.P9qPzDnn.js";const _=JSON.parse('{"title":"实现元素类","description":"","frontmatter":{},"headers":[],"relativePath":"guide/components/elements.md","filePath":"guide/components/elements.md","lastUpdated":1712229374000}'),r={name:"guide/components/elements.md"};function d(c,e,l,i,m,p){return o(),n("div",null,e[0]||(e[0]=[t("h1",{id:"实现元素类",tabindex:"-1"},[s("实现元素类 "),t("a",{class:"header-anchor",href:"#实现元素类","aria-label":'Permalink to "实现元素类"'},"​")],-1)]))}const u=a(r,[["render",d]]);export{_ as __pageData,u as default}; diff --git a/assets/guide_components_elements.md.BEJCY6Yx.lean.js b/assets/guide_components_elements.md.BEJCY6Yx.lean.js new file mode 100644 index 00000000..b6c36108 --- /dev/null +++ b/assets/guide_components_elements.md.BEJCY6Yx.lean.js @@ -0,0 +1 @@ +import{_ as a,c as n,j as t,a as s,o}from"./chunks/framework.P9qPzDnn.js";const _=JSON.parse('{"title":"实现元素类","description":"","frontmatter":{},"headers":[],"relativePath":"guide/components/elements.md","filePath":"guide/components/elements.md","lastUpdated":1712229374000}'),r={name:"guide/components/elements.md"};function d(c,e,l,i,m,p){return o(),n("div",null,e[0]||(e[0]=[t("h1",{id:"实现元素类",tabindex:"-1"},[s("实现元素类 "),t("a",{class:"header-anchor",href:"#实现元素类","aria-label":'Permalink to "实现元素类"'},"​")],-1)]))}const u=a(r,[["render",d]]);export{_ as __pageData,u as default}; diff --git a/assets/guide_extend_tools.md.C1RkeOP0.js b/assets/guide_extend_tools.md.C1RkeOP0.js new file mode 100644 index 00000000..77d86a04 --- /dev/null +++ b/assets/guide_extend_tools.md.C1RkeOP0.js @@ -0,0 +1 @@ +import{_ as a,c as o,j as t,a as s,o as r}from"./chunks/framework.P9qPzDnn.js";const _=JSON.parse('{"title":"工具函数","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extend/tools.md","filePath":"guide/extend/tools.md","lastUpdated":1707642172000}'),d={name:"guide/extend/tools.md"};function n(l,e,i,c,p,m){return r(),o("div",null,e[0]||(e[0]=[t("h1",{id:"工具函数",tabindex:"-1"},[s("工具函数 "),t("a",{class:"header-anchor",href:"#工具函数","aria-label":'Permalink to "工具函数"'},"​")],-1)]))}const u=a(d,[["render",n]]);export{_ as __pageData,u as default}; diff --git a/assets/guide_extend_tools.md.C1RkeOP0.lean.js b/assets/guide_extend_tools.md.C1RkeOP0.lean.js new file mode 100644 index 00000000..77d86a04 --- /dev/null +++ b/assets/guide_extend_tools.md.C1RkeOP0.lean.js @@ -0,0 +1 @@ +import{_ as a,c as o,j as t,a as s,o as r}from"./chunks/framework.P9qPzDnn.js";const _=JSON.parse('{"title":"工具函数","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extend/tools.md","filePath":"guide/extend/tools.md","lastUpdated":1707642172000}'),d={name:"guide/extend/tools.md"};function n(l,e,i,c,p,m){return r(),o("div",null,e[0]||(e[0]=[t("h1",{id:"工具函数",tabindex:"-1"},[s("工具函数 "),t("a",{class:"header-anchor",href:"#工具函数","aria-label":'Permalink to "工具函数"'},"​")],-1)]))}const u=a(d,[["render",n]]);export{_ as __pageData,u as default}; diff --git a/assets/guide_index.md.CUmZPOqd.js b/assets/guide_index.md.CUmZPOqd.js new file mode 100644 index 00000000..452eeeb9 --- /dev/null +++ b/assets/guide_index.md.CUmZPOqd.js @@ -0,0 +1 @@ +import{_ as t,c as e,a0 as r,o as i}from"./chunks/framework.P9qPzDnn.js";const h=JSON.parse('{"title":"前言","description":"","frontmatter":{},"headers":[],"relativePath":"guide/index.md","filePath":"guide/index.md","lastUpdated":1723293723000}'),o={name:"guide/index.md"};function l(c,a,p,s,n,d){return i(),e("div",null,a[0]||(a[0]=[r('

前言

IMPORTANT

阅读本章前请确保你已阅读完毕 入门教程


WARNING

虽然目前开发文档已涵盖大部分基础内容,但在 v1.6 版本中刚加入的不少新特性并未在文档中更新。

前置要求

  • 拥有一定的 JavaScript 与 Node.js 知识基础。

Kotori 运行于 Node.js 环境,因此开发 Kotori 模块前掌握 JavaScript 与 Node.js 基础内容是必然的。此处推荐几个文档:

基于 TypeScript 与现代化 ECMAScript 开发。

TypeScript 是 JavaScript 的超集,TypeScript 在继承了 JavaScript 全部特性的同时,为弱类型动态语言的 JavaScript 提供了一个独立且强大的类型系统。同时,使用 TypeScript 基本意味着使用 ESModule 与现代化的 JavaScript 语法与规范,这是 Kotori 三大特点之一。理论上在 Kotori 程序的生产环境中可正常运行由 JavaScript 直接编写的模块,但 Kotori 本身便使用 TypeScript 开发,因此更推荐你使用 TypeScript 用于你的模块开发,尽管这并不是必须的。

读后

  • 接口文档 用于全面了解与查阅 Kotori 提供的所有公开 API。
  • 深入了解 Kotori 的开发历程、版本记录、运行流程、设计构思、设计参考等。
',13)]))}const f=t(o,[["render",l]]);export{h as __pageData,f as default}; diff --git a/assets/guide_index.md.CUmZPOqd.lean.js b/assets/guide_index.md.CUmZPOqd.lean.js new file mode 100644 index 00000000..452eeeb9 --- /dev/null +++ b/assets/guide_index.md.CUmZPOqd.lean.js @@ -0,0 +1 @@ +import{_ as t,c as e,a0 as r,o as i}from"./chunks/framework.P9qPzDnn.js";const h=JSON.parse('{"title":"前言","description":"","frontmatter":{},"headers":[],"relativePath":"guide/index.md","filePath":"guide/index.md","lastUpdated":1723293723000}'),o={name:"guide/index.md"};function l(c,a,p,s,n,d){return i(),e("div",null,a[0]||(a[0]=[r('

前言

IMPORTANT

阅读本章前请确保你已阅读完毕 入门教程


WARNING

虽然目前开发文档已涵盖大部分基础内容,但在 v1.6 版本中刚加入的不少新特性并未在文档中更新。

前置要求

  • 拥有一定的 JavaScript 与 Node.js 知识基础。

Kotori 运行于 Node.js 环境,因此开发 Kotori 模块前掌握 JavaScript 与 Node.js 基础内容是必然的。此处推荐几个文档:

基于 TypeScript 与现代化 ECMAScript 开发。

TypeScript 是 JavaScript 的超集,TypeScript 在继承了 JavaScript 全部特性的同时,为弱类型动态语言的 JavaScript 提供了一个独立且强大的类型系统。同时,使用 TypeScript 基本意味着使用 ESModule 与现代化的 JavaScript 语法与规范,这是 Kotori 三大特点之一。理论上在 Kotori 程序的生产环境中可正常运行由 JavaScript 直接编写的模块,但 Kotori 本身便使用 TypeScript 开发,因此更推荐你使用 TypeScript 用于你的模块开发,尽管这并不是必须的。

读后

  • 接口文档 用于全面了解与查阅 Kotori 提供的所有公开 API。
  • 深入了解 Kotori 的开发历程、版本记录、运行流程、设计构思、设计参考等。
',13)]))}const f=t(o,[["render",l]]);export{h as __pageData,f as default}; diff --git a/assets/guide_modules_context.md.CfNIj0Wx.js b/assets/guide_modules_context.md.CfNIj0Wx.js new file mode 100644 index 00000000..35a1e2db --- /dev/null +++ b/assets/guide_modules_context.md.CfNIj0Wx.js @@ -0,0 +1,200 @@ +import{_ as i,c as a,a0 as h,o as n}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"上下文","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/context.md","filePath":"guide/modules/context.md","lastUpdated":1723293723000}'),k={name:"guide/modules/context.md"};function t(p,s,l,e,d,r){return n(),a("div",null,s[0]||(s[0]=[h(`

上下文

上下文(Context) 是整个 Kotori 的核心机制,不仅是 Kotori 模块围绕着上下文实例实现一系列功能,即便是在 Kotori 内部也依赖于上下文实现各组件之间的通信与解耦合,同时也为 Kotori 的扩展提供了可能。犹如一个树根,Kotori 本身在内的各种内容均为其枝干,并通过不同的组合丰富枝干上枝叶的内容,上下文机制充分体现了**依赖注入(Dependency Injection)面向切面编程(Aspect Oriented Programming)**的思想。

注册与获取

上下文实例中包含诸多属性和方法,但绝大部分功能并非来源于上下文本身,而是来源于 Kotori 内部的其它组件。通过 ctx.provide() 可将指定对象注册到当前上下文实例中,并通过 ctx.get() 获取。

typescript
declare class Server {}
+
+const ctx = new Context();
+ctx.provide('config', {
+  port: 3000,
+  host: 'localhost'
+});
+ctx.provide('server', new Server());
+
+const config = ctx.get('config'); // { port: 3000 }
+const server = ctx.get('server'); // Server {}

无论是对象字面量还是实例对象,都可以作为上下文实例的提供者。请注意,此处所有对象均是直接引用并未进行深拷贝。

注入与混合

使用 ctx.inject() 注入指定的已注册到当前上下文实例中的对象,注入后即可在上下文中通过注册名称直接获取到注入的实例,而无需再通过 ctx.get() 获取。

typescript
ctx.provide('config', {
+  port: 3000,
+  host: 'localhost'
+});
+ctx.config.port; // TypeError: Cannot read properties of undefined (reading 'port')
+ctx.inject('config');
+ctx.config.port; // 3000

除了注入外,当只期望目标对象的部分属性或方法被装饰到上下文实例中时,可使用 ctx.mixin()

typescript
ctx.provide('demo', {
+  name: 'hello, kotori!',
+  display() {
+    return this.name;
+  }
+});
+
+ctx.display(); // Uncaught TypeError: ctx.display is not a function
+ctx.mixin('demo', ['display']);
+ctx.display(); // hello, kotori!

相比注入,混合更加颗粒化同时减去不必要的属性访问。无论是注入还是混合,都并非直接对对象进行复制或建立新引用,其通过代理控制对象的每个属性或方法的操作,以便解决在混合后,原对象中 this 指向等问题。

对于上面的演示代码,还可以进一步做一些对开发者友好的工作,凭借 TypeScript 中声明合并的特性,为开发者提供良好的代码补全提示。

typescript
const ctx = new Context();
+
+const config = {
+  /* ... */
+};
+const demo = {
+  /* ... */
+};
+
+declare interface Context {
+  config: typeof config;
+  display: (typeof demo)['display'];
+}
+
+ctx.provide('demo', demo);
+ctx.inject('config');
+
+ctx.provide('demo', config);
+ctx.mixin('demo', ['display']);

继承

此外,通过代理得以实现父子级上下文的概念。如,Kotori 直接给与每个模块的执行主体的上下文实例均为独一无二,它是 Kotori 内部中根上下文实例的子级上下文实例,此外也有部分上下文实例是孙级上下文实例或更深。当访问上下文中的属性或方法时,若当前上下文实例中不存在,则会沿着继承链向上查找,直到根上下文为止,这点与 JavaScript 中原型链的查找方式类似,但原理不同。使用 ctx.extends() 继承当前上下文。

typescript
const ctx = new Context();
+const ctxChild1 = ctx.extends();
+const ctxChild2 = ctx.extends();
+
+ctx.provide('data1', { value: 1 });
+ctx.inject('data1');
+ctx.data1.value; // 1
+ctxChild1.data1.value; // 1
+
+ctxChild1.provide('data2', { value: 2 });
+ctxChild1.inject('data2');
+ctx.data2; // undefined
+ctxChild1.data2.value; // 2
+
+ctxChild2.provide('data3', { value: 3 });
+ctxChild2.inject('data3');
+ctx.data3; // undefined
+ctxChild1.data3; // undefined
+ctxChild2.data3.value; // 3

可见,上下文继承后具有相对隔离性,对于子级上下文来说,只能访问自己父级上下文中注册的对象(即便是在自己被继承后注册的),而不能访问非自己父级上下文和其它子级上下文中注册的对象。而父级上下文也只能往上获取,无法往下获取自己子级上下文单独注册的对象。

typescript
const ctx = new Context();
+const ctxChild1 = ctx.extends();
+const ctxChild2 = ctx.extends({meta: 'some meta data', 'child2'});
+
+ctx.meta; // undefined
+ctxChild1.meta; // undefined
+ctxChild2.meta; //'some meta data'
+
+ctx.identity; // undefined
+ctxChild1.identity; // 'sub'
+ctxChild2.identity; // 'child2'

在继承时,可传入两个可选参数用于标记新的子级上下文实例,第一个参数类型为对象,作用效果类似于将对象注册后并将对象上所有属性执行 ctx.mixin(),但原理并不同,可用作传入一些子级上下文必要的元数据信息。第二个参数类型为字符串,为该子级上下文实例设置唯一标识符。对于根上下文实例而言,其标识符为 undefined,对于未设置标识符的子级上下文实例,其标识符为 'sub'

typescript
const ctx = new Context();
+const ctxChild1 = ctx.extends();
+const ctxChild2 = ctx.extends();
+const ctxChild3 = ctxChild1.extends();
+
+ctx.root === ctx; // true
+ctxChild1.root === ctxChild1 || ctxChild1.root === ctxChild2; // false
+ctxChild1.root === ctx && ctxChild2.root === ctx; // true
+ctxChild3.root === ctxChild1; // false
+ctxChild3.root === ctx; // true

通过 ctx.root 属性可获取当前上下文的根上下文实例,无论是子级上下文 ctxChild1ctxChild2,还是继承了 ctxChild1 的孙级上下文 ctxChild3,其根上下文实例均指向 ctx,而根上下午实例的 ctx.root 指向自身。

事件系统

以上内容均由最初的 Context 类定义,通过类原生的继承方式和 ctx.inject()ctx.mixin() 等方法对 Context 进行装饰或扩展。而在 Context 类内部,它本身就已为自己注册并注入了两个实例对象,其一便是事件系统,这也是在第二章中介绍事件系统时说道「事件订阅者模式与事件系统共同构成了 Kotori 的基础」的原由,只不过 Context 类本身并未使用事件系统功能,且仅直接定义了 readydispose 事件,两者被作为整个程序生命周期的重要一环,其余事件由另一实例对象(见下文)或 Kotori 核心类定义。

插件系统

其二便是插件系统,它定义了 ready_moduledispose_module 事件。在上一节说过「在真正学习到上下文之前,可暂且默认插件等同于模块」,而现在你将会对「插件」有更深的认知。

通过 ctx.load() 加载插件并触发 ready_module 事件,且 ready_module 事件在插件加载完毕后触发。

typescript
/* types */
+type ModuleInstanceClass = new (ctx: Context, config: ModuleConfig) => void;
+type ModuleInstanceFunction = (ctx: Context, config: ModuleConfig) => void;
+
+interface ModuleExport {
+  name?: string;
+  main?: ModuleInstanceFunction;
+  Main?: ModuleInstanceClass;
+  default?: ModuleInstanceFunction | ModuleInstanceClass;
+  inject?: string[];
+  config?: ModuleConfig;
+}
+
+interface EventDataModule {
+  instance: ModuleExport | string | ModuleInstanceFunction | ModuleInstanceClass;
+}
+
+/* index.ts */
+function plugin1(ctx: Context) {
+  ctx.logger.debug('plugin1 loaded');
+}
+
+export function main(ctx: Context) {
+  // output: module(main plugin) loaded
+  ctx.on('read_module', (data: EventDataModule) => {
+    if (data.instance === main) ctx.logger.debug('module(main plugin) loaded');
+    else if (data.instance === plugin1) ctx.logger.debug('plugin1(sub plugin) loaded');
+  });
+  ctx.load(plugin1); // output: plugin1(sub plugin) loaded
+}

ctx.load() 支持四种参数形式,最常用的是直接传入执行主体函数(ModuleInstanceFunction),此外也可以通过传入执行主体类(ModuleInstanceClass),亦或你想为子插件传入配置或注册依赖等也可使用导出对象形式(ModuleExport):

typescript
interface SubConfig {
+  port: number;
+}
+
+export function main(ctx: Context) {
+  ctx.load(
+    class {
+      public constructor(private subCtx: Context) {}
+    }
+  );
+  ctx.load({
+    config: { port: 3000 },
+    main: (subCtx: Context, cfg: SubConfig) => {}
+  });
+}

导出对象形式与模块入口文件的导出是一致的。在 Kotori 内部,由加载器自动加载所有的模块入口文件进行预处理,然后转接给此处的 ctx.load() 进行调用执行主体。不同的是,此处可以定义 name 属性用于标记插件的名称,这将作用于该插件的上下文实例的 ctx.identity 中,而模块中的 ctx.identity 由加载器通过 package.json 中的包名自动获取。即便是子插件,它的上下文实例与配置数据也是完全独立,区别在于模块(由加载器加载)的上下文实例继承自 Kotori 内部中的根上下文实例,而子插件的上下文实例继承于当前模块的上下文实例,以此类推。入口文件中导出的 config 是一个配置检测者,加载器会调用它来验证 kotori.toml 中相应的实际配置数据是否符合要求,符合则将替换 config 为实际数据再传入 ctx.load() 作后续处理,在模块中执行 ctx.load(),其配置数据拥有确定性(指由开发者保证,与 Kotori 无关),因此要求此处直接传入配置数据。

toml
[plugin.my-project]
+value = 'here is a string'
typescript
export const config = Tsu.Object({
+  value: Tsu.String()
+});
+
+export function main(ctx: Context, cfg: Tsu.infer<typeof config>) {
+  ctx.logger.debug(ctx.identity, cfg.value); // my-project here is a string
+  const subCfg = {
+    value: 233
+  }
+  ctx.load({
+    name: 'plugin1',
+    main: (subCtx: Context, cfg: typeof 233) => {
+      subCtx.logger.debug(subCtx.identity, cfg.value); // plugin1 233
+    }
+  });
+}

子插件与当前模块的上下文实例完全独立,具有隔离性,由此可通过这一点做一些需要隔离的操作:

typescript
export const inject = [];
+
+export function main(ctx: Context) {
+  ctx.load({
+    name: 'plugin1',
+    inject: ['database']
+    main: (subCtx: Context) => {
+      /* ctx.database... */
+    }
+  });
+  ctx.logger.debug(ctx.database) // undefined
+}

上述代码加载了一个依赖 database 服务的子插件,便可在其内部进行调用数据库操作,而在外层的模块中,并未依赖因此无法使用 ctx.database 属性。

当然你也可以指定多个函数主体,这将会验证上一节所讲的执行主体的识别顺序,因此这只会执行其中一个:

typescript
export function main(ctx: Context) {
+  ctx.load({
+    name: 'plugin1',
+    main: (subCtx: Context) => {
+     subCtx.logger.debug('will not be loaded');
+    },
+    Main: class {
+     constructor(subCtx: Context) {
+      subCtx.logger.debug('will not be loaded');
+  }
+    },
+    default: (subCtx: Context) => {
+     subCtx.logger.deug('will be loaded');
+    }    
+  });
+}

此外,也可以外层调用 CommonJS 规范的 require() 或 ESModule 规范的 import() 方法,两个方法将会返回动态导入文件的导出对象,区别在于前者是同步执行后者为异步执行,这将间接实现动态导入并加载外部 TypeScript/JavaScript 文件的插件。

typescript
/** File structures
+ * src
+ * * index.ts
+ * * plugin.ts
+*/
+
+export async function main(ctx: Context) {
+ // Wrong way of writing
+ ctx.load(require('./plugin.js'));
+ // or:
+ ctx.load(await import('./plugin.ts'));
+ 
+ // Correct but not perfect writing
+ const file = \`./plugin.\${ctx.options.mode === 'dev' ? '.ts' : '.js'}\`;
+ ctx.load(require(file));
+ // or:
+ ctx.load(await import(file)); 
+}

[!WARN] 请慎重并正确使用该操作,绝对不可直接导入 .ts.js 后缀的路径

因 Kotori 运行模式不同,直接导入带后缀的路径并不可取。在开发模式中,Kotori v1.5.0 及以上版本通过 tsx 运行,同时支持 TS/JS 文件,在 v1.5.0 以下版本通过 ts-node 运行,仅支持 TS 文件;在生产模式中,通过 Node.js 运行,仅支持 JS 文件。因此,为使你的模块更加坚固,考虑并适配不同情况是必要的。在上述代码中,通过上下文实例获取到当前运行模式以返回不同的文件扩展名动态导入,但这并不完全可靠和优雅。

typescript
/** File structures
+ * src
+ * * index.ts
+ * * plugin
+ * * * index.ts
+*/
+
+import type { Context } from 'kotori-bot';
+import { resolve } from 'node:path';
+
+export function main(ctx: Context) {
+ ctx.load(require(resolve('./plugin')));
+ // Async version which better handled
+ import(resolve('./plugin'))
+   .then((plugin) => ctx.load(plugin))
+   .catch((err) => ctx.logger.error('Error in dynamic import plugin!', err));
+ 
+}

在这一版中,通过改变文件目录结构并利用入口文件特性,以直接减少代码中多余的判断逻辑,并且通过 node:path 模块将输入路径处理成绝对路径。此外,在使用 import() 时进行异步处理与错误捕获,而非使用 await 关键字进行同步操作。对于两种方式,优缺点请自行甄别与选择使用,但值得一提的是,Kotori 加载器(@kotori-bbot/loader)在实现自动加载目录下所有有效 npm 模块时,为杜绝异步操作的传染性,因而选择 require() 实现。

`,44)]))}const A=i(k,[["render",t]]);export{y as __pageData,A as default}; diff --git a/assets/guide_modules_context.md.CfNIj0Wx.lean.js b/assets/guide_modules_context.md.CfNIj0Wx.lean.js new file mode 100644 index 00000000..35a1e2db --- /dev/null +++ b/assets/guide_modules_context.md.CfNIj0Wx.lean.js @@ -0,0 +1,200 @@ +import{_ as i,c as a,a0 as h,o as n}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"上下文","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/context.md","filePath":"guide/modules/context.md","lastUpdated":1723293723000}'),k={name:"guide/modules/context.md"};function t(p,s,l,e,d,r){return n(),a("div",null,s[0]||(s[0]=[h(`

上下文

上下文(Context) 是整个 Kotori 的核心机制,不仅是 Kotori 模块围绕着上下文实例实现一系列功能,即便是在 Kotori 内部也依赖于上下文实现各组件之间的通信与解耦合,同时也为 Kotori 的扩展提供了可能。犹如一个树根,Kotori 本身在内的各种内容均为其枝干,并通过不同的组合丰富枝干上枝叶的内容,上下文机制充分体现了**依赖注入(Dependency Injection)面向切面编程(Aspect Oriented Programming)**的思想。

注册与获取

上下文实例中包含诸多属性和方法,但绝大部分功能并非来源于上下文本身,而是来源于 Kotori 内部的其它组件。通过 ctx.provide() 可将指定对象注册到当前上下文实例中,并通过 ctx.get() 获取。

typescript
declare class Server {}
+
+const ctx = new Context();
+ctx.provide('config', {
+  port: 3000,
+  host: 'localhost'
+});
+ctx.provide('server', new Server());
+
+const config = ctx.get('config'); // { port: 3000 }
+const server = ctx.get('server'); // Server {}

无论是对象字面量还是实例对象,都可以作为上下文实例的提供者。请注意,此处所有对象均是直接引用并未进行深拷贝。

注入与混合

使用 ctx.inject() 注入指定的已注册到当前上下文实例中的对象,注入后即可在上下文中通过注册名称直接获取到注入的实例,而无需再通过 ctx.get() 获取。

typescript
ctx.provide('config', {
+  port: 3000,
+  host: 'localhost'
+});
+ctx.config.port; // TypeError: Cannot read properties of undefined (reading 'port')
+ctx.inject('config');
+ctx.config.port; // 3000

除了注入外,当只期望目标对象的部分属性或方法被装饰到上下文实例中时,可使用 ctx.mixin()

typescript
ctx.provide('demo', {
+  name: 'hello, kotori!',
+  display() {
+    return this.name;
+  }
+});
+
+ctx.display(); // Uncaught TypeError: ctx.display is not a function
+ctx.mixin('demo', ['display']);
+ctx.display(); // hello, kotori!

相比注入,混合更加颗粒化同时减去不必要的属性访问。无论是注入还是混合,都并非直接对对象进行复制或建立新引用,其通过代理控制对象的每个属性或方法的操作,以便解决在混合后,原对象中 this 指向等问题。

对于上面的演示代码,还可以进一步做一些对开发者友好的工作,凭借 TypeScript 中声明合并的特性,为开发者提供良好的代码补全提示。

typescript
const ctx = new Context();
+
+const config = {
+  /* ... */
+};
+const demo = {
+  /* ... */
+};
+
+declare interface Context {
+  config: typeof config;
+  display: (typeof demo)['display'];
+}
+
+ctx.provide('demo', demo);
+ctx.inject('config');
+
+ctx.provide('demo', config);
+ctx.mixin('demo', ['display']);

继承

此外,通过代理得以实现父子级上下文的概念。如,Kotori 直接给与每个模块的执行主体的上下文实例均为独一无二,它是 Kotori 内部中根上下文实例的子级上下文实例,此外也有部分上下文实例是孙级上下文实例或更深。当访问上下文中的属性或方法时,若当前上下文实例中不存在,则会沿着继承链向上查找,直到根上下文为止,这点与 JavaScript 中原型链的查找方式类似,但原理不同。使用 ctx.extends() 继承当前上下文。

typescript
const ctx = new Context();
+const ctxChild1 = ctx.extends();
+const ctxChild2 = ctx.extends();
+
+ctx.provide('data1', { value: 1 });
+ctx.inject('data1');
+ctx.data1.value; // 1
+ctxChild1.data1.value; // 1
+
+ctxChild1.provide('data2', { value: 2 });
+ctxChild1.inject('data2');
+ctx.data2; // undefined
+ctxChild1.data2.value; // 2
+
+ctxChild2.provide('data3', { value: 3 });
+ctxChild2.inject('data3');
+ctx.data3; // undefined
+ctxChild1.data3; // undefined
+ctxChild2.data3.value; // 3

可见,上下文继承后具有相对隔离性,对于子级上下文来说,只能访问自己父级上下文中注册的对象(即便是在自己被继承后注册的),而不能访问非自己父级上下文和其它子级上下文中注册的对象。而父级上下文也只能往上获取,无法往下获取自己子级上下文单独注册的对象。

typescript
const ctx = new Context();
+const ctxChild1 = ctx.extends();
+const ctxChild2 = ctx.extends({meta: 'some meta data', 'child2'});
+
+ctx.meta; // undefined
+ctxChild1.meta; // undefined
+ctxChild2.meta; //'some meta data'
+
+ctx.identity; // undefined
+ctxChild1.identity; // 'sub'
+ctxChild2.identity; // 'child2'

在继承时,可传入两个可选参数用于标记新的子级上下文实例,第一个参数类型为对象,作用效果类似于将对象注册后并将对象上所有属性执行 ctx.mixin(),但原理并不同,可用作传入一些子级上下文必要的元数据信息。第二个参数类型为字符串,为该子级上下文实例设置唯一标识符。对于根上下文实例而言,其标识符为 undefined,对于未设置标识符的子级上下文实例,其标识符为 'sub'

typescript
const ctx = new Context();
+const ctxChild1 = ctx.extends();
+const ctxChild2 = ctx.extends();
+const ctxChild3 = ctxChild1.extends();
+
+ctx.root === ctx; // true
+ctxChild1.root === ctxChild1 || ctxChild1.root === ctxChild2; // false
+ctxChild1.root === ctx && ctxChild2.root === ctx; // true
+ctxChild3.root === ctxChild1; // false
+ctxChild3.root === ctx; // true

通过 ctx.root 属性可获取当前上下文的根上下文实例,无论是子级上下文 ctxChild1ctxChild2,还是继承了 ctxChild1 的孙级上下文 ctxChild3,其根上下文实例均指向 ctx,而根上下午实例的 ctx.root 指向自身。

事件系统

以上内容均由最初的 Context 类定义,通过类原生的继承方式和 ctx.inject()ctx.mixin() 等方法对 Context 进行装饰或扩展。而在 Context 类内部,它本身就已为自己注册并注入了两个实例对象,其一便是事件系统,这也是在第二章中介绍事件系统时说道「事件订阅者模式与事件系统共同构成了 Kotori 的基础」的原由,只不过 Context 类本身并未使用事件系统功能,且仅直接定义了 readydispose 事件,两者被作为整个程序生命周期的重要一环,其余事件由另一实例对象(见下文)或 Kotori 核心类定义。

插件系统

其二便是插件系统,它定义了 ready_moduledispose_module 事件。在上一节说过「在真正学习到上下文之前,可暂且默认插件等同于模块」,而现在你将会对「插件」有更深的认知。

通过 ctx.load() 加载插件并触发 ready_module 事件,且 ready_module 事件在插件加载完毕后触发。

typescript
/* types */
+type ModuleInstanceClass = new (ctx: Context, config: ModuleConfig) => void;
+type ModuleInstanceFunction = (ctx: Context, config: ModuleConfig) => void;
+
+interface ModuleExport {
+  name?: string;
+  main?: ModuleInstanceFunction;
+  Main?: ModuleInstanceClass;
+  default?: ModuleInstanceFunction | ModuleInstanceClass;
+  inject?: string[];
+  config?: ModuleConfig;
+}
+
+interface EventDataModule {
+  instance: ModuleExport | string | ModuleInstanceFunction | ModuleInstanceClass;
+}
+
+/* index.ts */
+function plugin1(ctx: Context) {
+  ctx.logger.debug('plugin1 loaded');
+}
+
+export function main(ctx: Context) {
+  // output: module(main plugin) loaded
+  ctx.on('read_module', (data: EventDataModule) => {
+    if (data.instance === main) ctx.logger.debug('module(main plugin) loaded');
+    else if (data.instance === plugin1) ctx.logger.debug('plugin1(sub plugin) loaded');
+  });
+  ctx.load(plugin1); // output: plugin1(sub plugin) loaded
+}

ctx.load() 支持四种参数形式,最常用的是直接传入执行主体函数(ModuleInstanceFunction),此外也可以通过传入执行主体类(ModuleInstanceClass),亦或你想为子插件传入配置或注册依赖等也可使用导出对象形式(ModuleExport):

typescript
interface SubConfig {
+  port: number;
+}
+
+export function main(ctx: Context) {
+  ctx.load(
+    class {
+      public constructor(private subCtx: Context) {}
+    }
+  );
+  ctx.load({
+    config: { port: 3000 },
+    main: (subCtx: Context, cfg: SubConfig) => {}
+  });
+}

导出对象形式与模块入口文件的导出是一致的。在 Kotori 内部,由加载器自动加载所有的模块入口文件进行预处理,然后转接给此处的 ctx.load() 进行调用执行主体。不同的是,此处可以定义 name 属性用于标记插件的名称,这将作用于该插件的上下文实例的 ctx.identity 中,而模块中的 ctx.identity 由加载器通过 package.json 中的包名自动获取。即便是子插件,它的上下文实例与配置数据也是完全独立,区别在于模块(由加载器加载)的上下文实例继承自 Kotori 内部中的根上下文实例,而子插件的上下文实例继承于当前模块的上下文实例,以此类推。入口文件中导出的 config 是一个配置检测者,加载器会调用它来验证 kotori.toml 中相应的实际配置数据是否符合要求,符合则将替换 config 为实际数据再传入 ctx.load() 作后续处理,在模块中执行 ctx.load(),其配置数据拥有确定性(指由开发者保证,与 Kotori 无关),因此要求此处直接传入配置数据。

toml
[plugin.my-project]
+value = 'here is a string'
typescript
export const config = Tsu.Object({
+  value: Tsu.String()
+});
+
+export function main(ctx: Context, cfg: Tsu.infer<typeof config>) {
+  ctx.logger.debug(ctx.identity, cfg.value); // my-project here is a string
+  const subCfg = {
+    value: 233
+  }
+  ctx.load({
+    name: 'plugin1',
+    main: (subCtx: Context, cfg: typeof 233) => {
+      subCtx.logger.debug(subCtx.identity, cfg.value); // plugin1 233
+    }
+  });
+}

子插件与当前模块的上下文实例完全独立,具有隔离性,由此可通过这一点做一些需要隔离的操作:

typescript
export const inject = [];
+
+export function main(ctx: Context) {
+  ctx.load({
+    name: 'plugin1',
+    inject: ['database']
+    main: (subCtx: Context) => {
+      /* ctx.database... */
+    }
+  });
+  ctx.logger.debug(ctx.database) // undefined
+}

上述代码加载了一个依赖 database 服务的子插件,便可在其内部进行调用数据库操作,而在外层的模块中,并未依赖因此无法使用 ctx.database 属性。

当然你也可以指定多个函数主体,这将会验证上一节所讲的执行主体的识别顺序,因此这只会执行其中一个:

typescript
export function main(ctx: Context) {
+  ctx.load({
+    name: 'plugin1',
+    main: (subCtx: Context) => {
+     subCtx.logger.debug('will not be loaded');
+    },
+    Main: class {
+     constructor(subCtx: Context) {
+      subCtx.logger.debug('will not be loaded');
+  }
+    },
+    default: (subCtx: Context) => {
+     subCtx.logger.deug('will be loaded');
+    }    
+  });
+}

此外,也可以外层调用 CommonJS 规范的 require() 或 ESModule 规范的 import() 方法,两个方法将会返回动态导入文件的导出对象,区别在于前者是同步执行后者为异步执行,这将间接实现动态导入并加载外部 TypeScript/JavaScript 文件的插件。

typescript
/** File structures
+ * src
+ * * index.ts
+ * * plugin.ts
+*/
+
+export async function main(ctx: Context) {
+ // Wrong way of writing
+ ctx.load(require('./plugin.js'));
+ // or:
+ ctx.load(await import('./plugin.ts'));
+ 
+ // Correct but not perfect writing
+ const file = \`./plugin.\${ctx.options.mode === 'dev' ? '.ts' : '.js'}\`;
+ ctx.load(require(file));
+ // or:
+ ctx.load(await import(file)); 
+}

[!WARN] 请慎重并正确使用该操作,绝对不可直接导入 .ts.js 后缀的路径

因 Kotori 运行模式不同,直接导入带后缀的路径并不可取。在开发模式中,Kotori v1.5.0 及以上版本通过 tsx 运行,同时支持 TS/JS 文件,在 v1.5.0 以下版本通过 ts-node 运行,仅支持 TS 文件;在生产模式中,通过 Node.js 运行,仅支持 JS 文件。因此,为使你的模块更加坚固,考虑并适配不同情况是必要的。在上述代码中,通过上下文实例获取到当前运行模式以返回不同的文件扩展名动态导入,但这并不完全可靠和优雅。

typescript
/** File structures
+ * src
+ * * index.ts
+ * * plugin
+ * * * index.ts
+*/
+
+import type { Context } from 'kotori-bot';
+import { resolve } from 'node:path';
+
+export function main(ctx: Context) {
+ ctx.load(require(resolve('./plugin')));
+ // Async version which better handled
+ import(resolve('./plugin'))
+   .then((plugin) => ctx.load(plugin))
+   .catch((err) => ctx.logger.error('Error in dynamic import plugin!', err));
+ 
+}

在这一版中,通过改变文件目录结构并利用入口文件特性,以直接减少代码中多余的判断逻辑,并且通过 node:path 模块将输入路径处理成绝对路径。此外,在使用 import() 时进行异步处理与错误捕获,而非使用 await 关键字进行同步操作。对于两种方式,优缺点请自行甄别与选择使用,但值得一提的是,Kotori 加载器(@kotori-bbot/loader)在实现自动加载目录下所有有效 npm 模块时,为杜绝异步操作的传染性,因而选择 require() 实现。

`,44)]))}const A=i(k,[["render",t]]);export{y as __pageData,A as default}; diff --git a/assets/guide_modules_decorator.md.DZm9Jfnd.js b/assets/guide_modules_decorator.md.DZm9Jfnd.js new file mode 100644 index 00000000..db0c03fe --- /dev/null +++ b/assets/guide_modules_decorator.md.DZm9Jfnd.js @@ -0,0 +1 @@ +import{_ as t,c as r,j as a,a as o,o as d}from"./chunks/framework.P9qPzDnn.js";const f=JSON.parse('{"title":"装饰器","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/decorator.md","filePath":"guide/modules/decorator.md","lastUpdated":1724729588000}'),s={name:"guide/modules/decorator.md"};function c(n,e,i,l,m,p){return d(),r("div",null,e[0]||(e[0]=[a("h1",{id:"装饰器",tabindex:"-1"},[o("装饰器 "),a("a",{class:"header-anchor",href:"#装饰器","aria-label":'Permalink to "装饰器"'},"​")],-1)]))}const _=t(s,[["render",c]]);export{f as __pageData,_ as default}; diff --git a/assets/guide_modules_decorator.md.DZm9Jfnd.lean.js b/assets/guide_modules_decorator.md.DZm9Jfnd.lean.js new file mode 100644 index 00000000..db0c03fe --- /dev/null +++ b/assets/guide_modules_decorator.md.DZm9Jfnd.lean.js @@ -0,0 +1 @@ +import{_ as t,c as r,j as a,a as o,o as d}from"./chunks/framework.P9qPzDnn.js";const f=JSON.parse('{"title":"装饰器","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/decorator.md","filePath":"guide/modules/decorator.md","lastUpdated":1724729588000}'),s={name:"guide/modules/decorator.md"};function c(n,e,i,l,m,p){return d(),r("div",null,e[0]||(e[0]=[a("h1",{id:"装饰器",tabindex:"-1"},[o("装饰器 "),a("a",{class:"header-anchor",href:"#装饰器","aria-label":'Permalink to "装饰器"'},"​")],-1)]))}const _=t(s,[["render",c]]);export{f as __pageData,_ as default}; diff --git a/assets/guide_modules_filter.md.B6ZA5MSX.js b/assets/guide_modules_filter.md.B6ZA5MSX.js new file mode 100644 index 00000000..fadea90b --- /dev/null +++ b/assets/guide_modules_filter.md.B6ZA5MSX.js @@ -0,0 +1 @@ +import{_ as a,c as r,j as t,a as s,o}from"./chunks/framework.P9qPzDnn.js";const u=JSON.parse('{"title":"滤器","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/filter.md","filePath":"guide/modules/filter.md","lastUpdated":1723293723000}'),d={name:"guide/modules/filter.md"};function i(l,e,n,c,f,m){return o(),r("div",null,e[0]||(e[0]=[t("h1",{id:"滤器",tabindex:"-1"},[s("滤器 "),t("a",{class:"header-anchor",href:"#滤器","aria-label":'Permalink to "滤器"'},"​")],-1)]))}const _=a(d,[["render",i]]);export{u as __pageData,_ as default}; diff --git a/assets/guide_modules_filter.md.B6ZA5MSX.lean.js b/assets/guide_modules_filter.md.B6ZA5MSX.lean.js new file mode 100644 index 00000000..fadea90b --- /dev/null +++ b/assets/guide_modules_filter.md.B6ZA5MSX.lean.js @@ -0,0 +1 @@ +import{_ as a,c as r,j as t,a as s,o}from"./chunks/framework.P9qPzDnn.js";const u=JSON.parse('{"title":"滤器","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/filter.md","filePath":"guide/modules/filter.md","lastUpdated":1723293723000}'),d={name:"guide/modules/filter.md"};function i(l,e,n,c,f,m){return o(),r("div",null,e[0]||(e[0]=[t("h1",{id:"滤器",tabindex:"-1"},[s("滤器 "),t("a",{class:"header-anchor",href:"#滤器","aria-label":'Permalink to "滤器"'},"​")],-1)]))}const _=a(d,[["render",i]]);export{u as __pageData,_ as default}; diff --git a/assets/guide_modules_i18n.md.DN93rR3l.js b/assets/guide_modules_i18n.md.DN93rR3l.js new file mode 100644 index 00000000..21e13fee --- /dev/null +++ b/assets/guide_modules_i18n.md.DN93rR3l.js @@ -0,0 +1 @@ +import{_ as t,c as r,j as a,a as s,o}from"./chunks/framework.P9qPzDnn.js";const f=JSON.parse('{"title":"国际化","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/i18n.md","filePath":"guide/modules/i18n.md","lastUpdated":1712229374000}'),d={name:"guide/modules/i18n.md"};function n(i,e,l,c,m,p){return o(),r("div",null,e[0]||(e[0]=[a("h1",{id:"国际化",tabindex:"-1"},[s("国际化 "),a("a",{class:"header-anchor",href:"#国际化","aria-label":'Permalink to "国际化"'},"​")],-1)]))}const _=t(d,[["render",n]]);export{f as __pageData,_ as default}; diff --git a/assets/guide_modules_i18n.md.DN93rR3l.lean.js b/assets/guide_modules_i18n.md.DN93rR3l.lean.js new file mode 100644 index 00000000..21e13fee --- /dev/null +++ b/assets/guide_modules_i18n.md.DN93rR3l.lean.js @@ -0,0 +1 @@ +import{_ as t,c as r,j as a,a as s,o}from"./chunks/framework.P9qPzDnn.js";const f=JSON.parse('{"title":"国际化","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/i18n.md","filePath":"guide/modules/i18n.md","lastUpdated":1712229374000}'),d={name:"guide/modules/i18n.md"};function n(i,e,l,c,m,p){return o(),r("div",null,e[0]||(e[0]=[a("h1",{id:"国际化",tabindex:"-1"},[s("国际化 "),a("a",{class:"header-anchor",href:"#国际化","aria-label":'Permalink to "国际化"'},"​")],-1)]))}const _=t(d,[["render",n]]);export{f as __pageData,_ as default}; diff --git a/assets/guide_modules_plugin.md.F2YmqKkM.js b/assets/guide_modules_plugin.md.F2YmqKkM.js new file mode 100644 index 00000000..27eae13a --- /dev/null +++ b/assets/guide_modules_plugin.md.F2YmqKkM.js @@ -0,0 +1,176 @@ +import{_ as i,c as a,a0 as n,o as h}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"模块与插件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/plugin.md","filePath":"guide/modules/plugin.md","lastUpdated":1723293723000}'),k={name:"guide/modules/plugin.md"};function t(l,s,p,e,d,r){return h(),a("div",null,s[0]||(s[0]=[n(`

模块与插件

前言

恭喜你,只要学习完本章你将成为一名合格的「Kotori Developer」!在本章将围绕 Kotori 中最重要的概念「上下文」为你讲解一系列模块化内容。

package.json 规范

插件(Plugin) 是 Kotori 中的最小运行实例,它是模块的真子集,在真正学习到上下文之前,可暂且默认插件等同于模块。在第一章里你已通过 Cli 初步创建了一个 Kotori 模块工程,但那并不是最小的有效模块,现在,让一切重零开始。

这是一个最小且有效的 package.json 例子:

json
{
+  "name": "kotori-plugin-my-project",
+  "version": "1.0.0",
+  "description": "This is my first Kotori plugin",
+  "main": "lib/index.js",
+  "keywords": ["kotori", "chatbot", "kotori-plugin"],
+  "license": "GPL-3.0",
+  "files": ["lib", "locales", "LICENSE", "README.md"],
+  "author": "Himeno",
+  "peerDependencies": {
+    "kotori-bot": "^1.3.0"
+  }
+}

TIP

请不要模仿,package.json 应附有更详尽的包信息。

一个对于 Kotori 而言合法的 package.json 的类型信息大概是这样子:

typescript
interface ModulePackage {
+  name: string;
+  version: string;
+  description: string;
+  main: string;
+  license: 'GPL-3.0';
+  keywords: string[];
+  author: string | string[];
+  peerDependencies: Record<string, string>;
+  kotori?: {
+    enforce?: 'pre' | 'post';
+    meta?: {
+      language?: 'en_US' | 'ja_JP' | 'zh_TW' | 'zh_CN';
+    };
+  };
+}

但仅以 TypeScript 形式展现并不够全面,因为除此之外 Kotori 对合法的 package.json 有以下特殊要求:

  • name 必须满足 /kotori-plugin-[a-z]([a-z,0-9]{2,13})\\b/,即以「kotori-plugin-」加一个小写字母开头,后接 2 ~ 13 个 小写字母与数字的组合
  • license 必须为 'GPL-3.0',因为 Kotori 本身即使用的 GPL-3.0 协议
  • keywords 中必须含有 'kotori''chatbot''kotori-plugin' 三个值,主要是为了 npm 包统计考虑
  • peerDependencies 中必须含有名为 'kotori-bot' 的键,具体作用请参考 Peer Dependencies

对于包名,除去普通模块以外,往往会有一些非强制性规范的特殊值:

  • kotori-plugin-adapter-xxx 表示适配器服务
  • kotori-plugin-database 表示数据库

元数据信息

在上面例子中,可能你已注意到除了常规的属性以外,还有一个为 kotori 的属性,其会被 Kotori 读取用作模块的额外信息,目前其中仅有 meta 一个属性,meta 之下有两个属性:

  • enforce 模块加载顺序,对于某些前置性模块和自定义服务模块可能有用,Kotori 模块加载顺序:数据库服务 > 适配器服务 > 核心模块(模块列表请查看 Kotori 源码)> 'pre' > undefined > 'post'
  • language 模块加载列表,若为 undefined[] 则表示支持所有语言或无文字内容

入口文件

一般地,使用 src/index.ts 作为默认入口文件,最终将由 tsc 或其它的打包工具编译成 lib/index.js。以下是一个最基础的入口文件示例:

typescript
import { Context } from 'kotori-bot';
+
+export function main(ctx: Context) {}

入口文件一般导出一个名为 main() 的函数,接收一个 Context 实例作为参数,诸如之前介绍的事件系统、指令、中间件、正则匹配等功能均是在其上进行的操作。除此之外,入口文件还可以导出一些其他的变量,供其他模块调用。

注册国际化文件目录

typescript
import { join } from 'path';
+import { Context } from 'kotori-bot';
+
+export function main(ctx: Context) {
+  ctx.i18n.use(join(__dirname, '../locales'));
+}

国际化文件目录(一般为 ../locales 文件夹)下有多份多个语言文件(一般为 json 文件)

此处在 main() 被调用后通过执行 ctx.i18n.use() 方法注册了当前模块的国际化文件目录,出于目录路径位置原因,此处还用到了 Node.js 内置的 path 模块的方法,但如果每个模块都需要这样做就很繁琐,Kotori 为此提供了语法糖:

typescript
import { Context } from 'kotori-bot';
+
+export const lang = [__dirname, '../locales'];
+// equal to: export const lang = path.join(__dirname, '../locales');
+
+export function main(ctx: Context) {}

在入口文件中导出一个 lang 变量,使得 Kotori 在加载模块执行 main() 之前自动通过该变量注册国际化文件目录,lang 的值可以是字符串或数组,若为字符串则表示目录路径,若为数组则自动调用 path.join() 处理成路径字符串。

自定义模块配置

typescript
import { Tsu } from 'kotori-bot';
+
+/* ... */
+
+export const config = Tsu.Object({
+  key1: Tsu.String(),
+  key2: Tsu.Number().range(0, 10),
+  key3: Tsu.Boolean()
+});

通过 config 变量定义模块的配置项,它是一个 Tsu.Object() 实例,并通过 Tsu.infer<> 类型推导获取配置项的类型。在模块中编写了配置项后便可直接在 Kotori 根目录的 kotori.yml 文件中进行模块配置:

toml
# ...
+
+plugin:
+  my-project:
+    key1: value1
+    key2: 0
+    key3: true

通过 main() 函数的第二个参数 config 获取模块的实际配置信息:

typescript
/* ... */
+
+export function main(ctx: Context, cfg: Tsu.infer<typeof config>) {
+  ctx.logger.debug(cfg.key1, cfg);
+  // 'value1' { key1: 'value1', key2: 0, key3: true }
+}

设置依赖服务

typescript
/* ... */
+
+export const inject = ['database'];
+
+export function main(ctx: Context) {
+  ctx.on('ready', async () => {
+    if (await ctx.db.schema.hasTable('test')) return;
+    await ctx.db.schema.createTable('test', (table) => {
+      table.increments();
+      table.string('name');
+      table.timestamps();
+    });
+  });
+}

通过 inject 变量定义模块的依赖服务,它是一个字符串数组,数组中的每个值都必须是已注册的服务名称,服务包括 Kotori 内置服务与第三方模块提供的服务。尽管服务实例只要一经定义就会因声明合并的缘故显示在 Context 实例上,但请注意,所有服务均不会自动挂载到 Context 实例上,无论是内置服务和还是第三方服务均需要使用 inject 进行声明后才可在 Context 上直接访问、使用。此处依赖了 database 数据库服务,并通过监听 ready 事件(当加载完所有模块时)进行数据库初始化操作。

模块风格与范式

Kotori 中大体上提供了三种额风格的模块范式:

  • 导出式
    • 导出函数式
    • 导出类式
  • 直接调用式
  • 装饰器式

导出式

整合一下上面写的所有代码:

typescript
import { Context, Tsu } from 'kotori-bot';
+
+export const lang = [__dirname, '../locales'];
+
+export const config = Tsu.Object({
+  /* ... */
+});
+
+export const inject = ['database'];
+
+export function main(ctx: Context, cfg: Tsu.infer<typeof config>) {
+  /* ... */
+}

你会发现,无论是当前还是以往的所有演示代码都使用的导出式风格,或许称不上是 Kotori 官方推荐的模块风格,但它一定是在 Web 生态中最经典的一种风格,无论是 Vue、React 等前端响应式框架还是 Webpack、Rollup、eslint、Vite 这种工具链的插件系统都清一色的使用类似的导出式风格。就新人而言,是很推荐使用这种方式的,因为它很容易上手。

导出类式

导出式可细分成导出函数式和导出类式(这里的「导出」特指模块的执行主体),导出函数式相信你已见过太多演示就不再赘述。这里是一个与上面完全一致的导出类式示例:

typescript
import { Context, Tsu } from 'kotori-bot';
+
+/*
+export const lang = [__dirname, '../locales'];
+
+export const config = Tsu.Object({ /* ... */ });
+
+export const inject = ['database'];
+*/
+
+export class Main {
+  public static lang = [__dirname, '../locales'];
+
+  public static config = Tsu.Object({ /* ... */ });
+
+  public static inject = ['database'];
+
+  public constructor(
+    private ctx: Context,
+    private cfg: Tsu.infer<typeof config>
+  ) {
+    /* ... */
+  }
+}

在导出类式中,可同时在外部导出诸如 configlanginject 属性,也可在类中设置相应的静态属性,一般地,请使用后者。如若两者同时存在,类中的属性将会覆盖外部导出的属性。

诚然,Kotori 目前对导出类式的支持并不全面,它看起来仅仅是将原本的导出函数替换成导出类后调用其构造函数,并未充分发挥类的特性,但如果你很喜欢面向对象编程,这或许还是很适合你的。不过有一点注意,为与函数区分,导出函数式的函数名使用 main 而导出类式的类名使用 Main,如若两者互换将不会被 Kotori 识别为有效的模块。

默认导出

无论是导出函数还是导出类,均将其称之为「模块的执行主体」,当入口文件中需要导出的只有执行主体本身时,你大可使用默认导出,此时函数名或类名都无关紧要,如:

typescript
import { Context } from 'kotori-bot';
+
+export default function main(ctx: Context) {}

又或者是默认导出一个类:

typescript
import { Context } from 'kotori-bot';
+
+export default class {
+  public constructor(private ctx: Context) {}
+}

对于执行主体的各种导出形式,以下是 Kotori 的识别顺序(一经识别成功将不再继续识别后续内容):

  1. 适配器类实现
  2. 默认导出类
  3. 默认导出函数
  4. main() 导出函数
  5. Main 导出类

直接调用式

typescript
import Kotori from 'kotori-bot';
+import { join } from 'path';
+
+Kotori.i18n.use(join(__dirname, '../locales'));
+
+Kotori.on('ready', () => {
+  const db = Kotori.get('database');
+  if (await db.schema.hasTable('test')) return;
+  /* ... */
+});
+
+Kotori.midware((next, session) => {
+  /* ... */
+}, 10);
+
+Kotori.command(/* ... */);
+
+Kotori.regexp(/* ... */);

通过直接访问 kotori-bot 模块默认导出的 Kotori 对象进行各种操作,包括注册国际化文件目录、服务、中间件、指令、正则匹配等,对于服务实例则通过 ctx.get() 手动获取(或者通过 ctx.inject() 手动挂载,具体内容参考下一节)。Kotori 对象本身即为一个 Context 实例,但它并不是本体而是一个双重 Proxy。这种方式的优点是简单和灵活,但缺点是不够模块化,且有副作用,对于开发 Kotori 模块强烈不推荐使用该方式,因为它违背了 Kotori 的原则。如果你基于 Kotori 为依赖库开发一个新的库,则推荐使用该方式。

将 Kotori 作为依赖开发请参考 深入了解

装饰器式

typescript
import { Tsu, CommandAction, Context, MessageScope, plugins, SessionData } from 'kotori-bot';
+
+const plugin = plugins([__dirname, '../']);
+
+@plugin.import
+export default class Plugin {
+  private ctx: Context;
+
+  private config: Tsu.infer<typeof Plugin.schema>;
+
+  @plugin.lang
+  public static lang = [__dirname, '../locales'];
+
+  @plugin.schema
+  public static schema = Tsu.Object({ /* ... */ });
+
+  @plugin.inject
+  public static inject = ['database'];
+
+  public constructor(ctx: Context, config: Tsu.infer<typeof Plugin.schema>) {
+    this.ctx = ctx;
+    this.config = config;
+  }
+
+  @plugin.on({ type: 'on_group_decrease' })
+  public groupDecrease(session: SessionData) {
+     // ...
+  }
+
+  @plugin.midware({ priority: 10 })
+  public midware(next: () => void, session: SessionData) {
+    // ...
+  }
+
+  @plugin.command({
+    template: 'echo <content> [num:number=3]',
+    scope: MessageScope.GROUP
+  })
+  public echo(data: Parameters<CommandAction>[0], session: SessionData) {
+    // ...
+  }
+
+  @plugin.regexp({ match: /^(.*)#print$/ })
+  public static print(match: RegExpExecArray) {
+    return match[1];
+  }
+}

以上是一个简单的装饰器式示例,与导出式相比,它的风格截然不同,语法上它足够的优雅。模块自己主动创造全局唯一的实例对象 plugin,在其基础上使用装饰器注册的各种内容,天生即具有良好的扩展性和模块化性。装饰器特性更常见于后端或服务端语言中,在 Web 中使用较多的为 Angular、Nest.js 等深受后端架构思想(主要指 Spring)熏陶的框架。为数不多的缺点是它需要手动声明类型且对新手而言不容易上手,但如若你有足够的基础则强烈推荐使用。

当然,这并不算在此展开详细介绍,它还需要你了解一点其它内容作为基础,因而它被放在本章最后一节进行具体讲述。

`,63)]))}const o=i(k,[["render",t]]);export{y as __pageData,o as default}; diff --git a/assets/guide_modules_plugin.md.F2YmqKkM.lean.js b/assets/guide_modules_plugin.md.F2YmqKkM.lean.js new file mode 100644 index 00000000..27eae13a --- /dev/null +++ b/assets/guide_modules_plugin.md.F2YmqKkM.lean.js @@ -0,0 +1,176 @@ +import{_ as i,c as a,a0 as n,o as h}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"模块与插件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/plugin.md","filePath":"guide/modules/plugin.md","lastUpdated":1723293723000}'),k={name:"guide/modules/plugin.md"};function t(l,s,p,e,d,r){return h(),a("div",null,s[0]||(s[0]=[n(`

模块与插件

前言

恭喜你,只要学习完本章你将成为一名合格的「Kotori Developer」!在本章将围绕 Kotori 中最重要的概念「上下文」为你讲解一系列模块化内容。

package.json 规范

插件(Plugin) 是 Kotori 中的最小运行实例,它是模块的真子集,在真正学习到上下文之前,可暂且默认插件等同于模块。在第一章里你已通过 Cli 初步创建了一个 Kotori 模块工程,但那并不是最小的有效模块,现在,让一切重零开始。

这是一个最小且有效的 package.json 例子:

json
{
+  "name": "kotori-plugin-my-project",
+  "version": "1.0.0",
+  "description": "This is my first Kotori plugin",
+  "main": "lib/index.js",
+  "keywords": ["kotori", "chatbot", "kotori-plugin"],
+  "license": "GPL-3.0",
+  "files": ["lib", "locales", "LICENSE", "README.md"],
+  "author": "Himeno",
+  "peerDependencies": {
+    "kotori-bot": "^1.3.0"
+  }
+}

TIP

请不要模仿,package.json 应附有更详尽的包信息。

一个对于 Kotori 而言合法的 package.json 的类型信息大概是这样子:

typescript
interface ModulePackage {
+  name: string;
+  version: string;
+  description: string;
+  main: string;
+  license: 'GPL-3.0';
+  keywords: string[];
+  author: string | string[];
+  peerDependencies: Record<string, string>;
+  kotori?: {
+    enforce?: 'pre' | 'post';
+    meta?: {
+      language?: 'en_US' | 'ja_JP' | 'zh_TW' | 'zh_CN';
+    };
+  };
+}

但仅以 TypeScript 形式展现并不够全面,因为除此之外 Kotori 对合法的 package.json 有以下特殊要求:

  • name 必须满足 /kotori-plugin-[a-z]([a-z,0-9]{2,13})\\b/,即以「kotori-plugin-」加一个小写字母开头,后接 2 ~ 13 个 小写字母与数字的组合
  • license 必须为 'GPL-3.0',因为 Kotori 本身即使用的 GPL-3.0 协议
  • keywords 中必须含有 'kotori''chatbot''kotori-plugin' 三个值,主要是为了 npm 包统计考虑
  • peerDependencies 中必须含有名为 'kotori-bot' 的键,具体作用请参考 Peer Dependencies

对于包名,除去普通模块以外,往往会有一些非强制性规范的特殊值:

  • kotori-plugin-adapter-xxx 表示适配器服务
  • kotori-plugin-database 表示数据库

元数据信息

在上面例子中,可能你已注意到除了常规的属性以外,还有一个为 kotori 的属性,其会被 Kotori 读取用作模块的额外信息,目前其中仅有 meta 一个属性,meta 之下有两个属性:

  • enforce 模块加载顺序,对于某些前置性模块和自定义服务模块可能有用,Kotori 模块加载顺序:数据库服务 > 适配器服务 > 核心模块(模块列表请查看 Kotori 源码)> 'pre' > undefined > 'post'
  • language 模块加载列表,若为 undefined[] 则表示支持所有语言或无文字内容

入口文件

一般地,使用 src/index.ts 作为默认入口文件,最终将由 tsc 或其它的打包工具编译成 lib/index.js。以下是一个最基础的入口文件示例:

typescript
import { Context } from 'kotori-bot';
+
+export function main(ctx: Context) {}

入口文件一般导出一个名为 main() 的函数,接收一个 Context 实例作为参数,诸如之前介绍的事件系统、指令、中间件、正则匹配等功能均是在其上进行的操作。除此之外,入口文件还可以导出一些其他的变量,供其他模块调用。

注册国际化文件目录

typescript
import { join } from 'path';
+import { Context } from 'kotori-bot';
+
+export function main(ctx: Context) {
+  ctx.i18n.use(join(__dirname, '../locales'));
+}

国际化文件目录(一般为 ../locales 文件夹)下有多份多个语言文件(一般为 json 文件)

此处在 main() 被调用后通过执行 ctx.i18n.use() 方法注册了当前模块的国际化文件目录,出于目录路径位置原因,此处还用到了 Node.js 内置的 path 模块的方法,但如果每个模块都需要这样做就很繁琐,Kotori 为此提供了语法糖:

typescript
import { Context } from 'kotori-bot';
+
+export const lang = [__dirname, '../locales'];
+// equal to: export const lang = path.join(__dirname, '../locales');
+
+export function main(ctx: Context) {}

在入口文件中导出一个 lang 变量,使得 Kotori 在加载模块执行 main() 之前自动通过该变量注册国际化文件目录,lang 的值可以是字符串或数组,若为字符串则表示目录路径,若为数组则自动调用 path.join() 处理成路径字符串。

自定义模块配置

typescript
import { Tsu } from 'kotori-bot';
+
+/* ... */
+
+export const config = Tsu.Object({
+  key1: Tsu.String(),
+  key2: Tsu.Number().range(0, 10),
+  key3: Tsu.Boolean()
+});

通过 config 变量定义模块的配置项,它是一个 Tsu.Object() 实例,并通过 Tsu.infer<> 类型推导获取配置项的类型。在模块中编写了配置项后便可直接在 Kotori 根目录的 kotori.yml 文件中进行模块配置:

toml
# ...
+
+plugin:
+  my-project:
+    key1: value1
+    key2: 0
+    key3: true

通过 main() 函数的第二个参数 config 获取模块的实际配置信息:

typescript
/* ... */
+
+export function main(ctx: Context, cfg: Tsu.infer<typeof config>) {
+  ctx.logger.debug(cfg.key1, cfg);
+  // 'value1' { key1: 'value1', key2: 0, key3: true }
+}

设置依赖服务

typescript
/* ... */
+
+export const inject = ['database'];
+
+export function main(ctx: Context) {
+  ctx.on('ready', async () => {
+    if (await ctx.db.schema.hasTable('test')) return;
+    await ctx.db.schema.createTable('test', (table) => {
+      table.increments();
+      table.string('name');
+      table.timestamps();
+    });
+  });
+}

通过 inject 变量定义模块的依赖服务,它是一个字符串数组,数组中的每个值都必须是已注册的服务名称,服务包括 Kotori 内置服务与第三方模块提供的服务。尽管服务实例只要一经定义就会因声明合并的缘故显示在 Context 实例上,但请注意,所有服务均不会自动挂载到 Context 实例上,无论是内置服务和还是第三方服务均需要使用 inject 进行声明后才可在 Context 上直接访问、使用。此处依赖了 database 数据库服务,并通过监听 ready 事件(当加载完所有模块时)进行数据库初始化操作。

模块风格与范式

Kotori 中大体上提供了三种额风格的模块范式:

  • 导出式
    • 导出函数式
    • 导出类式
  • 直接调用式
  • 装饰器式

导出式

整合一下上面写的所有代码:

typescript
import { Context, Tsu } from 'kotori-bot';
+
+export const lang = [__dirname, '../locales'];
+
+export const config = Tsu.Object({
+  /* ... */
+});
+
+export const inject = ['database'];
+
+export function main(ctx: Context, cfg: Tsu.infer<typeof config>) {
+  /* ... */
+}

你会发现,无论是当前还是以往的所有演示代码都使用的导出式风格,或许称不上是 Kotori 官方推荐的模块风格,但它一定是在 Web 生态中最经典的一种风格,无论是 Vue、React 等前端响应式框架还是 Webpack、Rollup、eslint、Vite 这种工具链的插件系统都清一色的使用类似的导出式风格。就新人而言,是很推荐使用这种方式的,因为它很容易上手。

导出类式

导出式可细分成导出函数式和导出类式(这里的「导出」特指模块的执行主体),导出函数式相信你已见过太多演示就不再赘述。这里是一个与上面完全一致的导出类式示例:

typescript
import { Context, Tsu } from 'kotori-bot';
+
+/*
+export const lang = [__dirname, '../locales'];
+
+export const config = Tsu.Object({ /* ... */ });
+
+export const inject = ['database'];
+*/
+
+export class Main {
+  public static lang = [__dirname, '../locales'];
+
+  public static config = Tsu.Object({ /* ... */ });
+
+  public static inject = ['database'];
+
+  public constructor(
+    private ctx: Context,
+    private cfg: Tsu.infer<typeof config>
+  ) {
+    /* ... */
+  }
+}

在导出类式中,可同时在外部导出诸如 configlanginject 属性,也可在类中设置相应的静态属性,一般地,请使用后者。如若两者同时存在,类中的属性将会覆盖外部导出的属性。

诚然,Kotori 目前对导出类式的支持并不全面,它看起来仅仅是将原本的导出函数替换成导出类后调用其构造函数,并未充分发挥类的特性,但如果你很喜欢面向对象编程,这或许还是很适合你的。不过有一点注意,为与函数区分,导出函数式的函数名使用 main 而导出类式的类名使用 Main,如若两者互换将不会被 Kotori 识别为有效的模块。

默认导出

无论是导出函数还是导出类,均将其称之为「模块的执行主体」,当入口文件中需要导出的只有执行主体本身时,你大可使用默认导出,此时函数名或类名都无关紧要,如:

typescript
import { Context } from 'kotori-bot';
+
+export default function main(ctx: Context) {}

又或者是默认导出一个类:

typescript
import { Context } from 'kotori-bot';
+
+export default class {
+  public constructor(private ctx: Context) {}
+}

对于执行主体的各种导出形式,以下是 Kotori 的识别顺序(一经识别成功将不再继续识别后续内容):

  1. 适配器类实现
  2. 默认导出类
  3. 默认导出函数
  4. main() 导出函数
  5. Main 导出类

直接调用式

typescript
import Kotori from 'kotori-bot';
+import { join } from 'path';
+
+Kotori.i18n.use(join(__dirname, '../locales'));
+
+Kotori.on('ready', () => {
+  const db = Kotori.get('database');
+  if (await db.schema.hasTable('test')) return;
+  /* ... */
+});
+
+Kotori.midware((next, session) => {
+  /* ... */
+}, 10);
+
+Kotori.command(/* ... */);
+
+Kotori.regexp(/* ... */);

通过直接访问 kotori-bot 模块默认导出的 Kotori 对象进行各种操作,包括注册国际化文件目录、服务、中间件、指令、正则匹配等,对于服务实例则通过 ctx.get() 手动获取(或者通过 ctx.inject() 手动挂载,具体内容参考下一节)。Kotori 对象本身即为一个 Context 实例,但它并不是本体而是一个双重 Proxy。这种方式的优点是简单和灵活,但缺点是不够模块化,且有副作用,对于开发 Kotori 模块强烈不推荐使用该方式,因为它违背了 Kotori 的原则。如果你基于 Kotori 为依赖库开发一个新的库,则推荐使用该方式。

将 Kotori 作为依赖开发请参考 深入了解

装饰器式

typescript
import { Tsu, CommandAction, Context, MessageScope, plugins, SessionData } from 'kotori-bot';
+
+const plugin = plugins([__dirname, '../']);
+
+@plugin.import
+export default class Plugin {
+  private ctx: Context;
+
+  private config: Tsu.infer<typeof Plugin.schema>;
+
+  @plugin.lang
+  public static lang = [__dirname, '../locales'];
+
+  @plugin.schema
+  public static schema = Tsu.Object({ /* ... */ });
+
+  @plugin.inject
+  public static inject = ['database'];
+
+  public constructor(ctx: Context, config: Tsu.infer<typeof Plugin.schema>) {
+    this.ctx = ctx;
+    this.config = config;
+  }
+
+  @plugin.on({ type: 'on_group_decrease' })
+  public groupDecrease(session: SessionData) {
+     // ...
+  }
+
+  @plugin.midware({ priority: 10 })
+  public midware(next: () => void, session: SessionData) {
+    // ...
+  }
+
+  @plugin.command({
+    template: 'echo <content> [num:number=3]',
+    scope: MessageScope.GROUP
+  })
+  public echo(data: Parameters<CommandAction>[0], session: SessionData) {
+    // ...
+  }
+
+  @plugin.regexp({ match: /^(.*)#print$/ })
+  public static print(match: RegExpExecArray) {
+    return match[1];
+  }
+}

以上是一个简单的装饰器式示例,与导出式相比,它的风格截然不同,语法上它足够的优雅。模块自己主动创造全局唯一的实例对象 plugin,在其基础上使用装饰器注册的各种内容,天生即具有良好的扩展性和模块化性。装饰器特性更常见于后端或服务端语言中,在 Web 中使用较多的为 Angular、Nest.js 等深受后端架构思想(主要指 Spring)熏陶的框架。为数不多的缺点是它需要手动声明类型且对新手而言不容易上手,但如若你有足够的基础则强烈推荐使用。

当然,这并不算在此展开详细介绍,它还需要你了解一点其它内容作为基础,因而它被放在本章最后一节进行具体讲述。

`,63)]))}const o=i(k,[["render",t]]);export{y as __pageData,o as default}; diff --git a/assets/guide_modules_rescript.md.Bl-r_LjA.js b/assets/guide_modules_rescript.md.Bl-r_LjA.js new file mode 100644 index 00000000..975bab73 --- /dev/null +++ b/assets/guide_modules_rescript.md.Bl-r_LjA.js @@ -0,0 +1,8 @@ +import{_ as i,c as a,a0 as t,o as n}from"./chunks/framework.P9qPzDnn.js";const c=JSON.parse('{"title":"使用 ReScript 开发","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/rescript.md","filePath":"guide/modules/rescript.md","lastUpdated":1731827740000}'),h={name:"guide/modules/rescript.md"};function p(e,s,k,l,r,d){return n(),a("div",null,s[0]||(s[0]=[t(`

使用 ReScript 开发

ReScript 是一门健壮的类型化语言,可以编译成高效易读的 JavaScript。相比于 TypeScript,ReScript 是 JavaScript 的子集,有着远比 TypeScript 更为严格和安全的类型系统。也是 OCaml 的方言之一,结合了大量函数式编程与现代化编程特性,同时保留了 C 系语言的花括号语法风格,这使你不会像面对其它函数式编程一样对其陌生语法感到茫然,变得极易上手和入门。如果你是一名 Rust 开发者将会对 ReScript 很多地方感到亲切(就像是没有所有权和生命周期的 Rust)。

NOTE

详细信息与入门指南请参考 The ReScript Programming Language

基本使用

Kotori 从 v1.7 开始支持用 ReScript 编写插件,尽管这并非强制性,但如若你对函数式编程感兴趣或者对安全性有要求,那么使用 ReScript 编写 Kotori 插件将是不二之举。

res
let main = (ctx: Kotori.context) => {
+   open Kotori.Utils;
+
+   "echo <message> - print string"->ctx.cmd.new->ctx.cmd.action(async ({args: [msg]}, session) => {
+	   msg->session.quick
+	   ""
+   })->ignore
+}
`,6)]))}const o=i(h,[["render",p]]);export{c as __pageData,o as default}; diff --git a/assets/guide_modules_rescript.md.Bl-r_LjA.lean.js b/assets/guide_modules_rescript.md.Bl-r_LjA.lean.js new file mode 100644 index 00000000..975bab73 --- /dev/null +++ b/assets/guide_modules_rescript.md.Bl-r_LjA.lean.js @@ -0,0 +1,8 @@ +import{_ as i,c as a,a0 as t,o as n}from"./chunks/framework.P9qPzDnn.js";const c=JSON.parse('{"title":"使用 ReScript 开发","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/rescript.md","filePath":"guide/modules/rescript.md","lastUpdated":1731827740000}'),h={name:"guide/modules/rescript.md"};function p(e,s,k,l,r,d){return n(),a("div",null,s[0]||(s[0]=[t(`

使用 ReScript 开发

ReScript 是一门健壮的类型化语言,可以编译成高效易读的 JavaScript。相比于 TypeScript,ReScript 是 JavaScript 的子集,有着远比 TypeScript 更为严格和安全的类型系统。也是 OCaml 的方言之一,结合了大量函数式编程与现代化编程特性,同时保留了 C 系语言的花括号语法风格,这使你不会像面对其它函数式编程一样对其陌生语法感到茫然,变得极易上手和入门。如果你是一名 Rust 开发者将会对 ReScript 很多地方感到亲切(就像是没有所有权和生命周期的 Rust)。

NOTE

详细信息与入门指南请参考 The ReScript Programming Language

基本使用

Kotori 从 v1.7 开始支持用 ReScript 编写插件,尽管这并非强制性,但如若你对函数式编程感兴趣或者对安全性有要求,那么使用 ReScript 编写 Kotori 插件将是不二之举。

res
let main = (ctx: Kotori.context) => {
+   open Kotori.Utils;
+
+   "echo <message> - print string"->ctx.cmd.new->ctx.cmd.action(async ({args: [msg]}, session) => {
+	   msg->session.quick
+	   ""
+   })->ignore
+}
`,6)]))}const o=i(h,[["render",p]]);export{c as __pageData,o as default}; diff --git a/assets/guide_modules_schema.md.D-o7cJAG.js b/assets/guide_modules_schema.md.D-o7cJAG.js new file mode 100644 index 00000000..b0de5375 --- /dev/null +++ b/assets/guide_modules_schema.md.D-o7cJAG.js @@ -0,0 +1,49 @@ +import{_ as i,c as a,a0 as h,o as k}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"配置检测","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/schema.md","filePath":"guide/modules/schema.md","lastUpdated":1724729588000}'),n={name:"guide/modules/schema.md"};function t(l,s,p,e,r,d){return k(),a("div",null,s[0]||(s[0]=[h(`

配置检测

配置检测(Schema) 是 Kotori 中的一个重要概念和功能,其相关的所有实现均来源于 Tsukiko 库。Kotori 对 Tsukiko 进行了重新导出,因此可直接在 Kotori 中使用。

Tsukiko 简介

Tsukiko 是一个基于 TypeScript 开发的运行时下动态类型检查库,最初作为 kotori 开发中的副产物诞生,其作用与应用场景类似于 io-ts 之类的库,常用于 JSON/YAML/TOML 文件数据格式检验、第三方 HTTP API 数据格式检验、数据库返回数据格式检验(尽管此处推荐直接用更为成熟的 ORM 框架)等。

视频介绍与演示:哔哩哔哩

项目名字取自于轻小说《変態王子と笑わない猫。》中的女主角——筒隠月子(Tsukakushi Tsukiko)

基本使用

类型检验

Tsukiko 中带有多种类型解析器,通过不同的解析器可以实现对未知值的类型校验与处理:

typescript
import { Tsu } from 'kotori-bot'
+
+const strSchema = Tsu.String()
+strSchema.check(233) // false
+strSchema.check('Hello,Tsukiko!') // true

schema.check() 接收一个参数,返回值表示该参数类型是否匹配。此外,与之类似的还有以下多种校验方法:

typescript
/* ... */
+
+const value = strSchema.parse(raw)
+// if passed the value must be a string
+// if not passrd: throw TsuError

schema.parse() 会处理传入值并判断是否符合要求,如若不符合将抛出错误(TsuError)并附带详细原因。不过有时并不想直接抛出错误则可以使用 schema.parseSafe()

typescript
/* ... */
+
+const result = strSchema.parseSafe(raw)
+if (result.value) {
+   console.log('Passed:', result.data)
+
+} else {
+   console.log("Error:", result.error.message)
+}

该方法会返回一个对象,当 valuetrue 时,对象上存在 data 属性,其值即为处理后的结果,当 valuefalse 时,对象上存在 error 属性,其值即为错误信息。此外,还有一个异步版本 schema.parseAsync

typescript
/* ... */
+
+strSchema.parseAsync(raw)
+   .then((data) => console.log('Passed', data))
+   .catch((error) => console.log('Fatal', error))

上面有提到,schema.parse() 及相关的解析方法,在传入值符合要求时返回的数据会经过一定的处理,其主要体现为默认值处理:

typescript
const schema = Tsu.Object({
+   name: Tsu.String().default('Romi'),
+   age: Tsu.Stting().default(16)
+}).default({
+   name: 'Romi',
+   age: 16
+})
+
+schema.parse({ name: 'Yuki', age: 17 }) // Passed { name: 'Yuki', age: 17 }
+schema.parse({ name: 'Kisaki' }) // Passed { name: 'Kisaki', age: 16 }
+schema.parse({}) // Passed { name: 'Romi', age: 16 }
+schema.parse([]) // Error

在不同的解析器下也有一定的体现,如:

typescript
const strSchema = Tsu.String()
+
+strSchema(233) // Passed '233'
+strSchema(true) // Error

Tsu.String() 解析器默认允许数字传入(出于兼容性考虑),并会将其处理成字符串返回。

类型修饰

最典型的修饰方法为 schema.default()schema.optional(),前者用于设置默认值,后者用于设置可选类型:

typescript
const numSchema = Tsu.Number().default(2333)
+
+numSchema.parse() // 2333
+
+const strSchema = Tsu.String().optional()
+
+strSchema.parse(undefined) // Passed
+strSchema.parse(null) // Passed

同样是出于兼容性考虑,解析器默认会允许 null,如若想只允许 undefined 作为空值,则可以使用 schema.empty()

typescript

+const strSchema = Tsu.String().optional().empty()
+
+strSchema.parse(undefined) // Passed
+strSchema.parse(null) // Error

除去以上所有解析器共有方法以外,每个解析器也有自己专门的修饰方法,详情可查看下文。可以看到,在 schema.optional() 之后可以继续调用方法,因为包括以上在内的绝大部分修饰方法都会返回当前实例,链式调用便是 Tsukiko 最大特点。不过,同一个修饰方法应当在同一个解析器中仅调用一次,因为不同的修饰方法其执行行为有所不同:

  • 开关解析器上的某一内部属性(如 Tsu.String()Tsu.Object() 上均存在的 .strict()),这使得可以在调用方法时传入一个 Boolean 值 ,一般地,这些方法的参数会有默认值
  • 单向设置解析器上的某一内部属性(如上文的 schema.optional()schema.empty()schema.default()),大部分不需要传参,但也有些需要传参
  • 多个同级方法间合并解析器上的多个内部属性(如很多解析器上都存在的 .min().max()range()

类型导出

JSON Schema 是用于验证 JSON 数据结构的强大工具。在必要时可通过 schema.schema() 将任意解析器导出成 JSON Schema。不过在此之前,Tsukiko 提供了额外两个关于 JSON Schema 的新方法:

typescript
const config = Tsu.Object({
+   port: Tsu.Number().port().describe('Server port')
+   address: Tsu.String().describe('Server display address')
+}).title('Plugin configuration')

schema.

解析器

基础类型

引用类型

标准类型

高级类型

在 Kotori 中的引用

配置文件

数据检验

`,40)]))}const c=i(n,[["render",t]]);export{y as __pageData,c as default}; diff --git a/assets/guide_modules_schema.md.D-o7cJAG.lean.js b/assets/guide_modules_schema.md.D-o7cJAG.lean.js new file mode 100644 index 00000000..b0de5375 --- /dev/null +++ b/assets/guide_modules_schema.md.D-o7cJAG.lean.js @@ -0,0 +1,49 @@ +import{_ as i,c as a,a0 as h,o as k}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"配置检测","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/schema.md","filePath":"guide/modules/schema.md","lastUpdated":1724729588000}'),n={name:"guide/modules/schema.md"};function t(l,s,p,e,r,d){return k(),a("div",null,s[0]||(s[0]=[h(`

配置检测

配置检测(Schema) 是 Kotori 中的一个重要概念和功能,其相关的所有实现均来源于 Tsukiko 库。Kotori 对 Tsukiko 进行了重新导出,因此可直接在 Kotori 中使用。

Tsukiko 简介

Tsukiko 是一个基于 TypeScript 开发的运行时下动态类型检查库,最初作为 kotori 开发中的副产物诞生,其作用与应用场景类似于 io-ts 之类的库,常用于 JSON/YAML/TOML 文件数据格式检验、第三方 HTTP API 数据格式检验、数据库返回数据格式检验(尽管此处推荐直接用更为成熟的 ORM 框架)等。

视频介绍与演示:哔哩哔哩

项目名字取自于轻小说《変態王子と笑わない猫。》中的女主角——筒隠月子(Tsukakushi Tsukiko)

基本使用

类型检验

Tsukiko 中带有多种类型解析器,通过不同的解析器可以实现对未知值的类型校验与处理:

typescript
import { Tsu } from 'kotori-bot'
+
+const strSchema = Tsu.String()
+strSchema.check(233) // false
+strSchema.check('Hello,Tsukiko!') // true

schema.check() 接收一个参数,返回值表示该参数类型是否匹配。此外,与之类似的还有以下多种校验方法:

typescript
/* ... */
+
+const value = strSchema.parse(raw)
+// if passed the value must be a string
+// if not passrd: throw TsuError

schema.parse() 会处理传入值并判断是否符合要求,如若不符合将抛出错误(TsuError)并附带详细原因。不过有时并不想直接抛出错误则可以使用 schema.parseSafe()

typescript
/* ... */
+
+const result = strSchema.parseSafe(raw)
+if (result.value) {
+   console.log('Passed:', result.data)
+
+} else {
+   console.log("Error:", result.error.message)
+}

该方法会返回一个对象,当 valuetrue 时,对象上存在 data 属性,其值即为处理后的结果,当 valuefalse 时,对象上存在 error 属性,其值即为错误信息。此外,还有一个异步版本 schema.parseAsync

typescript
/* ... */
+
+strSchema.parseAsync(raw)
+   .then((data) => console.log('Passed', data))
+   .catch((error) => console.log('Fatal', error))

上面有提到,schema.parse() 及相关的解析方法,在传入值符合要求时返回的数据会经过一定的处理,其主要体现为默认值处理:

typescript
const schema = Tsu.Object({
+   name: Tsu.String().default('Romi'),
+   age: Tsu.Stting().default(16)
+}).default({
+   name: 'Romi',
+   age: 16
+})
+
+schema.parse({ name: 'Yuki', age: 17 }) // Passed { name: 'Yuki', age: 17 }
+schema.parse({ name: 'Kisaki' }) // Passed { name: 'Kisaki', age: 16 }
+schema.parse({}) // Passed { name: 'Romi', age: 16 }
+schema.parse([]) // Error

在不同的解析器下也有一定的体现,如:

typescript
const strSchema = Tsu.String()
+
+strSchema(233) // Passed '233'
+strSchema(true) // Error

Tsu.String() 解析器默认允许数字传入(出于兼容性考虑),并会将其处理成字符串返回。

类型修饰

最典型的修饰方法为 schema.default()schema.optional(),前者用于设置默认值,后者用于设置可选类型:

typescript
const numSchema = Tsu.Number().default(2333)
+
+numSchema.parse() // 2333
+
+const strSchema = Tsu.String().optional()
+
+strSchema.parse(undefined) // Passed
+strSchema.parse(null) // Passed

同样是出于兼容性考虑,解析器默认会允许 null,如若想只允许 undefined 作为空值,则可以使用 schema.empty()

typescript

+const strSchema = Tsu.String().optional().empty()
+
+strSchema.parse(undefined) // Passed
+strSchema.parse(null) // Error

除去以上所有解析器共有方法以外,每个解析器也有自己专门的修饰方法,详情可查看下文。可以看到,在 schema.optional() 之后可以继续调用方法,因为包括以上在内的绝大部分修饰方法都会返回当前实例,链式调用便是 Tsukiko 最大特点。不过,同一个修饰方法应当在同一个解析器中仅调用一次,因为不同的修饰方法其执行行为有所不同:

  • 开关解析器上的某一内部属性(如 Tsu.String()Tsu.Object() 上均存在的 .strict()),这使得可以在调用方法时传入一个 Boolean 值 ,一般地,这些方法的参数会有默认值
  • 单向设置解析器上的某一内部属性(如上文的 schema.optional()schema.empty()schema.default()),大部分不需要传参,但也有些需要传参
  • 多个同级方法间合并解析器上的多个内部属性(如很多解析器上都存在的 .min().max()range()

类型导出

JSON Schema 是用于验证 JSON 数据结构的强大工具。在必要时可通过 schema.schema() 将任意解析器导出成 JSON Schema。不过在此之前,Tsukiko 提供了额外两个关于 JSON Schema 的新方法:

typescript
const config = Tsu.Object({
+   port: Tsu.Number().port().describe('Server port')
+   address: Tsu.String().describe('Server display address')
+}).title('Plugin configuration')

schema.

解析器

基础类型

引用类型

标准类型

高级类型

在 Kotori 中的引用

配置文件

数据检验

`,40)]))}const c=i(n,[["render",t]]);export{y as __pageData,c as default}; diff --git a/assets/guide_modules_service.md.DMQ0sFPf.js b/assets/guide_modules_service.md.DMQ0sFPf.js new file mode 100644 index 00000000..53bbda84 --- /dev/null +++ b/assets/guide_modules_service.md.DMQ0sFPf.js @@ -0,0 +1 @@ +import{_ as t,c as r,j as a,a as s,o}from"./chunks/framework.P9qPzDnn.js";const f=JSON.parse('{"title":"依赖与服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/service.md","filePath":"guide/modules/service.md","lastUpdated":1712229374000}'),d={name:"guide/modules/service.md"};function i(c,e,n,l,m,p){return o(),r("div",null,e[0]||(e[0]=[a("h1",{id:"依赖与服务",tabindex:"-1"},[s("依赖与服务 "),a("a",{class:"header-anchor",href:"#依赖与服务","aria-label":'Permalink to "依赖与服务"'},"​")],-1)]))}const _=t(d,[["render",i]]);export{f as __pageData,_ as default}; diff --git a/assets/guide_modules_service.md.DMQ0sFPf.lean.js b/assets/guide_modules_service.md.DMQ0sFPf.lean.js new file mode 100644 index 00000000..53bbda84 --- /dev/null +++ b/assets/guide_modules_service.md.DMQ0sFPf.lean.js @@ -0,0 +1 @@ +import{_ as t,c as r,j as a,a as s,o}from"./chunks/framework.P9qPzDnn.js";const f=JSON.parse('{"title":"依赖与服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/service.md","filePath":"guide/modules/service.md","lastUpdated":1712229374000}'),d={name:"guide/modules/service.md"};function i(c,e,n,l,m,p){return o(),r("div",null,e[0]||(e[0]=[a("h1",{id:"依赖与服务",tabindex:"-1"},[s("依赖与服务 "),a("a",{class:"header-anchor",href:"#依赖与服务","aria-label":'Permalink to "依赖与服务"'},"​")],-1)]))}const _=t(d,[["render",i]]);export{f as __pageData,_ as default}; diff --git a/assets/guide_start_environment.md.X_FtbxVb.js b/assets/guide_start_environment.md.X_FtbxVb.js new file mode 100644 index 00000000..2f0bff7f --- /dev/null +++ b/assets/guide_start_environment.md.X_FtbxVb.js @@ -0,0 +1 @@ +import{_ as e,c as a,a0 as r,o as i}from"./chunks/framework.P9qPzDnn.js";const u=JSON.parse('{"title":"环境搭建","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/environment.md","filePath":"guide/start/environment.md","lastUpdated":1712229374000}'),o={name:"guide/start/environment.md"};function n(s,t,l,d,p,m){return i(),a("div",null,t[0]||(t[0]=[r('

环境搭建

Node.js & pnpm

使用指南 中你已安装并部署了 Node.js 环境与 pnpm,此处不再赘述。

Git & GitHub

Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。版本控制可方便的实现协作开发、版本回退等,其重要性对每一位开发者都是不言而喻。GitHub 是一个面向开源及私有软件项目的托管平台,拥有着全球最大的开源社区,使用 Git 可轻松将你的项目推送至 GitHub 远程仓库,你与你的项目也将成为开源社区的一份子。Git 与 GitHub 具体使用流程此处不逐一赘述。

IDE & Editor

显然 Kotori 并不属于 Web 前端的范畴,但依旧隶属于 JavaScript 生态,因此推荐 世界上最好的 Web 开发 IDE 「Visual Studio Code」(以下简称「VSC」)。虽然 VSC 本质上只是文本编辑器,但因其强大的扩展商店使其能做到大部分 IDE 的功能,当然你也可以根据你的喜好选择,如:

  • WebStorm
',9)]))}const c=e(o,[["render",n]]);export{u as __pageData,c as default}; diff --git a/assets/guide_start_environment.md.X_FtbxVb.lean.js b/assets/guide_start_environment.md.X_FtbxVb.lean.js new file mode 100644 index 00000000..2f0bff7f --- /dev/null +++ b/assets/guide_start_environment.md.X_FtbxVb.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,a0 as r,o as i}from"./chunks/framework.P9qPzDnn.js";const u=JSON.parse('{"title":"环境搭建","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/environment.md","filePath":"guide/start/environment.md","lastUpdated":1712229374000}'),o={name:"guide/start/environment.md"};function n(s,t,l,d,p,m){return i(),a("div",null,t[0]||(t[0]=[r('

环境搭建

Node.js & pnpm

使用指南 中你已安装并部署了 Node.js 环境与 pnpm,此处不再赘述。

Git & GitHub

Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。版本控制可方便的实现协作开发、版本回退等,其重要性对每一位开发者都是不言而喻。GitHub 是一个面向开源及私有软件项目的托管平台,拥有着全球最大的开源社区,使用 Git 可轻松将你的项目推送至 GitHub 远程仓库,你与你的项目也将成为开源社区的一份子。Git 与 GitHub 具体使用流程此处不逐一赘述。

IDE & Editor

显然 Kotori 并不属于 Web 前端的范畴,但依旧隶属于 JavaScript 生态,因此推荐 世界上最好的 Web 开发 IDE 「Visual Studio Code」(以下简称「VSC」)。虽然 VSC 本质上只是文本编辑器,但因其强大的扩展商店使其能做到大部分 IDE 的功能,当然你也可以根据你的喜好选择,如:

  • WebStorm
',9)]))}const c=e(o,[["render",n]]);export{u as __pageData,c as default}; diff --git a/assets/guide_start_publish.md.s23QhAsX.js b/assets/guide_start_publish.md.s23QhAsX.js new file mode 100644 index 00000000..ad7f22bc --- /dev/null +++ b/assets/guide_start_publish.md.s23QhAsX.js @@ -0,0 +1,40 @@ +import{_ as i,c as a,a0 as n,o as e}from"./chunks/framework.P9qPzDnn.js";const c=JSON.parse('{"title":"模块发布","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/publish.md","filePath":"guide/start/publish.md","lastUpdated":1716217371000}'),t={name:"guide/start/publish.md"};function p(l,s,h,k,r,o){return e(),a("div",null,s[0]||(s[0]=[n(`

模块发布

当开发完毕模块后,可以将它发布至社区,一个 Kotori 模块一般会同时发布到如下三个平台:

优先级(重要程度):npm > 模块中心 > 开源社区。每一个公开的 Kotori 模块都应发布至 npm 并作为模块的主要获取途径。Kotori 使用 GPL-3.0 协议,该协议要求 Kotori 的所有模块及其二次开发项目也必须使用 GPL-3.0 协议且开源,因此发布到开源社区是必要的,开源行为本身也是一种无私奉献、共享知识和回馈社区的体现。

构建产物

「构建产物」在 JavaScript 生态中指将源码(Kotori 模块开发中一般为 TypeScript 文件)进行处理以适用于生产环境中(处理过程一般有 TypeScript 转为 JavaScript、向下兼容语法、压缩代码等)。JavaScript 生态中构建工具非常多,你可以选择喜欢的构建工具并自习配置,当然如果你对此并不了解也可以使用 Kotori 默认的构建方式(通过TypeScript 自带的 tsc 程序),在你的模块根目录中输入以下指令:

bash
pnpm build

一般地,你将会发现在模块根目录出现了一个 lib 文件夹,这在上一节已有提到,它是构建产物的输出目录,有必要的话可在 tsconfig.json 文件中更改:

json
{
+  // ...
+  "compilerOptions": {
+    "rootDir": "./src", // 输入目录
+    "outDir": "./lib" // 输出目录
+    // ...
+  }
+}

关于 tsconfig.json 的更多内容:TypeScript Documentation

文件忽略

对于模块发布主要分为发布构建产物(publish)与推送源码(push),两种情况下需要发布的文件内容会有些许不同,因此便引入了「文件忽略」。

.npmignore

用于指定在发布构建产物时忽略的文件与文件夹,在模块根目录创建一个 .npmignore 文件:

int
node_modules
+src
+test
+
+tsconfig.json
+!README.md

实际上在发布构建产物时只需要附带少数文件即可,而 .npmignore 采用的是黑名单机制显得很繁琐,因此 Kotori 模块的默认模板中并未使用该方式,也并不推荐。

package.files

在上一节的 package.json 示例中会发现有一个以字符串数组为值的 files 配置项,其用于指定在使用 publish 时需要附带的文件与文件夹。

typescript
{
+  "files": ["lib", "LICENSE", "README.md"],
+}

files 配置项优先级高于 .npmignore,其直接写在 package.json 中显得十分简洁也会减少整个模块目录的文件冗余。

.gitignore

不同于前两者,.gitignore 用于指定在使用 Git 进行版本控制时需要忽略的文件,语法与 .npmignore 类似,同样位于模块根目录:

ini
node_modules
+dist
+lib
+.husky/_
+
+.vscode/*
+.vs/*
+!.vscode/extensions.json
+
+*.tgz
+tsconfig.tsbuildinfo
+*.log
+
+kotori.dev.yml

发布构建产物

使用工作区开发时,需确保当前为待发布模块根目录,而非工作区根目录。首先检查 npm 源是否为 http://registry.npmjs.org

bash
npm config get registry
+# If not:
+# npm config set registry=http://registry.npmjs.org

前往 npmjs.org 注册账号,然后根据提示在浏览器内登录:

bash
npm login

当一切就绪时:

bash
npm publish

当没有任何意外问题时,访问 npm 个人页即可查看刚才发布的插件: kotori-plugin-my-project

发布源码

使用 Git 前务必先配置好你的账号、邮箱和与 GitHub 通信的 ssh,可参考 手把手教你配置 git 和 git 仓库。使用工作区开发时,可选择发布整个工作区也可仅发布单个模块,切换到相应目录即可。首先在 GitHub New 页面创建一个远程仓库,接着在本地仓库中关联到该远程仓库:

bash
git remote add origin git@github.com:kotorijs/kotori-plugin-my-project

提交并推送至远程仓库

bash
git add .
+git commit -m 'feat: create a project'
+git push origin master

当然,你也可以为本次提交添加一个 tag:

bash
git tag v1.0.0
+git push --tags

收录至模块市场

前往 Kotori Docs 仓库将其 fork 到你的账号名下,修改 fork 的仓库中的 src/public/data.json 文件,在该文件中追加你的模块的包名与描述:

json
{
+  // ...
+  {
+    "name": "kotori-plugin-my-project",
+    "description": "这是一个"
+  }
+  // ...
+}
  • name 务必与发布到 npm 的包名一致
  • 请按照包名的字母依次排序,如若有命名空间(@xxxx/)请提到最前,并根据包命名空间、包名的字母依次排序
  • description 不应过长,但需大致概括模块内容
  • 请注意 JSON 格式规范

完成文件更改后向源仓库发起 pull request 等待审定。所有新的 pull request 一般会在十二小时内审定完毕,当上述注意事项均无误时将会被合并到源仓库,届时你可在 Kotori 模块中心 查看你的模块。

放在最后

`,45)]))}const g=i(t,[["render",p]]);export{c as __pageData,g as default}; diff --git a/assets/guide_start_publish.md.s23QhAsX.lean.js b/assets/guide_start_publish.md.s23QhAsX.lean.js new file mode 100644 index 00000000..ad7f22bc --- /dev/null +++ b/assets/guide_start_publish.md.s23QhAsX.lean.js @@ -0,0 +1,40 @@ +import{_ as i,c as a,a0 as n,o as e}from"./chunks/framework.P9qPzDnn.js";const c=JSON.parse('{"title":"模块发布","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/publish.md","filePath":"guide/start/publish.md","lastUpdated":1716217371000}'),t={name:"guide/start/publish.md"};function p(l,s,h,k,r,o){return e(),a("div",null,s[0]||(s[0]=[n(`

模块发布

当开发完毕模块后,可以将它发布至社区,一个 Kotori 模块一般会同时发布到如下三个平台:

优先级(重要程度):npm > 模块中心 > 开源社区。每一个公开的 Kotori 模块都应发布至 npm 并作为模块的主要获取途径。Kotori 使用 GPL-3.0 协议,该协议要求 Kotori 的所有模块及其二次开发项目也必须使用 GPL-3.0 协议且开源,因此发布到开源社区是必要的,开源行为本身也是一种无私奉献、共享知识和回馈社区的体现。

构建产物

「构建产物」在 JavaScript 生态中指将源码(Kotori 模块开发中一般为 TypeScript 文件)进行处理以适用于生产环境中(处理过程一般有 TypeScript 转为 JavaScript、向下兼容语法、压缩代码等)。JavaScript 生态中构建工具非常多,你可以选择喜欢的构建工具并自习配置,当然如果你对此并不了解也可以使用 Kotori 默认的构建方式(通过TypeScript 自带的 tsc 程序),在你的模块根目录中输入以下指令:

bash
pnpm build

一般地,你将会发现在模块根目录出现了一个 lib 文件夹,这在上一节已有提到,它是构建产物的输出目录,有必要的话可在 tsconfig.json 文件中更改:

json
{
+  // ...
+  "compilerOptions": {
+    "rootDir": "./src", // 输入目录
+    "outDir": "./lib" // 输出目录
+    // ...
+  }
+}

关于 tsconfig.json 的更多内容:TypeScript Documentation

文件忽略

对于模块发布主要分为发布构建产物(publish)与推送源码(push),两种情况下需要发布的文件内容会有些许不同,因此便引入了「文件忽略」。

.npmignore

用于指定在发布构建产物时忽略的文件与文件夹,在模块根目录创建一个 .npmignore 文件:

int
node_modules
+src
+test
+
+tsconfig.json
+!README.md

实际上在发布构建产物时只需要附带少数文件即可,而 .npmignore 采用的是黑名单机制显得很繁琐,因此 Kotori 模块的默认模板中并未使用该方式,也并不推荐。

package.files

在上一节的 package.json 示例中会发现有一个以字符串数组为值的 files 配置项,其用于指定在使用 publish 时需要附带的文件与文件夹。

typescript
{
+  "files": ["lib", "LICENSE", "README.md"],
+}

files 配置项优先级高于 .npmignore,其直接写在 package.json 中显得十分简洁也会减少整个模块目录的文件冗余。

.gitignore

不同于前两者,.gitignore 用于指定在使用 Git 进行版本控制时需要忽略的文件,语法与 .npmignore 类似,同样位于模块根目录:

ini
node_modules
+dist
+lib
+.husky/_
+
+.vscode/*
+.vs/*
+!.vscode/extensions.json
+
+*.tgz
+tsconfig.tsbuildinfo
+*.log
+
+kotori.dev.yml

发布构建产物

使用工作区开发时,需确保当前为待发布模块根目录,而非工作区根目录。首先检查 npm 源是否为 http://registry.npmjs.org

bash
npm config get registry
+# If not:
+# npm config set registry=http://registry.npmjs.org

前往 npmjs.org 注册账号,然后根据提示在浏览器内登录:

bash
npm login

当一切就绪时:

bash
npm publish

当没有任何意外问题时,访问 npm 个人页即可查看刚才发布的插件: kotori-plugin-my-project

发布源码

使用 Git 前务必先配置好你的账号、邮箱和与 GitHub 通信的 ssh,可参考 手把手教你配置 git 和 git 仓库。使用工作区开发时,可选择发布整个工作区也可仅发布单个模块,切换到相应目录即可。首先在 GitHub New 页面创建一个远程仓库,接着在本地仓库中关联到该远程仓库:

bash
git remote add origin git@github.com:kotorijs/kotori-plugin-my-project

提交并推送至远程仓库

bash
git add .
+git commit -m 'feat: create a project'
+git push origin master

当然,你也可以为本次提交添加一个 tag:

bash
git tag v1.0.0
+git push --tags

收录至模块市场

前往 Kotori Docs 仓库将其 fork 到你的账号名下,修改 fork 的仓库中的 src/public/data.json 文件,在该文件中追加你的模块的包名与描述:

json
{
+  // ...
+  {
+    "name": "kotori-plugin-my-project",
+    "description": "这是一个"
+  }
+  // ...
+}
  • name 务必与发布到 npm 的包名一致
  • 请按照包名的字母依次排序,如若有命名空间(@xxxx/)请提到最前,并根据包命名空间、包名的字母依次排序
  • description 不应过长,但需大致概括模块内容
  • 请注意 JSON 格式规范

完成文件更改后向源仓库发起 pull request 等待审定。所有新的 pull request 一般会在十二小时内审定完毕,当上述注意事项均无误时将会被合并到源仓库,届时你可在 Kotori 模块中心 查看你的模块。

放在最后

`,45)]))}const g=i(t,[["render",p]]);export{c as __pageData,g as default}; diff --git a/assets/guide_start_setup.md.ZNwpORZ-.js b/assets/guide_start_setup.md.ZNwpORZ-.js new file mode 100644 index 00000000..a20e16f4 --- /dev/null +++ b/assets/guide_start_setup.md.ZNwpORZ-.js @@ -0,0 +1,144 @@ +import{_ as i,c as a,a0 as n,o as h}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"项目构建","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/setup.md","filePath":"guide/start/setup.md","lastUpdated":1723345558000}'),k={name:"guide/start/setup.md"};function t(p,s,l,e,r,d){return h(),a("div",null,s[0]||(s[0]=[n(`

项目构建

在本阶段中开发模块一并通过搭建工作区开发,此外还可通过克隆 Kotori 源码或单独创建包进行开发,对于前者请参考 深入了解,对于后者则无需赘述。

基于 create-kotori 快速搭建工作区

create-kotori」是专用于构建 Kotori 模块的 Cli 工具。

  • 命令语法:create-kotori <project-name>
bash
pnpm create kotori@latest

除此之外,也可以将其安装在全局使用:

bash
npm install create-kotori -g
+create-kotori my-project

项目结构

text
my-project
+├── package.json
+├── tsconfig.json
+├── tsconfig.node.json
+├── pnpm-workspace.json
+├── kotori.yml
+├── LICENSE
+├── README.md
+├── .gitignore
+└──  scripts
+    └──  dev.ts
+└──  project
+    └──  my-project
+      ├── package.json
+      ├── LICENSE
+      ├── README.md
+      ├── tsconfig.json
+      ├── lib
+      │   ├── ...
+      ├── locales
+      │   ├── en_US.json
+      │   ├── ja_JP.json
+      │   ├── zh_CN.json
+      │   └── zh_TW.json
+      └── src
+          └── index.ts
  • kotori.yml Kotori 配置文件
  • kotori.dev.yml Kotori Dev 模式下配置文件
  • package.json 包信息文件
  • tsconfig.json TypeScript 配置文件
  • LICENSE 协议文件
  • README.md 自述文件
  • .gitignore git 忽略文件
  • lib 构建产物输出目录(前端为 dist,后端为 lib
  • locales 国际化文件夹,将在后面的章节中讲解
  • src 工程文件夹,代码存放处
    • index.ts 整个模块的入口文件

package.json

以下为默认创建的 package.json

json
{
+  "name": "kotori-plugin-my-project",
+  "version": "1.0.0",
+  "description": "This is my first Kotori plugin",
+  "main": "lib/index.js",
+  "scripts": {
+    "build": "tsc"
+  },
+  "keywords": [
+    "kotori",
+    "chatbot",
+    "kotori-plugin"
+  ],
+  "license": "GPL-3.0",
+  "files": [
+    "lib",
+    "locales",
+    "LICENSE",
+    "README.md"
+  ],
+  "author": "Himeno",
+  "peerDependencies": {
+    "kotori-bot": "^1.3.0"
+  }
+}

添加一些非必要配置项以完善包信息:

json
{
+  "author": "Himeno <biyuehuya@gmail.com>",
+  "bugs": {
+    "url": "https://github.com/kotorijs/my-project/issues"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kotorijs/my-project.git"
+  },
+  "homepage": "https://github.com/kotorijs/my-project/"
+}

添加用于传给 Kotori 的元数据:

json
{
+  "kotori": {
+    "meta": {
+      "languages": [
+        "en_US",
+        "ja_JP",
+        "zh_TW",
+        "zh_CN"
+      ]
+    }
+  }
+}

一个合法的 Kotori 模块其 package.json 需要满足一系列来自 Kotori 的约定,Kotori 程序只有在其合法时才会加载该模块。不过当前你无需关心这个问题,元数据与 package.json 约定将放在第三章中讲解。以下是该 package.json 的完整效果:

json
{
+  "name": "kotori-plugin-my-project",
+  "version": "1.0.0",
+  "description": "This is my first Kotori plugin",
+  "main": "lib/index.js",
+  "scripts": {
+    "build": "tsc"
+  },
+  "keywords": [
+    "kotori",
+    "chatbot",
+    "kotori-plugin"
+  ],
+  "license": "GPL-3.0",
+  "files": [
+    "lib",
+    "locales",
+    "LICENSE",
+    "README.md"
+  ],
+  "peerDependencies": {
+    "kotori-bot": "^1.3.0"
+  },
+  "author": "Himeno <biyuehuya@gmail.com>",
+  "bugs": {
+    "url": "https://github.com/kotorijs/my-project/issues"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kotorijs/my-project.git"
+  },
+  "homepage": "https://github.com/kotorijs/my-project/",
+  "kotori": {
+    "meta": {
+      "languages": [
+        "en_US",
+        "ja_JP",
+        "zh_TW",
+        "zh_CN"
+      ]
+    }
+  }
+}

关于 package.json 的默认配置项与更多信息请参考 npm Docs

index.ts

以下为默认创建的 index.ts,当前你还无需理解其具体含义:

typescript
import type { Context } from 'kotori-bot';
+import config from './config.ts';
+import types from './types.ts';
+
+export function main(ctx: Context) {
+  ctx
+    .command('echo <content> [num:number=3]')
+    .action((data, message) => {
+      ctx.logger.debug(data, data.args[0]);
+      ctx.logger.debug(message);
+      return [
+        \`返回消息:~%message%\`,
+        {
+          message: data.args[0]
+        }
+      ];
+    })
+    .alias('print')
+    .scope('group');
+
+  ctx.regexp(/^(.*)#print$/, (match) => match[1]);
+
+  ctx.command('ison').action((_, events) => {
+    if (events.api.adapter.config.master === events.userId) return \`在的哟主人~\`;
+    return '你是...谁?';
+  });
+}

模块测试

在入门教程中提到过使用「@kotori-bot/kotori-plugin-adapter-cmd」适配器可以在命令行中测试指令,但命令行本身仅支持纯文字交互因此并不友好也不便于开发者调试。同样的,Kotori 已默认安装「@kotori-bot/kotori-plugin-adapter-sandbox」适配器,它提供了一个极为方便、全面的机器人沙盒测试环境,只需在 kotori.yml 中设置该适配器即可:

toml
adapter:
+  developer:
+    extends: sandbox
+    master: 1
+    port: 2333

运行模式

[!WARN] 以下内容有待更新

运行模式分为 「生产模式(Build)」与「开发模式(Dev)」两种:

  • Build 模式将显示更少的日志输出,有利于减少不必要信息方便用户使用;Dev 模式会有详尽的错误日志与开发日志输出,有利于开发者快速找到问题。
  • Build 模式有更牢固的错误捕获与进程守护,长期运行更加稳定;Dev 模式下在遇到某些关键性错误时会退出整个 Kotori 程序。
  • Dev 模式会有实时的代码文件变动监听与模块自动重载(热更新),为开发者提供犹如前端开发般的便捷体验。
  • Dev 模式能够直接运行 TypeScript 文件,在加载模块时会优先检测模块文件夹内是否有 src/.ts
  • Build 模式下读取 kotori.yml,Dev 模式下读取 kotori.dev.yml,两者用法与实际效果均一致,旨在区分不同模式下不同配置。

从 Dev 模式下启动 Kotori:

bash
pnpm dev

在浏览器中打开 http://localhost:2333 即可进入沙盒环境,输入 /echo Hello,Kotori! 以查看效果:

show

`,35)]))}const o=i(k,[["render",t]]);export{y as __pageData,o as default}; diff --git a/assets/guide_start_setup.md.ZNwpORZ-.lean.js b/assets/guide_start_setup.md.ZNwpORZ-.lean.js new file mode 100644 index 00000000..a20e16f4 --- /dev/null +++ b/assets/guide_start_setup.md.ZNwpORZ-.lean.js @@ -0,0 +1,144 @@ +import{_ as i,c as a,a0 as n,o as h}from"./chunks/framework.P9qPzDnn.js";const y=JSON.parse('{"title":"项目构建","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/setup.md","filePath":"guide/start/setup.md","lastUpdated":1723345558000}'),k={name:"guide/start/setup.md"};function t(p,s,l,e,r,d){return h(),a("div",null,s[0]||(s[0]=[n(`

项目构建

在本阶段中开发模块一并通过搭建工作区开发,此外还可通过克隆 Kotori 源码或单独创建包进行开发,对于前者请参考 深入了解,对于后者则无需赘述。

基于 create-kotori 快速搭建工作区

create-kotori」是专用于构建 Kotori 模块的 Cli 工具。

  • 命令语法:create-kotori <project-name>
bash
pnpm create kotori@latest

除此之外,也可以将其安装在全局使用:

bash
npm install create-kotori -g
+create-kotori my-project

项目结构

text
my-project
+├── package.json
+├── tsconfig.json
+├── tsconfig.node.json
+├── pnpm-workspace.json
+├── kotori.yml
+├── LICENSE
+├── README.md
+├── .gitignore
+└──  scripts
+    └──  dev.ts
+└──  project
+    └──  my-project
+      ├── package.json
+      ├── LICENSE
+      ├── README.md
+      ├── tsconfig.json
+      ├── lib
+      │   ├── ...
+      ├── locales
+      │   ├── en_US.json
+      │   ├── ja_JP.json
+      │   ├── zh_CN.json
+      │   └── zh_TW.json
+      └── src
+          └── index.ts
  • kotori.yml Kotori 配置文件
  • kotori.dev.yml Kotori Dev 模式下配置文件
  • package.json 包信息文件
  • tsconfig.json TypeScript 配置文件
  • LICENSE 协议文件
  • README.md 自述文件
  • .gitignore git 忽略文件
  • lib 构建产物输出目录(前端为 dist,后端为 lib
  • locales 国际化文件夹,将在后面的章节中讲解
  • src 工程文件夹,代码存放处
    • index.ts 整个模块的入口文件

package.json

以下为默认创建的 package.json

json
{
+  "name": "kotori-plugin-my-project",
+  "version": "1.0.0",
+  "description": "This is my first Kotori plugin",
+  "main": "lib/index.js",
+  "scripts": {
+    "build": "tsc"
+  },
+  "keywords": [
+    "kotori",
+    "chatbot",
+    "kotori-plugin"
+  ],
+  "license": "GPL-3.0",
+  "files": [
+    "lib",
+    "locales",
+    "LICENSE",
+    "README.md"
+  ],
+  "author": "Himeno",
+  "peerDependencies": {
+    "kotori-bot": "^1.3.0"
+  }
+}

添加一些非必要配置项以完善包信息:

json
{
+  "author": "Himeno <biyuehuya@gmail.com>",
+  "bugs": {
+    "url": "https://github.com/kotorijs/my-project/issues"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kotorijs/my-project.git"
+  },
+  "homepage": "https://github.com/kotorijs/my-project/"
+}

添加用于传给 Kotori 的元数据:

json
{
+  "kotori": {
+    "meta": {
+      "languages": [
+        "en_US",
+        "ja_JP",
+        "zh_TW",
+        "zh_CN"
+      ]
+    }
+  }
+}

一个合法的 Kotori 模块其 package.json 需要满足一系列来自 Kotori 的约定,Kotori 程序只有在其合法时才会加载该模块。不过当前你无需关心这个问题,元数据与 package.json 约定将放在第三章中讲解。以下是该 package.json 的完整效果:

json
{
+  "name": "kotori-plugin-my-project",
+  "version": "1.0.0",
+  "description": "This is my first Kotori plugin",
+  "main": "lib/index.js",
+  "scripts": {
+    "build": "tsc"
+  },
+  "keywords": [
+    "kotori",
+    "chatbot",
+    "kotori-plugin"
+  ],
+  "license": "GPL-3.0",
+  "files": [
+    "lib",
+    "locales",
+    "LICENSE",
+    "README.md"
+  ],
+  "peerDependencies": {
+    "kotori-bot": "^1.3.0"
+  },
+  "author": "Himeno <biyuehuya@gmail.com>",
+  "bugs": {
+    "url": "https://github.com/kotorijs/my-project/issues"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kotorijs/my-project.git"
+  },
+  "homepage": "https://github.com/kotorijs/my-project/",
+  "kotori": {
+    "meta": {
+      "languages": [
+        "en_US",
+        "ja_JP",
+        "zh_TW",
+        "zh_CN"
+      ]
+    }
+  }
+}

关于 package.json 的默认配置项与更多信息请参考 npm Docs

index.ts

以下为默认创建的 index.ts,当前你还无需理解其具体含义:

typescript
import type { Context } from 'kotori-bot';
+import config from './config.ts';
+import types from './types.ts';
+
+export function main(ctx: Context) {
+  ctx
+    .command('echo <content> [num:number=3]')
+    .action((data, message) => {
+      ctx.logger.debug(data, data.args[0]);
+      ctx.logger.debug(message);
+      return [
+        \`返回消息:~%message%\`,
+        {
+          message: data.args[0]
+        }
+      ];
+    })
+    .alias('print')
+    .scope('group');
+
+  ctx.regexp(/^(.*)#print$/, (match) => match[1]);
+
+  ctx.command('ison').action((_, events) => {
+    if (events.api.adapter.config.master === events.userId) return \`在的哟主人~\`;
+    return '你是...谁?';
+  });
+}

模块测试

在入门教程中提到过使用「@kotori-bot/kotori-plugin-adapter-cmd」适配器可以在命令行中测试指令,但命令行本身仅支持纯文字交互因此并不友好也不便于开发者调试。同样的,Kotori 已默认安装「@kotori-bot/kotori-plugin-adapter-sandbox」适配器,它提供了一个极为方便、全面的机器人沙盒测试环境,只需在 kotori.yml 中设置该适配器即可:

toml
adapter:
+  developer:
+    extends: sandbox
+    master: 1
+    port: 2333

运行模式

[!WARN] 以下内容有待更新

运行模式分为 「生产模式(Build)」与「开发模式(Dev)」两种:

  • Build 模式将显示更少的日志输出,有利于减少不必要信息方便用户使用;Dev 模式会有详尽的错误日志与开发日志输出,有利于开发者快速找到问题。
  • Build 模式有更牢固的错误捕获与进程守护,长期运行更加稳定;Dev 模式下在遇到某些关键性错误时会退出整个 Kotori 程序。
  • Dev 模式会有实时的代码文件变动监听与模块自动重载(热更新),为开发者提供犹如前端开发般的便捷体验。
  • Dev 模式能够直接运行 TypeScript 文件,在加载模块时会优先检测模块文件夹内是否有 src/.ts
  • Build 模式下读取 kotori.yml,Dev 模式下读取 kotori.dev.yml,两者用法与实际效果均一致,旨在区分不同模式下不同配置。

从 Dev 模式下启动 Kotori:

bash
pnpm dev

在浏览器中打开 http://localhost:2333 即可进入沙盒环境,输入 /echo Hello,Kotori! 以查看效果:

show

`,35)]))}const o=i(k,[["render",t]]);export{y as __pageData,o as default}; diff --git a/assets/index.md.P8--M6MF.js b/assets/index.md.P8--M6MF.js new file mode 100644 index 00000000..425ae8a0 --- /dev/null +++ b/assets/index.md.P8--M6MF.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as i}from"./chunks/framework.P9qPzDnn.js";const l=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"CustomHome","hero":{"image":{"src":"/favicon.svg","alt":"KotoriBot"},"name":"小鳥 · KotoriBot","tagline":"基于 Node.js + TypeScript 的跨平台聊天机器人框架","actions":[{"theme":"brand","text":"开始使用👉","link":"/basic/"},{"theme":"alt","text":"发行下载🐦","link":"https://github.com/kotorijs/kotori/releases"}]},"features":[{"icon":"🚀","title":"跨平台","details":"得益于模块化支持,通过编写各种模块实现不同的功能与聊天平台接入"},{"icon":"🧩","title":"解耦合","details":"基于控制反转与面向切面编程思想,减少代码冗余与复杂度"},{"icon":"🛠️","title":"现代化","details":"使用现代化的 ECMAScript 语法规范与强大的 TypeScript 类型支持"}],"images":[{"src":"https://pic.imgdb.cn/item/6739964ad29ded1a8c704df2.png","alt":"Webpage Home"},{"src":"https://pic.imgdb.cn/item/6739964bd29ded1a8c704ece.png","alt":"Command Management"},{"src":"https://pic.imgdb.cn/item/6739964cd29ded1a8c704f69.png","alt":"Virtual Control"},{"src":"https://pic.imgdb.cn/item/6739964dd29ded1a8c704fff.png","alt":"Modules Center"},{"src":"https://pic.imgdb.cn/item/6739964ed29ded1a8c70509b.png","alt":"Instance List"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1731827740000}'),a={name:"index.md"};function c(n,d,s,o,r,p){return i(),e("div")}const g=t(a,[["render",c]]);export{l as __pageData,g as default}; diff --git a/assets/index.md.P8--M6MF.lean.js b/assets/index.md.P8--M6MF.lean.js new file mode 100644 index 00000000..425ae8a0 --- /dev/null +++ b/assets/index.md.P8--M6MF.lean.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as i}from"./chunks/framework.P9qPzDnn.js";const l=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"CustomHome","hero":{"image":{"src":"/favicon.svg","alt":"KotoriBot"},"name":"小鳥 · KotoriBot","tagline":"基于 Node.js + TypeScript 的跨平台聊天机器人框架","actions":[{"theme":"brand","text":"开始使用👉","link":"/basic/"},{"theme":"alt","text":"发行下载🐦","link":"https://github.com/kotorijs/kotori/releases"}]},"features":[{"icon":"🚀","title":"跨平台","details":"得益于模块化支持,通过编写各种模块实现不同的功能与聊天平台接入"},{"icon":"🧩","title":"解耦合","details":"基于控制反转与面向切面编程思想,减少代码冗余与复杂度"},{"icon":"🛠️","title":"现代化","details":"使用现代化的 ECMAScript 语法规范与强大的 TypeScript 类型支持"}],"images":[{"src":"https://pic.imgdb.cn/item/6739964ad29ded1a8c704df2.png","alt":"Webpage Home"},{"src":"https://pic.imgdb.cn/item/6739964bd29ded1a8c704ece.png","alt":"Command Management"},{"src":"https://pic.imgdb.cn/item/6739964cd29ded1a8c704f69.png","alt":"Virtual Control"},{"src":"https://pic.imgdb.cn/item/6739964dd29ded1a8c704fff.png","alt":"Modules Center"},{"src":"https://pic.imgdb.cn/item/6739964ed29ded1a8c70509b.png","alt":"Instance List"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1731827740000}'),a={name:"index.md"};function c(n,d,s,o,r,p){return i(),e("div")}const g=t(a,[["render",c]]);export{l as __pageData,g as default}; diff --git a/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b6b603d596933f026dfecf98550bbe4d0876276b GIT binary patch literal 43112 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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..def40a4f658cf8a9f7029c98931f5c9ff5a00910 GIT binary patch literal 31300 zcmV(?K-a%_Pew8T0RR910D43K6951J0MIl50C~{>1ONa400000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a3c16ca40b2a8f454c34cfa91996ec99ae2e4aa0 GIT binary patch literal 32564 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 b6r&82^QQ+ZZ1?Zre-i}g|91_a`#}W>14e7b literal 0 HcmV?d00001 diff --git a/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2210a899edaeb06655f7bc50e7f94444da140b94 GIT binary patch literal 120840 zcmV)DK*7IvPew8T0RR910oVut6951J1HHHa0oRcL1ONa400000000000000000000 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̍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�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

l(X_I+GK&R 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 H00000K--!s literal 0 HcmV?d00001 diff --git a/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..36d67487dcf5fbe3dc6d0a6b01cf4d29dc997765 GIT binary patch literal 16272 zcmV;BKX1TyPew8T0RR9106&lb6951J0Hgo_06!c61ONa400000000000000000000 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 G0RR9|PM1{x literal 0 HcmV?d00001 diff --git a/assets/inter-roman-greek.BBVDIX6e.woff2 b/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2bed1e85e8b20cb3903206a6cace251c52bdd8c3 GIT binary patch literal 29920 zcmV)5K*_&%Pew8T0RR910CeC06951J0LqjA0Ca2s1ONa400000000000000000000 z0000Qg?t;OY#b^-NLE2ohh;xaRzXsMC}fi?=pP`g7gf&Ned zHUcCAge(h!7ytwy1&KfhARDQ|6*9M7GC`dT0HL~c-mhLbGLYMWR8$PhMh1e7Lx7Cu znUeoMA2)^w{)kq!H3&&^Q5)$D$DFhvd!Yr{JMu&#leQ*#c-2wxkOIYTEdBjr)yCM} zD7w$yeN`VCXo}5YgPX@WBsC7ga!pwZ{3sK@sbRvDIMEYrTqc+j5ot~)wyQcKSeCIv! z-A+u_KV|Erx9i%~R$xGer_=ub41x(a?Lvjtm!9Gg`hRAUf~lf5bP=)LHYuQmyImsx zo74ZUWSQbPanm**2v-A4TiVT;6_D(F*w2~8h8P}j%W1*}S>h{Q{oCDxl4b-8hx7?4 zGK84=Wv;rB)&LN?oD$+apaWjkYKCB&9V$lutk?{UMiF}kU_=076;e7(4D6bUiHb`w za^*I+e%;zlfA7{V3;6F{zP{0n%I~sMQEN0OxB(c*B=4pm7{CHypig+b7oM-R$oIQv zb`}ppH~}4p?g(5e#>YnX+u0z424Z(|n|~he`~5!RC7AcLW*l|K!eP>YqlBXAf7QE& z-l_EyXp_PcL)*K1!2Cs+)Hxt7a>7j=6UmZBKrEHH4Kct4%5T1lBi zf@pTM=KD62ZCOpr4$w$Kg^JkIW%lkilj$Y}x^96XSU{F2fmLN$*Vwu$+kPX%vStl%)$=fBmu{;!4S!&Y5E#1$xF>m6^%o`* zFOE%g-y3;zh3V~D?Z;+ep7#j9d*mX#bvz?yVW;qsljSE(4_m8yej)^h;1@G?eV+L8 zZw9LqKHv7wMT7O?hs=|eub-PBgz7_l?Wg(D0W$mLUt8<=cO;zHtVEt0>XowZYqDed z!pI_>x6r!}Y#c`hF@XFf&-AU_f!G9lLaxt0ZX{Wkq~_1pEWJzf90D% zA-%9(hVIu#)82u%0gUXvcgXI^8Ht6vJ!fukzOGz~@`v^3juxYP=S-j6sqNh#<9ACl zdFGDK8 z`yR8DezN$>XvTV(%6wdUb)T5uu)nuk0M+ACrRJ|$w)00fMvIqU=rzxozZiYkFQ`}P zrM(uWp8JK(_POT2j0VkHMwjMrWAyst3GR1f(*3eht9{e40{r}?sI)YKbK9d4^TZbD zy14*hb0t+6%y-wL9me1;a-Lyq|4|gE)<7%|_*V@(z-;X)#;bjw30s#0U_6QDOwP0n z^WgQ;^RnnY9FiC7&p(;YUoM$StqG=k^66|*8U@`Oo&w=bjH0&9R}US#LOI$dP94GHd?>!od#PnJ zRS$jH;HrfOGm9Pg#a&n-(#GS6h$e`0= zUn(jHrZX!tDSrRtE@uMR=%LGC zwg@bn;C$Ze42gIIQN*H>gK!BifH<^^g(Q9hib+UC?HB;0GW)ut6?0qM3wX%hD3lOW z(;*Dh1vohYDk|;;PzJ(l`UtoV0C-}hHbh1F5b3};aM43+I=B!jK5QTnD+SLvggCHk zdLT+dC@2AN0mjE2jT$xtIc3Lf4I9Q#q9wtgAh4Pv*dSHm;93eIVF241fJ8(PW5X2V zs(}KQ0fJi8l`nw=qOFsP|Fodog43Wee%f`UL?vuWavZ+3s^`P2W$K0N&g{~!Cf?=Suy z`S`+hzdibi{I|akf0p{w?+3qFKr&f;(UfZV%zxFg^G)Om90j~}C9 z?Y6tO0R*tu%lt=gZ<_oK;AT8z-@?y3xbvpf<_27Q?Zh9yUivA?()t>*#y zADedJFB!jaSLH`8}i zx8b&zQ;%y^)m;AF3;ONrUp%aJW&Lk^05Cv{((QdzH2&R9S`9|mKYuR1N3;2NLi;d& zjemMW5hu`n&OLwVPwKqo^DssQ^uIwmks~QRidXM8C(}(%E-lrCv?&A0WJJhF!h?^J zk7snt$9)D$I1*HUpQ6JsrZsk*GVM-=ZA4$g@lh!A1CP@?#HjXV{&?G}X zO$H1%!^5Wb_cai3#iBH;n|@-HYp`*{)=#p$BJe_^*DRw8`{}HzFZ^g#l$5$&c))eH z{Uv|m4Fk5PyVxh$HRERh<8g+*q`n8Iu^%ZJ+m_^ma?0IcgAZoP@YVX-GGM0T?Sx_k zYj!rOnTXm+c$<$!0i}>NzojN-2yA($%9tYf5o#`0J7W_0rOdXFU5udZfp)BNo*>0& zNOzS`Ao~)WvM9a0U8Ohj*JU(?eOb%8)j7O3#)HYHP=>+?{)n;+$` z-oW!-G8>0J6}5Jac_eS;_g>#CXO?@NKN8{mg?KVQK)F@kYt?100yv<8hCZ~%^Uf#Z zg0toHv&?BCh!)evst;!h`%`7498C+B1S5&dY>GMj<_e0MCoGFFCT;;e6PqAry1N+z zBQuKVkg`-&ueL;(3B!Nn(`XDdXwvW_UcthjAZKxk4{<> zIv{Rr%?qzByG{@uWIFKT>dZQ_YQP@Hn~?Yxw_7T9hw_v9DC!Qn!HoXD1lHy;K3g&_RCt2a#^*kQZ=Kayc0D$n7+ z5BB$u$um9zdD?|pr+Fx2;{=_jjErngfbNA8dV=o>Atqz8df%KFr7ZX+p@P|uX(%xh zXnkt(`c!DVaE#`sA^4&wjGKBa`EW1{_EEADO7erIjSv)B7RNMO;lv|?8;8jwx+k4B z8Vg+=a$Mr1%)B!V4u35N`Q$^ej`YANeLye_#|#EN?!Eb_;7%EE3{PG%L%w6&CW)LC zV}_M$9sU{k)5?M^vOTD?WK^?&2_U&sm#DBVjB*Ox1CbhH6%L)IGDWelb~#b2OunHb z{pSv@!y0)}Dl=bT2rk1JHdsbP1%HLX|55(fgI==dErr?d=!pMZhgJGq&mskJB{AC( zN&Km>MSXYdR=T3CW z6mp8fR4m8GnPeZ10>=UdOG9D zze@trsa?Y&#`0}AwICFjVSExTA=sQ7Lw7OVxYvvVn^=*zJcr&AzRJk8O^LwGYmPrF zq; zb#fgOej6Pyz`@e0k%3C&ml(CnJcAtUwl9MLW!HZu+kdqE+UnOv%RN2cR@-qs`r12h zU8dza*%T1xppGp&Ws`Fk`K-eX8&f&Rkc*deao*Vag!?=f&O>i?3ueU2aPx$Fth==t zn%*;V)kKC43+Ll-E$K}7w%}NEL7|re$LCnYY;Xon%oAe_A32U^q6$CBX*ANep56e6w|}=aoXJn`NL; zrlyKYYOyU3BJ*j6@mc53o#bU&VPQ&>Og7QGGpN%~5zZ0OWZMx3 zfzFf>sSiseAMOx&0k6Pzp$1dx+giX72TRwsJSu4?85T=CU9fSQeg@Y#%Vouunc7Z9 zib3y77b6rxF7`Q0WhVpbFh!L^NQojnkmYZl9pSJXkIjWDiG1B?4*5Itn6gHP9v9W7 zblXBBYuQeYs`rgp(T9Qw=TG230JVX%aNp z3sePElWJJu1`-{Tee7p#RuxNGnAbO1J8v7mnXJ@-meg`l)MP3fJKr!V>?k1h2Q}tivy6MAZX+gq1Ty$$dJlXI zf_#P)_8pAw@Uz`kx`_v_{lf$~X&YvJ-@M&)Zc+S%V87nlVhkrE9L^)R@{pK8Og&^> zov0f=CZaP`k#GQQ+DsSP&8KG)51Vungt6b>^uGjPEEpz}x>A6RTvP&5wr&}(@g%`Q zH*WNQl8+~vy2XW;cs$c1sn^j00mh5DGB3eN#v-Te=|YqiY9QU-lWGYuYyX+oqV@h;iHuWh-35mA$7V%w}G9PPRvrln0Kq_6ZDG4jB6^o8roO(p4%H++L(=XxpNftAm7i(_vu=n^8c=)le3~=2FL%5D}Dcf z2XsUB@a1&E$t*moFx$)JAL&lP+O@GmRAMssVd`-L8+)|1GTz6hsMZIc%JK|k9P}ai z#WO2g{DH+G`41S)PldnPn+i8tIF-BZI#`^}lOwIl`1+Ew11j~sn0Kp+gin1^EPR() z=~Zcv?e9yG@mbxMo6a39S$6{__dm1JjW<&fNuSf%+u?j#486l-)|AUl(+Rw$e&YJG z{)zt2cPFkbTdk0;_~dl$ap`fO6xf()=QF4R2Q25m?Y|Sa8dzP|NG9cTsWwX?NGt;&X21nn>EiF>aFuvAS)1yyrueu+GdbY>wM$Vil3%GJ3!DSYmrVH zJ<=lTQnZrJD2`0a+#lej5Hmm(U?7#WtUTJR(WF8@Yg2wRWK2OPWCNCNQfA()?72@# zK!p{M4iB-}(+=$a1qzDn-vSF(6J0HG7?vknqwVL3*114$??T*^dy$UNc_K?#T{swo zS%6b#8Ek9B5}K`Z$WN5L3Zq-SCwRkFGf3_o-H9+YyEGA##hJG& zD>LtImmE!F<7rKSF7=U-F15`8c}M^?2Es6-iR6h*05w|8@qnG5?AoB6pt*I&!5rg= zvy9DJYh6eJntI5pw}(+`-MW*-+A zW9AqLfLOVvi%BWx>X&(3tbGyfU{n;`*09`}<@yS*-WR}gNJEDhg20!?rdybdn}lX* z1OyudUT(Jw|8ZGe>%NPGC7TXQKM)XQ9D2FR-tV*;*BYR{Y_P8ZsByCh2rq2ovX=Wt zvkRUrq;$(h5}*@oSrnGs|I#>{`UecyPQm@`a<=1>Mz%5=ggmXvDI;kq{LI<_%xlIM zry~M=P@REY-p=6x*D6}teAwZ!EdsYb+4asbp@*EjQ3nHWq$fxDt9^188bDIYk5h6onooO|idZv+w}UFD z8p|n{ujVpCst|FseesHiHLYWrXwTyC(uPiY!$?pN#ojr?JH3vcM{g?0p7(a8mY~4% zgVl6N=l42c$%w1!I5%}1;;L@)Ugvo=1nGFg6mJTIDYZS$FW4O#DcF8YX_E|*EinkQ zHTJWP%%^;CcuVilSz^74o3*jVj;nEozMp)kLUkOz+Ui)^NWt!-{5BS$*4L|#n&-`_ zjf;=3i}jw)qj~k#`2s6T+4TTgbG(^Oe00dD72|Ly)1PSJ6pZj|#}x$<43WWaj_b?E zW!9YVW*Havn}_&oVog&sThIEH(AchN1@|d~6V&(qRx={yA zeA;ef$;atQeq*gm$z_Z&E7xeOpZiNgt1xJ^Py|E|GqkUUv=x_6?{%PiMFwQHzzJ4O z4K&6Y2x6Ch69 ze@53+)+FnN*v5R4SIwcYR?`kyX9a)uz81SEay*e*I^%$aLhoUE)SIhBo=U#|&$9G^ zg3evm_hTQ{F$#`Wjzp(^cW%c;iwl^COnJaR&VQin3`2|C1d76VFvYg>J&YdEf7i|9 zbjYK+uC7P5bjXP}@}Rex>M|Ifm{>FE6*fj`^*QdVd1TaLZB|BdL$c?5VS&eLeFm_8 zbN`TozZ*KCd$+vgTbFLjZAv93;u}!`MG+%?SoyTMSYUdf-?8W~In`_C+H6<@uNV zrRNGR@j?$7c|0}2$9P2D&0=eT5Ki>$HWv#fo||@?dXBSB5SxD&6Wv#uD8v(BM_rd= z1VpGOWaHq>!N)$=T_=53fv33*Ujxg5fu{(O(8%#8_(p|X3YLdOJz`BTw;!sO0OK5|^kQ1> z)s9Z`&Vz!Uf%}6w_OHEOl9OIuIvLaE6n-e$#jU6jjsN;Gon4%lCyY!Zw?Ya1Q( z3<@iV3t+>x%bdLDB0a~wirxGec!G5&EhL^m53%ngG?jM%PqL)wvkng#cM6yeb zWjRGVkbuUH#<9TYvzIXWUdt-uQKiV4WSn~(k3SUGEbr=OI(!Np*IlkdBghSjJ(!nB^P3%JOW|pZkry zz4sd^zs7~S^zDm`nK42^v|W3I0@3b7K?;G8g=l|*s1RY_Ua0~74VL3;%e&2KU%Erx zX&>)3jCntdS%;D>CKB}H&8G9y|GPh`H40q!LL#s+tHaBN32HLzP|BAt(7lz8TV25c z=M9!=MOY+DAVCCj@^dvGo2nYAPkY^B(46+>#+_j0vW{q_6W|yOJQFlUzdXzxN&qrc z1uL()X6c2tLPXyZULFPFy6+eE*JtwA@72KRrl=_|C$_Bao?2!t5D*3sV5lCe0;+#l z78r&CkPso_n%+)9Y#jP#L5dzNm5@DHHlb&#fVrN96oG=gW+0| zb)u6c0ZZr;LrrgA8a`~7G`x`LgelB<6>!duswh~IusU8rbyS}2bp_Y6&TFF}8OkXX zf;kiJQo_uV@<{}x{1f$wpglF~7q;rEBeJ`g>%KxHme*F-|2P3*U_-;^tqRDTPIHzi zn?zAEaeImy5&@|#JRRtRWd09JRT)VI>S!cU4Uw$OK(+;PZWE$Jc?=;nA&Z*?k}!yV zs42m~@@Q)E<;7`WN;Y{^5c7cr0MbVQau9T5pYXQF`a(MYx4Km5GYVcVp(RO}$_KHt zMC>$@mg=fd$QwO$r?8oXidz99j>-%>6f$gJJ?Tg-{Q+FyisQwy z;Gd;`!Wfz=M@`~)yKcjt!#-i%#Cn?b!=4SC4E5A$2Imp(>1P<+@m>_)M8ACYZ-2tv z&p77%;oAk>BWI7?oV9#(`z>!~|8uL8FW%NDoOJQ@OS7cCcW&pPB4YbrRZ=!nb5+Bs zw`hpCT=!@0uRTE4689Kr?P(`!mua)KS9N&0Td;CHtX{ExoPmqMrokIS@d(TiWfW-~ zVIq()HuW|wGCg7jO~TCl%~H+Q&5g`)=D#eyYViSnw$=dd0>5I}Z8eKnLVUO8kejwb z&GGg@4zrGaj*E_)j(bj;PICvP=7t`uIr!9B)TjW!0r0^HxQmw^i56Hv5Fn5S@Jh~q zU>F1e3YL6DU=^gQqHEf??0M-l@G0WZO&y||rU5B6E;#g@T3`5@E3uqJt=02TCEpj; z*MUM&*+`>-_hXTUgivrWUPrpV$^YsbEd6@lNW%7Z>)-Dmb#^GIh2rPjMbDZEsHVE$ zEh;Kq3Zo|f2O;7<@~tp~>zc5X`(m+7RQjeV>za@KY8{6En9{?TBF@Bg(;*HUP)ylI zaWIgHD2YBgn4b39&DB;wVL!`p^o@W2>$8ypKnERg3_|Cr!{tv<*j=iS;06dMCj$-w z1cnIy;1D9=OK*c6P|A(^ut8{D4`Fi*1L$YrmzIkPW2$Klhad6>cF%Nd!oXwg5+$Y5cV2v(v8=fjE~6}Ev~qn3LN zmMAkbN6~Ei07DB;m|^k=!p$h;@%P%N!KOm4!T3&GG2By06R#*)kg@JIOvL8&ir}#} z6~{A~DRw2urm0M(5MN*u7jD~dkZCn<+n5c;m*;Eo_$R-A9-LLkWo)bs+jJXCL$5D7 z)N+H2(2YIu7V@28?h?A2rrVYQXJKktIK!_MWtNBAY9xzrpknv8%W#BEHIa>dQDMr* zzc%)&P`2K!ww?<(tO~j2X(=F+p$@d2G;>#02MCLkbYif@G`flrZllnUL@SUnxEFO3B_Ffry?^GcX0(|f1`WLr%1T`OxaRX)K(oKRP zxOIygzZ=%k&3`c8yrNto1udvod;RaX&g~i!9_Y$1)6JuQf`8IQZh#99WLpfEsg_1u z`8}#77@M7B19Vh|(6=^lB>HsUtV=U9-57omFJ{!ClFk8SC#d8&QjXEsrug_^eRV7J z*ES#Tpx)kGJH5OxKX-!5n^|6a`24Bjzt~z^o}J+ypPOG?IRjdRagQQdL*jFp4N1~8 zw#|z1Qkc}4ihHtYTF0XzG#h$YYa>4Md_N44CUUAXvPtM44*VcWisGB)6azd}!fHt3 zTvjbpO7m(ZhV-C_v(F;p!1wpK3QMtm)VX1W(?05+S1qfKZ6Tr?)n;c1YERv2Y8phd ztcq8I2qC1rL_#DFAtiHwZqo6fW##VXHp{{o-^$XN zJP-eVw7t0{Uq<&=wQ3YO5Gu6AJr$-;A73wx!YOgcTauY||2tkB2pEZ&0l%>>uUd%AO7Q%B&%2y zIi>^=&Vw#Ys|YhzO;vH6WXx{`J#Q7%M%1H7^P)Fcow%s0P3m;cm~J}olFT%$&L|j< z21fQ>cb;|s=ush$sd$L6Jn)%y>fqw91(eU$nN44^^dBn(RQhc&og0#poH zdGmzI)j12HqO?S}%wX~BG79kZpSsWz5}v>X0z9LD7Ph|O(_f1} zM`u94;C&T1w?w7ee*E4V1#caEUeGA+Gu9m^=+FEPH2V&=rujy81%NJwnTpo znhSc<YM;rVH@H5CsjnLueAvB8t|e;F1wj&?t2HzCa&+g=cL=A&#S}+7*IP zwMr-pRSL58)~Y3qpPhwv_eKD{Y&fPd1)|ojTRt*R zrL1bwHJuKxsU(dL*Vij+NN7U?i8V7S6czee|JwES%(7~$r98txNGL&oIFQYXE(ovF zp+GXLu!4G(Q`RJ0_R-TGeaY;UgUd!2tfH6bYjiF329jt*CpM5&ii5l$OT5M~EJ6?p z*THLCi3T1C)Fa@Pq7Y*_Jfo3=^w^?r&9N%6?rlS1YE*WJ%m$-HBIBQr;{v1H@2ROf z?<t0LsOb`BI*YIAU20^M01VBw&$$q|x! zYDKp`v|5!+N;Jv10fA7deuh5s-=IR#`WSp_SX{ zwb<#&#v|p6zg@c5aLygcoGVvEw2ij;>}VPRXG`6A&*KKq{P%HO{{@~d+Q0+^G-ZWR2Re#KG;cZl{Tht$7G}XGI1HH1z z_7HNX7}aDt%3eC4^5bBRid|nwgeq(ivD+IFrnEgv-sJ>1kRcx#LMo z=46nmQrrzFBFT!IG<}AS(sSqzkmf!Qc0x1OU@Z>O+|rpxMUKvGtfmW;NRvsvjImOY zB%alS2rN?ASlgRxv`pw)DT2|RYC%s_JrlREmLm|QQ7M@z$)o}lU=U?|s6P*|=Z&{F zja@h~Jw8GJVEiXBqF@PC>$tx^zY;P$gccM;1;T+p5Dp>{1vv1Vg-HA*1r-O^406~L ztkM3q>`J8$65~P=^Gnd6j2aq9v;Zx&%nL$UbK|9OZSjT zE)j2>6Lx?5pL02RR6p_CmULH((9*sb2bxNtZC9%52P{irtZ}rL_OEw(QaNm*V{3`Z z_^2+wHZcs#YN(g_%pr|qEi=<_`B*@)D*!gQRBhATW6zj1CQO$F%V$N&xDrqu$Ba70 z|F#^>#awP}BoSwew_eUt5xIuMl=!4bNsKnE^8Oq&Sx@);o2EB58(nC7`EhVdZf=vW ztCvGG5Xh=Z?H+H&oXy)kiFhbJ_F<+p4gr-cA0@a9H1IVluOH?as=>)zxkaXtQDTU! ziVg+F@5W1?@iMtuZ;Ow|&dUj&Qx*NXh zrb#Yt4g2p%y<8lDNy1-D0JsVt3-3CMf!o!}((6h!t?wX7d0-Al{7 z4Avx3B7_-{>xwOq3R?B6Z<)RV_VzS1Yp#F;kJ{d9oT1vu1%tLbW0}QGBGIt0|EoZYGx9~ z^qLDIFeGTUIO>bKutyS|u7C>jJq81l4KNI?p;)f;$z5|Gk~GIix<%LMUaC!B&B?k#}@K0EbbvO+=vak&FhTKK*coBu0mxk!b8T#BXy)am=8}wFsv|(b%=~JDH39wyl7+ekJ~zs$&4&_n8Met`0pN^j+BVq z&Oa1Eyh|`I1mjstkZ&^X-e5M~Fx@c^IA0EDgY9Hak0JcW38GAeu&LCsvM)+nK(Q+1 zmk%;$)f&jFH}ON6i^7`m*7GdIY7pjb9nLro?|`v-fF4g=(2p=3wp2ZagiNcg%SLbn zh8ep~G+>@p@JCb|bv|?baylLif*``A-w;y~vc*89JS6st?~rtu#%VF_PaOdT3Y<2o z5NbwnBqaO~4u=;Agn%MobI&V|f7Sa}0nO0g{%;f7C=(1AG!tnK-PJG1QF1lrg1Qh?bPZJFOTyow^BH2+8`t*Wa^z`{~NU?8?IVv+L)M z>r^y1yYTCKwUsN^E?%CQ}xBAIb+ho(q2R~B?JGKt*NQaQ6r$x5K79`f!*U1ry)l!orFsNro{`!5I`6y1W2F+ z?2ao8PqQz?DuMXm%C#9Vs&`TH*rxHfall5%trPNjG7INRKm1uE!wiIc?@Zl^}dA^G9fAP!ytkKiTRN0-Jb5qa#F{f#lte8Efg5TnUm*BOmco9@uK5=^*a zrTYfLb-mIQVe}+yGCQ$wE?aySoq%TNe>SJotLfYH4Nzz*uQ*+4rQhzD2? zP_S(b9*>2B;Z(cshv-4&J&&)q+uT}{uYkM+#yJE%dOxznVTWdQ?M!hEcx19#Pw>cU z{K@&|h2X|usW7={);ZN8T-AAAFeib%_@g5&#aHT*+$7iCy|*hOuB}om5wyqnP_Z%l zunCtOJHaocFAGA11mFD3#1K~kfafz=a51)q!Gv+UPV%-Yx5TgSGROHZqHGL9kjzvBRgxz-J@rg_Ja0;nt778vk+&JpZCi zC39FhBo7Ne-nie9Ze5Q>!k?{!kr0{xW1=dYq6R0j5j9SFBR(&$Y(EeVx|NutRg`|g z2)fXXQ(?x+TIgq5LZ~G=4>g5~C(=cV%8L@K*piSh@~1=TMBr)9 zQiH?0E)yY+)ktH^n`n1Se3RXrBB)F}Tx9EHN95#{vwgEa^`@xtYJaxxu&M1oc6oX+ zJ!|sl`CSRESTq=5fjl?^i&!o3U1z37)2Q@RC*aBu7Q%EG2DQAry*^sctSUqCTdnKz zI65J0i$;ScP}jg16%^3oX1lvxFGAG`MybY?=4DvDY4+H?9_Yj&LddGEXpd|zFiv;i7yTl-veM15L-chCMtC(ZS}pdW8m1%uP!0G^5`Jws zIEdb)B^tL73~$SvTAQYqEFphku$)eV-=8}cg~z#SxuICSljH4l-73i~Y^d?Frh$<~ z=vW|gl(FxNe$b7TWqWFFijFfw#)2r)j%<#V>CD2f3;iA1g6Dfv72dnMRKno5w{#x- zK8XxLh~_(bbmEu`n7pu;lB+>8v2=cYrT@EDl05%hAeYP$^RHeIth#}sI99CM0k>aO zczE35e&%LQ^M3P&j;ZStVlEF|1PhWmWW)y&qZkMh1#tUirj^O~aTRq4tYZH<+$hv# zaQ&Z9*S4?UKM&I6IK2MhTWy-;lq}zQy+OmH;{9Harni>i>WXj(yyx@qiOsv$gXM{~ zH^x31%wFJE4YzP}$%c`cz*Jsnry?TIv%~<7UM4tYiDRK~!YZfx{Vida)lfpUW_w$T z@aE~FVaoI<&u(2jn@96&2j)l7OB3r*YTYm!h3CJZ!^pBm_xsyIPb}Z}&FZkXtq^^P z{zEf#7#%BQeR>JLm40deq@MzrbjF7F^q~WBZE3Gv*dre8=)Iw@V2r~0!}A_J@)m>O zZT5LcQ#4a9#^cFEp-^1-UQp)u@lH$|?~jIq{GP!bM5BgVJd?%%qCe2SH9 zLW292$dt-MzrJ&rx?ncHB?>9##^gycCVO&$M87}NwrPr<&)&!gERmx`CNNAtfPRrW zkdcU@QO|*MjHddry1>vPL>n#&Go6<8b#!TmMi=c-&<-)KQ}DD>kkU;<4V|cMb#zau z;BVWZ5eW*HJbx=Xew0a-GA-FweTT5Q<<}2`F3fev z^Dy@4H#UqhZmE-3X*WPg5_jsKI1YNfA)IVD%$30HaBv#wz|+Ni$t14Y zNCT79u3`|4`Ypj#67{@Y7WAKxinm3=v=>hM{otCe$RearLLYq`n_ykif{Ow|EerBYck5Kk5RvK8vV zOZTN4G)^zNyg(ztm?*tYXo@r!%D_;;x9=n~DU*dCrbPeBgD;}VNYTpKDZlI2J#M!r zIp66%bMdXPj|WqX)yJi)VQl$FB`_+%cuMQji)$pMvW_$t|Jm_nu6R!5??3#uJJv^n z<2nA1j~&%&@Bve;W?HMNm z=q-d=N@kH_9A_!(s_ulndgbS@SwB*9-Xs4d_lm0W+0oAV7e^aY6)~ z{VX=Y{t3}>z{rum54}DKu3Un5`cF5<&m#5)-R~kAJjzii$TWhT%QslygbQP^43^v= zWtPUG2z&~WqKI?>(PM2W0*AqkH}(U(wq_2xvAVRHN9+MA{eJ&wgRwBNfB(xJ;9OBy zo<>^rsuyx%1r_&?a~M;I=v8xPpWl(CYSdZokv z@wC2zs>Rxv7^+#fLi_lK`97Elsx0?Iq zSa-8l>-)EVgO!D)(3&Gi$M-@*ccpnZm8x4&lYTNCpTs}A$RiFHJol)e=8QcY`yrE= z*2v^uMbqUQ!i$?c@wwHTp=3XLLM&L$-FDNi@K-PRmF}Zj@Fz(S5nwC+yS)`nqOPS{ zqqweGp$Pi5I22eyxwfwhu6@Q_^2 z7dP0>Z6pX(0p)4s7K__wf^3E5bFrD({bfS^-H-TvMh&gGv@C zR!3*LpWk$Ow>b$ft{D4)YE3TiQnu_|A3L&nFMT$jlX!EotYMP&vh|-&x#MVQHygYD zH7gXY)+l4io#I&aVavD^j<8T#>!@Vk_LjG%#>-c9V#ebctJ|BNuhPdzvS1a*V_vtA znFOF`uPuHg_j=QN8qpxO z{h+HZ-(0c+{=T$aNFDX_;KU_3=<;|!IVd8#f*^u*%e3sQ;a$l?|=lb*CNS!m}i}!mDnJ|4qvf8qScOKiW`f)}nw8kgdkn?c~*!Og?C!u7%c_aa6 zIaXl~=3oJ2nB%!6yOYYrGOy~EF6S+fkj6oA-U>&mC)sEaYN03TFklYDf=`5izdg_Y z2$xVOEuKTc+6;MljoDp}w+08d`{U2(Pk~?FaNt*C;OT5|P@MTHb*7ExuA$f`LGQNe zh-7-6nQ?zVG?S;OlqG_VE>=VOoQ?d2-oXDqy#u_dlI-_Q?X418w6>c9BsQ>cPe)*{ z{d1~1FYlfd)E5p>L`4Q%U?N;`t@$znBX5|iw2UhWIcp75<@OW5)%c7z&4HlTA+n}8 zCEhNv+JugD%1~=T3ew<6EXY1*nc=+>Do4k?{EZ=;q{p$i3?8hTlWhP&N=#urE}I`> zpD&%vt17|>3F1paF9E7FRm$<+=8G*zvTmhaT# zwC|f&C-aC9q@f>4n&?JWeAC?XEnkt%sMxS7)q?vI=|Jq&t5rcyh%#hg9EIi0fL=Ks zAwm1oR_U~pmI`$1Btq|P9O_|M#)VWm2DKI($lcYqA6UR!M zoUCYz)ND;+ET}xiWoHjg8=qv;$?Pu0PD?+ZOwosumBc@HHcq7E4w6i;`FrSdg43hk z-%7y+bC^DAqwxOr5s=M}32A?*(yYNc~+UNo@pLOrw~CEP1gAHjeTh3m<* zxAh91SmNX2)G5)d&Z?6t&|;1a9@+Zl{6V+?{kwFQyZN)S?CKry{4nr+&(W$E)SG6# z2>*C33^lB2#~2JrU`5F#>I_<0RE-fjCpB2eXEHJJDvHPJ^>~zsx)pCA5(#*Hf4mqB zMWT_n7mb1?d-@I)ZIxZA8+zLxX@6>*N_LJefytl9{?l<5`=?6o=zXRfpMbxU^$H^u zr!g4XYXwViDo(>CNaK`B%}zxr-k8jB=i57iqe&@N$gG$&z8Q*UwI5F2IM>^sFT|u| z^n7PW7dImz31FH+3gHM?im&8`wHhLugPEn58dwC7ATiuY?JNy&O<=3YWs zGDSQKHaw7>f%!B1JQntlNAu3bvn?8|YZGk$GwuqK?_bDtstXwj=p@mqOU~sX_=U0X zAk=a-0a}`;7mG1pN6(xUTV_>Pnv9}L)ENEd%EBDaQfjHrOKm0Noc5dHM_a*2WB2iz ztk!N_$sn8w(Jf zO7HKY*Opo)z(LuB4i#uWx#oX2TgK^vh=`f*+NkQU!*B=b*!m~Cq1){#lQe}ndXAUB zL}nI-c)Y`tT$ZX7mp^~DX@@yX#U2ny>dQPhZ1IIAy&3;boR*;b?(qUIYkV3i8g9XT ztlbB5iGT@?j)^p7isA6cjxY+lS*s@yb2P{`A3|f;j2%7P%dE1i_pf!$QqBHtN!m%FvPM9Mta(oiR4xHm}?{)Huv;mG3Js7~kM>LCbR)t96qpw`+~J1CC- z?rfMgr`yP7{Lk}??gZCS&`$cy*ID3omB6`dWc%QrDLK2ArZb@x47I|V8>wcZ&;xZz~4qq+=~;2#fy)zEd!iJu#sv#whkCu08zr)bR{n2vm8syXCFgZrN4 zAI%bngQ%!nk|gv}w$!lyzg|52cm3kIt^0ScpE+@1V`F_C^e83t#n~UcCN9oP{zvz7 zL#WCEH|x1`?dFE4xJlP`gae0jIN+h+m($m5xcmC`-O(Bb`1N-9;EoHJ8%Ku*`UZGo zoFBV_1$c4)zAKnxu7#3=QC&d~O*sdH$-!ydXZHtmf!wFWC};Y8=M%pT#u@FewY4xw zL55NF+w%rPV0%ghnGZKg>mx zM@?8Ie{JoLSy-d<3@I0^_s3dUPp}PL}o}$Z*|5Q=0aJ&(AtORJh)F8LK_=!W$mWl!8JQY zdEv#924qRyKXbGq8+DjVjQ*%3u)WK_$ct1xNAAo^gfEB9TTrIz4dJk-kUnOPJ)LKa zo=^sw_4R70=(NNNA&xH{UVNP8;RoTPXprG0=Oa%?!xvR~cxH3!&RK2+@v@`W@^%Fj zt99;h`BR)-GuNl$5{pACGF`g4LSdUY)~4P$*tc!jIu5eo?IGQ0o7W9PlU=yc!H^?# z&0LPNp54egQ%tq+>^Lk(30qEeTq2GIh9r4YQ&mMS7GJB6yJ(#m^THy%I=7i*D%4)<(tev93!in_ErbIkSa{ zGhVdG$E+d%=BEs)+CP8Lb{6HD7%sy3xDrKNP-`5B%%Zqt zx8pCp-j&YfRSQulw7*U)HzuHp-L5=Mh5z%@{6_ZoSlO-8A0ubA2y1{VQmBv ztSj)5KTWfohuh@(qYLPonVBMcbM9!+crqm+Tkh|%XW|8^u2lOnad;^I|2?Pv#T0%f zs$TS4B5eWzbyPNgk@4^n5-N$hJzack06wQ$P#TbFuYg1TV>E~1g@w2*BaUzo4B=qj zOd^r

t(&?w!zF}RL36mRM9a4gAR8StlxI_wFlP!Kj9qT;ce|2p5B*3@@(+q3iW zR46DR<;3%bp4Nc7HwbNN{9%M_ku8IyR)^F@c6(rw5scXyw%JxR1Xiv839IO~ZjQ68 zcq<%~8HqKzz;{~G&Ns}HYUx4LLL^VwjFR=sL_88VHA3$HnU(^~+Mt_Po|9|E6C zhXB4u0_)MJozQES_1OOvuj|oi89;`T5GIK<>K_iyrgo?rLb{<-3$CtkXn-ZUCP0qk z75*3j;Cv4v#ID)$I}&tCfv$p;!U9$eF|SRAZXC`zHArt0=3fo4AEW2n&Dw z@!n%zo0t=?ol?%UWWdyXDxm|KvHi=Ao1_*QkRdbTgzr4W~ z#IkQFl>?0u+e~(DT>JOVxh%Dpb#(1mx=Bip$9kJyy-G~PfJufJfJMv=-R>XlU^h@> zxj6{#%mp@gzvWDS$BdQW%1~#07puFPiRO2y-O|3BDctEZHZnm*p#g)o$^9Hzu+c_S zdjun-$V#}=#zCm3s)B8|QgL*LnE};Yuu2X3Tm{}hX$cfI8-y4@V({3({G5)d(r((> zUHN>0tj%7!VTcl96hq(uLtNHG*YS|}Q?#>6X#vTk5;TR{P}9E}-0?67(X@}%Ok|K= zy(B=>vnIJk1wO%iExH!fNTw>iRHZjAug=D;w_9bY7V%x`=WC}E>tk^( zM(nt47=HUlp6`z2G6F=H3;2g%VSvZirw+p7i*XhDSX|Ce=4)~f`y=n7wlk_?9*SX* zm2?(VD=t_S+%Jf4i$=loW&ghXjgW(D@2$jxxXo4_zd zv37K=F5lR>8)-i2DR?fu9B!o_0slxFVe6hFU`HG)a2D3c;!2Z88ccyphC2vdk{ykF zLaZ2uXy==S#uD)@DkxpW1VwKYs*%_4>jBK~ug6o8K^`2d@k=9vs(sV!{p|kL)~+#! zBgYATv53$^j;lC{THyy3?y2ablBGwsKY2E5E^U8g@awPtlzTM?vW>lqxsW0ElKELn z7E9d5-yP5)Pn@prS)_)Jp-&;#YUzvy*r$@TsonDP3YF8Th2$T&)s5G({mb|EE?#;v z=TG1J@}6Z;{_(Z?A0t;nSGzqtXmru0`tK6K(@L&YXObtCfFc?@BjRL64Y%`sf>1MOVeXO z6zK7%)|vP@cX_jgHtG=azuUq3=^FTdQG}+J--HW_G&ELs*Fb$TTPg&PMtVv6T6H95 zV1O@z9g$L2V{}-s$xg^9mQeU`s&bQST*8q}*-H)A5J0cmfuR(z>;0kV;GnYie5y|i zU_*L8`2TbR7)=L2U}d`}%gK4kXOrmDgC_OKk>rtNaT|e?(1R;rL(ky3Vdi9Tu9t1P zT)&W8zhpOroXr)o*m*T=ikC{c&J|3I@lZ-+Qj`SniG23vzJ6fZXgD{`IHhhsJvVKq zsq(@J&5Qb@znl}Bu~*#Lay?)cgr<3CAtcw@kh z{j2x900R_W=GefAn!30&MnVFQ-s^S z>m$U@xvL+XL;*z=6tx|Tms&?_tprMv_qIqxT&hTN4R3D4gh^Pmr}OquizpnYK<}@6 z*WhCr4&%LMzM~?RIyj^f#isvn+1g`CptWuqHy_sXsMKp7eqm4B!{TkTR+toAaV|_u zHrO$4hIiD=TTCu;mj619-uP5v9HnV@tO_%1{cuz?CGeU=G56kby{yHC-a8j`*uAq1 zZ)L{@g!3UYB1;4UwI(YaF2aSl8a&SQjeli?VOT|ubN=HBY=K$pio2TNi)B&BB*OccbC-=-+Bm! z&F-H(xhy$zZRaONfvuNEBG)&mCu^EY~M)<@%1M zr$bbWoZ6GR#{NZi*J3^W_s%j5!iKUY4E?Z)vGkfvYll?{lBXp1bkCwav0xMe+!BqnK-i}_29H`tOK39C^1s+-TSSFFRiXUqYMiOwg;5P%dw*PiiKAMVHKleJwxT;LpT1~p(=T>pt z$;3?id}wGWc%+OrLH|?zxn~!uAX15FWHtn2+gXv#WC_c)Hf%EBd@%>#xzrgA5nufh zPl)edO#rLAOE(6Ld*S1?vR;H%Vh_gt2ap3$A=qLNNT#2$>h>{s9*r@9w5N50uhnY9aeZwW3Kir|$ zZ}+dR5hF}hge9XayaJLEtZK!udT6h0tn=OQsz3f=sQGdQpJ^0wz9WO_ zU01s{-?qs>BX)Yxqwb1p6KU_^YL@G_Zf&Q5KuzM1sRJtPg@^QdPHFAL9du}DuagK` z8F;hi+^Oh6#9$7WlntF<*> z4q!q{ZBFEu)|o6&Cgg0?tmVkMS`ia-B`86=!xId7KsM~vH@sG>HyRCyiN`%Im%@)x z(4Z26&3kMZOlp&?_@Oj12kV@oV%+n(x``n2}0A^?7vU5C;r&!4JgRwGz z$}p%{ke-0Op&)3ueK>pSWON1L7t0lUwTDMd1|44%ppyVlEBA>yg4Aw(=i-%i7;(6J zbWOu=0N@ptCWeLEfQ!dkVD0m@t8xeadX)?wlS#ODa_&j|28EB=3r&OtisFlorkcd* z8qL-IV}4liQ*cMfRrN&yl1hL~#giu_qLLh2$C~n$PNi_T-e*wI0W_!tq*n!6!cS>$ z(Q4#|xfG0P1p^U)j8)%~5t3WiayZIN%ZF+6W^!gGaNBY$)oK6Qdwg^4(7mM0{oTj+ zp8u#F-+#P&Z>{O;;ig)zTAPfJRJfMQz3Zc$_t`$O_vq4TFK!>4ysCwS&~lsSaz+N3 z9I5+zV|X8+(6|FzuJh5h2_-U9E16^6d^lvj6r% z@MolL-p(|uc!Kf$e|WE3V-qF+=lQtns^x9s#i?WC{_5`s!-#|=y4Lr{<~78hgE&m`>N5LiG+}yp~?CAbyoc@Y7U&1D?KV5U`=;BOY6oO*Kvk z-bMgkyHiK*!fXG0d(-$*z2y-?Dwni9*F^;yhi4qlemZNpkp5vC^_%FV8D+Xa2C`U1 zDke)(xG?{?)-YTIh|`?Q66sAL93BQ|c%Dvu{~VX?hAkZmC6($4{8jLyx|xN@`cC9inCwuJokI>10pxg`{Cy8OPx?+=UR1 z^J})7k$HwH7T83bQV>S$<~<9q98n>QOofUj`4Os6W>`xqud#m2rV?x{#rq?Cbf`K^ z(+Qfkf~xN~MPQ6tAHh6Rq{?%JM=>^eSP_|vr9jFqvq~t0o;=&$9DQt0b(Tqx5^-|T zp^do6U!rPTvnLppW6QB$8fwB#uymAG!%?snP#=Y zR@G8Bb;No-cCCzTvIf$_b~(PfVw?FbA~O;!9eK^Btg0(sIFR0<;%r*uQNIlD@d9=h zUf70dl^xaim~bl7IH!$esQp;P!La`Mo`2sSiL#+!tg%g=V(QY#Ov@}Y=(d-2d-U3{ zH#|6`^~j-Ni2ZiG)YPE6sC14ovcoWPvV23qyBFzG9c4J@-4D4U zy?dfOU*Nc91rmh*9Z%ZY^2OS$5#+V6nt%t8S*N;m$=#j`D>Q6FDc(Dmq zHtCSo%>c1=T=72&eq|AD@VI24HC@r{z_*(jO966}_3Je7t2Cfp#UY#*o6xE6TV-L| zFvEX;&pl!mTG4}jG#+#Au*{^8lB_a+9Lai@@l!H&_>=rpX7nJFEe;m^!3|sY#49Xsue8W$jcY*uwUz zfGs#aJX*vi^#%L35u5~hUn4XC!8)^o| zn=&3?p9=Jx4gc>~sOuBf*M(~v#rjS`BprW7`Epvs7+PIqFfCyPlO?xdTLwxWO+h0v z?4;ISM2>EuvcDFnjZfLG#ONp(?8j=O6D4vucWQP9D;AZyRvSyg?^S7-qU{=T=w7+i zdw_&`bYf)t7!Y#rf|yPF*$=14EKQpXj}syXpVEKzNH#VeE4c8?6LU(UQ75o-x`p$prmLRH<3Iy@4885xipsQ zl(euYa@|C-ZJ{#9b~CG!mAx$XhZ79iUhcX_F9a<%O0pP2+!DpX(me7T+`oZ)sPo&( zAggm82P6u0sJ@}RpcpGAaqLl@CBCWJ9G;zPML*t9P@BVgwvlNAKT3bF)bMA)c>y|e zRo3es4&xK6P1_pD~Yoq^{x1T^|f%ITOI&-El*=v zvvTR^l3|1CLWdzcBc5hI`@OX>>;t&4-2#|KByvf93&S*CPJvqe58UJFYu9x;?yJ+l z)NdB(ZDEL|*o#Jp+N2U@hSFGY2VqW!ykN)#&@Gz`npQcaw+@1x1iYvw-;O{-7jZm2uU49ZP%L!_Hb!H_z^H97}`?j0PhQc{kH@u{TCBs zfHH-|St7fi`mglPNM5}}h>q_VDVk30(_9Jy@N1Wq#Wn@C23e^QvZN$X1|=ka&Lwk~ z`+opkt!^pGs6ss-m)K3iNPxd+duS!vsMT%>6uv4o!NGjl+KL*Ha5`b-XOA znI^!PA|#dCq0U0}pUt@h;G*3f_7dRsyX#b@|~0S@ToKk=4m8 zjj0RjR!7}Hc3wY8LFS#)&UNkHac0U_R1yj>-vMYpp-2^ecw<6-bBszb-!VYH42pw3 z_CeF1Qd=KMdlWo>Jv=^T>nm!E3lKBlX&9gK<2R%vxbE^$uQ7~PvX{Nr-l=?UT8WVuX_w8_150KV!}5=eBPG|di&1O*B;l=j6KPyRPGoy}=wXIypC;<~tRx&@o?a^B zBEX}Hgj1`WdaW->;eAm1lH zA-^EgWaWk4pCg3!B*y4vI*o$y-JUZbB=rWitUCl2X;6JhI&$^mnbGK%1I}~xi2RFAxyg6^n5R(PLf%% zJ(zxOC=aI@6TmNsA_?+4)%Mu_f}r4l=s9XB5&(~bAbvCAKT z;%^6A8(nzY8_o&6`}E;zv0Yc8pWZ6anIss@SXm%GC;JIH-O1tG2jxK26^t=3FAlO- z*;!F!^_iA)sw+5rjvge62o|>Pv1#;>j>DMgNFgAXA!ujkndJtm$<1190%OHCU9^3k zOB@+ahZB7?LbR`e{TyoBOL5+|ErZ}NM?181*0Pb7s8cXYM{oFc4Gfx%h9+dDAoNzt z-i)y$M002aX{ab>BuV5sHgwT3rIW=XN{l&WIg2oHEX}*bnjvtYoQUI0oVEIY=2BSq z8`P}BQs&x=CzB6HWFJ}`W2wx$LBe)zbe!_S$4;ZN6xq-W)=HRNbzn%(0*j!!SOgAmmq}W<;m@auE>zjDvH3+ zBx;HXX<;< zRoLJT!x#m9jFBOd0Y^37#v083&GBJSV)d+h3w~D?kvNiCQ754J5-OmX0_F#FLX`NHQn~5HdvHAQR&sS43!a2D*k9ftIujj8EMid z^8~Q0WOoM?aoZ&}_oBd$BD`M-SuDJW%EDT#u0V*F6h&fqy9|jp8Lb;@YjP9B)P3cl zn96b^6_Z5NS%klfW;o{(h+F`n>h3hpj0pp1O;BFip(x1|2y>y_YL!60NK-seolBQ~ z{ga1tf$J~+_*?3d3jX4)TqSs?C3hWHF^4xuTHe(brCFrtSD;I+;iLIgM;x7GImqXESsj#$>TwVDu5md#0YzSo@IU!1?Rt0X*MFI&bc?3wT2PwCVI|lL#cCb zJvM0U3@|3}|8*v?^MiA6_Va~VfDfI601vQN%W&Z5-p^h`u>d44m=}IzxniBm5|FP}!Un{*C1<25RFSFEzUrY7h4x{-3E+Y2Y z$uDnwx8ZMrd5h|l_|{vz{4k>lj)qljY0XA=l^OmOcS%Yn7;cyc*XCmVrx%%*M~l*X z%-#5Y0Wkz_{Qc++>c+b9!7G#l8XDBm1e3IG3Nx@ya%B)ms|TpqJwDGS*CEDqDon|C z0}NVdo2AAjIAL;$dkT?Wf&!&a0oCNbx<6J)88K4ic$?)y2d za3UwWNq%s|>>Le&)ab?MbcX(anEC!fW9+7#KC|EFb#c#^&g@-Bo|}-@o&N7AKB-&g z?z3!5CJiG!!q-SU>9~mxGp1qMGHeokhiM(P9o>j`FY81@ia^R?Fz2jwZ{>fQjl+U) zfCb%9C(2q^k*&^Q$GMD_0%dtn)$?NR5DC=)a7JgS0b)oQ0X=vc_SWt2c$|U*RPf8r zD&9gF3!XeD&Nv6x;3k}dbG-VvwOLhBRBY*LE{7vv3%AA3S?o@;ouwYjc z9~6P_;T*%nT9;3|>PQe+tvpt+ABpf0;yHtx3wxPE1KiE$FW(Q!)>S(f7Dp;!+K;T> z`9Y2Oj(j&e)~Bxw4D?`cPgkS()=J&VzW#6L?)nKZq2zqh#u*iH9n6h1GfPT}W8re2w|0v$7Y$epaF{+yJKv<+d=TqB001_LdlF}E*Y9@>Omv+f%Mf%c zI5xI8S{yhYwG)_5$=B|VAWa8Da?K#F=2jSD@gbWwsVZ4qKE?(IDO93H~ z#s&j9K_V<~M824ZlBP_3svHhIWS2|MQ-t7`=?6HkRErqDEj#D_mZ>k*CRwGy1gR#D) zt)KOIRmK69;8+NecSe0yE380&W`tVlO2y;REWphZekpl>Bo3)l9ouKGx>bXuh|E*}RX1b8{T3NE6kg8vgkn$FBJ z1CN+5z&QNT8?>}JFP!8$cA$F7lkn=;{yI1f3b3CP7Bt9SA-f79Y$1lYz0_xu;{lIO zl7L=wQ#8(41=pWrF7-27yYPMbx3{MI&?-q(=uo0P)x(2y&tm6n`th|JuGgNkgO^d7 zduO7tgDf9=9YB&6;(>;$CD) ze+o`Hdg!uL*`!!SIrC3^gm)80tbBlZnc^LE10@M0NqI2Hyh>k!!~ODe_$Yq?J>Gr1@$>S|lgyda2zBn`BZ z6cAR(fPe_9yoHLaj8d94E;+CYxzN;yTvo z9JZtU^EB}4>XEIVr6n6{BJQq%_nl}CpPv1qs0)l(ASqv4oU;}PK73OUt1gVFt@ew*L6%}mgnk>oNs-&v& zo%Mg&_`oi$&X41fg`OCvDiLJ>-YuDpum}h`<>LfPsYdi@%$W#*##i)$0`0a#=v8UX zcas~k58UrqxjQ8b*NcVT8o$<`Hdq2~yv*Q@PTH-**fE1MF)QK@artHcLLv@&mrVZ8$BTS{!PNEK5Xmwj_PagQ=8b0~~i6J2Cv z<^`jCpV)oM^+0i{iby9u1^0@^1f*aT`x zf<0WGuV#oThQSx20TVZr&nOtQazpD zb?D6XHK|bCUxeHw_FsBPx)%!twVmU}`M8}U_+6LpVY8e+A^A}~jFqBSE`6nSmIiWJx7H)Ef^1v|ztwOq zr&6EbcaFnBUeoLBN0;o*t!uc+@6!+DcGV|e0@JR$&FWS)I;lAajEu))pPkOAa4P0xV}T7R5-M8jRS@BQNB& zp1eI)yQMoY4*KM`wAd%^cOB|`El1hoO)WWQT4W*DN$NOM#}!=yYKtmgMZ!;1Assm; zqtswdCJ@#VY@vA~Zc4=lTTW9DoR-gVWH#)KRh6yC)jXFIz!ZbTVI44ZqZ)2dSIy@VEcL072{E#M-`FR)jC|3M8k5mwm ztn#?eUaH$w0AGqIvaIC5FSdX(m+l8gi~c5xr3h`Wg9sQDslo?OBv=^^1niR_tS#!b z_8vz2c< zcnfE5*y*iYj^&P*M&6OOQ^rRS`k}@Xz_&k|tZt|q-gZJ<@;g7+ZPRy;x|@nU_lL~; zIdH(GOs>7?aJr|)9WIw6+-6s!gIZBszZCkwy(CW)dxX=D8{2>Wu`EaqD`M?rFxJ=R zUrY@~vIYfJ5_yJ4n1uTVBbkd%>q?G%NQTHk8ls4XEpS8-N1^6AWx4PHS%y+eo937g z4xHvzFuFLSpjsiDbWwj|N=25V%Txbn8Sb&m6n*QT$MY8bbcwO>CyTi#+c85V7~Sbs zsVNI}*}QwhiN`JvAKH()OpSWA^|ay#Qx!xWO=p+zf&5|kK_t{+cqx(a7JR>Vjo)uG zeLo|o-I}8CBAzhci|8e zAVcK*l>_?LwK!k;Q?S|9E@-0smHy>%`j2 z2YzK==wv+K@g!bDBi%c zy>SZgjE`N=r~j>c@zE2=Z(?_x7-WC|&fCN0;-%T~rx^jlu^*-9sq6Zw68*l3w~Iak zU{G+i!1oXIi#`8i^$9K zV6sMP3jAYNYKLe+(u$s{cQm%Ywb44=jW+a52qix_V=v;+D9n*_T!#p^jwdIq(E9d|u7GS&WXB+GXd4PHl;Did2 ztaYrO8uiMo8xTY+62K&o5>jx`mxVHgO2nSIODE8@jByQF4GHT!(ou?cx>hBp*VL;^*&^1aN(WpkzNJ#Gu~@ z3-)g!tbJG%VQ4Y55yer)zyIqK3?`)=PtZ`5mXuO9B`u{^L&2+Dh%a3vuM8JQ?lKWC zbCakbYE`kE^3N|SvE3T1wr8SvO{vYU z4D2J(&%bw|b%>M6r6%V4j=+>%u@;eu5Iqm0Sea7iW-aN;rgT&;uRP>@M-2~^>Rha* z^%_M>3rk8r%?2Ahjt!Sw!HIIYY%76_NPNQ~$E11rCCd!V5K9&o5(qi=mmZas8fN}6 jt=I#0(q~#+iJ%-cXoR>VS!%`OocVeEghBl?ss{i7_cKz0 literal 0 HcmV?d00001 diff --git a/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9a8d1e2b5ef22b97801781478d477685dd6119f3 GIT binary patch literal 110160 zcmV)XK&`)bPew8T0RR910j^L06951J1C_)80j=5q1ONa400000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/inter-roman-latin.Di8DUHzh.woff2 b/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..07d3c53aef14e7e3aec6b11684395f2833e0b3d5 GIT binary patch literal 67792 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 IZR%D40KZ@npa1{> literal 0 HcmV?d00001 diff --git a/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..57bdc22ae88555c6217307e4064a642f83d642b1 GIT binary patch literal 14072 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 literal 0 HcmV?d00001 diff --git a/assets/kotori.mp3 b/assets/kotori.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..3359a0da5d741d5305a60b0b0f823533d7679701 GIT binary patch literal 1440 zcmc)GjX%=~0LSs)@M0d@unN_*+cZvV9(H&1+J%`7SIt7gaUL42A}aDwTiEQBV)8IX zNGT6>@e~NWsb#Us9FvP_WZen z2IGfR?2N*X$&WUAR(h7+Y6G`CiF=jIgpkx6pc4^lYFlo=RJ%Bkjh;8Gq9isOP%Lzg zsi?98psu{0a$`htS8kC14Kb&H>lbI<_j5pe*ZR71G$ylduB4uM=lMVlhVz1_rmajV zq0_p6VYEHg$+<$|Qg}~eWRuZXUz<^;`@4J{LV+*LheX-5-*r$r&Nc2b?MikuVb;#Nnr4 z4>HNe5^mM?cwwKJk|d82k&#a3vqPfDcalo z^L`)`(IZQquSg*hA|<;}C-B=I9i*;V1w@brL`4YFd(#iy;*u?=BT_eKD^c;iBi~_= zmbk3Jg23z1%d2iGw4o&!y-yp?dWW~=PR%TE&LR`m}~;{#e#G$=jg1RC7@iUVs|3+>{8(>5dZr(%^{;-d|EOD-A+2J$(X)(fI%1+RRn ztB;$t#Fh2Si$^X~+=m|3e=YYJUn$-C9Rwc?HI$-s_H`WoKAnzdVr|`}-2EL~pi{-+ zrSS!B?HPeeM%da+d#YQMzCzlU!}^5&h^MvdNxIz1eZ4HG7Pf)-Kw?bzhJ#V$70zkR z+nHXXZI2~V>@5)7wgdL*B~i(iHwmd6Z~b-3xN5=2%>d@XAc1QmO&eV``8$*5v@w{Od^*Er<9hpsL?yZa#ky<0JFWM;@K zde<(3Gv$XjD9_CP7zGy*l*gO*CS0SXhcctLsytCo*)R4-w><1?u.split("#")[1]:""}async function _(){const{meta:u,list:l}=await(await fetch("/assets/data_details.json")).json();g.value=u,t.value=r.value?l.find(a=>a.name===r.value):l,f.value=!1}const f=d(!0),r=d(m(location.href)),g=d(),t=d();return setInterval(()=>{const u=m(location.href);r.value!==u&&(r.value=u,_())},500),_(),(u,l)=>(s(),o("div",x,[f.value?(s(),o("div",j,"加载数据中...")):(s(),o("div",D,[l[13]||(l[13]=e("h2",{class:"title"},"Kotori | 模块中心",-1)),t.value&&Array.isArray(t.value)?(s(),o("div",L,[e("h5",N,[i(" 收录插件总数:"+n(t.value.length)+" ",1),l[0]||(l[0]=e("br",null,null,-1)),i(" 最后更新时间:"+n(new Date(g.value.time).toLocaleString()),1)]),e("div",S,[e("div",C,[(s(!0),o(k,null,y(t.value,a=>(s(),o("div",{key:a.name,class:"module-item"},[e("a",{href:`/modules/#${a.name}`,class:"module-link"},[e("h3",null,n(a.name),1),e("p",V,n(a.description),1),e("p",null,"v"+n(a.version)+" "+n(a.author.name),1)],8,B)]))),128))])])])):t.value?(s(),o("div",$,[e("div",null,[e("h1",null,n(t.value.name),1),e("p",null,n(t.value.description),1)]),e("div",null,[e("ul",null,[e("li",null,[l[1]||(l[1]=e("strong",null,"类别:",-1)),i(n(t.value.category.map(a=>p[a]).join("、")),1)]),e("li",null,[l[2]||(l[2]=e("strong",null,"作者:",-1)),i(n(t.value.author.name),1)]),t.value.keywords.length?(s(),o("li",F,[l[3]||(l[3]=e("strong",null,"关键词:",-1)),i(n(t.value.keywords.join("、")),1)])):v("",!0)])]),e("div",null,[l[7]||(l[7]=e("h3",null,"版本信息",-1)),e("ul",null,[e("li",null,[l[4]||(l[4]=e("strong",null,"最新版本:",-1)),i("v"+n(t.value.version),1)]),e("li",null,[l[5]||(l[5]=e("strong",null,"创建时间:",-1)),i(n(new Date(t.value.time.created).toLocaleString()),1)]),e("li",null,[l[6]||(l[6]=e("strong",null,"更新时间:",-1)),i(n(new Date(t.value.time.modified).toLocaleString()),1)])])]),t.value.dist?(s(),o("div",M,[l[11]||(l[11]=e("h3",null,"文件信息",-1)),e("ul",null,[t.value.dist.dependencies?(s(),o("li",P,[l[8]||(l[8]=e("strong",null,"依赖数:",-1)),i(n(t.value.dist.dependencies),1)])):v("",!0),e("li",null,[l[9]||(l[9]=e("strong",null,"文件数:",-1)),i(n(t.value.dist.fileCount),1)]),e("li",null,[l[10]||(l[10]=e("strong",null,"大小:",-1)),i(n((t.value.dist.unpackedSize/1024).toFixed(2))+" KB",1)])])])):v("",!0),e("div",A,[l[12]||(l[12]=e("h3",null,"下载链接:",-1)),e("ul",null,[e("li",null,[e("a",{href:`https://www.npmjs.com/package/${t.value.name}`,target:"_blank"},"npm",8,G)]),t.value.repository?(s(),o("li",I,[e("a",{href:`https://github.com/${t.value.repository}`,target:"_blank"},"源码:Github",8,K)])):v("",!0),e("li",null,[e("a",{href:t.value.dist.tarball,target:"_blank"},"直接下载",8,O)])])])])):(s(),o("div",U,"未找到需要的模块 "+n(r.value),1))]))]))}}),E=w(z,[["__scopeId","data-v-fe1b43c9"]]),R=JSON.parse('{"title":"","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"modules/index.md","filePath":"modules/index.md","lastUpdated":1712229374000}'),J={name:"modules/index.md"},T=Object.assign(J,{setup(c){return(p,m)=>(s(),o("div",null,[b(E)]))}});export{R as __pageData,T as default}; diff --git a/assets/modules_index.md.D1mO3gni.lean.js b/assets/modules_index.md.D1mO3gni.lean.js new file mode 100644 index 00000000..c79d82dd --- /dev/null +++ b/assets/modules_index.md.D1mO3gni.lean.js @@ -0,0 +1 @@ +import{d as h,p as d,o as s,c as o,j as e,a as i,t as n,F as k,C as y,e as v,_ as w,G as b}from"./chunks/framework.P9qPzDnn.js";const x={class:"app-container"},j={key:0,class:"loading"},D={key:1,class:"content"},L={key:0},N={class:"title"},S={class:"module-list"},C={class:"module-items"},B=["href"],V={class:""},$={key:1},F={key:0},M={key:0},P={key:0},A={class:"module-download"},G=["href"],I={key:0},K=["href"],O=["href"],U={key:2,class:"not-found"},z=h({__name:"Modules",setup(c){const p={adapter:"适配器",plugin:"插件",official:"官方"};function m(u){return u.split("#").length>1?u.split("#")[1]:""}async function _(){const{meta:u,list:l}=await(await fetch("/assets/data_details.json")).json();g.value=u,t.value=r.value?l.find(a=>a.name===r.value):l,f.value=!1}const f=d(!0),r=d(m(location.href)),g=d(),t=d();return setInterval(()=>{const u=m(location.href);r.value!==u&&(r.value=u,_())},500),_(),(u,l)=>(s(),o("div",x,[f.value?(s(),o("div",j,"加载数据中...")):(s(),o("div",D,[l[13]||(l[13]=e("h2",{class:"title"},"Kotori | 模块中心",-1)),t.value&&Array.isArray(t.value)?(s(),o("div",L,[e("h5",N,[i(" 收录插件总数:"+n(t.value.length)+" ",1),l[0]||(l[0]=e("br",null,null,-1)),i(" 最后更新时间:"+n(new Date(g.value.time).toLocaleString()),1)]),e("div",S,[e("div",C,[(s(!0),o(k,null,y(t.value,a=>(s(),o("div",{key:a.name,class:"module-item"},[e("a",{href:`/modules/#${a.name}`,class:"module-link"},[e("h3",null,n(a.name),1),e("p",V,n(a.description),1),e("p",null,"v"+n(a.version)+" "+n(a.author.name),1)],8,B)]))),128))])])])):t.value?(s(),o("div",$,[e("div",null,[e("h1",null,n(t.value.name),1),e("p",null,n(t.value.description),1)]),e("div",null,[e("ul",null,[e("li",null,[l[1]||(l[1]=e("strong",null,"类别:",-1)),i(n(t.value.category.map(a=>p[a]).join("、")),1)]),e("li",null,[l[2]||(l[2]=e("strong",null,"作者:",-1)),i(n(t.value.author.name),1)]),t.value.keywords.length?(s(),o("li",F,[l[3]||(l[3]=e("strong",null,"关键词:",-1)),i(n(t.value.keywords.join("、")),1)])):v("",!0)])]),e("div",null,[l[7]||(l[7]=e("h3",null,"版本信息",-1)),e("ul",null,[e("li",null,[l[4]||(l[4]=e("strong",null,"最新版本:",-1)),i("v"+n(t.value.version),1)]),e("li",null,[l[5]||(l[5]=e("strong",null,"创建时间:",-1)),i(n(new Date(t.value.time.created).toLocaleString()),1)]),e("li",null,[l[6]||(l[6]=e("strong",null,"更新时间:",-1)),i(n(new Date(t.value.time.modified).toLocaleString()),1)])])]),t.value.dist?(s(),o("div",M,[l[11]||(l[11]=e("h3",null,"文件信息",-1)),e("ul",null,[t.value.dist.dependencies?(s(),o("li",P,[l[8]||(l[8]=e("strong",null,"依赖数:",-1)),i(n(t.value.dist.dependencies),1)])):v("",!0),e("li",null,[l[9]||(l[9]=e("strong",null,"文件数:",-1)),i(n(t.value.dist.fileCount),1)]),e("li",null,[l[10]||(l[10]=e("strong",null,"大小:",-1)),i(n((t.value.dist.unpackedSize/1024).toFixed(2))+" KB",1)])])])):v("",!0),e("div",A,[l[12]||(l[12]=e("h3",null,"下载链接:",-1)),e("ul",null,[e("li",null,[e("a",{href:`https://www.npmjs.com/package/${t.value.name}`,target:"_blank"},"npm",8,G)]),t.value.repository?(s(),o("li",I,[e("a",{href:`https://github.com/${t.value.repository}`,target:"_blank"},"源码:Github",8,K)])):v("",!0),e("li",null,[e("a",{href:t.value.dist.tarball,target:"_blank"},"直接下载",8,O)])])])])):(s(),o("div",U,"未找到需要的模块 "+n(r.value),1))]))]))}}),E=w(z,[["__scopeId","data-v-fe1b43c9"]]),R=JSON.parse('{"title":"","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"modules/index.md","filePath":"modules/index.md","lastUpdated":1712229374000}'),J={name:"modules/index.md"},T=Object.assign(J,{setup(c){return(p,m)=>(s(),o("div",null,[b(E)]))}});export{R as __pageData,T as default}; diff --git a/assets/style.B8KJTn0Z.css b/assets/style.B8KJTn0Z.css new file mode 100644 index 00000000..9d741a07 --- /dev/null +++ b/assets/style.B8KJTn0Z.css @@ -0,0 +1 @@ +.npm-badge[data-v-8bf061d3]{margin-right:.5rem}.app-container[data-v-fe1b43c9]{max-width:95vw;width:1200px;margin:0 auto;padding:20px}.app-container li[data-v-fe1b43c9]{list-style:none}.loading[data-v-fe1b43c9]{text-align:center;padding:50px;font-size:1.2em;color:#47caff}.content[data-v-fe1b43c9]{padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a}.title[data-v-fe1b43c9]{text-align:center;margin-bottom:20px}.module-list[data-v-fe1b43c9]{display:flex;flex-wrap:wrap;gap:20px;justify-content:center}.module-items[data-v-fe1b43c9]{display:contents}.module-item[data-v-fe1b43c9]{flex:1 1 250px;max-width:calc(33.333% - 20px);border:1px solid #ddd;border-radius:8px;padding:10px;text-align:center}@media (max-width: 1200px){.module-item[data-v-fe1b43c9]{max-width:calc(50% - 20px)}}@media (max-width: 768px){.module-item[data-v-fe1b43c9]{max-width:100%}}.module-link[data-v-fe1b43c9]{display:block;color:inherit;text-decoration:none}.module-link[data-v-fe1b43c9]:hover{text-decoration:none}.module-details[data-v-fe1b43c9]{margin-bottom:20px}.module-download a[data-v-fe1b43c9]{text-decoration:none}.module-download a[data-v-fe1b43c9]:hover{text-decoration:underline}.not-found[data-v-fe1b43c9]{text-align:center;color:red}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-d220041e]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-d220041e],.VPBackdrop.fade-leave-to[data-v-d220041e]{opacity:0}.VPBackdrop.fade-leave-active[data-v-d220041e]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-d220041e]{display:none}}.NotFound[data-v-314d6823]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-314d6823]{padding:96px 32px 168px}}.code[data-v-314d6823]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-314d6823]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-314d6823]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-314d6823]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-314d6823]{padding-top:20px}.link[data-v-314d6823]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-314d6823]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-9e933ec1]{position:relative;z-index:1}.nested[data-v-9e933ec1]{padding-right:16px;padding-left:16px}.outline-link[data-v-9e933ec1]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-9e933ec1]:hover,.outline-link.active[data-v-9e933ec1]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-9e933ec1]{padding-left:13px}.VPDocAsideOutline[data-v-d595de97]{display:none}.VPDocAsideOutline.has-outline[data-v-d595de97]{display:block}.content[data-v-d595de97]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-d595de97]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-d595de97]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-3de71ef9]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3de71ef9]{flex-grow:1}.VPDocAside[data-v-3de71ef9] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3de71ef9] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3de71ef9] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-12f2da6a]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-12f2da6a]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-e4c276ab]{margin-top:64px}.edit-info[data-v-e4c276ab]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-e4c276ab]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-e4c276ab]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-e4c276ab]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-e4c276ab]{margin-right:8px}.prev-next[data-v-e4c276ab]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-e4c276ab]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-e4c276ab]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-e4c276ab]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-e4c276ab]{margin-left:auto;text-align:right}.desc[data-v-e4c276ab]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-e4c276ab]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-13b8f1e2]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-13b8f1e2]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-13b8f1e2]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-13b8f1e2]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-13b8f1e2]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-13b8f1e2]{display:flex;justify-content:center}.VPDoc .aside[data-v-13b8f1e2]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-13b8f1e2]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-13b8f1e2]{max-width:1104px}}.container[data-v-13b8f1e2]{margin:0 auto;width:100%}.aside[data-v-13b8f1e2]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-13b8f1e2]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-13b8f1e2]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-13b8f1e2]::-webkit-scrollbar{display:none}.aside-curtain[data-v-13b8f1e2]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-13b8f1e2]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-13b8f1e2]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-13b8f1e2]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-13b8f1e2]{order:1;margin:0;min-width:640px}}.content-container[data-v-13b8f1e2]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-13b8f1e2]{max-width:688px}.VPButton[data-v-df2cf507]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-df2cf507]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-df2cf507]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-df2cf507]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-df2cf507]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-df2cf507]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-df2cf507]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-df2cf507]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-df2cf507]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-df2cf507]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-df2cf507]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-df2cf507]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-df2cf507]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-964b1c62]{display:none}.dark .VPImage.light[data-v-964b1c62]{display:none}.VPHero[data-v-8d45dfd5]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-8d45dfd5]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-8d45dfd5]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-8d45dfd5]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-8d45dfd5]{flex-direction:row}}.main[data-v-8d45dfd5]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-8d45dfd5]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-8d45dfd5]{text-align:left}}@media (min-width: 960px){.main[data-v-8d45dfd5]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-8d45dfd5]{max-width:592px}}.name[data-v-8d45dfd5],.text[data-v-8d45dfd5]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-8d45dfd5],.VPHero.has-image .text[data-v-8d45dfd5]{margin:0 auto}.name[data-v-8d45dfd5]{color:var(--vp-home-hero-name-color)}.clip[data-v-8d45dfd5]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-8d45dfd5],.text[data-v-8d45dfd5]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-8d45dfd5],.text[data-v-8d45dfd5]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-8d45dfd5],.VPHero.has-image .text[data-v-8d45dfd5]{margin:0}}.tagline[data-v-8d45dfd5]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-8d45dfd5]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-8d45dfd5]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-8d45dfd5]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-8d45dfd5]{margin:0}}.actions[data-v-8d45dfd5]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-8d45dfd5]{justify-content:center}@media (min-width: 640px){.actions[data-v-8d45dfd5]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-8d45dfd5]{justify-content:flex-start}}.action[data-v-8d45dfd5]{flex-shrink:0;padding:6px}.image[data-v-8d45dfd5]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-8d45dfd5]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-8d45dfd5]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-8d45dfd5]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-8d45dfd5]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-8d45dfd5]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-8d45dfd5]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-8d45dfd5]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-8d45dfd5]{width:320px;height:320px}}[data-v-8d45dfd5] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-8d45dfd5] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-8d45dfd5] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-810fe4d1]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-810fe4d1]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-810fe4d1]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-810fe4d1]>.VPImage{margin-bottom:20px}.icon[data-v-810fe4d1]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-810fe4d1]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-810fe4d1]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-810fe4d1]{padding-top:8px}.link-text-value[data-v-810fe4d1]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-810fe4d1]{margin-left:6px}.VPFeatures[data-v-1d713b99]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-1d713b99]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-1d713b99]{padding:0 64px}}.container[data-v-1d713b99]{margin:0 auto;max-width:1152px}.items[data-v-1d713b99]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-1d713b99]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-1d713b99],.item.grid-4[data-v-1d713b99],.item.grid-6[data-v-1d713b99]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-1d713b99],.item.grid-4[data-v-1d713b99]{width:50%}.item.grid-3[data-v-1d713b99],.item.grid-6[data-v-1d713b99]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-1d713b99]{width:25%}}.container[data-v-c6e93e4e]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-c6e93e4e]{padding:0 48px}}@media (min-width: 960px){.container[data-v-c6e93e4e]{width:100%;padding:0 64px}}.vp-doc[data-v-c6e93e4e] .VPHomeSponsors,.vp-doc[data-v-c6e93e4e] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-c6e93e4e] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-c6e93e4e] .VPHomeSponsors a,.vp-doc[data-v-c6e93e4e] .VPTeamPage a{text-decoration:none}.VPHome[data-v-f253ebe2]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-f253ebe2]{margin-bottom:128px}}.VPContent[data-v-7eb770b7]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-7eb770b7]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-7eb770b7]{margin:0}@media (min-width: 960px){.VPContent[data-v-7eb770b7]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-7eb770b7]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-7eb770b7]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-8c586fe8]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-8c586fe8]{display:none}.VPFooter[data-v-8c586fe8] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-8c586fe8] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-8c586fe8]{padding:32px}}.container[data-v-8c586fe8]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-8c586fe8],.copyright[data-v-8c586fe8]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-5bcce627]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-5bcce627]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-5bcce627]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-5bcce627]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-5bcce627]{color:var(--vp-c-text-1)}.icon[data-v-5bcce627]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-5bcce627]{font-size:14px}.icon[data-v-5bcce627]{font-size:16px}}.open>.icon[data-v-5bcce627]{transform:rotate(90deg)}.items[data-v-5bcce627]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-5bcce627]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-5bcce627]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-5bcce627]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-5bcce627]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-5bcce627]{transition:all .2s ease-out}.flyout-leave-active[data-v-5bcce627]{transition:all .15s ease-in}.flyout-enter-from[data-v-5bcce627],.flyout-leave-to[data-v-5bcce627]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-d38f1bb7]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-d38f1bb7]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-d38f1bb7]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-d38f1bb7]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-d38f1bb7]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-d38f1bb7]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-d38f1bb7]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-d38f1bb7]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-d38f1bb7]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-d38f1bb7]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-d38f1bb7]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-d38f1bb7]{display:none}}.menu-icon[data-v-d38f1bb7]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-d38f1bb7]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-d38f1bb7]{padding:12px 32px 11px}}.VPSwitch[data-v-e23c1592]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-e23c1592]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-e23c1592]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-e23c1592]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-e23c1592] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-e23c1592] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-327cf911]{opacity:1}.moon[data-v-327cf911],.dark .sun[data-v-327cf911]{opacity:0}.dark .moon[data-v-327cf911]{opacity:1}.dark .VPSwitchAppearance[data-v-327cf911] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-c319a4c2]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-c319a4c2]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-6d9cb10e]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-6d9cb10e]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-6d9cb10e]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-6d9cb10e]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-c73fface]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-c73fface]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-c73fface]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-c73fface]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-4abdfca2]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-4abdfca2] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-4abdfca2] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-4abdfca2] .group:last-child{padding-bottom:0}.VPMenu[data-v-4abdfca2] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-4abdfca2] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-4abdfca2] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-4abdfca2] .action{padding-left:24px}.VPFlyout[data-v-405682cb]{position:relative}.VPFlyout[data-v-405682cb]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-405682cb]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-405682cb]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-405682cb]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-405682cb]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-405682cb]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-405682cb],.button[aria-expanded=true]+.menu[data-v-405682cb]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-405682cb]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-405682cb]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-405682cb]{margin-right:0;font-size:16px}.text-icon[data-v-405682cb]{margin-left:4px;font-size:14px}.icon[data-v-405682cb]{font-size:20px;transition:fill .25s}.menu[data-v-405682cb]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-3edd214b]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-3edd214b]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-3edd214b]>svg,.VPSocialLink[data-v-3edd214b]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-5e24eb64]{display:flex;justify-content:center}.VPNavBarExtra[data-v-432caf41]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-432caf41]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-432caf41]{display:none}}.trans-title[data-v-432caf41]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-432caf41],.item.social-links[data-v-432caf41]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-432caf41]{min-width:176px}.appearance-action[data-v-432caf41]{margin-right:-2px}.social-links-list[data-v-432caf41]{margin:-4px -8px}.VPNavBarHamburger[data-v-a20145d7]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-a20145d7]{display:none}}.container[data-v-a20145d7]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-a20145d7]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-a20145d7]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-a20145d7]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-a20145d7]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-a20145d7]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-a20145d7]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-a20145d7],.VPNavBarHamburger.active:hover .middle[data-v-a20145d7],.VPNavBarHamburger.active:hover .bottom[data-v-a20145d7]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-a20145d7],.middle[data-v-a20145d7],.bottom[data-v-a20145d7]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-a20145d7]{top:0;left:0;transform:translate(0)}.middle[data-v-a20145d7]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-a20145d7]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-22ff4594]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-22ff4594],.VPNavBarMenuLink[data-v-22ff4594]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-6e009845]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-6e009845]{display:flex}}/*! @docsearch/css 3.8.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-8f8d6fed]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-8f8d6fed]{display:flex;align-items:center}}.title[data-v-34d5de26]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-34d5de26]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-34d5de26]{border-bottom-color:var(--vp-c-divider)}}[data-v-34d5de26] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-9bfc6a91]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-9bfc6a91]{display:flex;align-items:center}}.title[data-v-9bfc6a91]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-a01e6a85]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-a01e6a85]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-a01e6a85]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-a01e6a85]:not(.home){background-color:transparent}.VPNavBar[data-v-a01e6a85]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-a01e6a85]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-a01e6a85]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-a01e6a85]{padding:0}}.container[data-v-a01e6a85]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-a01e6a85],.container>.content[data-v-a01e6a85]{pointer-events:none}.container[data-v-a01e6a85] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-a01e6a85]{max-width:100%}}.title[data-v-a01e6a85]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-a01e6a85]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-a01e6a85]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-a01e6a85]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-a01e6a85]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-a01e6a85]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-a01e6a85]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-a01e6a85]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-a01e6a85]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-a01e6a85]{column-gap:.5rem}}.menu+.translations[data-v-a01e6a85]:before,.menu+.appearance[data-v-a01e6a85]:before,.menu+.social-links[data-v-a01e6a85]:before,.translations+.appearance[data-v-a01e6a85]:before,.appearance+.social-links[data-v-a01e6a85]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-a01e6a85]:before,.translations+.appearance[data-v-a01e6a85]:before{margin-right:16px}.appearance+.social-links[data-v-a01e6a85]:before{margin-left:16px}.social-links[data-v-a01e6a85]{margin-right:-8px}.divider[data-v-a01e6a85]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-a01e6a85]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-a01e6a85]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-a01e6a85]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-a01e6a85]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-a01e6a85]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-a01e6a85]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-d75f9d29]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-d75f9d29]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-a0e8f5e2]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-a0e8f5e2]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-774c2599]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-774c2599]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-104421fc]{display:block}.title[data-v-104421fc]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-dc123f70]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-dc123f70]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-dc123f70]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-dc123f70]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-dc123f70]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-dc123f70]{transform:rotate(45deg)}.button[data-v-dc123f70]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-dc123f70]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-dc123f70]{transition:transform .25s}.group[data-v-dc123f70]:first-child{padding-top:0}.group+.group[data-v-dc123f70],.group+.item[data-v-dc123f70]{padding-top:4px}.VPNavScreenTranslations[data-v-82c9b97d]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-82c9b97d]{height:auto}.title[data-v-82c9b97d]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-82c9b97d]{font-size:16px}.icon.lang[data-v-82c9b97d]{margin-right:8px}.icon.chevron[data-v-82c9b97d]{margin-left:4px}.list[data-v-82c9b97d]{padding:4px 0 0 24px}.link[data-v-82c9b97d]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-eed74814]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-eed74814],.VPNavScreen.fade-leave-active[data-v-eed74814]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-eed74814],.VPNavScreen.fade-leave-active .container[data-v-eed74814]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-eed74814],.VPNavScreen.fade-leave-to[data-v-eed74814]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-eed74814],.VPNavScreen.fade-leave-to .container[data-v-eed74814]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-eed74814]{display:none}}.container[data-v-eed74814]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-eed74814],.menu+.appearance[data-v-eed74814],.translations+.appearance[data-v-eed74814]{margin-top:24px}.menu+.social-links[data-v-eed74814]{margin-top:16px}.appearance+.social-links[data-v-eed74814]{margin-top:16px}.VPNav[data-v-1d136424]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-1d136424]{position:fixed}}.VPSidebarItem.level-0[data-v-dad44e86]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-dad44e86]{padding-bottom:10px}.item[data-v-dad44e86]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-dad44e86]{cursor:pointer}.indicator[data-v-dad44e86]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-dad44e86],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-dad44e86],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-dad44e86],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-dad44e86]{background-color:var(--vp-c-brand-1)}.link[data-v-dad44e86]{display:flex;align-items:center;flex-grow:1}.text[data-v-dad44e86]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-dad44e86]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-dad44e86],.VPSidebarItem.level-2 .text[data-v-dad44e86],.VPSidebarItem.level-3 .text[data-v-dad44e86],.VPSidebarItem.level-4 .text[data-v-dad44e86],.VPSidebarItem.level-5 .text[data-v-dad44e86]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-dad44e86],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-dad44e86],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-dad44e86],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-dad44e86],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-dad44e86],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-dad44e86]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-dad44e86],.VPSidebarItem.level-1.has-active>.item>.text[data-v-dad44e86],.VPSidebarItem.level-2.has-active>.item>.text[data-v-dad44e86],.VPSidebarItem.level-3.has-active>.item>.text[data-v-dad44e86],.VPSidebarItem.level-4.has-active>.item>.text[data-v-dad44e86],.VPSidebarItem.level-5.has-active>.item>.text[data-v-dad44e86],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-dad44e86],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-dad44e86],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-dad44e86],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-dad44e86],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-dad44e86],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-dad44e86]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-dad44e86],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-dad44e86],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-dad44e86],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-dad44e86],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-dad44e86],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-dad44e86]{color:var(--vp-c-brand-1)}.caret[data-v-dad44e86]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-dad44e86]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-dad44e86]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-dad44e86]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-dad44e86]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-dad44e86],.VPSidebarItem.level-2 .items[data-v-dad44e86],.VPSidebarItem.level-3 .items[data-v-dad44e86],.VPSidebarItem.level-4 .items[data-v-dad44e86],.VPSidebarItem.level-5 .items[data-v-dad44e86]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-dad44e86]{display:none}.no-transition[data-v-994dc249] .caret-icon{transition:none}.group+.group[data-v-994dc249]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-994dc249]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-3746e67f]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-3746e67f]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-3746e67f]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-3746e67f]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-3746e67f]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-3746e67f]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-3746e67f]{outline:0}.VPSkipLink[data-v-474ecce8]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-474ecce8]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-474ecce8]{top:14px;left:16px}}.Layout[data-v-793c26c5]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-8ddd972b]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-8ddd972b]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-8ddd972b]{margin:128px 0}}.VPHomeSponsors[data-v-8ddd972b]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-8ddd972b]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-8ddd972b]{padding:0 64px}}.container[data-v-8ddd972b]{margin:0 auto;max-width:1152px}.love[data-v-8ddd972b]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-8ddd972b]{display:inline-block}.message[data-v-8ddd972b]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-8ddd972b]{padding-top:32px}.action[data-v-8ddd972b]{padding-top:40px;text-align:center}.VPTeamPage[data-v-c8ed2757]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-c8ed2757]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-c8ed2757-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-c8ed2757-s],.VPTeamMembers+.VPTeamPageSection[data-v-c8ed2757-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-c8ed2757-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-c8ed2757-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-c8ed2757-s],.VPTeamMembers+.VPTeamPageSection[data-v-c8ed2757-s]{margin-top:96px}}.VPTeamMembers[data-v-c8ed2757-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-c8ed2757-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-c8ed2757-s]{padding:0 64px}}.VPTeamPageTitle[data-v-3d976094]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-3d976094]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-3d976094]{padding:80px 64px 48px}}.title[data-v-3d976094]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-3d976094]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-3d976094]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-3d976094]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-9813fdfa]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-9813fdfa]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-9813fdfa]{padding:0 64px}}.title[data-v-9813fdfa]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-9813fdfa]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-9813fdfa]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-9813fdfa]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-9813fdfa]{padding-top:40px}.VPTeamMembersItem[data-v-0949c979]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-0949c979]{padding:32px}.VPTeamMembersItem.small .data[data-v-0949c979]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-0949c979]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-0949c979]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-0949c979]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-0949c979]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-0949c979]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-0949c979]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-0949c979]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-0949c979]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-0949c979]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-0949c979]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-0949c979]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-0949c979]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-0949c979]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-0949c979]{text-align:center}.avatar[data-v-0949c979]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-0949c979]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-0949c979]{margin:0;font-weight:600}.affiliation[data-v-0949c979]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-0949c979]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-0949c979]:hover{color:var(--vp-c-brand-1)}.desc[data-v-0949c979]{margin:0 auto}.desc[data-v-0949c979] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-0949c979]{display:flex;justify-content:center;height:56px}.sp-link[data-v-0949c979]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-0949c979]:hover,.sp .sp-link.link[data-v-0949c979]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-0949c979]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-c0f7e16c]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-c0f7e16c]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-c0f7e16c]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-c0f7e16c]{max-width:876px}.VPTeamMembers.medium .container[data-v-c0f7e16c]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-c0f7e16c]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-c0f7e16c]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-c0f7e16c]{max-width:760px}.container[data-v-c0f7e16c]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--deep-dark-blue: #4ca5ee;--deep-dark-blue-light: #40d1d6;--fresh-green: #46b983;--fresh-green-light: #28d4a3;--vivid-red: #f44336;--vivid-red-light: #e57373;--gradient-brand: linear-gradient(120deg, var(--deep-dark-blue-light) 0%, var(--fresh-green-light) 100%);--gradient-hero: linear-gradient(-45deg, var(--vivid-red) 30%, var(--deep-dark-blue) 70%);--vp-c-brand-1: var(--deep-dark-blue);--vp-c-brand-2: var(--deep-dark-blue-light);--vp-c-brand-3: var(--fresh-green);--vp-c-brand-soft: rgba(26, 35, 126, .14);--vp-c-tip-1: var(--fresh-green);--vp-c-tip-2: var(--fresh-green-light);--vp-c-tip-3: var(--deep-dark-blue);--vp-c-tip-soft: rgba(76, 175, 80, .14);--vp-c-warning-1: #ff9800;--vp-c-warning-2: #ffa726;--vp-c-warning-3: #ffb74d;--vp-c-warning-soft: rgba(255, 152, 0, .14);--vp-c-danger-1: var(--vivid-red);--vp-c-danger-2: var(--vivid-red-light);--vp-c-danger-3: #ef9a9a;--vp-c-danger-soft: rgba(244, 67, 54, .14)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--deep-dark-blue);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--deep-dark-blue-light);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--fresh-green)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(56px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(72px)}}:root{--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-brand-soft);--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft)}.DocSearch{--docsearch-primary-color: var(--deep-dark-blue) !important}.vp-doc a:hover{background:var(--gradient-brand);-webkit-background-clip:text;-webkit-text-fill-color:transparent;text-decoration:none;transition:all .3s ease}.vp-doc div[class*=language-]{border-radius:8px;box-shadow:0 4px 6px #0000001a}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4{background:var(--gradient-brand);-webkit-background-clip:text;-webkit-text-fill-color:transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--deep-dark-blue-light);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--deep-dark-blue)}.nav-bar .nav-links .nav-item.active a{background:var(--gradient-brand);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-weight:600}.sidebar{border-right:1px solid rgba(60,60,60,.12);background:#ffffffe6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.vp-doc .custom-block{border-radius:8px;box-shadow:0 2px 4px #0000000d;transition:transform .2s ease,box-shadow .2s ease}.vp-doc .custom-block:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.custom-home[data-v-58648596]{padding-top:4rem;padding-bottom:4rem;width:1420px;max-width:80%;margin:0 auto}.hero[data-v-58648596]{display:flex;align-items:center;justify-content:space-between;padding:0 2rem 0 6rem;position:relative;overflow:hidden}.hero-content[data-v-58648596]{flex:1;max-width:600px;position:relative;z-index:2}.hero-title[data-v-58648596]{font-size:4rem;line-height:1.2;margin-bottom:1.5rem;font-weight:800}.gradient-text[data-v-58648596]{background:linear-gradient(120deg,var(--deep-dark-blue),var(--vivid-red));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-subtitle[data-v-58648596]{font-size:1.5rem;color:var(--vp-c-text-1);margin-bottom:1rem;line-height:1.6}.hero-tagline[data-v-58648596]{font-size:1.1rem;color:var(--vp-c-text-2);margin-bottom:2rem}.hero-buttons[data-v-58648596]{display:flex;gap:1rem}.button[data-v-58648596]{padding:.8rem 1.6rem;border-radius:8px;font-weight:600;transition:all .3s ease;text-decoration:none}.button.primary[data-v-58648596]{background:var(--deep-dark-blue);color:#fff;box-shadow:0 4px 14px #1a237e63}.button.primary[data-v-58648596]:hover{transform:translateY(-2px);box-shadow:0 6px 20px #1a237e3b}.button.secondary[data-v-58648596]{background:#e100001a;color:var(--vivid-red);border:2px solid var(--vivid-red)}.button.secondary[data-v-58648596]:hover{background:#e100003b;transform:translateY(-2px)}.hero-image[data-v-58648596]{flex:1;position:relative;height:100%;max-width:50%}@media screen and (min-width: 768px){.image-container[data-v-58648596]{position:relative;z-index:2;animation:float-58648596 6s ease-in-out infinite;margin:auto;max-width:280px}.image-container img[data-v-58648596]{max-width:100%;height:auto;border-radius:12px}.floating-elements[data-v-58648596]{position:absolute;top:0;left:0;right:0;bottom:0;z-index:1}.element[data-v-58648596]{position:absolute;border-radius:50%;opacity:.6;filter:blur(40px)}.element-1[data-v-58648596]{background:var(--deep-dark-blue);width:200px;height:200px;top:20%;left:10%;animation:float-58648596 8s ease-in-out infinite}.element-2[data-v-58648596]{background:var(--fresh-green);width:150px;height:150px;bottom:30%;right:20%;animation:float-58648596 6s ease-in-out infinite}.element-3[data-v-58648596]{background:var(--vivid-red-light);width:100px;height:100px;top:60%;left:30%;animation:float-58648596 7s ease-in-out infinite}}.features[data-v-58648596]{padding:3rem 1rem}.features-title[data-v-58648596]{text-align:center;font-size:2.5rem;margin-bottom:4rem}.features-grid[data-v-58648596]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2rem;max-width:1200px;margin:0 auto}.feature-card[data-v-58648596]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:2rem;border-radius:12px;box-shadow:0 4px 6px #0000000d;transition:all .3s ease}.feature-card[data-v-58648596]:hover{transform:translateY(-5px);box-shadow:0 8px 15px #0000001a}.feature-icon[data-v-58648596]{width:60px;height:60px;border-radius:12px;font-size:2rem;background:var(--gradient-brand);display:flex;align-items:center;justify-content:center;margin-bottom:1.5rem}.feature-icon i[data-v-58648596]{font-size:24px;color:#fff}@keyframes float-58648596{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}@media (max-width: 960px){.hero[data-v-58648596]{flex-direction:column;text-align:center;padding-top:2rem}.hero-content[data-v-58648596]{max-width:100%;margin-bottom:3rem}.hero-buttons[data-v-58648596]{justify-content:center}.hero-image[data-v-58648596]{max-width:80%}.features-grid[data-v-58648596]{grid-template-columns:1fr}}@media (max-width: 640px){.hero-title[data-v-58648596]{font-size:3rem}.hero-subtitle[data-v-58648596]{font-size:1.25rem}.button[data-v-58648596]{padding:.6rem 1.2rem}}.carousel-section[data-v-58648596]{padding:2rem 2rem 0;margin:0 auto}.carousel-container[data-v-58648596]{position:relative;width:100%;max-width:800px;margin:0 auto;overflow:hidden;border-radius:12px;box-shadow:0 4px 6px #0000001a}.carousel-track[data-v-58648596]{display:flex;transition:transform .5s ease-in-out}.carousel-slide[data-v-58648596]{min-width:100%;height:400px}.carousel-slide img[data-v-58648596]{width:100%;height:100%;object-fit:cover}.carousel-button[data-v-58648596]{position:absolute;top:50%;transform:translateY(-50%);background:#00000080;color:#fff;border:none;width:40px;height:40px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.5rem;transition:all .3s ease;z-index:2}.carousel-button[data-v-58648596]:hover:not(:disabled){background:#000c}.carousel-button[data-v-58648596]:disabled{opacity:.5;cursor:not-allowed}.carousel-button.prev[data-v-58648596]{left:1rem}.carousel-button.next[data-v-58648596]{right:1rem}.carousel-dots[data-v-58648596]{position:absolute;bottom:1rem;left:50%;transform:translate(-50%);display:flex;gap:.5rem;z-index:2}.carousel-dot[data-v-58648596]{width:10px;height:10px;border-radius:50%;border:none;background:#ffffff80;cursor:pointer;transition:all .3s ease;padding:0}.carousel-dot.active[data-v-58648596]{background:#fff;transform:scale(1.2)}@media (max-width: 768px){.carousel-slide[data-v-58648596]{height:300px}.carousel-button[data-v-58648596]{width:30px;height:30px;font-size:1rem}} diff --git a/basic/config.html b/basic/config.html new file mode 100644 index 00000000..68a6f9dd --- /dev/null +++ b/basic/config.html @@ -0,0 +1,82 @@ + + + + + + 配置详解 | Kotori + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/basic/index.html b/basic/index.html new file mode 100644 index 00000000..834077af --- /dev/null +++ b/basic/index.html @@ -0,0 +1,29 @@ + + + + + + 简介 | Kotori + + + + + + + + + + + + + + + + + + +
Skip to content

简介

kotori-bot

kotori 是一个跨平台、解耦合、现代化于一体的聊天机器人框架,运行于 Node.js 环境,使用 TypeScript 语言开发。

概述

「Kotori」是一个罗马字,在日语中是「ことり」(小鳥)的意思,发音为 /kotolɪ/ ,该名字取自于 Key 公式 的游戏 《Rewrite》 中主要女性角色之一:神户小鸟 (神戸(かんべ) 小鳥(ことり))。 借助 Kotori,可快速搭建一个多平台、功能强大的聊天机器人应用,通过安装不同模块为 Kotori 扩展功能、玩法和个性化配置等。同时,Kotori 为开发者提供了现成的 Cli 用于模块开发与 Kotori 二次开发。

特点

  • 跨平台 得益于模块化支持,通过编写各种模块实现不同的功能与聊天平台接入

  • 解耦合 基于控制反转(IOC)与面向切面编程(AOP)思想,减少代码冗余与复杂度

  • 现代化 使用现代化的 ECMAScript 语法规范与强大的 TypeScript 类型支持

扩展支持

平台

  • QQ(基于腾讯官方接口)
  • QQ(基于 OneBot11 标准,适用于 NapCatgo-cqhttp 等项目)
  • CMD 命令行
  • Slack
  • Telegram
  • Email
  • Discord
  • MinecraftBedrock (基于 WebSocket)

即将支持:

  • Kook/开黑啦
  • WeChat/微信
  • Line
  • What's App
  • DingTalk

数据

  • LevelDb

Kotori 使用极为轻量的 LevelDb 作为数据存储。

你是?

  • 框架用户,使用 Kotori 搭建自己的机器人:快速开始
  • 平台用户,使用官方提供的现成机器人:立即使用
  • 开发者
    • 模块开发者,开发 Kotori 模块:开发指南
    • Node.js 开发者,将 Kotori 作为依赖开发自己的项目:接口参考
+ + + + \ No newline at end of file diff --git a/basic/modules.html b/basic/modules.html new file mode 100644 index 00000000..c184611b --- /dev/null +++ b/basic/modules.html @@ -0,0 +1,59 @@ + + + + + + 模块安装 | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

模块安装

介绍

模块(Modules) 是 Kotori 的重要组成部分之一,通过使用模块以扩展各式各样的功能。

模块根据功能与应用范围不同,主要分为以下三大类型:

  • 插件(Plugin):为用户提供多种功能、玩法、扩展,数量最多的类型
  • 服务(Service):用于提供封装好的接口
  • 适配器(Adapter):用于接入各个聊天平台

寻找模块

Kotori 模块中心 内收录了大部分 Kotori 模块。选择所需模块,在详情页中会有插件的基础信息、介绍、使用说明、配置说明等。

下载与安装

此处以「QQ 适配器服务模块」(@kotori-bot/kotori-plugin-adapter-qq)为例。

模块的包名除去 @xxx/ 的部分(如果有),会有一段相似的开始字段,将其称之为「模块前缀」。通过模块前缀可判断模块类型,如「kotori-plugin-adapter-xxx」表示适配器,「kotori-plugin-database-xxx」表示数据库服务,「kotori-plugin-xxx」表示插件自定义服务,详细内容请参考 开发文档 - 插件范式

使用包管理工具

复制模块详情页里中的安装指令,或手动输入对应模块的 npm 包名,在 Kotori 根目录运行:

bash
npm install @kotori-bot/kotori-plugin-adapter-qq

手动下载安装

WARNING

该方法目前仅建议插件开发者在工作区下可适当使用。

在模块详情页里跳转至对应的 npm 地址或 GitHub 地址,下载模块的构建产物。 解压压缩包并移动至 Kotori 根目录下的 ./modules/ 内。

GitHub 仓库中存有模块的源码,在当前阶段,你应下载并使用模块的构建产物而非源码

务必确保解压后的模块文件夹仅有一层文件夹而非多层,否则将无法识别与加载模块。

添加加载目录

模块安装在 ./modules 目录内请忽略该步骤

通过包管理工具安装的模块一般会安装在 Kotori 根目录下的 ./node_modules/ 内,如若插件包名带有 @xxx/ 的前缀,表示为包的命名空间,上述示例模块中的「@kotori-bot/」为 Kotori 官方包的命名空间,表示官方模块,其余的命名空间或无命名空间的模块为社区模块

所有未安装在 ./modules/ 都应配置 kotori.ymlglobal.dirs 项以设置额外的加载根目录,但对于 ./node_modules/@kotori-bot/ 命名空间已经存在于 Kotori.yml 默认配置中,因此无需担心。

对于其它安装目录或命名空间则需手动添加到 Kotori.yml 中,如:

  • 使用包管理工具安装一个命名空间为 @custom-scope/ 的模块
  • 将模块安装在 Kotori 根目录下的 ./test_modules/

对应配置为:

toml
[global]:
+dirs = [
+  "./node_modules/",
+  "./node_modules/@kotori-bot/",
+  # 上面为默认配置的加载目录
+  "./node_modules/@custom-scope/",
+  "- ./test_modules"
+]

配置模块

根据安装的模块类型不同,配置策略也将不同。

插件

插件配置数据应写在 kotori.ymlplugin.<plugin-name> 项下,其中 <plugin-name> 为插件名字,不应含有包的命名空间与模块前缀,值必须是一个对象。插件的配置项由插件本身提供与指定,并非所有插件本身都会提供配置项。一般地,有提供配置项的插件内都会有一套默认配置,因此不配置也可以正常运行插件。插件的配置和说明可参考该插件的详情页,此处以 「菜单插件」(@kotori-bot/kotori-plugin-menu)为例,在详情页查看配置说明后在 kotori.yml 中配置相关内容:

toml
[plugin.menu]
+alias = "cd"
+keywords = [ "菜单", "功能", "帮助" ]
+content = "菜单 | 小鳥%break%/menu - 查看BOT菜单%break%/hitokoto - 获取一条一言%break%ByHotaru"

适配器

适配器配置数据应写在 kotori.ymladapter[instanceName] 项下,其中 instanceName 为适配器实例(以下简称「Bot」)名字应由小写英语字母、数字、连字符([a-z0-9])组成,值必须是一个对象。适配器的配置数据不会作用于适配器模块,Kotori 会根据配置数据创建对应 Bot。对于适配器的配置,必须提供一些必要配置项才能确保实例的正常运行,其中有部分配置项由 Kotori 内部定义,如:

toml
[adapter.cmd-test]
+extends = "cmd"
+master = 2_333

「cmd-test」是该 Bot 的名字也是在 kotori 程序运行中的唯一标识符,不可重复。extends 用于指定该实例使用的适配器,值为适配器模块的包名除去命名空间与适配器服务前缀的字符串,如:使用「@kotori-bot/kotori-plugin-adapter-qq」适配器,则应填入「qq」。master 用于指定该实例的最高管理员(Admin),值类型可为数字或字符串,非必填。 除去由 Kotori 内部定义的配置项以外,一般还需要填入该适配器要求传入的必要配置项。

toml
[adapter.cmd-test]
+extends = "cmd"
+master = 2_333
+nickname = "Kotarou"
+age = 18
+sex = "male"
+self-id = 720

cmd 适配器即「@kotori-bot/kotori-plugin-adapter-cmd」,属于 kotori 预装模块之一,为 kotori 程序当前所在控制台提供聊天交互功能,也是最方便的测试机器人的场所(但并不推荐,因为只支持文字交互,模块开发有更好的测试场所选择,详细内容请参考 开发文档 - 项目构建

不过此处使用的 cmd 适配器定义的配置项均有默认值因此为可选。接着使用「@kotori-bot/kotori-plugin-adapter-qq」适配器再创建一个 Bot:

toml
[adapter.cmd-test]
+extends = "cmd"
+master = 2_333
+nickname = "Kotarou"
+age = 18
+sex = "male"
+self-id = 720
+
+[adapter.kisaki]
+extends = "qq"
+appid = "xxxx"
+secret = "xxxxx"
+master = 2_333
+retry = 10

查看 QQ 适配器的详情页面可知,appidsecret 为其定义的必要配置项,retry 为其定义的可选配置项,关于 QQ 适配器的具体使用与配置项含义请查看其插件详情页。

关于配置文件的详细介绍请参考 配置详解

+ + + + \ No newline at end of file diff --git a/basic/start.html b/basic/start.html new file mode 100644 index 00000000..84329136 --- /dev/null +++ b/basic/start.html @@ -0,0 +1,44 @@ + + + + + + 快速开始 | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

快速开始

一键使用仓库

尽管 Kotori 的安装几乎已可以说是开箱即用的地步,只需要简单动用一下包管理器同时写入配置文件即可完成安装,但鉴于这仅仅安装了本体,并未附带一些基础且必要的模块,因此这里有一份来自于社区的 Kotori 手把手安装教程,该仓库提供了一个包含基础模块的 package.json 与 Kotori 配置文件以及启动脚本。

NOTE

如若视频加载不出来请考虑使用 VPN,当然这并不重要。

下载该仓库

  • 方法 1:使用 git 克隆
bash
git clone https://github.com/kotorijs/kotori-app.git
  • 方法 2:直接下载压缩包并解压

下载地址

安装依赖

1.安装 Node.js

2.安装项目依赖

支持 npmyarn 主流包管理器安装,pnpm 安装后可能存在启动问题,cnpmdenobun 未经测试,但理论仍可以进行安装并运行。先进入仓库根目录,输入以下任一命令安装:

bash
npm install

如若出现安装失败问题则强制安装:

bash
npm install --force

强制更新所有包:

bash
npm update --force

配置 kotori.toml

关于 kotori.toml 的详细介绍请参考 配置详解

正式启动

在仓库根目录打开命令行输入:

bash
npm exec kotori

当然,也可以直接使用仓库根目录下提供的两个启动文件:

  • Windows 平台下使用 start.bat
  • Linux/Mac 平台下使用 start.sh

启动完成后,在控制台内输入 /status 查看,输入 /help 查看帮助内容

进入 Webui

启动 Kotori 后,会在控制台看到以下类似信息:

log
7/19 23:59:59 LOG (1372799) : Http server started at http://127.0.0.1:720
+7/20 0:0:0 LOG (1372799) : WebSocket server started at ws://127.0.0.1:720
+KotoriO > 当前未设置 Webui 账号与密码,请输入 /webui 指令以进行初始化

此处的 http://127.0.0.1:720 即为 Kotori 网页控制台,第一次启动会提示设置用户名与密码,通过输入 /webui 命令进行设置:

bash
/webui
+KotoriO > 请输入 Webui 用户名:
+Admin
+KotoriO > 请输入 Webui 密码:
+kotori666
+8/11 10:37:5 LOG (1435470) [cmd/cmd-test]: User 2333 exec command webui successfully
+KotoriO > 配置成功!请再次输入指令以查看运行状态
+/webui
+8/11 10:47:30 LOG (1435470) [cmd/cmd-test]: User 2333 exec command webui successfully
+KotoriO > Webui 服务已启动!运行端口:720

当想重置用户名或密码时也可以输入以下指令:

bash
/webui -R
+8/11 10:35:51 LOG (1372799) [cmd/cmd-test]: User 2333 exec command webui -R successfully
+KotoriO > Webui 账户数据已重置

安装适配器与插件

  • 适配器:用于对接各个聊天平台,比如说你要用 qq 即安装 qq 适配器即可

  • 插件:扩展机器人的各种功能

  • 模块中心

此处收录了大部分的 Kotori 模块,选择自己喜欢的模块打开详情页查看说明,复制包名使用你的包管理器进行安装。以下指令会为你安装一些重要的基础插件:

更新 Kotori 与模块

一般地,在需要更新时使用以下命令即可进行更新:

bash
npm update -f

此外,当变动较大时可重新重复上述安装步骤。

使用 GUI

Kotori 内置了一个简易的交互式命令行功能,用于执行简单的操作,在根目录下输入以下命令:

bash
npm exec kotori ui

ui1

gui2

启用守护进程

程序运行中可能总会发生一些不会如用户所愿的错误和异常,为了避免这种情况,Kotori 提供了守护进程功能,当程序崩溃时,守护进程会自动重启程序,而在默认情况下(即程序处于 build 模式),守护进程是会自动启用的,想改变这一策略可更改环境变量或 CLI 参数,具体参见 配置详解

bash
24/8/11 10:35:56 INFO (1372340) : [Daemon] Starting...

当 Kotori 启动时出现以上消息则表明守护进程成功启用。同时在启用守护进程后,也可以通过指令 /restart(来自「@kotori-bot/kotori-plugin-core」) 手动进行重启:

bash
/restart
+KotoriO > Kotori 正在重启中...
+8/11 10:35:56 LOG (1372799) [cmd/cmd-test]: User 2333 exec command restart successfully
+24/8/11 10:35:56 WARN (1372340) : [Daemon] Restarting...

当然,守护进程在程序崩溃时也有一套判定规则,如若程序在短时间内多次崩溃,则视为存在重大异常问题,此时便会停止自动重启需要人工进行排查原因。。

从源码构建

请参考 作为依赖与二次开发

其它方式

N.A

+ + + + \ No newline at end of file diff --git a/basic/usage.html b/basic/usage.html new file mode 100644 index 00000000..394904ed --- /dev/null +++ b/basic/usage.html @@ -0,0 +1,72 @@ + + + + + + 立即使用 | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

立即使用

TIP

本篇适用于想立即体验基于 Kotori 搭建的 Bot 实际效果、或单纯想使用由官方提供的各平台 Bot 服务的平台用户。


服务平台

目前共提供 2 个平台、四个 Bot:

QQ

Kanbe Kotori(小鳥一号)

小鳥二号

基于 OneBot11 标准的第三方 QQ 机器人(@Kotori-bot/kotori-plugin-adapter-onebot)。

立即使用:Kotori 交流群

小鳥三号

基于 Tencent 官方 API(@Kotori-bot/kotori-plugin-adapter-qq)。相比于第三方 QQ 机器人,限制较多(不可发送主动消息、URL 需备案等),其余功能与「小鳥二号」基本一致。

立即使用:Kotori 交流群

Misakura

基于 OneBot11 标准的第三方 QQ 机器人。

立即使用:Kotori 交流群

Telegram

Sena

基于 @kotori-bot/adapter-telegram 的 Telegram 机器人。

立即使用:@Sena0620Bot

Discord

Slack

功能一览

WARNING

以下内容已严重过期

以下展示并非全部功能。

@kotori-bot/kotori-plugin-core

  • /core 查看实例统计信息
  • /bot 查看当前 bot 信息与运行状态
  • /bots 查看所有 bot 信息与运行状态
  • /version 查看版本信息
  • /about 帮助信息
  • /update 检查更新

@kotori-bot/kotori-plugin-help

  • /help [command] 查看指令帮助信息

@kotori-bot/kotori-plugin-menu

/menu 查看 BOT 菜单 别名:cd

kotori-plugin-random-img

  • /sex [tags] Pixiv 图片
  • /sexh HuliImg 图片
  • /bing 必应每日图
  • /day 60s 带你看世界
  • /earth 实时地球
  • /china 实时中国

kotori-plugin-bangumi

  • /bgm <content> [order:number=1] 番组计划搜索游戏/动漫
  • /bgmc 获取番组计划今日放送
bash
/bgm 素晴日
+> 原名:素晴らしき日々~不連続存在~公式ビジュアルアーカイヴ
+中文名:素晴之日 不连续的存在 Official Visual Archive
+介绍:人気アダルトゲームブランド「ケロQ」から、実に6年ぶりに発売された新作『素晴らしき日々 ~不連続存在~』。その魅力をギュッと閉じ込めたファン必携の一冊。描き下ろしイラスト&原作を担当したSCA-自(すかぢ)氏の新作書き下ろしテキスト満載でお届け。
+标签:素晴らしき日々 设定集 电波 神作 素晴日 公式书 2010 百合 FanBook 悬疑 画集 画集・設定資料集 推理 VFB
+详情:https://bgm.tv/subject/8318
+[image]

kotori-plugin-bilibili

  • /bili <bvid> Bilibili 视频信息查询
  • /bilier <uid> Bilibili 用户信息查询

kotori-plugin-hitokoto

  • /hitokotos 随机语录
  • /hitokoto 获取一条一言
bash
/hitokoto
+> 如果人们不相信数学简单,那是因为他们没有意识到人生有多复杂。——冯诺依曼
+类型:俗语

kotori-plugin-mediawiki

  • /wiki <content> [order] 搜索 MediaWiki
  • /wikil 查看 MediaWiki 列表
bash
/wiki 月社妃
+> 标题:月社妃
+内容:月社妃(日语:月社(つきやしろ) 妃(きさき))是由ウグイスカグラ所制作的18禁galgame《纸上的魔法使》及其衍生作品的登场角色。是主人公四条琉璃的同胞妹妹。
+https://mzh.moegirl.org.cn/.php?curid=384932
+来源:萌娘百科

kotori-plugin-github

  • /github <repository> 查询 Github 仓库信息
bash
/github kotorijs/kotori
+> 地址:kotorijs/kotori
+描述:Cross platform, decoupled, and modernized ChatBot framework base on NodeJS
+语言:TypeScript
+所有者:kotorijs
+创建时间:
+2023-06-14T11:45:16Z
+最后更新时间:2023-12-31T15:28:10Z
+最后推送时间:2024-01-14T09:48:13Z
+开源协议:GNU General Public License v3.0

kotori-plugin-music

  • /music <name> [order:number=1] 网易云点歌 序号默认为 1,填 0 显示歌曲列表
bash
/music 夢水の調べ
+> 歌曲ID:2077744375
+歌曲标题:夢水の調べ
+歌曲作者:おはる
+歌曲下载:http://music.163.com/song/media/outer/url?id=2077744375.mp3
+歌曲封面:[image]

kotori-plugin-weather

  • /weather <area> 查询城市天气
bash
/weather 北京
+> 城市:北京市
+日期:周四
+温度:-6~4℃
+天气:晴
+风度:南风-2级
+空气质量:良
+
+日期:周五
+温度:-5~0℃
+天气:阴
+风度:东风-1级
+空气质量:良
+
+日期:周六
+温度:-8~0℃
+天气:阴
+风度:东北风-1级
+空气质量:良
+ + + + \ No newline at end of file diff --git a/data.json b/data.json new file mode 100644 index 00000000..3873aae1 --- /dev/null +++ b/data.json @@ -0,0 +1,167 @@ +{ + "meta": { + "registry": "https://registry.npmjs.org/" + }, + "list": [ + { + "name": "@kotori-bot/adapter-discord", + "description": "Discord 适配器" + }, + { + "name": "@kotori-bot/adapter-mail", + "description": "电子邮箱适配器" + }, + { + "name": "@kotori-bot/adapter-slack", + "description": "Slack 适配器" + }, + { + "name": "@kotori-bot/adapter-telegram", + "description": "Telegram 适配器" + }, + { + "name": "@kotori-bot/adapter-onebot", + "description": "基于 OneBot11 标准的适配器" + }, + { + "name": "@kotori-bot/kotori-plugin-access", + "description": "权限插件,用于设置多个机器人管理员" + }, + { + "name": "@kotori-bot/kotori-plugin-adapter-cmd", + "description": "基于控制台的适配器" + }, + { + "name": "@kotori-bot/kotori-plugin-adapter-onebot", + "description": "基于 OneBot11 标准的适配器" + }, + { + "name": "@kotori-bot/kotori-plugin-adapter-qq", + "description": "基于 Tencent 官方 API 的适配器" + }, + { + "name": "@kotori-bot/kotori-plugin-adapter-sandbox", + "description": "模块测试环境,虚拟沙盒适配器" + }, + { + "name": "@kotori-bot/kotori-plugin-alias", + "description": "用户级别名设置" + }, + { + "name": "@kotori-bot/kotori-plugin-core", + "description": "核心插件" + }, + { + "name": "@kotori-bot/kotori-plugin-filter", + "description": "模块加载过滤器" + }, + { + "name": "@kotori-bot/kotori-plugin-helper", + "description": "查看指令帮助" + }, + { + "name": "@kotori-bot/kotori-plugin-status", + "description": "查看服务器运行状态" + }, + { + "name": "@kotori-bot/kotori-plugin-webui", + "description": "网页控制台" + }, + { + "name": "kotori-plugin-adapter-minecraft", + "description": "Minecraft 基岩版原生 WebSocket 适配器" + }, + { + "name": "kotori-plugin-bangumi", + "description": "番组计划插件" + }, + { + "name": "kotori-plugin-bangumi", + "description": "番组计划插件" + }, + { + "name": "kotori-plugin-better-join", + "description": "趣味的进群欢迎提示" + }, + { + "name": "kotori-plugin-bilibili", + "description": "哔哩哔哩插件" + }, + { + "name": "kotori-plugin-color", + "description": "随机颜色图片、日本传统色、中国传统色" + }, + { + "name": "kotori-plugin-drift-bottle", + "description": "漂流瓶插件" + }, + { + "name": "kotori-plugin-github", + "description": "GitHub 仓库搜索" + }, + { + "name": "kotori-plugin-goodnight", + "description": "早晚安插件" + }, + { + "name": "kotori-plugin-grouper", + "description": "群聊活跃排行与小游戏" + }, + { + "name": "kotori-plugin-hitokotos", + "description": "随机一言,十七种不同语录" + }, + { + "name": "kotori-plugin-manger", + "description": "简易群管插件" + }, + { + "name": "kotori-plugin-mediawiki", + "description": "维基搜索,支持自定义多个维基" + }, + { + "name": "kotori-plugin-minecraft", + "description": "Minecraft JE/BE 服务器,账号皮肤,最新版本查询" + }, + { + "name": "kotori-plugin-music", + "description": "网易云音乐搜索" + }, + { + "name": "kotori-plugin-nmsl", + "description": "孙笑川在线帮你翻译成抽象话" + }, + { + "name": "kotori-plugin-penis", + "description": "查看今日牛牛的长度和排行" + }, + { + "name": "kotori-plugin-rand", + "description": "数学计算、随机操作、投骰子、扔硬币!" + }, + { + "name": "kotori-plugin-randomimg", + "description": "Pixiv 等多种随机图片" + }, + { + "name": "kotori-plugin-requester", + "description": "给主人报告的插件" + }, + { + "name": "kotori-plugin-run-code", + "description": "在线运行 JavaScript 和 Lua 代码" + }, + { + "name": "kotori-plugin-sed", + "description": "社工查询插件" + }, + { + "name": "kotori-plugin-testing", + "description": "测试用的插件,提供了 eval 和 echo 指令" + }, + { + "name": "kotori-plugin-weather", + "description": "天气查询" + } + ] +} diff --git a/favicon.svg b/favicon.svg new file mode 100644 index 00000000..02f64fa5 --- /dev/null +++ b/favicon.svg @@ -0,0 +1,81 @@ + + + + + + + + + + diff --git a/fluoro.png b/fluoro.png new file mode 100644 index 0000000000000000000000000000000000000000..698e851be4cf1287e6913053328706be7dbba28e GIT binary patch literal 25881 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 + + + + + 指令注册 | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

指令注册

引入

在上一节中学习了事件系统的使用,现在通过 on_message 事件实现一个小功能:

typescript
ctx.on('on_message', (session) => {
+  if (!session.message.startsWith('/')) return;
+  const command = session.message.slice(1);
+
+  if (command === 'echo') {
+    const content = command.slice(5);
+    session.send(content ? content : '输入内容为空');
+  } else if (command === 'time') {
+    session.send(`现在的时间是 ${new Date().getTime()}`);
+  } else {
+    session.send('未知的指令');
+  }
+});

当收到「/echo xxx」消息时将发送「xxx」;当收到「/time」消息时将发送当前时间戳;两者都不是时发送「未知的指令」。然而当结果越来越多后,if...else 语句也会越来越多,显然,这是十分糟糕的。尽管可以考虑将条件内容作为键、结果处理包装成回调函数作为值,以键值对形式装进一个对象或者 Map 中,然后遍历执行。但是当条件越来越复杂时,字符串的键远无法满足需求,同时也可能有相当一部分内容仅在私聊或者群聊下可用,其次,参数的处理也需要在结果处理内部中完成,这是十分复杂与繁琐的,因此便有入了本节内容。

基本使用

指令(Command) 是 Kotori 的核心功能,也是最常见的交互方式,指令实质是 Kotori 内部对 on_message 事件的再处理与封装,这点与后续将学习的中间件和正则匹配是一致的,因此也可以看作是一个事件处理的语法糖。通过 ctx.command() 可注册一条指令,参数为指令模板字符,返回 Command 实例对象,实例上有着若干方法用于装饰该指令,其返回值同样为当前指令的实例对象。

typescript
ctx.command('echo <...content>').action((data) => data.args.join(' '));
+
+ctx.command('time').action(() => {
+  const time = new Date().getTime();
+  return time;
+});

指令模板字符

typescript
ctx.command('bar');
+ctx.command('car <arg1> <arg2>');
+ctx.command('dar <arg1> [arg2] [arg3=value]');
+ctx.command('ear [arg1:number=1] [...args:string] - 指令描述');

上述演示了指令模板字符的基本格式。

  • 尖括号 <> 表示必要参数,方括号 [] 为可选参数
  • 括号内部内容格式是 参数名:参数类型,参数名应为小写字母与数字([a-z0-9])组成,参数类型可省略,默认 string,支持的类型有: stringnumberboolean
  • 可选参数中可在参数类型后添加 =值 设置默认参数
  • 参数中可在参数名前添加 ... 设置剩余参数,与 TypeScript 不同的是,剩余参数的类型不需要加上数组表示
  • 在指令模板字符最后添加 - 指令描述 设置指令描述
  • 指令内容为截止到第一个参数出现之前的字符串(不含空格)
  • 参数名应尽量语义化;剩余参数应在所有参数最后面;应仅在可选参数中设置默认参数;必要参数应在可选参数之前;指令模板字符不应包含指令前缀

选项

通过 Command.option() 设置指令选项,接受两个参数:

  1. 该选项的缩写名
  2. 选项模板字符,可设置多个指令选项
typescript
ctx
+  .command('bar')
+  .option('S', 'speaker - 这是选项的描述')
+  .option('G', 'global:boolean - 这是一个布尔类型的选项')
+  .option('T', 'time:number - 这是一个数字类型的选项');
  • 一般地,使用单个大写字母作为缩写名,解析器将把字符串中单个连接符 - 开头内容作为选项缩写名解析
  • 使用多个小写字母作为全名(多个单词使用 单个连接符 - 解析),解析器将把字符串中两个连接符 -- 开头的内容作为选项全名解析
  • 在选项模板字符最后添加 - 指令描述 设置选项描述
  • 类似地,选项模板字符有着与指令模板字符一样的类型注解方式,默认 string,支持的类型有: stringnumberboolean
  • 选项模板字符不支持设置默认值

回调函数

通过 Command.action() 设置指令的回调函数,且每个指令仅可设置一个回调函数,回调函数中接收两个参数:

  1. argsoptions 两个键组成的对象,类型分别为 (string | number | boolean)[]Record<string, string | number | boolean>,分别代表用户输入的参数值与选项值
  2. 会话事件数据

options 中的键为对应选项的全名而非缩写名。

typescript
ctx.command('bar <...args>').action((data) => {
+  ctx.logger.info(data.args); // 输出参数值数组
+  ctx.logger.info(data.options); // 输出选项值对象
+  session.send('这是一条消息');
+});

回调函数中的第二个参数为当前会话事件数据 sessionsession 对象包含了当前指令触发产生的所有上下文信息,比如消息 id、消息类型、触发指令的账号、Bot 实例等,在处理函数中可以方便地与 Bot 进行交互。还可以从 session 中获取诸如发送消息等实用工具函数。下文将详细讲解 session 对象相关内容,此处仅做演示。

typescript
ctx.command('at').action((_, session) => {
+  session.send(`你好,${session.el.at(session.userId)},你的名字是 ${session.sender.nickname}`);
+});

作用域

通过 Command.scope() 设置指令作用域,值类型为 MessageScope,如若不设置则默认所有场景均可使用。

typescript
export enum MessageScope {
+  PRIVATE, // 私聊
+  GROUP // 群聊
+}
typescript
ctx
+  .command('test')
+  .scope(MessageScope.PRIVATE)
+  .action(() => '这是一条仅私聊可用的消息');
+
+ctx
+  .command('hello')
+  .scope(MessageScope.GROUP)
+  .action((_, session) => {
+    session.send(`这是一条仅群聊可用的消息`);
+  });

别名

通过 Command.alias() 设置指令别名,参数为 string | string[]

typescript
ctx
+  .command('original')
+  .alias('o') // 别名可以是单个字符串
+  .alias(['ori', 'org']) // 也可以是字符串数组
+  .action(() => '这是原版指令');

权限

通过 Command.access() 设置指令权限,值类型为 CommandAccess

typescript
export const enum CommandAccess {
+  MEMBER, // 所有成员可用,默认值,权限最低
+  MANGER, // 管理员(群管理员/群主或 Bot 管理员)及以上权限可用
+  ADMIN // 仅该 Bot 最高管理员可用
+}

CommandAccess.ADMIN 对应 kotori.yml 中的 AdapterConfig.master 选项

typescript
ctx
+  .command('op')
+  .access(CommandAccess.ADMIN)
+  .action(() => '这是一条特殊指令');

帮助信息

通过 Command.help() 设置指令帮助信息,相对于指令模板字符中的指令描述,其提供更为详尽全面的信息。

typescript
ctx.command('bar').help('这里是指令的帮助信息');

返回值处理

在上述众多演示中,可能你已注意到,与事件系统不同,指令的回调函数可以直接返回一个值作为消息发出,而不必使用 session.send() 方法。其本质上是自动将回调函数返回值作为参数传入 session.quick() 方法,具体处理逻辑请参考下文。

typescript
ctx.command('concat <str1> <str2>').action(({ args: [str1, str2] }) => str1 + str2);
+
+ctx.command('render').action(() => ['template.text', { content: '这是模板内容' }]);
+
+ctx.command('fetch').action(async () => {
+  const res = await ctx.http.get('https://api.example.com');
+  return ['template.status', { status: res.status }];
+});

对于返回数组的情况设计国际化相关内容,将在第三章中讲解

子指令

试想一下,有一个指令 list 有着多个操作,如查询、添加、删除列表等,大可以使用多个完全独立的指令如 list_querylist_addlist_remove,但这并不优雅。此处通过注册一个指令并判断其第一个参数的值执行相应操作

typescript
/* 错误示例不要抄 */
+ctx.command('black query - manger.descr.black.query').action(({ args }, session) => {
+  switch (args[0]) {
+    case 'query':
+      /* ... */
+      break;
+    case 'add':
+      /* ... */
+      break;
+    case 'remove':
+      /* ... */
+      break;
+    default:
+      return `无效的参数 ${args[0]}`;
+  }
+  /* ... */
+});

但是,其需要判断 args[0] 并处理无效时的情况,额外的代码嵌套依旧不够优雅。且多个操作下对于参数个数要求不一,如查询可以直接输入 list query,但对于添加/删除往往需要在后方再传入一个参数以指定添加/删除目标 list add xxx。因此,当同一指令有多个操作(即多个指令回调函数)且各个操作间相对独立时可使用子指令。基础用法:

typescript
ctx.command('cmd sub1').action(() => '操作1');
+ctx.command('cmd sub2').action(() => '操作2');
+
+// 甚至可以支持嵌套子指令...
+ctx.command('cmd sub3 sub1').action(() => '操作3的操作1');
+ctx.command('cmd sub3 sub2').action(() => '操作3的第二个操作');
+
+// 多个不同子指令间可设置不同的权限、作用域等,互不影响
+ctx
+  .command('cmd sub4 group')
+  .action(() => '这个子指令仅群聊可用')
+  .scope(MessageScope.GROUP);
+
+ctx
+  .command('cmd sub4 manger')
+  .action(() => '这个子指令仅管理员可用')
+  .access(CommandAccess.MANGER);
+
+  ctx
+  .command('cmd sub4 ADMIN_private')
+  .action(() => '这个子指令仅最高管理员且在私聊下可用')
+  .access(CommandAccess.ADMIN),
+  .scope(MessageScope.PRIVATE);

使用子指令实现 list 指令:

typescript
ctx.command('list query - 查询列表').action(() => {
+  /* ... */
+});
+
+ctx
+  .command('list add <target> - 从列表中添加指定目标')
+  .action(() => {
+    /* ... */
+  })
+  .access(CommandAccess.MANGER);
+
+ctx
+  .command('list remove <target> - 从列表中删除指定目标')
+  .action(() => {
+    /* ... */
+  })
+  .access(CommandAccess.MANGER);

会话事件数据

上一节的会话事件部分和本节中均提到了会话事件数据 session,又或是后面的中间件与正则匹配,都会有着它的身影。而指令系统作为 Kotori 中使用最广泛的功能且当前你已掌握事件系统的概念,会话事件数据的内容得以放在此处进行详细讲解。

重要属性

typescript
export interface EventDataApiBase {
+  type?: MessageScope;
+  api: Api;
+  el: Elements;
+  userId: EventDataTargetId;
+  groupId?: EventDataTargetId;
+  operatorId?: EventDataTargetId;
+  i18n: I18n;
+  send(message: MessageRaw): void;
+  format(template: string, data: Record<string, unknown> | CommandArgType[]): string;
+  quick(message: MessageQuick): void;
+  prompt(message?: MessageRaw): Promise<MessageRaw>;
+  confirm(options?: { message: MessageRaw; sure: MessageRaw }): Promise<boolean>;
+  error<T extends Exclude<keyof CommandResult, CommandResultNoArgs>>(
+    type: T,
+    data: CommandResult[T] extends object ? CommandResult[T] : never
+  ): CommandError;
+  error<T extends CommandResultNoArgs>(type: T): CommandError;
+  extra?: unknown;
+}

session 对象本质上就是一个事件数据对象(即会话事件),上述是会话事件的共有属性,不同会话事件中有着不同的额外属性,如 EventDataGroupMsg 事件有 messageIdsendermessagegroupId,而 EventDataPrivateMsg 事件没有 groupIdEventDataPrivateRecall 事件其中的仅有 messageId,这些额外属性均不在当前讨论范围内,具体内容参考接口文档。对于上述的共有属性在当前阶段也不必全部掌握。

  • api: Api 实例对象,提供多个与当前聊天平台的交互接口
  • el: Elements 实例对象,api.adapter.elements 属性的语法糖
  • i18n: 国际化相关方法

字符串处理

typescript
export type CommandArgType = string | number | boolean;
+type ObjectArgs = Record<string, CommandArgType>;
+type ArrayArgs = CommandArgType[];

session.format() 方法是一个简单的模板字符串替换工具(此处请区别于 JavaScript 中的 「模板字符串」)。接收两个参数:

  1. 源字符串
  2. 模板字符串参数,其类型有两种,分别为 ObjectArgsArrayArgs
typescript
ctx.command('himeki').action((_, { format }) => {
+  format('名字:%name%\n身高:%height%cm\n口头禅:%msg%', {
+    name: 'Ichinose Himeki',
+    height: 153,
+    msg: '最喜欢你了,欧尼酱'
+  });
+  // 等同于:
+  format('名字:{0}\n身高:{1}cm\n口头禅:{2}', ['Ichinose Himeki', 153, '最喜欢你了,欧尼酱']);
+  // 最终输出:名字:Ichinose Himeki\n年龄:153\n口头禅:最喜欢你了,欧尼酱
+});

通过上述代码可知:

  • 对象模板:通过 %key% 的形式进行替换,与对象键值一一对应,其更具有语义性,适合文本长且参数较多使用,但使用过多易造成代码冗余
  • 数组模板:通过 {index} 的形式进行替换,与数组索引一一对应,缺少语义性但更简洁,适合短文本使用,不易造成代码冗余
  • 模板字符串替换适合动态获取数据后呈现数据
  • 适当的对模板字符串参数嵌套使用 session.format() 可实现较为复杂的动态数据展示,但不宜过多

消息发送

在上一节已提到 session.send() 方法是对 session.api 上发送消息方法的封装,而 session.quick() 方法则是对 session.send() 的封装。一般地,在有会话事件数据可使用且无特殊需求下,均推荐使用 session.quick(),后续所有代码演示无特殊情况也默认使用该方法。

  • 对于 string 将调用 i18n.locale() 方法实现国际化
  • 对于 [string, ObjectArgs | ArrayArgs] 参数,将先遍历数组中第二个值下的所有属性并调用 i18n.locale() 进行替换,然后将其传入 session.format() 方法
  • 对于 undefined''voidnull0 则不作处理(一般不允许传入这些东西,主要发生在指令处理的回调函数返回值上)
  • 对于 Error 则另作处理(一般不允许传入这些东西,主要发生在指令处理的回调函数返回值上)
  • 对于 Promise 则等待 Promise 完成后再做上述处理

关于 i18n.locale() 方法当前可粗略理解为:传入一个已预定好且唯一的字符串值,根据当前使用语言返回相应语言文本。当然,不理解并不妨碍你使用 session.quick() 方法

json
// locales/zh_CN.json
+{
+  "test.msg.himeki.hitokoto": "最喜欢你了,欧尼酱",
+  "test.msg.himeki": "名字:{0}\n身高:{1}cm\n口头禅:{2}"
+}
typescript
// src/index.ts
+// 告诉 Kotori 自动加载国际化文件
+export const lang = [__dirname, '../locales'];
+
+export function (ctx: Context) {
+  ctx.command('himeki').action((_, session) => {
+    // 使用 session.send():
+    const hitokoto = session.i18n.locale('test.msg.himeki.hitokoto');
+    const msg = session.format(session.i18n.locale('test.msg.himeki'), ['Ichinose Himeki', 153, hitokoto]);
+    session.send(msg);
+    // 使用 session.quick():
+    session.quick(['test.msg.himeki', ['Ichinose Himeki', 153, 'test.msg.himeki.hitokoto']]);
+    // 直接返回:
+    return ['test.msg.himeki', ['Ichinose Himeki', 153, 'test.msg.himeki.hitokoto']];
+  });
+}

会话交互

目前 Kotori 原生提供了两个会话交互方法:session.prompt()session.confirm(),它们和浏览器中的 prompt()confirm() 类似,分别对应为输入框和提示框。

typescript
ctx.command('question').action(async (_, session) => {
+  await session.quick('这里有一个问题想问你...');
+  const likeme = await session.confirm({
+    message: '你喜欢我吗?',
+    sure: '喜欢'
+  });
+  if (!likeme) return '伤透了我的心';
+  const ago = Number(await session.prompt('喜欢我多久了?'));
+  if (Number.isNaN(ago) || ago < 0) return '这可不是一个有效的Number啊!';
+  await session.quick(ago >= 0 && ago <= 1 ? '什么嘛...原来才刚刚开始喜欢啊' : `居然喜欢了 ${ago} 这么久啊!`);
+  return '谢谢你的喜欢哦~';
+});

WARNING

一次性有多个会话交互(消息、输入、确认...)时请注意不用遗漏 await 关键词,否则可能会有一些意料之外的效果。

  • 两者参数均只有一个且可选
  • session.prompt() 参数为 string,对应提示消息,返回 Promise<string>
  • session.confirm() 参数为 { message: string, sure: string },分别对应提示消息和确认消息(只有用户发送消息与确认消息完全一致时返回 true 反之 false),返回 Promise<boolean>

NOTE

目前会话交互功能甚少,内容也不全面,如对 i18n 支持不够完善、需手动进行数据校验、Promise 超时等问题,如有能力欢迎你前来帮助 Kotori 完善。

错误处理

随着功能的不断增多,不稳定性也随之增多,面对用户传入的各种奇怪数据,虽有着 Kotori 本身的指令参数和数据校验用于防护,但这并不能百分百避免所有错误发生,因此学会自行错误处理至关重要。以下是 Kotori 内置的指令错误类型可供参考:

typescript
type CommandArgTypeSign = 'string' | 'number' | 'boolean';
+
+interface CommandParseResult {
+  option_error: { expected: CommandArgTypeSign; reality: CommandArgTypeSign; target: string }; // 选项类型错误
+  arg_error: { expected: CommandArgTypeSign; reality: CommandArgTypeSign; index: number }; // 参数类型错误
+  arg_many: { expected: number; reality: number }; // 参数过多
+  arg_few: CommandParseResult['arg_many']; // 参数过少
+  syntax: { index: number; char: string }; // 语法错误(引号、反斜杠问题)
+  unknown: { input: string }; // 未知的指令
+}
+
+export interface CommandResult extends CommandParseResult {
+  error: { error: unknown }; // 未知错误
+  data_error: { target: string | number };
+  res_error: { error: TsuError };
+  num_error: null;
+  no_access_manger: null; // 无管理员权限
+  no_access_admin: null; // 无最高管理员权限
+  disable: null;
+  exists: { target: string };
+  no_exists: CommandResult['exists'];
+}

Kotori 中指令指令错误分为两大类:

  • 指令解析时错误:即上述的 CommandParseResult,这些在指令系统不需要你操心,因为它们已全部交由上游的 Kotori 内置中间件进行处理,在解析指令时就会被发现
  • 指令运行时错误:即上述的 Omit<CommandResult, keyof CommandParseResult>,它们有的发生在指令执行前(如 no_access_mangerno_access_admin),又或者 error 这种错误之外的错误(执行回调函数时捕获的错误),这两者也不需要你操心

需要操心的是剩下可能发生在指令执行期间的错误,这些错误无法由 Kotori 处理,全需要你在编写代码时手动处理:

  • data_error 参数错误(不同于参数类型错误)
  • res_error 资源错误(主要是指网络请求第三方 Api 时返回数据类型有误)
  • num_error 序号错误(主要是指需要用户传入数字进行选择的情况)
  • exists 目标已存在(如添加目标到名单里但目标已存在于名单)
  • no_exists 目标不存在(如删除目标从名单里但目标不存在于名单)

使用 session.error() 方法即可在运行时阶段抛出错误,

typescript
export function main(ctx: Context) {
+  ctx.command('hitokoto').action(async (_, session) => {
+    const res = await ctx.http.get('https://hotaru.icu/api/hitokoto/v2/');
+    /* 这里有一些检查数据的操作 */
+    if (condition) return session.error('res', { error: new Error() }); // 这里会有些小问题,代码仅做演示,请勿照抄
+    return ['今日一言: {0}{1}', [res.data, res.data.from ? `——${res.data.from}` : '']];
+  });
+}

上述代码展示了其非常经典的一个例子,机器人的功能往往部分来自于网络接口请求,确保其第三方内容的稳定性更是必要的,因此对获取的数据进行检查,然后再进行访问属性操作,如若获取的数据与预期不一致则使用 session.error() 抛出错误

ctx.http 是一个网络请求工具,基于 Axios 封装,具体内容参考接口文档;此处的「检查数据的操作」实际上指 Schema,这将在第三章中讲解

+ + + + \ No newline at end of file diff --git a/guide/base/events.html b/guide/base/events.html new file mode 100644 index 00000000..148c5b10 --- /dev/null +++ b/guide/base/events.html @@ -0,0 +1,90 @@ + + + + + + 事件系统 | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

事件系统

事件系统(Events) 的上游是事件订阅者模式(Events Emiter),该设计模式与事件系统共同构成了 Kotori 的基础,Kotori 内部通过订阅事件保持各部分间的联系和协作任务。同时也有来自各个聊天平台的事件,通过订阅这些事件能实现丰富多样的功能。

订阅事件

事件系统的使用方法与常规的事件订阅者一致,通过 ctx.on() 订阅一个事件,第一个参数为事件名,第二个参数为回调函数,事件被触发时事件数据将作为实际参数传给回调函数。

typescript
import { MessageScope } from 'kotori-bot';
+
+// ...
+
+ctx.on('on_message', (session) => {
+  if (session.message !== '你是谁') return;
+  if (session.type === MessageScope.GROUP) {
+    session.api.sendGroupMsg('是 Kotori!', session.groupId);
+  } else {
+    session.api.sendPrivateMsg('是 Kotori!', session.userId);
+  }
+});

从上述代码中可以看出,当收到消息时,如果不是「你是谁」则立即退出,执行完毕。如果是则判断 session.type 的值,调用相应的发送消息接口发送「是 Kotori!」。根据语义化命名可知:session.type 为消息类型,值是一个 MessageScope 枚举值,分为 「GROUP」(群聊)和「PRIVATE」(私聊);session.apiApi 的实例对象,提供了多种与聊天平台交互的接口,此处用到的 sendG丨groupMsgsendPrivateMsg 分别是发送群聊消息与发送私聊消息,第一个参数为消息内容,第二个参数分别为群聊 id 与用户 id。

id 一般为对应聊天平台提供的 id/uid,叫法不一,值类型为 string 或 number。如当你收到由适配器 @kotori-bot/kotori-plugin-adapter-onebot 发出的消息时,groupId 为 QQ 群号,userId 为 QQ 号。

上面的代码每次都需要判断消息类型再执行相应方法,显得有点繁琐,因此 kotori 提供了一个语法糖:

typescript
ctx.on('on_message', (session) => {
+  if (session.message !== '你是谁') return;
+  session.send('是 Kotori!');
+  }
+});

使用 session.send() 只需要传入消息内容即可,消息类型判断和传入相应 id 的工作已在该方法内部完成。session 上还有不少与之类似的语法糖,将在后面章节中逐一提到,也因如此,session.send() 在实际开发中使用率并不高,因为它对你后面将了解的内容而言依旧很繁琐。

取消订阅事件

正如订阅事件是「on」,取消订阅事件则是「off」。ctx.off() 的使用方法与 ctx.on() 一致。

typescript
const handle = (session: Session['on_message']) => {
+  ctx.off('on_message', handle);
+  // ...
+};
+
+ctx.on('on_message', handle);

上述代码中,触发事件后会立即取消订阅事件,意味着它只会被触发一次。ctx.on() 在执行后会返回取消订阅自己的方法,因此可以这样简化:

typescript
const off = ctx.on('on_message', (session) => {
+  off();
+  // ...
+});

使用 ctx.once() 再进一步简化:

typescript
ctx.once('on_message', (session) => {
+  // ...
+});

工作流程与上面一致,通过 ctx.once() 订阅事件,在触发后会立即取消订阅。

使用 ctx.offAll() 取消订阅指定事件名下所有事件:

typescript
ctx.once('on_message', (session) => {
+  // ...
+});
+
+ctx.once('on_message', (session) => {
+  // ...
+});
+
+ctx.on('on_message', (session) => {
+  if (session.message === '消失吧!') return;
+    ctx.offAll('on_message');
+  }
+});

在第三个回调函数中,当收到消息「消失吧!」时将取消订阅所有 on_message 事件。

事件类型

Kotori 中事件类型大致分为三类:

  • 系统事件(System Event):与生命周期和适配器有关的事件,回调函数中的参数名一般为 data
  • 会话事件(Session Event):与聊天平台有关的事件,回调函数中的参数名一般为 session
  • 自定义事件(Custom Event):由模块定义的事件,一般用于模块内部或多个模块间通信,参数量不固定。

系统事件

常见的系统事件有:

  • ready :当加载完所有模块时触发
  • dispose :当 Kotori 关闭时触发
  • status :当 Bot 的在线状态改变时触发

通过 status 实现 Bot 上线后自动发送消息给最高管理员:

typescript
ctx.on('status', (data) => {
+  if (data.status !== 'online') return;
+  const { api, config } = data.adapter;
+  api.sendPrivateMsg('上线了!', config.master);
+});

由于 status 是由适配器发出的系统事件,它并没有类似于会话事件中的 session.send(),因此只能使用最原始的办法发送消息。status 的事件数据中仅有两个值,一个是 data.status 表示当前在线状态(「online」或「offline」),data.adapter 为目标 Bot,Bot 上有 adapter.apiadapter.config,前者等价于会话事件中的 session.api,后者为 Bot 配置,来自于 kotori.yml

会话事件

常见的会话事件有:

  • on_message :当收到消息时触发
  • on_recall :当有消息撤回时触发
  • on_group_increase :当群人数增加时触发

通过 on_group_increase 实现群欢迎:

typescript
ctx.on('on_group_increase', (session) => {
+  session.send(`因为遇见了${session.el.at(session.userId)},我的世界才充满颜色!`);
+});

其中 session.elsession.api 类似,是 Elements 的实例对象,它提供了用于转换消息元素的接口,如 session.el.at() 传入用户 id 转换成艾特消息,session.el.image() 传入图片 URL 转换成图片消息。当然,并不是所有聊天平台都支持所有的消息元素,应以具体聊天平台为准。

自定义事件与发出事件

得益于 TypeScript 有着 声明合并(Declaration Merging) 的特性,在模块中可通过其实现自定义事件的局部声明。

typescript
declare module 'kotori-bot' {
+  interface EventsMapping {
+    custom_event1(data: string): void;
+  }
+}
+
+ctx.on('custom_event1', (data) => {
+  ctx.logger.debug(data);
+});

Kotori 中所有事件均定义在 EventsMapping 接口上。custom_event1 事件触发后将打印事件数据。

ctx.logger 是一个日志打印工具,ctx.logger.debug() 意味着打印内容仅在 dev 模式下运行 Kotori 可见,具体内容请参考接口文档

然而,订阅事件后,事件却从来没有发出,因此需要发出事件:

typescript
// ...
+
+ctx.emit('custom_event1', '这是事件数据');
+ctx.emit('custom_event1', '这里也是事件数据');

ctx.emit() 第一个参数为事件名,然后为剩余参数,剩余参数与该事件参数一一对应。虽然 Kotori 中系统事件与会话事件的参数均只有一个,但是可以在自定义事件中实现任意多个参数:

typescript
declare module 'kotori-bot' {
+  interface EventsMapping {
+    custom_event2(arg1: string, arg2: number, arg3: boolean): void;
+    custom_event3(...args: any[]): void;
+  }
+}
+
+ctx.emit('custom_event2', 'string', 42, true);
+ctx.emit('custom_event3', 'string1', 'string2', 233, 2333, { value: 42 });

TIP

一般地,自定义事件应只用于单个模块内部,用于多个模块间相互通信传输数据时,每个涉及模块应先加载定义自定义事件的模块,以免出现类型定义的问题。

+ + + + \ No newline at end of file diff --git a/guide/base/middleware.html b/guide/base/middleware.html new file mode 100644 index 00000000..7ec063c7 --- /dev/null +++ b/guide/base/middleware.html @@ -0,0 +1,86 @@ + + + + + + 中间件 | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

中间件

中间件(Middleware) 是 Kotori 中另一种监听消息事件的语法糖,与指令系统类似,它也是对 on_message 事件的再处理与封装。中间件的主要用途是提前判断或者过滤掉不必要的消息事件,这样后续的指令和正则表达式等位于下游的设施也不会被这些消息事件触发,从而提高效率。

中间件的工作原理与 Express 等后端框架中的中间件概念基本一致。每次收到消息时,Kotori 会依次执行所有已注册的中间件,只有当所有中间件都通过时,该消息事件才会真正被处理。

注册中间件

通过 ctx.midware() 注册一个中间件,该方法接受两个参数:

  1. 中间件回调函数
  2. 可选的中间件优先级,默认为 50

优先级数字越小(但不能为负数)则优先级越高,如果两个中间件的优先级相同,则按照注册顺序执行,先注册的中间件会先执行。

WARNING

如无特殊需求建议请勿更改优先级,否则可能会导致一些意料之外的问题。

typescript
ctx.midware((next, session) => {
+  // 中间件逻辑...
+  next(); // 通过此中间件
+}, 80); // 优先级为 80

中间件回调函数接收两个参数:

  1. next 函数,调用它将执行下一个中间件
  2. session 对象,包含当前消息事件的上下文信息

在中间件内部,你可以根据消息内容或发送者等信息决定是否调用 next() 函数。如果调用了 next() 则通过此中间件,否则此消息事件将被过滤掉,不再执行后续的中间件和其他处理逻辑。

移除中间件

ctx.midware() 方法的返回值是一个可以用于移除该中间件的函数。

typescript
const dispose = ctx.midware((next) => {
+  // ...
+  next();
+});
+
+// 移除中间件
+dispose();

使用示例

基本使用

typescript
ctx.midware((next, session) => {
+  console.log('收到一条消息');
+  next();
+});
+
+ctx.midware((next, session) => {
+  console.log('这是另一个中间件');
+  session.quick('这条消息将被发送');
+  next();
+});

上述代码注册了两个中间件,每当收到一条消息时,它们都会被执行。第一个中间件只打印日志,第二个则先打印日志,然后发送一条消息。由于两个中间件都调用了 next() 函数,因此该消息事件会继续被处理。

过滤消息

typescript
ctx.midware((next, session) => {
+  if (session.message !== 'hello') return;
+  next();
+});
+
+ctx.command('hello').action(() => 'Hello World!');

这个示例中的中间件会过滤掉消息内容不是「hello」的消息事件。只有当消息是「hello」时,中间件才会调用 next()让该消息事件继续被处理。通过使用中间件,我们可以在消息流经 Kotori 的各个环节进行拦截和处理,实现更加灵活和可控的消息处理逻辑。

限制命令使用频率

WARNING

以下内容由 Claude3 生成,不保证可用性。

有时我们需要限制某些命令的使用频率,以防止被滥用。这时可以使用中间件来实现这一功能。

typescript
// 用于存储命令使用记录
+const cmdUsageRecord = new Map();
+
+ctx.midware((next, session) => {
+  // 检查是否为命令消息
+  if (!session.message.startsWith('/')) {
+    next(); // 非命令消息,直接通过
+    return;
+  }
+
+  const cmd = session.message.slice(1); // 获取命令名
+  const userId = session.userId; // 获取发送者ID
+
+  // 如果此命令无使用记录,则新建一个记录
+  if (!cmdUsageRecord.has(cmd)) {
+    cmdUsageRecord.set(cmd, new Map());
+  }
+  const userRecord = cmdUsageRecord.get(cmd);
+
+  // 获取该用户对此命令的最后使用时间
+  const lastUsedAt = userRecord.get(userId) || 0;
+
+  // 计算距离最后一次使用的时间间隔(单位:秒)
+  constInterval = (Date.now() - lastUsedAt) / 1000;
+
+  // 如果间隔小于10秒,则拒绝执行该命令
+  if (Interval < 10) {
+    session.quick('命令使用过于频繁,请稍后再试');
+    return;
+  }
+
+  // 更新该用户对此命令的最后使用时间
+  userRecord.set(userId, Date.now());
+
+  next(); // 通过中间件
+}, 10); // 设置较高优先级

上述代码定义了一个中间件,用于限制命令的使用频率。具体逻辑如下:

  1. 首先检查收到的消息是否以 / 开头,如果不是则直接调用 next()通过该中间件。
  2. 获取命令名和发送者 ID。
  3. 检查是否存在该命令的使用记录,如果没有则新建一个记录。
  4. 获取该用户对此命令的最后使用时间,如果不存在则认为是第一次使用,最后使用时间设为 0。
  5. 计算距离上次使用的时间间隔(单位为秒)。
  6. 如果时间间隔小于 10 秒,则拒绝执行该命令,发送 '命令使用过于频繁,请稍后再试'
  7. 如果时间间隔大于等于 10 秒,则更新该用户对此命令的最后使用时间,并调用 next()通过该中间件。

该中间件的优先级设为 10,这是为了让它能够比大多数命令优先执行。我们使用 Map 来存储命令使用记录,外层 Map 的键为命令名,值为另一个 Map,内层 Map 的键为用户 ID,值为该用户最后一次使用该命令的时间戳。

通过这种方式,我们可以精确地控制每个用户对每个命令的使用频率,并且只对命令消息生效,不会影响到其他普通消息的处理。需要注意的是,这个示例使用了内存来存储命令使用记录,因此在重启 Bot 后记录会被清空。在实际应用中,你可以将记录持久化存储到数据库中。

+ + + + \ No newline at end of file diff --git a/guide/base/regexp.html b/guide/base/regexp.html new file mode 100644 index 00000000..038d4ceb --- /dev/null +++ b/guide/base/regexp.html @@ -0,0 +1,75 @@ + + + + + + 正则匹配 | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

正则匹配

正则匹配(RegExp) 同样是 Kotori 中一种监听消息事件的语法糖。它的主要用途是通过正则表达式匹配消息内容,然后执行相应的处理逻辑。值得一提的是,正则匹配位于消息事件的最后一环(在中间件和指令之后执行),这意味着只有通过了所有中间件和指令的消息,才会进入正则匹配的环节。

正则匹配依赖于正则表达式的强大功能,可以实现多种匹配模式,例如完全匹配、模糊匹配等,为消息处理提供了更大的灵活性。

注册正则匹配

通过 ctx.regexp() 注册一个正则匹配,该方法接受两个参数:

  1. match: 用于匹配消息内容的正则表达式
  2. callback: 当正则匹配成功时执行的回调函数
typescript
ctx.regexp(/^\/start$/, (match, session) => {
+  session.send('游戏开始!');
+});

上述代码注册了一个正则匹配,当收到消息内容为 /start 时,它会执行回调函数,并向发送者发送 '游戏开始!' 消息。

callback 函数接收两个参数:

  1. match: 正则匹配结果,是一个数组,第一项为完整匹配结果,后续项为各个捕获组的内容
  2. session: 当前消息事件的上下文信息

在回调函数中,你可以根据匹配结果执行相应的逻辑,回调函数的返回值将作为消息发送的内容。

移除正则匹配

ctx.regexp() 方法的返回值是一个可以用于移除该正则匹配的函数。

typescript
const off = ctx.regexp(/pattern/, () => {
+  /* ... */
+});
+
+// 移除正则匹配
+off();

正则匹配示例

简单匹配

typescript
ctx.regexp(/^\/echo (.+)$/, (match, session) => {
+  const content = match[1]; // 捕获组内容
+  session.send(content); // 回声匹配消息
+});

上述代码注册了一个正则匹配,用于实现 「/echo」 命令。当收到类似 「/echo 你好」 的消息时,正则会匹配到 你好 并将其作为第一个捕获组,然后在回调函数中将捕获组的内容作为消息发送出去。

复杂匹配

typescript
ctx.regexp(/^((数学|语文|英语)\b)\s*(\d+)$/, (match, session) => {
+  const [, , subject, score] = match;
+  let msg;
+  switch (subject) {
+    case '数学':
+      msg = `数学 ${score}`;
+      break;
+    case '语文':
+      msg = `语文 ${score}`;
+      break;
+    case '英语':
+      msg = `英语 ${score}`;
+      break;
+    default:
+      msg = '不支持的科目';
+  }
+  session.send(msg);
+});

这个例子演示了一个稍微复杂的正则匹配。正则 /^算((数学|语文|英语)\b)\s*(\d+)分$/ 用于匹配像 「算数学98分」、「算 语文80分」 这样的消息。正则中使用了一个命名捕获组 (?<subject>...)(不过这个语法还未被 Node.js 完全支持,因此这里使用了普通的捕获组)。

在回调函数中,我们通过数组解构拿到匹配的学科和分数,然后根据不同的学科返回对应的消息内容。

模糊匹配

typescript
ctx.regexp(/\s*?/, (match, session) => {
+  session.send('我在这里');
+});

这个例子展示了如何使用正则进行模糊匹配。正则 /在\s*吗?/ 可以匹配 「在吗」、「在 吗」 以及 「在」 这三种情况。使用 ? 可以使前面的字符或字符组成为可选。

多个匹配

typescript
ctx.regexp(/^(|||)\s*(\d+)\s*(|||)?\s*(\d+)?$/, (match, session) => {
+  const [, op1, n1, op2, n2] = match;
+  let result;
+  switch (op1) {
+    case '':
+      result = n2 ? parseInt(n1) + parseInt(n2) : parseInt(n1);
+      break;
+    case '':
+      result = n2 ? parseInt(n1) - parseInt(n2) : -parseInt(n1);
+      break;
+    case '':
+      result = n2 ? parseInt(n1) * parseInt(n2) : parseInt(n1);
+      break;
+    case '':
+      result = n2 ? parseInt(n1) / parseInt(n2) : 1 / parseInt(n1);
+      break;
+  }
+  session.send(`结果是: ${result}`);
+});

这个例子展示了如何在一个正则匹配中处理多个匹配情况。正则 /^(加|减|乘|除)\s*(\d+)\s*(加|减|乘|除)?\s*(\d+)?$/ 可以匹配像 「加10「、「减20「、「乘30」、「除40「、「加10除2「 这样的算术表达式。

在回调函数中,我们根据匹配的运算符和操作数进行相应的计算,并将结果作为消息发送出去。需要注意的是,这里我们使用了可选的捕获组,因此在处理单个操作数的情况时需要进行判断。

通过正则匹配的强大功能,我们可以灵活地处理各种复杂的消息,实现个性化的交互体验。而将正则匹配与其他功能(如指令系统、数据持久化等)相结合,就能构建出更加强大的应用程序。

+ + + + \ No newline at end of file diff --git a/guide/components/adapter.html b/guide/components/adapter.html new file mode 100644 index 00000000..8fb95a85 --- /dev/null +++ b/guide/components/adapter.html @@ -0,0 +1,28 @@ + + + + + + 实现适配器类 | Kotori + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/components/api.html b/guide/components/api.html new file mode 100644 index 00000000..dc65889c --- /dev/null +++ b/guide/components/api.html @@ -0,0 +1,28 @@ + + + + + + 实现接口类 | Kotori + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/components/custom.html b/guide/components/custom.html new file mode 100644 index 00000000..0be2d228 --- /dev/null +++ b/guide/components/custom.html @@ -0,0 +1,28 @@ + + + + + + 自定义服务 | Kotori + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/components/elements.html b/guide/components/elements.html new file mode 100644 index 00000000..8bebe8f6 --- /dev/null +++ b/guide/components/elements.html @@ -0,0 +1,28 @@ + + + + + + 实现元素类 | Kotori + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/extend/tools.html b/guide/extend/tools.html new file mode 100644 index 00000000..9fa2fbf1 --- /dev/null +++ b/guide/extend/tools.html @@ -0,0 +1,28 @@ + + + + + + 工具函数 | Kotori + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/index.html b/guide/index.html new file mode 100644 index 00000000..5d35bf1e --- /dev/null +++ b/guide/index.html @@ -0,0 +1,28 @@ + + + + + + 前言 | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

前言

IMPORTANT

阅读本章前请确保你已阅读完毕 入门教程


WARNING

虽然目前开发文档已涵盖大部分基础内容,但在 v1.6 版本中刚加入的不少新特性并未在文档中更新。

前置要求

  • 拥有一定的 JavaScript 与 Node.js 知识基础。

Kotori 运行于 Node.js 环境,因此开发 Kotori 模块前掌握 JavaScript 与 Node.js 基础内容是必然的。此处推荐几个文档:

基于 TypeScript 与现代化 ECMAScript 开发。

TypeScript 是 JavaScript 的超集,TypeScript 在继承了 JavaScript 全部特性的同时,为弱类型动态语言的 JavaScript 提供了一个独立且强大的类型系统。同时,使用 TypeScript 基本意味着使用 ESModule 与现代化的 JavaScript 语法与规范,这是 Kotori 三大特点之一。理论上在 Kotori 程序的生产环境中可正常运行由 JavaScript 直接编写的模块,但 Kotori 本身便使用 TypeScript 开发,因此更推荐你使用 TypeScript 用于你的模块开发,尽管这并不是必须的。

读后

  • 接口文档 用于全面了解与查阅 Kotori 提供的所有公开 API。
  • 深入了解 Kotori 的开发历程、版本记录、运行流程、设计构思、设计参考等。
+ + + + \ No newline at end of file diff --git a/guide/modules/context.html b/guide/modules/context.html new file mode 100644 index 00000000..a7efea12 --- /dev/null +++ b/guide/modules/context.html @@ -0,0 +1,227 @@ + + + + + + 上下文 | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

上下文

上下文(Context) 是整个 Kotori 的核心机制,不仅是 Kotori 模块围绕着上下文实例实现一系列功能,即便是在 Kotori 内部也依赖于上下文实现各组件之间的通信与解耦合,同时也为 Kotori 的扩展提供了可能。犹如一个树根,Kotori 本身在内的各种内容均为其枝干,并通过不同的组合丰富枝干上枝叶的内容,上下文机制充分体现了**依赖注入(Dependency Injection)面向切面编程(Aspect Oriented Programming)**的思想。

注册与获取

上下文实例中包含诸多属性和方法,但绝大部分功能并非来源于上下文本身,而是来源于 Kotori 内部的其它组件。通过 ctx.provide() 可将指定对象注册到当前上下文实例中,并通过 ctx.get() 获取。

typescript
declare class Server {}
+
+const ctx = new Context();
+ctx.provide('config', {
+  port: 3000,
+  host: 'localhost'
+});
+ctx.provide('server', new Server());
+
+const config = ctx.get('config'); // { port: 3000 }
+const server = ctx.get('server'); // Server {}

无论是对象字面量还是实例对象,都可以作为上下文实例的提供者。请注意,此处所有对象均是直接引用并未进行深拷贝。

注入与混合

使用 ctx.inject() 注入指定的已注册到当前上下文实例中的对象,注入后即可在上下文中通过注册名称直接获取到注入的实例,而无需再通过 ctx.get() 获取。

typescript
ctx.provide('config', {
+  port: 3000,
+  host: 'localhost'
+});
+ctx.config.port; // TypeError: Cannot read properties of undefined (reading 'port')
+ctx.inject('config');
+ctx.config.port; // 3000

除了注入外,当只期望目标对象的部分属性或方法被装饰到上下文实例中时,可使用 ctx.mixin()

typescript
ctx.provide('demo', {
+  name: 'hello, kotori!',
+  display() {
+    return this.name;
+  }
+});
+
+ctx.display(); // Uncaught TypeError: ctx.display is not a function
+ctx.mixin('demo', ['display']);
+ctx.display(); // hello, kotori!

相比注入,混合更加颗粒化同时减去不必要的属性访问。无论是注入还是混合,都并非直接对对象进行复制或建立新引用,其通过代理控制对象的每个属性或方法的操作,以便解决在混合后,原对象中 this 指向等问题。

对于上面的演示代码,还可以进一步做一些对开发者友好的工作,凭借 TypeScript 中声明合并的特性,为开发者提供良好的代码补全提示。

typescript
const ctx = new Context();
+
+const config = {
+  /* ... */
+};
+const demo = {
+  /* ... */
+};
+
+declare interface Context {
+  config: typeof config;
+  display: (typeof demo)['display'];
+}
+
+ctx.provide('demo', demo);
+ctx.inject('config');
+
+ctx.provide('demo', config);
+ctx.mixin('demo', ['display']);

继承

此外,通过代理得以实现父子级上下文的概念。如,Kotori 直接给与每个模块的执行主体的上下文实例均为独一无二,它是 Kotori 内部中根上下文实例的子级上下文实例,此外也有部分上下文实例是孙级上下文实例或更深。当访问上下文中的属性或方法时,若当前上下文实例中不存在,则会沿着继承链向上查找,直到根上下文为止,这点与 JavaScript 中原型链的查找方式类似,但原理不同。使用 ctx.extends() 继承当前上下文。

typescript
const ctx = new Context();
+const ctxChild1 = ctx.extends();
+const ctxChild2 = ctx.extends();
+
+ctx.provide('data1', { value: 1 });
+ctx.inject('data1');
+ctx.data1.value; // 1
+ctxChild1.data1.value; // 1
+
+ctxChild1.provide('data2', { value: 2 });
+ctxChild1.inject('data2');
+ctx.data2; // undefined
+ctxChild1.data2.value; // 2
+
+ctxChild2.provide('data3', { value: 3 });
+ctxChild2.inject('data3');
+ctx.data3; // undefined
+ctxChild1.data3; // undefined
+ctxChild2.data3.value; // 3

可见,上下文继承后具有相对隔离性,对于子级上下文来说,只能访问自己父级上下文中注册的对象(即便是在自己被继承后注册的),而不能访问非自己父级上下文和其它子级上下文中注册的对象。而父级上下文也只能往上获取,无法往下获取自己子级上下文单独注册的对象。

typescript
const ctx = new Context();
+const ctxChild1 = ctx.extends();
+const ctxChild2 = ctx.extends({meta: 'some meta data', 'child2'});
+
+ctx.meta; // undefined
+ctxChild1.meta; // undefined
+ctxChild2.meta; //'some meta data'
+
+ctx.identity; // undefined
+ctxChild1.identity; // 'sub'
+ctxChild2.identity; // 'child2'

在继承时,可传入两个可选参数用于标记新的子级上下文实例,第一个参数类型为对象,作用效果类似于将对象注册后并将对象上所有属性执行 ctx.mixin(),但原理并不同,可用作传入一些子级上下文必要的元数据信息。第二个参数类型为字符串,为该子级上下文实例设置唯一标识符。对于根上下文实例而言,其标识符为 undefined,对于未设置标识符的子级上下文实例,其标识符为 'sub'

typescript
const ctx = new Context();
+const ctxChild1 = ctx.extends();
+const ctxChild2 = ctx.extends();
+const ctxChild3 = ctxChild1.extends();
+
+ctx.root === ctx; // true
+ctxChild1.root === ctxChild1 || ctxChild1.root === ctxChild2; // false
+ctxChild1.root === ctx && ctxChild2.root === ctx; // true
+ctxChild3.root === ctxChild1; // false
+ctxChild3.root === ctx; // true

通过 ctx.root 属性可获取当前上下文的根上下文实例,无论是子级上下文 ctxChild1ctxChild2,还是继承了 ctxChild1 的孙级上下文 ctxChild3,其根上下文实例均指向 ctx,而根上下午实例的 ctx.root 指向自身。

事件系统

以上内容均由最初的 Context 类定义,通过类原生的继承方式和 ctx.inject()ctx.mixin() 等方法对 Context 进行装饰或扩展。而在 Context 类内部,它本身就已为自己注册并注入了两个实例对象,其一便是事件系统,这也是在第二章中介绍事件系统时说道「事件订阅者模式与事件系统共同构成了 Kotori 的基础」的原由,只不过 Context 类本身并未使用事件系统功能,且仅直接定义了 readydispose 事件,两者被作为整个程序生命周期的重要一环,其余事件由另一实例对象(见下文)或 Kotori 核心类定义。

插件系统

其二便是插件系统,它定义了 ready_moduledispose_module 事件。在上一节说过「在真正学习到上下文之前,可暂且默认插件等同于模块」,而现在你将会对「插件」有更深的认知。

通过 ctx.load() 加载插件并触发 ready_module 事件,且 ready_module 事件在插件加载完毕后触发。

typescript
/* types */
+type ModuleInstanceClass = new (ctx: Context, config: ModuleConfig) => void;
+type ModuleInstanceFunction = (ctx: Context, config: ModuleConfig) => void;
+
+interface ModuleExport {
+  name?: string;
+  main?: ModuleInstanceFunction;
+  Main?: ModuleInstanceClass;
+  default?: ModuleInstanceFunction | ModuleInstanceClass;
+  inject?: string[];
+  config?: ModuleConfig;
+}
+
+interface EventDataModule {
+  instance: ModuleExport | string | ModuleInstanceFunction | ModuleInstanceClass;
+}
+
+/* index.ts */
+function plugin1(ctx: Context) {
+  ctx.logger.debug('plugin1 loaded');
+}
+
+export function main(ctx: Context) {
+  // output: module(main plugin) loaded
+  ctx.on('read_module', (data: EventDataModule) => {
+    if (data.instance === main) ctx.logger.debug('module(main plugin) loaded');
+    else if (data.instance === plugin1) ctx.logger.debug('plugin1(sub plugin) loaded');
+  });
+  ctx.load(plugin1); // output: plugin1(sub plugin) loaded
+}

ctx.load() 支持四种参数形式,最常用的是直接传入执行主体函数(ModuleInstanceFunction),此外也可以通过传入执行主体类(ModuleInstanceClass),亦或你想为子插件传入配置或注册依赖等也可使用导出对象形式(ModuleExport):

typescript
interface SubConfig {
+  port: number;
+}
+
+export function main(ctx: Context) {
+  ctx.load(
+    class {
+      public constructor(private subCtx: Context) {}
+    }
+  );
+  ctx.load({
+    config: { port: 3000 },
+    main: (subCtx: Context, cfg: SubConfig) => {}
+  });
+}

导出对象形式与模块入口文件的导出是一致的。在 Kotori 内部,由加载器自动加载所有的模块入口文件进行预处理,然后转接给此处的 ctx.load() 进行调用执行主体。不同的是,此处可以定义 name 属性用于标记插件的名称,这将作用于该插件的上下文实例的 ctx.identity 中,而模块中的 ctx.identity 由加载器通过 package.json 中的包名自动获取。即便是子插件,它的上下文实例与配置数据也是完全独立,区别在于模块(由加载器加载)的上下文实例继承自 Kotori 内部中的根上下文实例,而子插件的上下文实例继承于当前模块的上下文实例,以此类推。入口文件中导出的 config 是一个配置检测者,加载器会调用它来验证 kotori.toml 中相应的实际配置数据是否符合要求,符合则将替换 config 为实际数据再传入 ctx.load() 作后续处理,在模块中执行 ctx.load(),其配置数据拥有确定性(指由开发者保证,与 Kotori 无关),因此要求此处直接传入配置数据。

toml
[plugin.my-project]
+value = 'here is a string'
typescript
export const config = Tsu.Object({
+  value: Tsu.String()
+});
+
+export function main(ctx: Context, cfg: Tsu.infer<typeof config>) {
+  ctx.logger.debug(ctx.identity, cfg.value); // my-project here is a string
+  const subCfg = {
+    value: 233
+  }
+  ctx.load({
+    name: 'plugin1',
+    main: (subCtx: Context, cfg: typeof 233) => {
+      subCtx.logger.debug(subCtx.identity, cfg.value); // plugin1 233
+    }
+  });
+}

子插件与当前模块的上下文实例完全独立,具有隔离性,由此可通过这一点做一些需要隔离的操作:

typescript
export const inject = [];
+
+export function main(ctx: Context) {
+  ctx.load({
+    name: 'plugin1',
+    inject: ['database']
+    main: (subCtx: Context) => {
+      /* ctx.database... */
+    }
+  });
+  ctx.logger.debug(ctx.database) // undefined
+}

上述代码加载了一个依赖 database 服务的子插件,便可在其内部进行调用数据库操作,而在外层的模块中,并未依赖因此无法使用 ctx.database 属性。

当然你也可以指定多个函数主体,这将会验证上一节所讲的执行主体的识别顺序,因此这只会执行其中一个:

typescript
export function main(ctx: Context) {
+  ctx.load({
+    name: 'plugin1',
+    main: (subCtx: Context) => {
+     subCtx.logger.debug('will not be loaded');
+    },
+    Main: class {
+     constructor(subCtx: Context) {
+      subCtx.logger.debug('will not be loaded');
+  }
+    },
+    default: (subCtx: Context) => {
+     subCtx.logger.deug('will be loaded');
+    }    
+  });
+}

此外,也可以外层调用 CommonJS 规范的 require() 或 ESModule 规范的 import() 方法,两个方法将会返回动态导入文件的导出对象,区别在于前者是同步执行后者为异步执行,这将间接实现动态导入并加载外部 TypeScript/JavaScript 文件的插件。

typescript
/** File structures
+ * src
+ * * index.ts
+ * * plugin.ts
+*/
+
+export async function main(ctx: Context) {
+ // Wrong way of writing
+ ctx.load(require('./plugin.js'));
+ // or:
+ ctx.load(await import('./plugin.ts'));
+ 
+ // Correct but not perfect writing
+ const file = `./plugin.${ctx.options.mode === 'dev' ? '.ts' : '.js'}`;
+ ctx.load(require(file));
+ // or:
+ ctx.load(await import(file)); 
+}

[!WARN] 请慎重并正确使用该操作,绝对不可直接导入 .ts.js 后缀的路径

因 Kotori 运行模式不同,直接导入带后缀的路径并不可取。在开发模式中,Kotori v1.5.0 及以上版本通过 tsx 运行,同时支持 TS/JS 文件,在 v1.5.0 以下版本通过 ts-node 运行,仅支持 TS 文件;在生产模式中,通过 Node.js 运行,仅支持 JS 文件。因此,为使你的模块更加坚固,考虑并适配不同情况是必要的。在上述代码中,通过上下文实例获取到当前运行模式以返回不同的文件扩展名动态导入,但这并不完全可靠和优雅。

typescript
/** File structures
+ * src
+ * * index.ts
+ * * plugin
+ * * * index.ts
+*/
+
+import type { Context } from 'kotori-bot';
+import { resolve } from 'node:path';
+
+export function main(ctx: Context) {
+ ctx.load(require(resolve('./plugin')));
+ // Async version which better handled
+ import(resolve('./plugin'))
+   .then((plugin) => ctx.load(plugin))
+   .catch((err) => ctx.logger.error('Error in dynamic import plugin!', err));
+ 
+}

在这一版中,通过改变文件目录结构并利用入口文件特性,以直接减少代码中多余的判断逻辑,并且通过 node:path 模块将输入路径处理成绝对路径。此外,在使用 import() 时进行异步处理与错误捕获,而非使用 await 关键字进行同步操作。对于两种方式,优缺点请自行甄别与选择使用,但值得一提的是,Kotori 加载器(@kotori-bbot/loader)在实现自动加载目录下所有有效 npm 模块时,为杜绝异步操作的传染性,因而选择 require() 实现。

+ + + + \ No newline at end of file diff --git a/guide/modules/decorator.html b/guide/modules/decorator.html new file mode 100644 index 00000000..4ab7f5cf --- /dev/null +++ b/guide/modules/decorator.html @@ -0,0 +1,28 @@ + + + + + + 装饰器 | Kotori + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/modules/filter.html b/guide/modules/filter.html new file mode 100644 index 00000000..d2dd924c --- /dev/null +++ b/guide/modules/filter.html @@ -0,0 +1,28 @@ + + + + + + 滤器 | Kotori + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/modules/i18n.html b/guide/modules/i18n.html new file mode 100644 index 00000000..8009e58c --- /dev/null +++ b/guide/modules/i18n.html @@ -0,0 +1,28 @@ + + + + + + 国际化 | Kotori + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/modules/plugin.html b/guide/modules/plugin.html new file mode 100644 index 00000000..3a4847d0 --- /dev/null +++ b/guide/modules/plugin.html @@ -0,0 +1,203 @@ + + + + + + 模块与插件 | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

模块与插件

前言

恭喜你,只要学习完本章你将成为一名合格的「Kotori Developer」!在本章将围绕 Kotori 中最重要的概念「上下文」为你讲解一系列模块化内容。

package.json 规范

插件(Plugin) 是 Kotori 中的最小运行实例,它是模块的真子集,在真正学习到上下文之前,可暂且默认插件等同于模块。在第一章里你已通过 Cli 初步创建了一个 Kotori 模块工程,但那并不是最小的有效模块,现在,让一切重零开始。

这是一个最小且有效的 package.json 例子:

json
{
+  "name": "kotori-plugin-my-project",
+  "version": "1.0.0",
+  "description": "This is my first Kotori plugin",
+  "main": "lib/index.js",
+  "keywords": ["kotori", "chatbot", "kotori-plugin"],
+  "license": "GPL-3.0",
+  "files": ["lib", "locales", "LICENSE", "README.md"],
+  "author": "Himeno",
+  "peerDependencies": {
+    "kotori-bot": "^1.3.0"
+  }
+}

TIP

请不要模仿,package.json 应附有更详尽的包信息。

一个对于 Kotori 而言合法的 package.json 的类型信息大概是这样子:

typescript
interface ModulePackage {
+  name: string;
+  version: string;
+  description: string;
+  main: string;
+  license: 'GPL-3.0';
+  keywords: string[];
+  author: string | string[];
+  peerDependencies: Record<string, string>;
+  kotori?: {
+    enforce?: 'pre' | 'post';
+    meta?: {
+      language?: 'en_US' | 'ja_JP' | 'zh_TW' | 'zh_CN';
+    };
+  };
+}

但仅以 TypeScript 形式展现并不够全面,因为除此之外 Kotori 对合法的 package.json 有以下特殊要求:

  • name 必须满足 /kotori-plugin-[a-z]([a-z,0-9]{2,13})\b/,即以「kotori-plugin-」加一个小写字母开头,后接 2 ~ 13 个 小写字母与数字的组合
  • license 必须为 'GPL-3.0',因为 Kotori 本身即使用的 GPL-3.0 协议
  • keywords 中必须含有 'kotori''chatbot''kotori-plugin' 三个值,主要是为了 npm 包统计考虑
  • peerDependencies 中必须含有名为 'kotori-bot' 的键,具体作用请参考 Peer Dependencies

对于包名,除去普通模块以外,往往会有一些非强制性规范的特殊值:

  • kotori-plugin-adapter-xxx 表示适配器服务
  • kotori-plugin-database 表示数据库

元数据信息

在上面例子中,可能你已注意到除了常规的属性以外,还有一个为 kotori 的属性,其会被 Kotori 读取用作模块的额外信息,目前其中仅有 meta 一个属性,meta 之下有两个属性:

  • enforce 模块加载顺序,对于某些前置性模块和自定义服务模块可能有用,Kotori 模块加载顺序:数据库服务 > 适配器服务 > 核心模块(模块列表请查看 Kotori 源码)> 'pre' > undefined > 'post'
  • language 模块加载列表,若为 undefined[] 则表示支持所有语言或无文字内容

入口文件

一般地,使用 src/index.ts 作为默认入口文件,最终将由 tsc 或其它的打包工具编译成 lib/index.js。以下是一个最基础的入口文件示例:

typescript
import { Context } from 'kotori-bot';
+
+export function main(ctx: Context) {}

入口文件一般导出一个名为 main() 的函数,接收一个 Context 实例作为参数,诸如之前介绍的事件系统、指令、中间件、正则匹配等功能均是在其上进行的操作。除此之外,入口文件还可以导出一些其他的变量,供其他模块调用。

注册国际化文件目录

typescript
import { join } from 'path';
+import { Context } from 'kotori-bot';
+
+export function main(ctx: Context) {
+  ctx.i18n.use(join(__dirname, '../locales'));
+}

国际化文件目录(一般为 ../locales 文件夹)下有多份多个语言文件(一般为 json 文件)

此处在 main() 被调用后通过执行 ctx.i18n.use() 方法注册了当前模块的国际化文件目录,出于目录路径位置原因,此处还用到了 Node.js 内置的 path 模块的方法,但如果每个模块都需要这样做就很繁琐,Kotori 为此提供了语法糖:

typescript
import { Context } from 'kotori-bot';
+
+export const lang = [__dirname, '../locales'];
+// equal to: export const lang = path.join(__dirname, '../locales');
+
+export function main(ctx: Context) {}

在入口文件中导出一个 lang 变量,使得 Kotori 在加载模块执行 main() 之前自动通过该变量注册国际化文件目录,lang 的值可以是字符串或数组,若为字符串则表示目录路径,若为数组则自动调用 path.join() 处理成路径字符串。

自定义模块配置

typescript
import { Tsu } from 'kotori-bot';
+
+/* ... */
+
+export const config = Tsu.Object({
+  key1: Tsu.String(),
+  key2: Tsu.Number().range(0, 10),
+  key3: Tsu.Boolean()
+});

通过 config 变量定义模块的配置项,它是一个 Tsu.Object() 实例,并通过 Tsu.infer<> 类型推导获取配置项的类型。在模块中编写了配置项后便可直接在 Kotori 根目录的 kotori.yml 文件中进行模块配置:

toml
# ...
+
+plugin:
+  my-project:
+    key1: value1
+    key2: 0
+    key3: true

通过 main() 函数的第二个参数 config 获取模块的实际配置信息:

typescript
/* ... */
+
+export function main(ctx: Context, cfg: Tsu.infer<typeof config>) {
+  ctx.logger.debug(cfg.key1, cfg);
+  // 'value1' { key1: 'value1', key2: 0, key3: true }
+}

设置依赖服务

typescript
/* ... */
+
+export const inject = ['database'];
+
+export function main(ctx: Context) {
+  ctx.on('ready', async () => {
+    if (await ctx.db.schema.hasTable('test')) return;
+    await ctx.db.schema.createTable('test', (table) => {
+      table.increments();
+      table.string('name');
+      table.timestamps();
+    });
+  });
+}

通过 inject 变量定义模块的依赖服务,它是一个字符串数组,数组中的每个值都必须是已注册的服务名称,服务包括 Kotori 内置服务与第三方模块提供的服务。尽管服务实例只要一经定义就会因声明合并的缘故显示在 Context 实例上,但请注意,所有服务均不会自动挂载到 Context 实例上,无论是内置服务和还是第三方服务均需要使用 inject 进行声明后才可在 Context 上直接访问、使用。此处依赖了 database 数据库服务,并通过监听 ready 事件(当加载完所有模块时)进行数据库初始化操作。

模块风格与范式

Kotori 中大体上提供了三种额风格的模块范式:

  • 导出式
    • 导出函数式
    • 导出类式
  • 直接调用式
  • 装饰器式

导出式

整合一下上面写的所有代码:

typescript
import { Context, Tsu } from 'kotori-bot';
+
+export const lang = [__dirname, '../locales'];
+
+export const config = Tsu.Object({
+  /* ... */
+});
+
+export const inject = ['database'];
+
+export function main(ctx: Context, cfg: Tsu.infer<typeof config>) {
+  /* ... */
+}

你会发现,无论是当前还是以往的所有演示代码都使用的导出式风格,或许称不上是 Kotori 官方推荐的模块风格,但它一定是在 Web 生态中最经典的一种风格,无论是 Vue、React 等前端响应式框架还是 Webpack、Rollup、eslint、Vite 这种工具链的插件系统都清一色的使用类似的导出式风格。就新人而言,是很推荐使用这种方式的,因为它很容易上手。

导出类式

导出式可细分成导出函数式和导出类式(这里的「导出」特指模块的执行主体),导出函数式相信你已见过太多演示就不再赘述。这里是一个与上面完全一致的导出类式示例:

typescript
import { Context, Tsu } from 'kotori-bot';
+
+/*
+export const lang = [__dirname, '../locales'];
+
+export const config = Tsu.Object({ /* ... */ });
+
+export const inject = ['database'];
+*/
+
+export class Main {
+  public static lang = [__dirname, '../locales'];
+
+  public static config = Tsu.Object({ /* ... */ });
+
+  public static inject = ['database'];
+
+  public constructor(
+    private ctx: Context,
+    private cfg: Tsu.infer<typeof config>
+  ) {
+    /* ... */
+  }
+}

在导出类式中,可同时在外部导出诸如 configlanginject 属性,也可在类中设置相应的静态属性,一般地,请使用后者。如若两者同时存在,类中的属性将会覆盖外部导出的属性。

诚然,Kotori 目前对导出类式的支持并不全面,它看起来仅仅是将原本的导出函数替换成导出类后调用其构造函数,并未充分发挥类的特性,但如果你很喜欢面向对象编程,这或许还是很适合你的。不过有一点注意,为与函数区分,导出函数式的函数名使用 main 而导出类式的类名使用 Main,如若两者互换将不会被 Kotori 识别为有效的模块。

默认导出

无论是导出函数还是导出类,均将其称之为「模块的执行主体」,当入口文件中需要导出的只有执行主体本身时,你大可使用默认导出,此时函数名或类名都无关紧要,如:

typescript
import { Context } from 'kotori-bot';
+
+export default function main(ctx: Context) {}

又或者是默认导出一个类:

typescript
import { Context } from 'kotori-bot';
+
+export default class {
+  public constructor(private ctx: Context) {}
+}

对于执行主体的各种导出形式,以下是 Kotori 的识别顺序(一经识别成功将不再继续识别后续内容):

  1. 适配器类实现
  2. 默认导出类
  3. 默认导出函数
  4. main() 导出函数
  5. Main 导出类

直接调用式

typescript
import Kotori from 'kotori-bot';
+import { join } from 'path';
+
+Kotori.i18n.use(join(__dirname, '../locales'));
+
+Kotori.on('ready', () => {
+  const db = Kotori.get('database');
+  if (await db.schema.hasTable('test')) return;
+  /* ... */
+});
+
+Kotori.midware((next, session) => {
+  /* ... */
+}, 10);
+
+Kotori.command(/* ... */);
+
+Kotori.regexp(/* ... */);

通过直接访问 kotori-bot 模块默认导出的 Kotori 对象进行各种操作,包括注册国际化文件目录、服务、中间件、指令、正则匹配等,对于服务实例则通过 ctx.get() 手动获取(或者通过 ctx.inject() 手动挂载,具体内容参考下一节)。Kotori 对象本身即为一个 Context 实例,但它并不是本体而是一个双重 Proxy。这种方式的优点是简单和灵活,但缺点是不够模块化,且有副作用,对于开发 Kotori 模块强烈不推荐使用该方式,因为它违背了 Kotori 的原则。如果你基于 Kotori 为依赖库开发一个新的库,则推荐使用该方式。

将 Kotori 作为依赖开发请参考 深入了解

装饰器式

typescript
import { Tsu, CommandAction, Context, MessageScope, plugins, SessionData } from 'kotori-bot';
+
+const plugin = plugins([__dirname, '../']);
+
+@plugin.import
+export default class Plugin {
+  private ctx: Context;
+
+  private config: Tsu.infer<typeof Plugin.schema>;
+
+  @plugin.lang
+  public static lang = [__dirname, '../locales'];
+
+  @plugin.schema
+  public static schema = Tsu.Object({ /* ... */ });
+
+  @plugin.inject
+  public static inject = ['database'];
+
+  public constructor(ctx: Context, config: Tsu.infer<typeof Plugin.schema>) {
+    this.ctx = ctx;
+    this.config = config;
+  }
+
+  @plugin.on({ type: 'on_group_decrease' })
+  public groupDecrease(session: SessionData) {
+     // ...
+  }
+
+  @plugin.midware({ priority: 10 })
+  public midware(next: () => void, session: SessionData) {
+    // ...
+  }
+
+  @plugin.command({
+    template: 'echo <content> [num:number=3]',
+    scope: MessageScope.GROUP
+  })
+  public echo(data: Parameters<CommandAction>[0], session: SessionData) {
+    // ...
+  }
+
+  @plugin.regexp({ match: /^(.*)#print$/ })
+  public static print(match: RegExpExecArray) {
+    return match[1];
+  }
+}

以上是一个简单的装饰器式示例,与导出式相比,它的风格截然不同,语法上它足够的优雅。模块自己主动创造全局唯一的实例对象 plugin,在其基础上使用装饰器注册的各种内容,天生即具有良好的扩展性和模块化性。装饰器特性更常见于后端或服务端语言中,在 Web 中使用较多的为 Angular、Nest.js 等深受后端架构思想(主要指 Spring)熏陶的框架。为数不多的缺点是它需要手动声明类型且对新手而言不容易上手,但如若你有足够的基础则强烈推荐使用。

当然,这并不算在此展开详细介绍,它还需要你了解一点其它内容作为基础,因而它被放在本章最后一节进行具体讲述。

+ + + + \ No newline at end of file diff --git a/guide/modules/rescript.html b/guide/modules/rescript.html new file mode 100644 index 00000000..1ff90318 --- /dev/null +++ b/guide/modules/rescript.html @@ -0,0 +1,35 @@ + + + + + + 使用 ReScript 开发 | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

使用 ReScript 开发

ReScript 是一门健壮的类型化语言,可以编译成高效易读的 JavaScript。相比于 TypeScript,ReScript 是 JavaScript 的子集,有着远比 TypeScript 更为严格和安全的类型系统。也是 OCaml 的方言之一,结合了大量函数式编程与现代化编程特性,同时保留了 C 系语言的花括号语法风格,这使你不会像面对其它函数式编程一样对其陌生语法感到茫然,变得极易上手和入门。如果你是一名 Rust 开发者将会对 ReScript 很多地方感到亲切(就像是没有所有权和生命周期的 Rust)。

NOTE

详细信息与入门指南请参考 The ReScript Programming Language

基本使用

Kotori 从 v1.7 开始支持用 ReScript 编写插件,尽管这并非强制性,但如若你对函数式编程感兴趣或者对安全性有要求,那么使用 ReScript 编写 Kotori 插件将是不二之举。

res
let main = (ctx: Kotori.context) => {
+   open Kotori.Utils;
+
+   "echo <message> - print string"->ctx.cmd.new->ctx.cmd.action(async ({args: [msg]}, session) => {
+	   msg->session.quick
+	   ""
+   })->ignore
+}
+ + + + \ No newline at end of file diff --git a/guide/modules/schema.html b/guide/modules/schema.html new file mode 100644 index 00000000..f3d6acf0 --- /dev/null +++ b/guide/modules/schema.html @@ -0,0 +1,76 @@ + + + + + + 配置检测 | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

配置检测

配置检测(Schema) 是 Kotori 中的一个重要概念和功能,其相关的所有实现均来源于 Tsukiko 库。Kotori 对 Tsukiko 进行了重新导出,因此可直接在 Kotori 中使用。

Tsukiko 简介

Tsukiko 是一个基于 TypeScript 开发的运行时下动态类型检查库,最初作为 kotori 开发中的副产物诞生,其作用与应用场景类似于 io-ts 之类的库,常用于 JSON/YAML/TOML 文件数据格式检验、第三方 HTTP API 数据格式检验、数据库返回数据格式检验(尽管此处推荐直接用更为成熟的 ORM 框架)等。

视频介绍与演示:哔哩哔哩

项目名字取自于轻小说《変態王子と笑わない猫。》中的女主角——筒隠月子(Tsukakushi Tsukiko)

基本使用

类型检验

Tsukiko 中带有多种类型解析器,通过不同的解析器可以实现对未知值的类型校验与处理:

typescript
import { Tsu } from 'kotori-bot'
+
+const strSchema = Tsu.String()
+strSchema.check(233) // false
+strSchema.check('Hello,Tsukiko!') // true

schema.check() 接收一个参数,返回值表示该参数类型是否匹配。此外,与之类似的还有以下多种校验方法:

typescript
/* ... */
+
+const value = strSchema.parse(raw)
+// if passed the value must be a string
+// if not passrd: throw TsuError

schema.parse() 会处理传入值并判断是否符合要求,如若不符合将抛出错误(TsuError)并附带详细原因。不过有时并不想直接抛出错误则可以使用 schema.parseSafe()

typescript
/* ... */
+
+const result = strSchema.parseSafe(raw)
+if (result.value) {
+   console.log('Passed:', result.data)
+
+} else {
+   console.log("Error:", result.error.message)
+}

该方法会返回一个对象,当 valuetrue 时,对象上存在 data 属性,其值即为处理后的结果,当 valuefalse 时,对象上存在 error 属性,其值即为错误信息。此外,还有一个异步版本 schema.parseAsync

typescript
/* ... */
+
+strSchema.parseAsync(raw)
+   .then((data) => console.log('Passed', data))
+   .catch((error) => console.log('Fatal', error))

上面有提到,schema.parse() 及相关的解析方法,在传入值符合要求时返回的数据会经过一定的处理,其主要体现为默认值处理:

typescript
const schema = Tsu.Object({
+   name: Tsu.String().default('Romi'),
+   age: Tsu.Stting().default(16)
+}).default({
+   name: 'Romi',
+   age: 16
+})
+
+schema.parse({ name: 'Yuki', age: 17 }) // Passed { name: 'Yuki', age: 17 }
+schema.parse({ name: 'Kisaki' }) // Passed { name: 'Kisaki', age: 16 }
+schema.parse({}) // Passed { name: 'Romi', age: 16 }
+schema.parse([]) // Error

在不同的解析器下也有一定的体现,如:

typescript
const strSchema = Tsu.String()
+
+strSchema(233) // Passed '233'
+strSchema(true) // Error

Tsu.String() 解析器默认允许数字传入(出于兼容性考虑),并会将其处理成字符串返回。

类型修饰

最典型的修饰方法为 schema.default()schema.optional(),前者用于设置默认值,后者用于设置可选类型:

typescript
const numSchema = Tsu.Number().default(2333)
+
+numSchema.parse() // 2333
+
+const strSchema = Tsu.String().optional()
+
+strSchema.parse(undefined) // Passed
+strSchema.parse(null) // Passed

同样是出于兼容性考虑,解析器默认会允许 null,如若想只允许 undefined 作为空值,则可以使用 schema.empty()

typescript

+const strSchema = Tsu.String().optional().empty()
+
+strSchema.parse(undefined) // Passed
+strSchema.parse(null) // Error

除去以上所有解析器共有方法以外,每个解析器也有自己专门的修饰方法,详情可查看下文。可以看到,在 schema.optional() 之后可以继续调用方法,因为包括以上在内的绝大部分修饰方法都会返回当前实例,链式调用便是 Tsukiko 最大特点。不过,同一个修饰方法应当在同一个解析器中仅调用一次,因为不同的修饰方法其执行行为有所不同:

  • 开关解析器上的某一内部属性(如 Tsu.String()Tsu.Object() 上均存在的 .strict()),这使得可以在调用方法时传入一个 Boolean 值 ,一般地,这些方法的参数会有默认值
  • 单向设置解析器上的某一内部属性(如上文的 schema.optional()schema.empty()schema.default()),大部分不需要传参,但也有些需要传参
  • 多个同级方法间合并解析器上的多个内部属性(如很多解析器上都存在的 .min().max()range()

类型导出

JSON Schema 是用于验证 JSON 数据结构的强大工具。在必要时可通过 schema.schema() 将任意解析器导出成 JSON Schema。不过在此之前,Tsukiko 提供了额外两个关于 JSON Schema 的新方法:

typescript
const config = Tsu.Object({
+   port: Tsu.Number().port().describe('Server port')
+   address: Tsu.String().describe('Server display address')
+}).title('Plugin configuration')

schema.

解析器

基础类型

引用类型

标准类型

高级类型

在 Kotori 中的引用

配置文件

数据检验

+ + + + \ No newline at end of file diff --git a/guide/modules/service.html b/guide/modules/service.html new file mode 100644 index 00000000..4fbe460f --- /dev/null +++ b/guide/modules/service.html @@ -0,0 +1,28 @@ + + + + + + 依赖与服务 | Kotori + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/start/environment.html b/guide/start/environment.html new file mode 100644 index 00000000..0f0b59f3 --- /dev/null +++ b/guide/start/environment.html @@ -0,0 +1,28 @@ + + + + + + 环境搭建 | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

环境搭建

Node.js & pnpm

使用指南 中你已安装并部署了 Node.js 环境与 pnpm,此处不再赘述。

Git & GitHub

Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。版本控制可方便的实现协作开发、版本回退等,其重要性对每一位开发者都是不言而喻。GitHub 是一个面向开源及私有软件项目的托管平台,拥有着全球最大的开源社区,使用 Git 可轻松将你的项目推送至 GitHub 远程仓库,你与你的项目也将成为开源社区的一份子。Git 与 GitHub 具体使用流程此处不逐一赘述。

IDE & Editor

显然 Kotori 并不属于 Web 前端的范畴,但依旧隶属于 JavaScript 生态,因此推荐 世界上最好的 Web 开发 IDE 「Visual Studio Code」(以下简称「VSC」)。虽然 VSC 本质上只是文本编辑器,但因其强大的扩展商店使其能做到大部分 IDE 的功能,当然你也可以根据你的喜好选择,如:

  • WebStorm
+ + + + \ No newline at end of file diff --git a/guide/start/publish.html b/guide/start/publish.html new file mode 100644 index 00000000..d5c8f0e3 --- /dev/null +++ b/guide/start/publish.html @@ -0,0 +1,67 @@ + + + + + + 模块发布 | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

模块发布

当开发完毕模块后,可以将它发布至社区,一个 Kotori 模块一般会同时发布到如下三个平台:

优先级(重要程度):npm > 模块中心 > 开源社区。每一个公开的 Kotori 模块都应发布至 npm 并作为模块的主要获取途径。Kotori 使用 GPL-3.0 协议,该协议要求 Kotori 的所有模块及其二次开发项目也必须使用 GPL-3.0 协议且开源,因此发布到开源社区是必要的,开源行为本身也是一种无私奉献、共享知识和回馈社区的体现。

构建产物

「构建产物」在 JavaScript 生态中指将源码(Kotori 模块开发中一般为 TypeScript 文件)进行处理以适用于生产环境中(处理过程一般有 TypeScript 转为 JavaScript、向下兼容语法、压缩代码等)。JavaScript 生态中构建工具非常多,你可以选择喜欢的构建工具并自习配置,当然如果你对此并不了解也可以使用 Kotori 默认的构建方式(通过TypeScript 自带的 tsc 程序),在你的模块根目录中输入以下指令:

bash
pnpm build

一般地,你将会发现在模块根目录出现了一个 lib 文件夹,这在上一节已有提到,它是构建产物的输出目录,有必要的话可在 tsconfig.json 文件中更改:

json
{
+  // ...
+  "compilerOptions": {
+    "rootDir": "./src", // 输入目录
+    "outDir": "./lib" // 输出目录
+    // ...
+  }
+}

关于 tsconfig.json 的更多内容:TypeScript Documentation

文件忽略

对于模块发布主要分为发布构建产物(publish)与推送源码(push),两种情况下需要发布的文件内容会有些许不同,因此便引入了「文件忽略」。

.npmignore

用于指定在发布构建产物时忽略的文件与文件夹,在模块根目录创建一个 .npmignore 文件:

int
node_modules
+src
+test
+
+tsconfig.json
+!README.md

实际上在发布构建产物时只需要附带少数文件即可,而 .npmignore 采用的是黑名单机制显得很繁琐,因此 Kotori 模块的默认模板中并未使用该方式,也并不推荐。

package.files

在上一节的 package.json 示例中会发现有一个以字符串数组为值的 files 配置项,其用于指定在使用 publish 时需要附带的文件与文件夹。

typescript
{
+  "files": ["lib", "LICENSE", "README.md"],
+}

files 配置项优先级高于 .npmignore,其直接写在 package.json 中显得十分简洁也会减少整个模块目录的文件冗余。

.gitignore

不同于前两者,.gitignore 用于指定在使用 Git 进行版本控制时需要忽略的文件,语法与 .npmignore 类似,同样位于模块根目录:

ini
node_modules
+dist
+lib
+.husky/_
+
+.vscode/*
+.vs/*
+!.vscode/extensions.json
+
+*.tgz
+tsconfig.tsbuildinfo
+*.log
+
+kotori.dev.yml

发布构建产物

使用工作区开发时,需确保当前为待发布模块根目录,而非工作区根目录。首先检查 npm 源是否为 http://registry.npmjs.org

bash
npm config get registry
+# If not:
+# npm config set registry=http://registry.npmjs.org

前往 npmjs.org 注册账号,然后根据提示在浏览器内登录:

bash
npm login

当一切就绪时:

bash
npm publish

当没有任何意外问题时,访问 npm 个人页即可查看刚才发布的插件: kotori-plugin-my-project

发布源码

使用 Git 前务必先配置好你的账号、邮箱和与 GitHub 通信的 ssh,可参考 手把手教你配置 git 和 git 仓库。使用工作区开发时,可选择发布整个工作区也可仅发布单个模块,切换到相应目录即可。首先在 GitHub New 页面创建一个远程仓库,接着在本地仓库中关联到该远程仓库:

bash
git remote add origin git@github.com:kotorijs/kotori-plugin-my-project

提交并推送至远程仓库

bash
git add .
+git commit -m 'feat: create a project'
+git push origin master

当然,你也可以为本次提交添加一个 tag:

bash
git tag v1.0.0
+git push --tags

收录至模块市场

前往 Kotori Docs 仓库将其 fork 到你的账号名下,修改 fork 的仓库中的 src/public/data.json 文件,在该文件中追加你的模块的包名与描述:

json
{
+  // ...
+  {
+    "name": "kotori-plugin-my-project",
+    "description": "这是一个"
+  }
+  // ...
+}
  • name 务必与发布到 npm 的包名一致
  • 请按照包名的字母依次排序,如若有命名空间(@xxxx/)请提到最前,并根据包命名空间、包名的字母依次排序
  • description 不应过长,但需大致概括模块内容
  • 请注意 JSON 格式规范

完成文件更改后向源仓库发起 pull request 等待审定。所有新的 pull request 一般会在十二小时内审定完毕,当上述注意事项均无误时将会被合并到源仓库,届时你可在 Kotori 模块中心 查看你的模块。

放在最后

+ + + + \ No newline at end of file diff --git a/guide/start/setup.html b/guide/start/setup.html new file mode 100644 index 00000000..eee707bb --- /dev/null +++ b/guide/start/setup.html @@ -0,0 +1,171 @@ + + + + + + 项目构建 | Kotori + + + + + + + + + + + + + + + + + +
Skip to content

项目构建

在本阶段中开发模块一并通过搭建工作区开发,此外还可通过克隆 Kotori 源码或单独创建包进行开发,对于前者请参考 深入了解,对于后者则无需赘述。

基于 create-kotori 快速搭建工作区

create-kotori」是专用于构建 Kotori 模块的 Cli 工具。

  • 命令语法:create-kotori <project-name>
bash
pnpm create kotori@latest

除此之外,也可以将其安装在全局使用:

bash
npm install create-kotori -g
+create-kotori my-project

项目结构

text
my-project
+├── package.json
+├── tsconfig.json
+├── tsconfig.node.json
+├── pnpm-workspace.json
+├── kotori.yml
+├── LICENSE
+├── README.md
+├── .gitignore
+└──  scripts
+    └──  dev.ts
+└──  project
+    └──  my-project
+      ├── package.json
+      ├── LICENSE
+      ├── README.md
+      ├── tsconfig.json
+      ├── lib
+      │   ├── ...
+      ├── locales
+      │   ├── en_US.json
+      │   ├── ja_JP.json
+      │   ├── zh_CN.json
+      │   └── zh_TW.json
+      └── src
+          └── index.ts
  • kotori.yml Kotori 配置文件
  • kotori.dev.yml Kotori Dev 模式下配置文件
  • package.json 包信息文件
  • tsconfig.json TypeScript 配置文件
  • LICENSE 协议文件
  • README.md 自述文件
  • .gitignore git 忽略文件
  • lib 构建产物输出目录(前端为 dist,后端为 lib
  • locales 国际化文件夹,将在后面的章节中讲解
  • src 工程文件夹,代码存放处
    • index.ts 整个模块的入口文件

package.json

以下为默认创建的 package.json

json
{
+  "name": "kotori-plugin-my-project",
+  "version": "1.0.0",
+  "description": "This is my first Kotori plugin",
+  "main": "lib/index.js",
+  "scripts": {
+    "build": "tsc"
+  },
+  "keywords": [
+    "kotori",
+    "chatbot",
+    "kotori-plugin"
+  ],
+  "license": "GPL-3.0",
+  "files": [
+    "lib",
+    "locales",
+    "LICENSE",
+    "README.md"
+  ],
+  "author": "Himeno",
+  "peerDependencies": {
+    "kotori-bot": "^1.3.0"
+  }
+}

添加一些非必要配置项以完善包信息:

json
{
+  "author": "Himeno <biyuehuya@gmail.com>",
+  "bugs": {
+    "url": "https://github.com/kotorijs/my-project/issues"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kotorijs/my-project.git"
+  },
+  "homepage": "https://github.com/kotorijs/my-project/"
+}

添加用于传给 Kotori 的元数据:

json
{
+  "kotori": {
+    "meta": {
+      "languages": [
+        "en_US",
+        "ja_JP",
+        "zh_TW",
+        "zh_CN"
+      ]
+    }
+  }
+}

一个合法的 Kotori 模块其 package.json 需要满足一系列来自 Kotori 的约定,Kotori 程序只有在其合法时才会加载该模块。不过当前你无需关心这个问题,元数据与 package.json 约定将放在第三章中讲解。以下是该 package.json 的完整效果:

json
{
+  "name": "kotori-plugin-my-project",
+  "version": "1.0.0",
+  "description": "This is my first Kotori plugin",
+  "main": "lib/index.js",
+  "scripts": {
+    "build": "tsc"
+  },
+  "keywords": [
+    "kotori",
+    "chatbot",
+    "kotori-plugin"
+  ],
+  "license": "GPL-3.0",
+  "files": [
+    "lib",
+    "locales",
+    "LICENSE",
+    "README.md"
+  ],
+  "peerDependencies": {
+    "kotori-bot": "^1.3.0"
+  },
+  "author": "Himeno <biyuehuya@gmail.com>",
+  "bugs": {
+    "url": "https://github.com/kotorijs/my-project/issues"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kotorijs/my-project.git"
+  },
+  "homepage": "https://github.com/kotorijs/my-project/",
+  "kotori": {
+    "meta": {
+      "languages": [
+        "en_US",
+        "ja_JP",
+        "zh_TW",
+        "zh_CN"
+      ]
+    }
+  }
+}

关于 package.json 的默认配置项与更多信息请参考 npm Docs

index.ts

以下为默认创建的 index.ts,当前你还无需理解其具体含义:

typescript
import type { Context } from 'kotori-bot';
+import config from './config.ts';
+import types from './types.ts';
+
+export function main(ctx: Context) {
+  ctx
+    .command('echo <content> [num:number=3]')
+    .action((data, message) => {
+      ctx.logger.debug(data, data.args[0]);
+      ctx.logger.debug(message);
+      return [
+        `返回消息:~%message%`,
+        {
+          message: data.args[0]
+        }
+      ];
+    })
+    .alias('print')
+    .scope('group');
+
+  ctx.regexp(/^(.*)#print$/, (match) => match[1]);
+
+  ctx.command('ison').action((_, events) => {
+    if (events.api.adapter.config.master === events.userId) return `在的哟主人~`;
+    return '你是...谁?';
+  });
+}

模块测试

在入门教程中提到过使用「@kotori-bot/kotori-plugin-adapter-cmd」适配器可以在命令行中测试指令,但命令行本身仅支持纯文字交互因此并不友好也不便于开发者调试。同样的,Kotori 已默认安装「@kotori-bot/kotori-plugin-adapter-sandbox」适配器,它提供了一个极为方便、全面的机器人沙盒测试环境,只需在 kotori.yml 中设置该适配器即可:

toml
adapter:
+  developer:
+    extends: sandbox
+    master: 1
+    port: 2333

运行模式

[!WARN] 以下内容有待更新

运行模式分为 「生产模式(Build)」与「开发模式(Dev)」两种:

  • Build 模式将显示更少的日志输出,有利于减少不必要信息方便用户使用;Dev 模式会有详尽的错误日志与开发日志输出,有利于开发者快速找到问题。
  • Build 模式有更牢固的错误捕获与进程守护,长期运行更加稳定;Dev 模式下在遇到某些关键性错误时会退出整个 Kotori 程序。
  • Dev 模式会有实时的代码文件变动监听与模块自动重载(热更新),为开发者提供犹如前端开发般的便捷体验。
  • Dev 模式能够直接运行 TypeScript 文件,在加载模块时会优先检测模块文件夹内是否有 src/.ts
  • Build 模式下读取 kotori.yml,Dev 模式下读取 kotori.dev.yml,两者用法与实际效果均一致,旨在区分不同模式下不同配置。

从 Dev 模式下启动 Kotori:

bash
pnpm dev

在浏览器中打开 http://localhost:2333 即可进入沙盒环境,输入 /echo Hello,Kotori! 以查看效果:

show

+ + + + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json new file mode 100644 index 00000000..3e7c6aa6 --- /dev/null +++ b/hashmap.json @@ -0,0 +1 @@ +{"advanced_architecture.md":"Pljt76DU","advanced_browser.md":"CURKrjcr","advanced_contributing.md":"CcXEnDf1","advanced_develop.md":"CCQONjp6","advanced_history.md":"FDb9Wd5O","advanced_index.md":"epBIxi7X","advanced_testing.md":"BIJx2vTA","advanced_thanks.md":"CK7Fjmcb","api_index.md":"B1SyjzrW","basic_config.md":"CIBSN9d7","basic_index.md":"BT38T7GH","basic_modules.md":"R6u-LxoQ","basic_start.md":"UB_T-Yyu","basic_usage.md":"ggWDU75P","guide_base_command.md":"B1nKVjKI","guide_base_events.md":"BKi_1qAf","guide_base_middleware.md":"Do_XwOya","guide_base_regexp.md":"kd1jlc-g","guide_components_adapter.md":"BkEYU-ym","guide_components_api.md":"CDibfftx","guide_components_custom.md":"BNIS-43m","guide_components_elements.md":"BEJCY6Yx","guide_extend_tools.md":"C1RkeOP0","guide_index.md":"CUmZPOqd","guide_modules_context.md":"CfNIj0Wx","guide_modules_decorator.md":"DZm9Jfnd","guide_modules_filter.md":"B6ZA5MSX","guide_modules_i18n.md":"DN93rR3l","guide_modules_plugin.md":"F2YmqKkM","guide_modules_rescript.md":"Bl-r_LjA","guide_modules_schema.md":"D-o7cJAG","guide_modules_service.md":"DMQ0sFPf","guide_start_environment.md":"X_FtbxVb","guide_start_publish.md":"s23QhAsX","guide_start_setup.md":"ZNwpORZ-","index.md":"P8--M6MF","modules_index.md":"D1mO3gni"} diff --git a/index.html b/index.html new file mode 100644 index 00000000..dcca5940 --- /dev/null +++ b/index.html @@ -0,0 +1,28 @@ + + + + + + Kotori + + + + + + + + + + + + + + + + + +
Skip to content

小鳥 · KotoriBot

基于 Node.js + TypeScript 的跨平台聊天机器人框架

KotoriBot
🚀
跨平台

得益于模块化支持,通过编写各种模块实现不同的功能与聊天平台接入

🧩
解耦合

基于控制反转与面向切面编程思想,减少代码冗余与复杂度

🛠️
现代化

使用现代化的 ECMAScript 语法规范与强大的 TypeScript 类型支持

+ + + + \ No newline at end of file diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2bc3c132cf1e6f9058ca11a1b2a104976ff12012 GIT binary patch literal 16289 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 + + + + + Kotori + + + + + + + + + + + + + + + + + +
Skip to content

Last updated:

+ + + + \ No newline at end of file diff --git a/schema/1.3.0.json b/schema/1.3.0.json new file mode 100644 index 00000000..fd5bf8ee --- /dev/null +++ b/schema/1.3.0.json @@ -0,0 +1,74 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://kotori.js.org/schema/schema-1.3.0.json", + "title": "Kotori", + "description": "Config file of kotori", + "type": "object", + "properties": { + "global": { + "type": "object", + "properties": { + "port": { + "type": "integer", + "minimum": 1, + "maximum": 65525 + }, + "lang": { + "enum": ["en_US", "ja_JP", "zh_TW", "zh_CN"] + }, + "commandPrefix": { + "type": "string" + }, + "dirs": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "adapter": { + "type": "object", + "patternProperties": { + ".": { + "type": "object", + "properties": { + "extends": { + "type": "string" + }, + "master": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "lang": { + "enum": ["en_US", "ja_JP", "zh_TW", "zh_CN"] + }, + "commandPrefix": { + "type": "string" + } + }, + "required": ["extends", "master"] + } + } + }, + "plugin": { + "type": "object", + "patternProperties": { + ".": { + "type": "object", + "properties": { + "filter": { + "type": "object" + } + } + } + } + } + } +} diff --git a/vp-icons.css b/vp-icons.css new file mode 100644 index 00000000..ddc5bd8e --- /dev/null +++ b/vp-icons.css @@ -0,0 +1 @@ +.vpi-social-github{--icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")} \ No newline at end of file
Skip to content

配置详解

前面一节已对 kotori.toml 有了大概认识,本节内容将更为全面的介绍它。kotori.toml 是一个 Kotori 程序的核心配置文件,它一般位于 Kotori 根目录,与 package.json 文件同级,使用 TOML 格式。

文件格式

虽然默认使用的是 TOML 格式,但 Kotori 也支持 YAML 格式(.yaml.yml)与 JSON 格式,其它格式使用方法请参考下文

配置项

以下是将先前的配置片段集中在一起的例子(仅作参考请勿直接复制):

toml
[global]
+port = 720
+dbPrefix = "romiChan"
+lang = "en_US"
+commandPrefix = "/"
+noColor = false
+level = 25
+dirs = [
+  "./node_modules/@custom-scope/",
+  "./test_modules"
+]
+
+[adapter.cmd-test]
+extends = "cmd"
+master = 2_333
+nickname = "Kotarou"
+age = 18
+sex = "male"
+self-id = 720
+
+[adapter.kisaki]
+extends = "qq"
+appid = "xxxx"
+secret = "xxxxx"
+master = 2_333
+retry = 10
+
+[plugin.menu]
+alias = "cd"
+keywords = [ "菜单", "功能", "帮助" ]
+content = "菜单 | 小鳥%break%/menu - 查看BOT菜单%break%/hitokoto - 获取一条一言%break%ByHotaru"

global.lang

定义全局使用的语言,目前仅支持英语、日语、台湾语、中文四门语言。

  • 值:LocaleType
  • 默认值:'en_US'
typescript
type LocaleType = 'en_US' | 'ja_JP' | 'zh_TW' | 'zh_CN';

global.commandPrefix

定义全局使用的命令前缀。

  • 值:string
  • 默认值: '/'

global.dirs

定义需要加载的模块目录。

  • 值:string[]
  • 默认值:['./node_modules/', './node_modules/@kotori-bot/']

global.port

定义 Kotori 使用的端口(Http 服务器与 WebSocket 服务器)。

  • 值:number
  • 默认值:720

global.dbPrefix

定义 Kotori 使用的数据库前缀。

  • 值:string
  • 默认值:'romiChan'

global.noColor

定义是否禁用彩色输出。

  • 值:boolean
  • 默认值:false

global.level

定义日志输出级别。

  • 值:LoggerLevel
  • 默认值:25
typescript
export enum LoggerLevel {
+  TRACE = 10,
+  DEBUG = 20,
+  RECORD = 25,
+  INFO = 30,
+  WARN = 40,
+  ERROR = 50,
+  FATAL = 60,
+  SILENT = 70
+}

adapter

定义 Bot。

  • 值:{ [botName: string]: AdapterConfig }
  • 默认值:{}
  • botName:Bot 的唯一标识符,可自定义,建议仅使用小写英语字母、数字、连字符字符([a-z0-9-])
typescript
interface AdapterConfig {
+  extends: string;
+  master?: number;
+  lang?: langType;
+  commandPrefix?: string;
+  [propName: string]?: unknown;
+}

AdapterConfig.extends

定义该 Bot 使用的适配器。

  • 值:string
  • 可选:否

AdapterConfig.master

定义该 Bot 的最高管理员 id(即该用户在平台的 id)。

  • 值:string | number
  • 可选:是

AdapterConfig.lang

定义该 Bot 使用的语言。

  • 值:LocaleType
  • 默认值:继承自 global.lang

AdapterConfig.commandPrefix

定义该 Bot 使用的命令前缀。

  • 值:string
  • 默认值: 继承自 global.commandPrefix

AdapterConfig[propName]

除去以上由 Kotori 内部定义的配置项,extends 中指定的适配器一般会额外定义配置项用于 Bot 内部,这些配置项也可能不存在或为可选,具体请参考该模块的详情页。

plugin

定义插件的配置项。

  • 值:{ [pluginName: string]: PluginConfig }
  • 默认值:{}
  • pluginName:模块的 id,去掉该模块包名中的命名空间与模块前缀(Kotori-plugin-)部分
typescript
interface PluginConfig {
+  filter?: {};
+  [propName: string]?: unknown;
+}

PluginConfig.filter

定义该插件使用的滤器。

  • 值:FilterOption
  • 默认值:{}

关于滤器使用请参考 滤器

PluginConfig[propName]

类似于 AdapterConfig 中的 [propName],该插件也可能会定义一些配置项用于插件内部,具体请参考该模块的详情页。

CLI 参数

Kotori 提供了一些 CLI 参数,用于在启动时修改配置文件中的配置项。

  • --daemon:是否使用守护进程
  • --mode [name]:设置程序运行模式,builddev
  • --dir [path]:设置程序运行根目录
  • --config [name]:设置配置文件名
  • --level [number]:设置日志输出级别
  • --port [number]:设置服务器端口
  • --dbPrefix [string]:设置数据库前缀
  • --noColor:禁用彩色输出

环境变量

Kotori 提供了一些环境变量,用于在启动时修改配置文件中的配置项。

  • NODE_ENV:设置程序运行模式,builddev
  • DIR:设置程序运行根目录
  • CONFIG:设置配置文件名
  • PORT:设置服务器端口
  • DB_PREFIX:设置数据库前缀
  • LEVEL:设置日志输出级别
  • NO_COLOR:禁用彩色输出
  • DAEMON:是否使用守护进程

设置环境变量只需在运行根目录下创建 .env 文件,并以 KEY=VALUE 的形式写入即可,例如:

ini
NODE_ENV=build
+CONFIG=config.toml
+PORT=720
+DB_PREFIX=romiChan
+LEVEL=25
+NO_COLOR=off
+DAEMON=on

NOTE

在环境变量文件中,对于 boolean 值,使用 on 表示 true,使用 off 或其它任何值表示 false

优先级

一般地,CLI 参数 > 环境变量 > 配置文件 > 默认值