diff options
| author | かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> | 2025-11-25 07:23:21 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-25 07:23:21 +0900 |
| commit | 91dafc26a751e905ae5196cd8b095c2276c9c614 (patch) | |
| tree | 8f1c2c180eb877667a3a0f85bce5196b951d4e6a /packages/frontend | |
| parent | Bump version to 2025.11.1-alpha.1 (diff) | |
| download | misskey-91dafc26a751e905ae5196cd8b095c2276c9c614.tar.gz misskey-91dafc26a751e905ae5196cd8b095c2276c9c614.tar.bz2 misskey-91dafc26a751e905ae5196cd8b095c2276c9c614.zip | |
refactor(frontend/aiscript): AiScriptバージョン取得・判定ロジックを統一 (#16845)
* refactor(frontend): AiScriptバージョン取得・判定ロジックを統一
* fix
Diffstat (limited to 'packages/frontend')
| -rw-r--r-- | packages/frontend/src/aiscript/common.ts | 7 | ||||
| -rw-r--r-- | packages/frontend/src/pages/flash/flash.vue | 16 |
2 files changed, 13 insertions, 10 deletions
diff --git a/packages/frontend/src/aiscript/common.ts b/packages/frontend/src/aiscript/common.ts index 806a9b5965..ba5dfb8368 100644 --- a/packages/frontend/src/aiscript/common.ts +++ b/packages/frontend/src/aiscript/common.ts @@ -6,13 +6,6 @@ import { errors, utils } from '@syuilo/aiscript'; import type { values } from '@syuilo/aiscript'; -const extractVersionIdentifier = /^\/\/\/\s*@\s*(\d+)\.(\d+)\.\d+$/m; - -export function getAiScriptVersion(script: string): { major: number; minor: number } | undefined { - const match = extractVersionIdentifier.exec(script); - return match ? { major: Number(match[1]), minor: Number(match[2]) } : undefined; -} - export function assertStringAndIsIn<A extends readonly string[]>(value: values.Value | undefined, expects: A): asserts value is values.VStr & { value: A[number] } { utils.assertString(value); const str = value.value; diff --git a/packages/frontend/src/pages/flash/flash.vue b/packages/frontend/src/pages/flash/flash.vue index f6da46be22..2913aaae64 100644 --- a/packages/frontend/src/pages/flash/flash.vue +++ b/packages/frontend/src/pages/flash/flash.vue @@ -63,6 +63,8 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { computed, onDeactivated, onUnmounted, ref, watch, shallowRef, defineAsyncComponent } from 'vue'; import * as Misskey from 'misskey-js'; +import { utils } from '@syuilo/aiscript'; +import { compareVersions } from 'compare-versions'; import { url } from '@@/js/config.js'; import type { Ref } from 'vue'; import type { AsUiComponent, AsUiRoot } from '@/aiscript/ui.js'; @@ -74,7 +76,6 @@ import { misskeyApi } from '@/utility/misskey-api.js'; import { i18n } from '@/i18n.js'; import { definePage } from '@/page.js'; import MkAsUi from '@/components/MkAsUi.vue'; -import { getAiScriptVersion } from '@/aiscript/common.js'; import { registerAsUiLib } from '@/aiscript/ui.js'; import { aiScriptReadline, createAiScriptEnv } from '@/aiscript/api.js'; import MkFolder from '@/components/MkFolder.vue'; @@ -191,12 +192,21 @@ function start() { run(); } +function getIsLegacy(version: string | null): boolean { + if (version == null) return false; + try { + return compareVersions(version, '1.0.0') < 0; + } catch { + return false; + } +} + async function run() { if (aiscript.value) aiscript.value.abort(); if (!flash.value) return; - const version = getAiScriptVersion(flash.value.script); - const isLegacy = version ? version.major < 1 : false; + const version = utils.getLangVersion(flash.value.script); + const isLegacy = version != null && getIsLegacy(version); const { Interpreter, Parser, values } = isLegacy ? (await import('@syuilo/aiscript-0-19-0') as any) : await import('@syuilo/aiscript'); |