Files
NapCatQQ/.pnpm-store/v3/files/53/1c7994fa3f54cbd9d98475547ee1c46a984dc79d408ce40f0490f836f4de2ead8e84e96ed84656faaccd982ef81b75d848aff0c889cbfec68e4068d5c9bf17
T
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

23 lines
842 B
Plaintext

import { CreateType } from '../create/type.mjs';
import { OptionalKind } from '../symbols/index.mjs';
import { Discard } from '../discard/index.mjs';
import { OptionalFromMappedResult } from './optional-from-mapped-result.mjs';
import { IsMappedResult } from '../guard/kind.mjs';
function RemoveOptional(schema) {
return CreateType(Discard(schema, [OptionalKind]));
}
function AddOptional(schema) {
return CreateType({ ...schema, [OptionalKind]: 'Optional' });
}
// prettier-ignore
function OptionalWithFlag(schema, F) {
return (F === false
? RemoveOptional(schema)
: AddOptional(schema));
}
/** `[Json]` Creates a Optional property */
export function Optional(schema, enable) {
const F = enable ?? true;
return IsMappedResult(schema) ? OptionalFromMappedResult(schema, F) : OptionalWithFlag(schema, F);
}