typia 13.0.0-dev.20260619.1 → 13.0.0-dev.20260626.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/executable/typia.js +11 -11
- package/lib/executable/typia2.mjs +11 -11
- package/lib/executable/typia2.mjs.map +1 -1
- package/lib/internal/_ProtobufReader.js +1 -1
- package/lib/internal/_ProtobufReader.js.map +1 -1
- package/lib/internal/_ProtobufReader2.mjs +1 -1
- package/lib/internal/_ProtobufReader2.mjs.map +1 -1
- package/native/cmd/ttsc-typia/build.go +2 -13
- package/native/cmd/ttsc-typia/diagnostics.go +51 -0
- package/native/cmd/ttsc-typia/intersection_all_never_union_transform_test.go +168 -0
- package/native/cmd/ttsc-typia/intersection_brand_transform_test.go +267 -0
- package/native/cmd/ttsc-typia/intersection_nonsensible_backstop_transform_test.go +132 -0
- package/native/cmd/ttsc-typia/protobuf_object_generic_union_encode_transform_test.go +248 -0
- package/native/cmd/ttsc-typia/shallow_depth_argument_error_transform_test.go +2 -3
- package/native/cmd/ttsc-typia/template_interpolation_type_tags_transform_test.go +322 -0
- package/native/cmd/ttsc-typia/transform.go +2 -2
- package/native/cmd/ttsc-typia/transform_diagnostics_preserve_details_test.go +203 -0
- package/native/core/context/ITypiaContext.go +9 -1
- package/native/core/factories/internal/metadata/iterate_metadata_intersection.go +94 -31
- package/native/core/factories/internal/metadata/iterate_metadata_intersection_brand_coverage_test.go +114 -0
- package/native/core/factories/internal/metadata/iterate_metadata_union.go +17 -1
- package/native/core/programmers/internal/FeatureProgrammer.go +11 -2
- package/native/core/programmers/internal/feature_programmer_visit_guard_test.go +70 -0
- package/native/core/programmers/iterate/check_template.go +206 -10
- package/native/core/programmers/iterate/template_interpolation_tags_test.go +495 -0
- package/native/core/programmers/iterate/template_runtime_pattern.go +262 -0
- package/native/core/programmers/protobuf/ProtobufEncodeProgrammer.go +8 -5
- package/native/transform/FileTransformer.go +29 -5
- package/native/transform/TypiaGenerator.go +6 -3
- package/native/transform/file_transformer_coverage_test.go +69 -65
- package/native/transform/transform.go +3 -1
- package/package.json +4 -4
- package/src/TypeGuardError.ts +146 -146
- package/src/compare.ts +159 -159
- package/src/executable/TypiaGenerateWizard.ts +856 -856
- package/src/executable/generate/ttsc.ts +71 -71
- package/src/executable/typia.ts +76 -76
- package/src/index.ts +4 -4
- package/src/internal/_ProtobufReader.ts +187 -187
- package/src/internal/_isFormatUrl.ts +4 -4
- package/src/internal/_isTypeInt16.ts +5 -5
- package/src/internal/_isTypeInt8.ts +5 -5
- package/src/internal/_isTypeUint16.ts +5 -5
- package/src/internal/_isTypeUint8.ts +5 -5
- package/src/internal/_jsonStringifyNumber.ts +2 -2
- package/src/internal/_llmApplicationFinalize.ts +20 -20
- package/src/internal/_notationSnake.ts +43 -43
- package/src/internal/_plainCloneAny.ts +46 -46
- package/src/llm.ts +480 -480
- package/src/module.ts +913 -913
- package/src/notations.ts +828 -828
- package/src/plain.ts +593 -593
- package/src/re-exports.ts +37 -37
- package/src/reflect.ts +98 -98
- package/src/transform.ts +19 -19
package/lib/executable/typia.js
CHANGED
|
@@ -10,17 +10,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
});
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
const USAGE = `Wrong command has been detected. Use like below:
|
|
14
|
-
|
|
15
|
-
npx typia generate [options] [files...]
|
|
16
|
-
|
|
17
|
-
npx typia generate
|
|
18
|
-
--input src/templates \\
|
|
19
|
-
--output src/generated
|
|
20
|
-
|
|
21
|
-
npx typia generate
|
|
22
|
-
--output src/generated \\
|
|
23
|
-
"src/**/*.typia.ts"
|
|
13
|
+
const USAGE = `Wrong command has been detected. Use like below:
|
|
14
|
+
|
|
15
|
+
npx typia generate [options] [files...]
|
|
16
|
+
|
|
17
|
+
npx typia generate
|
|
18
|
+
--input src/templates \\
|
|
19
|
+
--output src/generated
|
|
20
|
+
|
|
21
|
+
npx typia generate
|
|
22
|
+
--output src/generated \\
|
|
23
|
+
"src/**/*.typia.ts"
|
|
24
24
|
`;
|
|
25
25
|
const halt = (desc) => {
|
|
26
26
|
console.error(desc);
|
|
@@ -18,17 +18,17 @@ var __awaiter = (typia && typia.__awaiter) || function (thisArg, _arguments, P,
|
|
|
18
18
|
});
|
|
19
19
|
};
|
|
20
20
|
Object.defineProperty(typia, "__esModule", { value: true });
|
|
21
|
-
const USAGE = `Wrong command has been detected. Use like below:
|
|
22
|
-
|
|
23
|
-
npx typia generate [options] [files...]
|
|
24
|
-
|
|
25
|
-
npx typia generate
|
|
26
|
-
--input src/templates \\
|
|
27
|
-
--output src/generated
|
|
28
|
-
|
|
29
|
-
npx typia generate
|
|
30
|
-
--output src/generated \\
|
|
31
|
-
"src/**/*.typia.ts"
|
|
21
|
+
const USAGE = `Wrong command has been detected. Use like below:
|
|
22
|
+
|
|
23
|
+
npx typia generate [options] [files...]
|
|
24
|
+
|
|
25
|
+
npx typia generate
|
|
26
|
+
--input src/templates \\
|
|
27
|
+
--output src/generated
|
|
28
|
+
|
|
29
|
+
npx typia generate
|
|
30
|
+
--output src/generated \\
|
|
31
|
+
"src/**/*.typia.ts"
|
|
32
32
|
`;
|
|
33
33
|
const halt = (desc) => {
|
|
34
34
|
console.error(desc);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typia2.mjs","sources":["typia.js"],"sourcesContent":["#!/usr/bin/env node\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst USAGE = `Wrong command has been detected. Use like below:\
|
|
1
|
+
{"version":3,"file":"typia2.mjs","sources":["typia.js"],"sourcesContent":["#!/usr/bin/env node\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst USAGE = `Wrong command has been detected. Use like below:\n\n npx typia generate [options] [files...]\n\n npx typia generate\n --input src/templates \\\\\n --output src/generated\n\n npx typia generate\n --output src/generated \\\\\n \"src/**/*.typia.ts\"\n`;\nconst halt = (desc) => {\n console.error(desc);\n process.exit(-1);\n};\nconst loadTypeScript = () => {\n loadPackage(\"typescript/package.json\", `typescript has not been installed. Run \"npm i -D ttsc typescript\" before.`);\n};\nconst loadTtsc = () => {\n loadPackage(\"ttsc/package.json\", `ttsc has not been installed. Run \"npm i -D ttsc typescript\" before.`);\n};\nconst loadPackage = (request, desc) => {\n const resolvers = [\n () => require.resolve(request, {\n paths: [process.cwd()],\n }),\n () => require.resolve(request),\n ];\n for (const resolve of resolvers) {\n try {\n resolve();\n return;\n }\n catch (_a) { }\n }\n halt(desc);\n};\nconst isHelp = (args) => {\n return args.some((arg) => arg === \"--help\" || arg === \"-h\");\n};\nconst main = () => __awaiter(void 0, void 0, void 0, function* () {\n try {\n yield import(\"inquirer\");\n yield import(\"commander\");\n }\n catch (_a) {\n halt(`typia has not been installed. Run \"npm i typia\" before.`);\n }\n const type = process.argv[2];\n if (type === \"generate\") {\n if (isHelp(process.argv.slice(3)) === false) {\n loadTtsc();\n loadTypeScript();\n }\n const { TypiaGenerateWizard } = yield import(\"./TypiaGenerateWizard.js\");\n yield TypiaGenerateWizard.generate();\n }\n else\n halt(USAGE);\n});\nmain().catch((exp) => {\n console.error(exp instanceof URIError ? exp.message : exp);\n process.exit(-1);\n});\n//# sourceMappingURL=typia.js.map"],"names":[],"mappings":";;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_ProtobufReader.js","sourceRoot":"","sources":["../../src/internal/_ProtobufReader.ts"],"names":[],"mappings":";;;AACA,wCAAyC;AAEzC,kHAAkH;AAClH;IAUE,YAAmB,GAAe;QAChC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACvE,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;IACzB,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"_ProtobufReader.js","sourceRoot":"","sources":["../../src/internal/_ProtobufReader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_ProtobufReader2.mjs","sources":["_ProtobufReader.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._ProtobufReader = void 0;\nconst utils_1 = require(\"@typia/utils\");\n/// @reference https://github.com/piotr-oles/as-proto/blob/main/packages/as-proto/assembly/internal/FixedReader.ts\nclass _ProtobufReader {\n constructor(buf) {\n this.buf = buf;\n this.ptr = 0;\n this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n index() {\n return this.ptr;\n }\n size() {\n return this.buf.length;\n }\n uint32() {\n return this.varint32();\n }\n int32() {\n return this.varint32();\n }\n sint32() {\n const value = this.varint32();\n return (value >>> 1) ^ -(value & 1);\n }\n uint64() {\n return this.varint64();\n }\n int64() {\n return this.varint64();\n }\n sint64() {\n const value = this.varint64();\n return (value >> BigInt(0x01)) ^ -(value & BigInt(0x01));\n }\n bool() {\n return this.varint32() !== 0;\n }\n float() {\n const value = this.view.getFloat32(this.ptr, true);\n this.ptr += 4;\n return value;\n }\n double() {\n const value = this.view.getFloat64(this.ptr, true);\n this.ptr += 8;\n return value;\n }\n bytes() {\n const length = this.uint32();\n const from = this.ptr;\n this.ptr += length;\n return this.buf.subarray(from, from + length);\n }\n string() {\n return utf8.get().decode(this.bytes());\n }\n skip(length) {\n if (length === 0)\n while (this.u8() & 0x80)\n ;\n else {\n if (this.index() + length > this.size())\n throw new Error(\"Error on typia.protobuf.decode(): buffer overflow.\");\n this.ptr += length;\n }\n }\n skipType(wireType) {\n switch (wireType) {\n case 0 /* ProtobufWire.VARIANT */:\n this.skip(0);\n break;\n case 1 /* ProtobufWire.I64 */:\n this.skip(8);\n break;\n case 2 /* ProtobufWire.LEN */:\n this.skip(this.uint32());\n break;\n case 3 /* ProtobufWire.START_GROUP */:\n while ((wireType = this.uint32() & 0x07) !== 4 /* ProtobufWire.END_GROUP */)\n this.skipType(wireType);\n break;\n case 5 /* ProtobufWire.I32 */:\n this.skip(4);\n break;\n default:\n throw new Error(`Invalid wire type ${wireType} at offset ${this.ptr}.`);\n }\n }\n varint32() {\n let loaded;\n let value;\n value = (loaded = this.u8()) & 0x7f;\n if (loaded < 0x80)\n return value;\n value |= ((loaded = this.u8()) & 0x7f) << 7;\n if (loaded < 0x80)\n return value;\n value |= ((loaded = this.u8()) & 0x7f) << 14;\n if (loaded < 0x80)\n return value;\n value |= ((loaded = this.u8()) & 0x7f) << 21;\n if (loaded < 0x80)\n return value;\n value |= ((loaded = this.u8()) & 0xf) << 28;\n if (loaded < 0x80)\n return value;\n // increment position until there is no continuation bit or until we read 10 bytes\n if (this.u8() < 0x80)\n return value;\n if (this.u8() < 0x80)\n return value;\n if (this.u8() < 0x80)\n return value;\n if (this.u8() < 0x80)\n return value;\n if (this.u8() < 0x80)\n return value;\n return value;\n }\n varint64() {\n let loaded;\n let value;\n value = (loaded = this.u8n()) & BigInt(0x7f);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(7);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(14);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(21);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(28);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(35);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(42);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(49);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(56);\n if (loaded < BigInt(0x80))\n return value;\n value |= (this.u8n() & BigInt(0x01)) << BigInt(63);\n return BigInt.asIntN(64, value);\n }\n u8() {\n return this.view.getUint8(this.ptr++);\n }\n u8n() {\n return BigInt(this.u8());\n }\n}\nexports._ProtobufReader = _ProtobufReader;\nconst utf8 = new utils_1.Singleton(() => new TextDecoder(\"utf-8\"));\n//# sourceMappingURL=_ProtobufReader.js.map"],"names":["_ProtobufReader_1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"_ProtobufReader2.mjs","sources":["_ProtobufReader.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._ProtobufReader = void 0;\nconst utils_1 = require(\"@typia/utils\");\n/// @reference https://github.com/piotr-oles/as-proto/blob/main/packages/as-proto/assembly/internal/FixedReader.ts\nclass _ProtobufReader {\n constructor(buf) {\n this.buf = buf;\n this.ptr = 0;\n this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n index() {\n return this.ptr;\n }\n size() {\n return this.buf.length;\n }\n uint32() {\n return this.varint32() >>> 0;\n }\n int32() {\n return this.varint32();\n }\n sint32() {\n const value = this.varint32();\n return (value >>> 1) ^ -(value & 1);\n }\n uint64() {\n return this.varint64();\n }\n int64() {\n return this.varint64();\n }\n sint64() {\n const value = this.varint64();\n return (value >> BigInt(0x01)) ^ -(value & BigInt(0x01));\n }\n bool() {\n return this.varint32() !== 0;\n }\n float() {\n const value = this.view.getFloat32(this.ptr, true);\n this.ptr += 4;\n return value;\n }\n double() {\n const value = this.view.getFloat64(this.ptr, true);\n this.ptr += 8;\n return value;\n }\n bytes() {\n const length = this.uint32();\n const from = this.ptr;\n this.ptr += length;\n return this.buf.subarray(from, from + length);\n }\n string() {\n return utf8.get().decode(this.bytes());\n }\n skip(length) {\n if (length === 0)\n while (this.u8() & 0x80)\n ;\n else {\n if (this.index() + length > this.size())\n throw new Error(\"Error on typia.protobuf.decode(): buffer overflow.\");\n this.ptr += length;\n }\n }\n skipType(wireType) {\n switch (wireType) {\n case 0 /* ProtobufWire.VARIANT */:\n this.skip(0);\n break;\n case 1 /* ProtobufWire.I64 */:\n this.skip(8);\n break;\n case 2 /* ProtobufWire.LEN */:\n this.skip(this.uint32());\n break;\n case 3 /* ProtobufWire.START_GROUP */:\n while ((wireType = this.uint32() & 0x07) !== 4 /* ProtobufWire.END_GROUP */)\n this.skipType(wireType);\n break;\n case 5 /* ProtobufWire.I32 */:\n this.skip(4);\n break;\n default:\n throw new Error(`Invalid wire type ${wireType} at offset ${this.ptr}.`);\n }\n }\n varint32() {\n let loaded;\n let value;\n value = (loaded = this.u8()) & 0x7f;\n if (loaded < 0x80)\n return value;\n value |= ((loaded = this.u8()) & 0x7f) << 7;\n if (loaded < 0x80)\n return value;\n value |= ((loaded = this.u8()) & 0x7f) << 14;\n if (loaded < 0x80)\n return value;\n value |= ((loaded = this.u8()) & 0x7f) << 21;\n if (loaded < 0x80)\n return value;\n value |= ((loaded = this.u8()) & 0xf) << 28;\n if (loaded < 0x80)\n return value;\n // increment position until there is no continuation bit or until we read 10 bytes\n if (this.u8() < 0x80)\n return value;\n if (this.u8() < 0x80)\n return value;\n if (this.u8() < 0x80)\n return value;\n if (this.u8() < 0x80)\n return value;\n if (this.u8() < 0x80)\n return value;\n return value;\n }\n varint64() {\n let loaded;\n let value;\n value = (loaded = this.u8n()) & BigInt(0x7f);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(7);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(14);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(21);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(28);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(35);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(42);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(49);\n if (loaded < BigInt(0x80))\n return value;\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(56);\n if (loaded < BigInt(0x80))\n return value;\n value |= (this.u8n() & BigInt(0x01)) << BigInt(63);\n return BigInt.asIntN(64, value);\n }\n u8() {\n return this.view.getUint8(this.ptr++);\n }\n u8n() {\n return BigInt(this.u8());\n }\n}\nexports._ProtobufReader = _ProtobufReader;\nconst utf8 = new utils_1.Singleton(() => new TextDecoder(\"utf-8\"));\n//# sourceMappingURL=_ProtobufReader.js.map"],"names":["_ProtobufReader_1"],"mappings":"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"}
|
|
@@ -79,8 +79,8 @@ func runBuild(args []string) int {
|
|
|
79
79
|
pluginOptions := readTypiaPluginOptions(cwd, *tsconfigPath)
|
|
80
80
|
transformOptions := pluginOptions.TransformOptions()
|
|
81
81
|
extras := nativecontext.ITypiaContext_Extras{
|
|
82
|
-
AddDiagnostic: func(diag *
|
|
83
|
-
transformDiags = append(transformDiags,
|
|
82
|
+
AddDiagnostic: func(diag *nativecontext.ITypiaDiagnostic) int {
|
|
83
|
+
transformDiags = append(transformDiags, typiaTransformDiagnosticFrom(diag))
|
|
84
84
|
return len(transformDiags)
|
|
85
85
|
},
|
|
86
86
|
}
|
|
@@ -151,17 +151,6 @@ type typiaTransformDiagnostic struct {
|
|
|
151
151
|
Message string
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
func (d typiaTransformDiagnostic) String(cwd string) string {
|
|
155
|
-
file := d.File
|
|
156
|
-
if rel, err := filepath.Rel(cwd, file); err == nil {
|
|
157
|
-
file = rel
|
|
158
|
-
}
|
|
159
|
-
if d.Line > 0 {
|
|
160
|
-
return fmt.Sprintf("%s:%d:%d - error TS(%s): %s", file, d.Line, d.Column, d.Code, d.Message)
|
|
161
|
-
}
|
|
162
|
-
return fmt.Sprintf("%s - error TS(%s): %s", file, d.Code, d.Message)
|
|
163
|
-
}
|
|
164
|
-
|
|
165
154
|
func writeTypiaTransformDiagnostics(out io.Writer, diagnostics []typiaTransformDiagnostic, cwd string) {
|
|
166
155
|
for _, diag := range diagnostics {
|
|
167
156
|
fmt.Fprintln(out, diag.String(cwd))
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
package main
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"fmt"
|
|
5
|
+
"path/filepath"
|
|
6
|
+
|
|
7
|
+
shimscanner "github.com/microsoft/typescript-go/shim/scanner"
|
|
8
|
+
nativecontext "github.com/samchon/typia/packages/typia/native/core/context"
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
const typiaTransformDiagnosticFallbackMessage = "typia transform error"
|
|
12
|
+
|
|
13
|
+
func typiaTransformDiagnosticFrom(diag *nativecontext.ITypiaDiagnostic) typiaTransformDiagnostic {
|
|
14
|
+
out := typiaTransformDiagnostic{Message: typiaTransformDiagnosticFallbackMessage}
|
|
15
|
+
if diag == nil {
|
|
16
|
+
return out
|
|
17
|
+
}
|
|
18
|
+
if diag.Code != "" {
|
|
19
|
+
out.Code = diag.Code
|
|
20
|
+
}
|
|
21
|
+
if diag.Message != "" {
|
|
22
|
+
out.Message = diag.Message
|
|
23
|
+
}
|
|
24
|
+
if diag.File != nil {
|
|
25
|
+
out.File = diag.File.FileName()
|
|
26
|
+
if diag.Start != nil && *diag.Start >= 0 {
|
|
27
|
+
line, column := shimscanner.GetECMALineAndByteOffsetOfPosition(diag.File, *diag.Start)
|
|
28
|
+
out.Line = line + 1
|
|
29
|
+
out.Column = column + 1
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return out
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
func (d typiaTransformDiagnostic) String(cwd string) string {
|
|
36
|
+
code := d.Code
|
|
37
|
+
if code == "" {
|
|
38
|
+
code = "typia"
|
|
39
|
+
}
|
|
40
|
+
if d.File == "" {
|
|
41
|
+
return fmt.Sprintf("error TS(%s): %s", code, d.Message)
|
|
42
|
+
}
|
|
43
|
+
file := d.File
|
|
44
|
+
if rel, err := filepath.Rel(cwd, file); err == nil {
|
|
45
|
+
file = rel
|
|
46
|
+
}
|
|
47
|
+
if d.Line > 0 {
|
|
48
|
+
return fmt.Sprintf("%s:%d:%d - error TS(%s): %s", file, d.Line, d.Column, code, d.Message)
|
|
49
|
+
}
|
|
50
|
+
return fmt.Sprintf("%s - error TS(%s): %s", file, code, d.Message)
|
|
51
|
+
}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
package main
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"os"
|
|
5
|
+
"os/exec"
|
|
6
|
+
"path/filepath"
|
|
7
|
+
"testing"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
// TestIntersectionAllNeverUnionTransform pins the union-pruning soundness fix of
|
|
11
|
+
// issue #1967.
|
|
12
|
+
//
|
|
13
|
+
// TypeScript distributes `(a | b) & X` into `(a & X) | (b & X)`. When X is a
|
|
14
|
+
// real-data object and the bases are non-objects, every distributed member is an
|
|
15
|
+
// uninhabited intersection that `is_never` prunes away. The union then contributes
|
|
16
|
+
// no type bucket; left as an empty schema it would validate as accept-everything —
|
|
17
|
+
// the most dangerous possible outcome (a validator that passes any input).
|
|
18
|
+
//
|
|
19
|
+
// The fix marks such an all-pruned union not-required so it renders as `never`,
|
|
20
|
+
// rejecting every concrete value, exactly like a standalone `never` or the
|
|
21
|
+
// TypeScript-collapsed `string & number`. Crucially, a union where SOME member
|
|
22
|
+
// survives (narrowing a union down to its object member) is untouched: the
|
|
23
|
+
// surviving member contributes a bucket, so the pruning guard does not fire.
|
|
24
|
+
//
|
|
25
|
+
// 1. All-pruned unions reject every concrete value (never, not accept-everything).
|
|
26
|
+
// 2. A union narrowed to its surviving object member still validates that object.
|
|
27
|
+
func TestIntersectionAllNeverUnionTransform(t *testing.T) {
|
|
28
|
+
node, err := exec.LookPath("node")
|
|
29
|
+
if err != nil {
|
|
30
|
+
t.Skip("node executable not found")
|
|
31
|
+
}
|
|
32
|
+
root := ttscTypiaTestRepoRoot(t)
|
|
33
|
+
base := filepath.Join(root, "packages", "typia", "native", ".tmp-ttsc-typia-tests")
|
|
34
|
+
if err := os.MkdirAll(base, 0o755); err != nil {
|
|
35
|
+
t.Fatalf("mkdir temp base: %v", err)
|
|
36
|
+
}
|
|
37
|
+
dir, err := os.MkdirTemp(base, "all-never-union-")
|
|
38
|
+
if err != nil {
|
|
39
|
+
t.Fatalf("create temp fixture: %v", err)
|
|
40
|
+
}
|
|
41
|
+
t.Cleanup(func() { _ = os.RemoveAll(dir) })
|
|
42
|
+
src := filepath.Join(dir, "src")
|
|
43
|
+
if err := os.MkdirAll(src, 0o755); err != nil {
|
|
44
|
+
t.Fatalf("mkdir fixture src: %v", err)
|
|
45
|
+
}
|
|
46
|
+
if err := os.WriteFile(filepath.Join(dir, "tsconfig.json"), []byte(atomicIntersectionSchemaTSConfig), 0o644); err != nil {
|
|
47
|
+
t.Fatalf("write tsconfig: %v", err)
|
|
48
|
+
}
|
|
49
|
+
if err := os.WriteFile(filepath.Join(src, "main.ts"), []byte(intersectionAllNeverUnionSource), 0o644); err != nil {
|
|
50
|
+
t.Fatalf("write source: %v", err)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
out, errText, code := ttscTypiaTestCapture(func() int {
|
|
54
|
+
return runTransform([]string{
|
|
55
|
+
"--cwd", dir,
|
|
56
|
+
"--tsconfig", "tsconfig.json",
|
|
57
|
+
"--file", "src/main.ts",
|
|
58
|
+
"--output", "js",
|
|
59
|
+
})
|
|
60
|
+
})
|
|
61
|
+
if code != 0 {
|
|
62
|
+
t.Fatalf("all-never union transform failed: code=%d stderr=\n%s", code, errText)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
runtimeDir := filepath.Join(dir, "runtime")
|
|
66
|
+
if err := os.MkdirAll(runtimeDir, 0o755); err != nil {
|
|
67
|
+
t.Fatalf("mkdir runtime dir: %v", err)
|
|
68
|
+
}
|
|
69
|
+
ttscTypiaTestWriteCommonRuntimeStubs(t, runtimeDir)
|
|
70
|
+
runtimeJS := ttscTypiaTestRewriteCommonJS(t, out)
|
|
71
|
+
if err := os.WriteFile(filepath.Join(runtimeDir, "main.cjs"), []byte(runtimeJS), 0o644); err != nil {
|
|
72
|
+
t.Fatalf("write runtime module: %v", err)
|
|
73
|
+
}
|
|
74
|
+
runner := filepath.Join(runtimeDir, "run.cjs")
|
|
75
|
+
if err := os.WriteFile(runner, []byte(intersectionAllNeverUnionRunner), 0o644); err != nil {
|
|
76
|
+
t.Fatalf("write runtime runner: %v", err)
|
|
77
|
+
}
|
|
78
|
+
cmd := exec.Command(node, runner)
|
|
79
|
+
cmd.Dir = runtimeDir
|
|
80
|
+
output, err := cmd.CombinedOutput()
|
|
81
|
+
if err != nil {
|
|
82
|
+
t.Fatalf("all-never union runtime cases failed: %v\n%s", err, output)
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const intersectionAllNeverUnionSource = `import typia from "typia";
|
|
87
|
+
|
|
88
|
+
enum MyEnum { A = "a", B = "b" }
|
|
89
|
+
interface Foo { a: number }
|
|
90
|
+
interface Bar { b: number }
|
|
91
|
+
|
|
92
|
+
// Every distributed member is a non-object base & a real-data object — all pruned
|
|
93
|
+
// to never. The union must validate as never, never as accept-everything.
|
|
94
|
+
export const isEnumData = typia.createIs<MyEnum & { data: number }>();
|
|
95
|
+
export const isUnionData = typia.createIs<(string | number) & { data: number }>();
|
|
96
|
+
export const isUnionNested = typia.createIs<(string | number) & { nested: { a: string } }>();
|
|
97
|
+
export const isUnionMulti = typia.createIs<(string | number) & { a: string; b: number }>();
|
|
98
|
+
|
|
99
|
+
// A "decisive" reduce_union reduction that matches no member is also uninhabited.
|
|
100
|
+
// The constraint is decisive (a named/shareable object, or a primitive/native/
|
|
101
|
+
// array), unlike an inline object — that is the path with no member-write, which
|
|
102
|
+
// must render as never, not the default-required accept-everything.
|
|
103
|
+
export const isPrimNamed = typia.createIs<(string | number) & Foo>();
|
|
104
|
+
export const isObjPrim = typia.createIs<({ a: number } | { b: number }) & string>();
|
|
105
|
+
export const isNamedObjPrim = typia.createIs<(Foo | Bar) & string>();
|
|
106
|
+
export const isNamedObjArray = typia.createIs<(Foo | Bar) & number[]>();
|
|
107
|
+
|
|
108
|
+
// A union narrowed to its surviving object member keeps validating that object —
|
|
109
|
+
// the never-pruning guard must not fire when a member contributes a bucket.
|
|
110
|
+
export const isNarrowPrimitive = typia.createIs<(string | { a: number }) & { a: number }>();
|
|
111
|
+
export const isNarrowNumber = typia.createIs<(number | { a: number }) & { a: number }>();
|
|
112
|
+
|
|
113
|
+
// A nullary member (null / undefined) sets a flag without a bucket, so the union
|
|
114
|
+
// still reaches the all-pruned guard with empty size. The guard must NOT swallow
|
|
115
|
+
// it: 'null | never' is 'null' (accepts only null, rejects undefined); 'undefined
|
|
116
|
+
// | never' is 'undefined'; their combination accepts both — never accept-everything.
|
|
117
|
+
export const isNullNever = typia.createIs<null | (string & { data: number })>();
|
|
118
|
+
export const isUndefinedNever = typia.createIs<undefined | (string & { data: number })>();
|
|
119
|
+
export const isNullUndefinedNever = typia.createIs<null | undefined | (string & { data: number })>();
|
|
120
|
+
`
|
|
121
|
+
|
|
122
|
+
const intersectionAllNeverUnionRunner = `const mod = require("./main.cjs");
|
|
123
|
+
|
|
124
|
+
const check = (label, actual, expected) => {
|
|
125
|
+
if (actual !== expected) {
|
|
126
|
+
throw new Error(label + ": expected " + JSON.stringify(expected) + ", got " + JSON.stringify(actual));
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
// All-pruned unions reject every concrete value (never-render, not accept-everything).
|
|
131
|
+
const neverValidators = {
|
|
132
|
+
isEnumData: mod.isEnumData, isUnionData: mod.isUnionData,
|
|
133
|
+
isUnionNested: mod.isUnionNested, isUnionMulti: mod.isUnionMulti,
|
|
134
|
+
isPrimNamed: mod.isPrimNamed, isObjPrim: mod.isObjPrim,
|
|
135
|
+
isNamedObjPrim: mod.isNamedObjPrim, isNamedObjArray: mod.isNamedObjArray,
|
|
136
|
+
};
|
|
137
|
+
const samples = ["a", "b", 1, 0, true, false, null, {}, [], { data: 1 }, { a: "s", b: 1 }, "x"];
|
|
138
|
+
for (const [name, fn] of Object.entries(neverValidators)) {
|
|
139
|
+
for (const value of samples) {
|
|
140
|
+
check(name + "(" + JSON.stringify(value) + ")", fn(value), false);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// Narrowing a union to its object member still validates that object.
|
|
145
|
+
check("isNarrowPrimitive {a:1}", mod.isNarrowPrimitive({ a: 1 }), true);
|
|
146
|
+
check("isNarrowPrimitive 'x'", mod.isNarrowPrimitive("x"), false);
|
|
147
|
+
check("isNarrowPrimitive {a:'s'}", mod.isNarrowPrimitive({ a: "s" }), false);
|
|
148
|
+
check("isNarrowPrimitive {}", mod.isNarrowPrimitive({}), false);
|
|
149
|
+
check("isNarrowNumber {a:1}", mod.isNarrowNumber({ a: 1 }), true);
|
|
150
|
+
check("isNarrowNumber 5", mod.isNarrowNumber(5), false);
|
|
151
|
+
check("isNarrowNumber {a:'s'}", mod.isNarrowNumber({ a: "s" }), false);
|
|
152
|
+
|
|
153
|
+
// A nullary member must survive the all-pruned guard: null accepts only null,
|
|
154
|
+
// undefined only undefined — and neither accepts a concrete value or each other.
|
|
155
|
+
check("isNullNever null", mod.isNullNever(null), true);
|
|
156
|
+
check("isNullNever undefined", mod.isNullNever(undefined), false);
|
|
157
|
+
check("isNullNever 'x'", mod.isNullNever("x"), false);
|
|
158
|
+
check("isNullNever {data:1}", mod.isNullNever({ data: 1 }), false);
|
|
159
|
+
check("isUndefinedNever undefined", mod.isUndefinedNever(undefined), true);
|
|
160
|
+
check("isUndefinedNever null", mod.isUndefinedNever(null), false);
|
|
161
|
+
check("isUndefinedNever 'x'", mod.isUndefinedNever("x"), false);
|
|
162
|
+
check("isNullUndefinedNever null", mod.isNullUndefinedNever(null), true);
|
|
163
|
+
check("isNullUndefinedNever undefined", mod.isNullUndefinedNever(undefined), true);
|
|
164
|
+
check("isNullUndefinedNever 'x'", mod.isNullUndefinedNever("x"), false);
|
|
165
|
+
check("isNullUndefinedNever {data:1}", mod.isNullUndefinedNever({ data: 1 }), false);
|
|
166
|
+
|
|
167
|
+
console.log("ok");
|
|
168
|
+
`
|