UNPKG

@typespec/compiler

Version:

TypeSpec compiler and standard library

91 lines 3.53 kB
import { isIntrinsicType } from "../../core/decorator-utils.js"; import { getEncode, getFormat } from "../../lib/decorators.js"; import { defineKit } from "../define-kit.js"; defineKit({ scalar: { is(type) { return type.entityKind === "Type" && type.kind === "Scalar"; }, extendsBoolean: extendsStdType("boolean"), extendsBytes: extendsStdType("bytes"), extendsDecimal: extendsStdType("decimal"), extendsDecimal128: extendsStdType("decimal128"), extendsDuration: extendsStdType("duration"), extendsFloat: extendsStdType("float"), extendsFloat32: extendsStdType("float32"), extendsFloat64: extendsStdType("float64"), extendsInt8: extendsStdType("int8"), extendsInt16: extendsStdType("int16"), extendsInt32: extendsStdType("int32"), extendsInt64: extendsStdType("int64"), extendsInteger: extendsStdType("integer"), extendsNumeric: extendsStdType("numeric"), extendsOffsetDateTime: extendsStdType("offsetDateTime"), extendsPlainDate: extendsStdType("plainDate"), extendsPlainTime: extendsStdType("plainTime"), extendsSafeint: extendsStdType("safeint"), extendsString: extendsStdType("string"), extendsUint8: extendsStdType("uint8"), extendsUint16: extendsStdType("uint16"), extendsUint32: extendsStdType("uint32"), extendsUint64: extendsStdType("uint64"), extendsUrl: extendsStdType("url"), extendsUtcDateTime: extendsStdType("utcDateTime"), isBoolean: isStdType("boolean"), isBytes: isStdType("bytes"), isDecimal: isStdType("decimal"), isDecimal128: isStdType("decimal128"), isDuration: isStdType("duration"), isFloat: isStdType("float"), isFloat32: isStdType("float32"), isFloat64: isStdType("float64"), isInt8: isStdType("int8"), isInt16: isStdType("int16"), isInt32: isStdType("int32"), isInt64: isStdType("int64"), isInteger: isStdType("integer"), isNumeric: isStdType("numeric"), isOffsetDateTime: isStdType("offsetDateTime"), isPlainDate: isStdType("plainDate"), isPlainTime: isStdType("plainTime"), isSafeint: isStdType("safeint"), isString: isStdType("string"), isUint8: isStdType("uint8"), isUint16: isStdType("uint16"), isUint32: isStdType("uint32"), isUint64: isStdType("uint64"), isUrl: isStdType("url"), isUtcDateTime: isStdType("utcDateTime"), getStdBase(type) { const tspNamespace = this.program.resolveTypeReference("TypeSpec")[0]; let current = type; while (current) { if (current.namespace === tspNamespace) { return current; } current = current.baseScalar; } return null; }, getEncoding(type) { return getEncode(this.program, type); }, getFormat(type) { return getFormat(this.program, type); }, }, }); function isStdType(typeName) { return function (type) { return type === this.program.checker.getStdType(typeName); }; } function extendsStdType(typeName) { return function (type) { if (!this.scalar.is(type)) { return false; } return isIntrinsicType(this.program, type, typeName); }; } //# sourceMappingURL=scalar.js.map