Files
NapCatQQ/.pnpm-store/v3/files/b7/66b54d396442d81ec407ceaaa2f1dbaf130fde26f51052907042b8e11c9575ff16580205293a49572c37649b3d61a434282744f79b9a42a212c8e7016d427b
T
TanTan e311ca3275
Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

124 lines
5.3 KiB
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Record = Record;
exports.RecordPattern = RecordPattern;
exports.RecordKey = RecordKey;
exports.RecordValue = RecordValue;
const type_1 = require("../create/type");
const index_1 = require("../symbols/index");
const index_2 = require("../never/index");
const index_3 = require("../number/index");
const index_4 = require("../object/index");
const index_5 = require("../string/index");
const index_6 = require("../union/index");
const index_7 = require("../template-literal/index");
const index_8 = require("../patterns/index");
const index_9 = require("../indexed/index");
// ------------------------------------------------------------------
// ValueGuard
// ------------------------------------------------------------------
const value_1 = require("../guard/value");
// ------------------------------------------------------------------
// TypeGuard
// ------------------------------------------------------------------
const kind_1 = require("../guard/kind");
// ------------------------------------------------------------------
// RecordCreateFromPattern
// ------------------------------------------------------------------
// prettier-ignore
function RecordCreateFromPattern(pattern, T, options) {
return (0, type_1.CreateType)({ [index_1.Kind]: 'Record', type: 'object', patternProperties: { [pattern]: T } }, options);
}
// ------------------------------------------------------------------
// RecordCreateFromKeys
// ------------------------------------------------------------------
// prettier-ignore
function RecordCreateFromKeys(K, T, options) {
const result = {};
for (const K2 of K)
result[K2] = T;
return (0, index_4.Object)(result, { ...options, [index_1.Hint]: 'Record' });
}
// prettier-ignore
function FromTemplateLiteralKey(K, T, options) {
return ((0, index_7.IsTemplateLiteralFinite)(K)
? RecordCreateFromKeys((0, index_9.IndexPropertyKeys)(K), T, options)
: RecordCreateFromPattern(K.pattern, T, options));
}
// prettier-ignore
function FromUnionKey(key, type, options) {
return RecordCreateFromKeys((0, index_9.IndexPropertyKeys)((0, index_6.Union)(key)), type, options);
}
// prettier-ignore
function FromLiteralKey(key, type, options) {
return RecordCreateFromKeys([key.toString()], type, options);
}
// prettier-ignore
function FromRegExpKey(key, type, options) {
return RecordCreateFromPattern(key.source, type, options);
}
// prettier-ignore
function FromStringKey(key, type, options) {
const pattern = (0, value_1.IsUndefined)(key.pattern) ? index_8.PatternStringExact : key.pattern;
return RecordCreateFromPattern(pattern, type, options);
}
// prettier-ignore
function FromAnyKey(_, type, options) {
return RecordCreateFromPattern(index_8.PatternStringExact, type, options);
}
// prettier-ignore
function FromNeverKey(_key, type, options) {
return RecordCreateFromPattern(index_8.PatternNeverExact, type, options);
}
// prettier-ignore
function FromBooleanKey(_key, type, options) {
return (0, index_4.Object)({ true: type, false: type }, options);
}
// prettier-ignore
function FromIntegerKey(_key, type, options) {
return RecordCreateFromPattern(index_8.PatternNumberExact, type, options);
}
// prettier-ignore
function FromNumberKey(_, type, options) {
return RecordCreateFromPattern(index_8.PatternNumberExact, type, options);
}
// ------------------------------------------------------------------
// TRecordOrObject
// ------------------------------------------------------------------
/** `[Json]` Creates a Record type */
function Record(key, type, options = {}) {
// prettier-ignore
return ((0, kind_1.IsUnion)(key) ? FromUnionKey(key.anyOf, type, options) :
(0, kind_1.IsTemplateLiteral)(key) ? FromTemplateLiteralKey(key, type, options) :
(0, kind_1.IsLiteral)(key) ? FromLiteralKey(key.const, type, options) :
(0, kind_1.IsBoolean)(key) ? FromBooleanKey(key, type, options) :
(0, kind_1.IsInteger)(key) ? FromIntegerKey(key, type, options) :
(0, kind_1.IsNumber)(key) ? FromNumberKey(key, type, options) :
(0, kind_1.IsRegExp)(key) ? FromRegExpKey(key, type, options) :
(0, kind_1.IsString)(key) ? FromStringKey(key, type, options) :
(0, kind_1.IsAny)(key) ? FromAnyKey(key, type, options) :
(0, kind_1.IsNever)(key) ? FromNeverKey(key, type, options) :
(0, index_2.Never)(options));
}
// ------------------------------------------------------------------
// Record Utilities
// ------------------------------------------------------------------
/** Gets the Records Pattern */
function RecordPattern(record) {
return globalThis.Object.getOwnPropertyNames(record.patternProperties)[0];
}
/** Gets the Records Key Type */
// prettier-ignore
function RecordKey(type) {
const pattern = RecordPattern(type);
return (pattern === index_8.PatternStringExact ? (0, index_5.String)() :
pattern === index_8.PatternNumberExact ? (0, index_3.Number)() :
(0, index_5.String)({ pattern }));
}
/** Gets a Record Value Type */
// prettier-ignore
function RecordValue(type) {
return type.patternProperties[RecordPattern(type)];
}