summaryrefslogtreecommitdiff
path: root/packages/frontend/src/scripts/aiscript/common.ts
blob: ba5dfb836839be14dd67bb69d48b50a84bcde88a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
 * SPDX-FileCopyrightText: syuilo and misskey-project
 * SPDX-License-Identifier: AGPL-3.0-only
 */

import { errors, utils } from '@syuilo/aiscript';
import type { values } from '@syuilo/aiscript';

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;
	if (!expects.includes(str)) {
		const expected = expects.map((expect) => `"${expect}"`).join(', ');
		throw new errors.AiScriptRuntimeError(`"${value.value}" is not in ${expected}`);
	}
}