From 0eefd45845b3e8bc8bc3b801348fa5738bbfee36 Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Fri, 4 Aug 2023 14:01:43 +0900 Subject: [PATCH] Fix #736 - bug of undefined `length` problem. Global variable `length` exists in DOM, and did a mistake to use the global variable `length` instead of using `String.length` property. --- package.json | 2 +- packages/typescript-json/package.json | 4 ++-- src/functional/$string.ts | 4 +++- .../issues/test_issue_long_string_stringify.ts | 14 ++++++++++++++ .../issues/test_issue_long_string_stringify.ts | 13 +++++++++++++ 5 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 test/features/issues/test_issue_long_string_stringify.ts create mode 100644 test/generated/output/issues/test_issue_long_string_stringify.ts diff --git a/package.json b/package.json index eea846eda7..647384b2a4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "typia", - "version": "4.1.15", + "version": "4.1.16", "description": "Superfast runtime validators with only one line", "main": "lib/index.js", "typings": "lib/index.d.ts", diff --git a/packages/typescript-json/package.json b/packages/typescript-json/package.json index 6b16e4bb8e..8c6905847c 100644 --- a/packages/typescript-json/package.json +++ b/packages/typescript-json/package.json @@ -1,6 +1,6 @@ { "name": "typescript-json", - "version": "4.1.15", + "version": "4.1.16", "description": "Superfast runtime validators with only one line", "main": "lib/index.js", "typings": "lib/index.d.ts", @@ -68,7 +68,7 @@ }, "homepage": "https://typia.io", "dependencies": { - "typia": "4.1.15" + "typia": "4.1.16" }, "peerDependencies": { "typescript": ">= 4.7.4" diff --git a/src/functional/$string.ts b/src/functional/$string.ts index d8d6bd37d3..0f70ebc44b 100644 --- a/src/functional/$string.ts +++ b/src/functional/$string.ts @@ -13,7 +13,9 @@ */ export const $string = (str: string): string => { if (STR_ESCAPE.test(str) === false) return `"${str}"`; - if (str.length > 41) return JSON.stringify(str); + + const length: number = str.length; + if (length > 41) return JSON.stringify(str); let result = ""; let last = -1; diff --git a/test/features/issues/test_issue_long_string_stringify.ts b/test/features/issues/test_issue_long_string_stringify.ts new file mode 100644 index 0000000000..10d3575783 --- /dev/null +++ b/test/features/issues/test_issue_long_string_stringify.ts @@ -0,0 +1,14 @@ +import typia from "typia"; + +import { RandomGenerator } from "typia/lib/utils/RandomGenerator"; + +export const test_issue_long_string_stringify = (): void => { + const str: string = RandomGenerator.string(1000); + const stringified: string = typia.stringify(str); + const decoded: string = JSON.parse(stringified); + + if (str !== decoded) + throw new Error( + `Bug on typia.stringify(): failed to stringify long string.`, + ); +}; diff --git a/test/generated/output/issues/test_issue_long_string_stringify.ts b/test/generated/output/issues/test_issue_long_string_stringify.ts new file mode 100644 index 0000000000..5ae941a7f2 --- /dev/null +++ b/test/generated/output/issues/test_issue_long_string_stringify.ts @@ -0,0 +1,13 @@ +import typia from "typia"; + +import { RandomGenerator } from "typia/lib/utils/RandomGenerator"; + +export const test_issue_long_string_stringify = (): void => { + const str: string = RandomGenerator.string(1000); + const stringified: string = typia.stringify(str); + const decoded: string = JSON.parse(stringified); + if (str !== decoded) + throw new Error( + `Bug on typia.stringify(): failed to stringify long string.`, + ); +};