@simplysm/core-common 13.0.100 → 14.0.4
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/README.md +86 -92
- package/dist/common.types.d.ts +14 -14
- package/dist/common.types.js +2 -1
- package/dist/common.types.js.map +1 -6
- package/dist/env.d.ts +8 -1
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +13 -9
- package/dist/env.js.map +1 -6
- package/dist/errors/argument-error.d.ts +10 -10
- package/dist/errors/argument-error.d.ts.map +1 -1
- package/dist/errors/argument-error.js +31 -14
- package/dist/errors/argument-error.js.map +1 -6
- package/dist/errors/not-implemented-error.d.ts +8 -8
- package/dist/errors/not-implemented-error.js +30 -12
- package/dist/errors/not-implemented-error.js.map +1 -6
- package/dist/errors/sd-error.d.ts +10 -10
- package/dist/errors/sd-error.d.ts.map +1 -1
- package/dist/errors/sd-error.js +45 -24
- package/dist/errors/sd-error.js.map +1 -6
- package/dist/errors/timeout-error.d.ts +10 -10
- package/dist/errors/timeout-error.js +34 -15
- package/dist/errors/timeout-error.js.map +1 -6
- package/dist/extensions/arr-ext.d.ts +2 -2
- package/dist/extensions/arr-ext.helpers.d.ts +10 -10
- package/dist/extensions/arr-ext.helpers.js +112 -89
- package/dist/extensions/arr-ext.helpers.js.map +1 -6
- package/dist/extensions/arr-ext.js +458 -422
- package/dist/extensions/arr-ext.js.map +1 -6
- package/dist/extensions/arr-ext.types.d.ts +57 -57
- package/dist/extensions/arr-ext.types.d.ts.map +1 -1
- package/dist/extensions/arr-ext.types.js +6 -1
- package/dist/extensions/arr-ext.types.js.map +1 -6
- package/dist/extensions/map-ext.d.ts +16 -16
- package/dist/extensions/map-ext.js +27 -22
- package/dist/extensions/map-ext.js.map +1 -6
- package/dist/extensions/set-ext.d.ts +11 -11
- package/dist/extensions/set-ext.js +32 -25
- package/dist/extensions/set-ext.js.map +1 -6
- package/dist/features/debounce-queue.d.ts +17 -17
- package/dist/features/debounce-queue.js +98 -70
- package/dist/features/debounce-queue.js.map +1 -6
- package/dist/features/event-emitter.d.ts +20 -20
- package/dist/features/event-emitter.js +101 -78
- package/dist/features/event-emitter.js.map +1 -6
- package/dist/features/serial-queue.d.ts +11 -11
- package/dist/features/serial-queue.js +78 -57
- package/dist/features/serial-queue.js.map +1 -6
- package/dist/globals.d.ts +4 -4
- package/dist/globals.js +9 -1
- package/dist/globals.js.map +1 -6
- package/dist/index.js +28 -27
- package/dist/index.js.map +1 -6
- package/dist/types/date-only.d.ts +64 -64
- package/dist/types/date-only.d.ts.map +1 -1
- package/dist/types/date-only.js +263 -252
- package/dist/types/date-only.js.map +1 -6
- package/dist/types/date-time.d.ts +36 -36
- package/dist/types/date-time.d.ts.map +1 -1
- package/dist/types/date-time.js +196 -288
- package/dist/types/date-time.js.map +1 -6
- package/dist/types/lazy-gc-map.d.ts +26 -26
- package/dist/types/lazy-gc-map.d.ts.map +1 -1
- package/dist/types/lazy-gc-map.js +202 -159
- package/dist/types/lazy-gc-map.js.map +1 -6
- package/dist/types/time.d.ts +23 -23
- package/dist/types/time.d.ts.map +1 -1
- package/dist/types/time.js +169 -158
- package/dist/types/time.js.map +1 -6
- package/dist/types/uuid.d.ts +11 -11
- package/dist/types/uuid.d.ts.map +1 -1
- package/dist/types/uuid.js +95 -70
- package/dist/types/uuid.js.map +1 -6
- package/dist/utils/bytes.d.ts +17 -17
- package/dist/utils/bytes.js +137 -81
- package/dist/utils/bytes.js.map +1 -6
- package/dist/utils/date-format.d.ts +40 -40
- package/dist/utils/date-format.js +187 -101
- package/dist/utils/date-format.js.map +1 -6
- package/dist/utils/error.d.ts +4 -4
- package/dist/utils/error.js +11 -6
- package/dist/utils/error.js.map +1 -6
- package/dist/utils/json.d.ts +19 -19
- package/dist/utils/json.js +187 -135
- package/dist/utils/json.js.map +1 -6
- package/dist/utils/num.d.ts +20 -20
- package/dist/utils/num.js +76 -34
- package/dist/utils/num.js.map +1 -6
- package/dist/utils/obj.d.ts +111 -111
- package/dist/utils/obj.d.ts.map +1 -1
- package/dist/utils/obj.js +706 -496
- package/dist/utils/obj.js.map +1 -6
- package/dist/utils/path.d.ts +10 -10
- package/dist/utils/path.js +35 -18
- package/dist/utils/path.js.map +1 -6
- package/dist/utils/primitive.d.ts +5 -5
- package/dist/utils/primitive.js +34 -14
- package/dist/utils/primitive.js.map +1 -6
- package/dist/utils/str.d.ts +38 -38
- package/dist/utils/str.js +217 -113
- package/dist/utils/str.js.map +1 -6
- package/dist/utils/template-strings.d.ts +26 -26
- package/dist/utils/template-strings.js +113 -40
- package/dist/utils/template-strings.js.map +1 -6
- package/dist/utils/transferable.d.ts +18 -18
- package/dist/utils/transferable.js +218 -151
- package/dist/utils/transferable.js.map +1 -6
- package/dist/utils/wait.d.ts +9 -9
- package/dist/utils/wait.js +30 -15
- package/dist/utils/wait.js.map +1 -6
- package/dist/utils/xml.d.ts +13 -13
- package/dist/utils/xml.js +84 -46
- package/dist/utils/xml.js.map +1 -6
- package/dist/utils/zip.d.ts +22 -22
- package/dist/utils/zip.js +172 -148
- package/dist/utils/zip.js.map +1 -6
- package/docs/array-extensions.md +430 -0
- package/docs/env.md +52 -0
- package/docs/errors.md +41 -56
- package/docs/features.md +82 -97
- package/docs/type-utilities.md +91 -0
- package/docs/types.md +221 -201
- package/docs/utils.md +319 -435
- package/package.json +7 -5
- package/src/common.types.ts +14 -14
- package/src/env.ts +12 -3
- package/src/errors/argument-error.ts +15 -15
- package/src/errors/not-implemented-error.ts +9 -9
- package/src/errors/sd-error.ts +12 -12
- package/src/errors/timeout-error.ts +12 -12
- package/src/extensions/arr-ext.helpers.ts +16 -16
- package/src/extensions/arr-ext.ts +35 -35
- package/src/extensions/arr-ext.types.ts +57 -57
- package/src/extensions/map-ext.ts +16 -16
- package/src/extensions/set-ext.ts +11 -11
- package/src/features/debounce-queue.ts +23 -23
- package/src/features/event-emitter.ts +25 -25
- package/src/features/serial-queue.ts +13 -13
- package/src/globals.ts +4 -4
- package/src/index.ts +5 -5
- package/src/types/date-only.ts +84 -83
- package/src/types/date-time.ts +43 -42
- package/src/types/lazy-gc-map.ts +44 -44
- package/src/types/time.ts +29 -29
- package/src/types/uuid.ts +15 -15
- package/src/utils/bytes.ts +35 -35
- package/src/utils/date-format.ts +59 -59
- package/src/utils/error.ts +4 -4
- package/src/utils/json.ts +41 -41
- package/src/utils/num.ts +20 -20
- package/src/utils/obj.ts +138 -138
- package/src/utils/path.ts +10 -10
- package/src/utils/primitive.ts +6 -6
- package/src/utils/str.ts +48 -48
- package/src/utils/template-strings.ts +29 -29
- package/src/utils/transferable.ts +38 -38
- package/src/utils/wait.ts +10 -10
- package/src/utils/xml.ts +19 -19
- package/src/utils/zip.ts +25 -25
- package/docs/extensions.md +0 -387
- package/tests/errors/errors.spec.ts +0 -80
- package/tests/extensions/array-extension.spec.ts +0 -654
- package/tests/extensions/map-extension.spec.ts +0 -117
- package/tests/extensions/set-extension.spec.ts +0 -67
- package/tests/types/date-only.spec.ts +0 -533
- package/tests/types/date-time.spec.ts +0 -246
- package/tests/types/lazy-gc-map.spec.ts +0 -606
- package/tests/types/time.spec.ts +0 -428
- package/tests/types/uuid.spec.ts +0 -74
- package/tests/utils/bytes-utils.spec.ts +0 -197
- package/tests/utils/date-format.spec.ts +0 -350
- package/tests/utils/debounce-queue.spec.ts +0 -226
- package/tests/utils/json.spec.ts +0 -400
- package/tests/utils/number.spec.ts +0 -136
- package/tests/utils/object.spec.ts +0 -810
- package/tests/utils/path.spec.ts +0 -70
- package/tests/utils/primitive.spec.ts +0 -43
- package/tests/utils/sd-event-emitter.spec.ts +0 -189
- package/tests/utils/serial-queue.spec.ts +0 -305
- package/tests/utils/string.spec.ts +0 -265
- package/tests/utils/template-strings.spec.ts +0 -48
- package/tests/utils/transferable.spec.ts +0 -639
- package/tests/utils/wait.spec.ts +0 -123
- package/tests/utils/xml.spec.ts +0 -146
- package/tests/utils/zip.spec.ts +0 -221
package/dist/utils/str.js
CHANGED
|
@@ -1,128 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 문자열 유틸리티 함수
|
|
3
|
+
*/
|
|
4
|
+
//#region 한국어 조사 처리
|
|
5
|
+
// 한국어 조사 매핑 테이블 (모듈 로드 시 한 번만 생성)
|
|
1
6
|
const suffixTable = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
을: { t: "을", f: "를" },
|
|
8
|
+
은: { t: "은", f: "는" },
|
|
9
|
+
이: { t: "이", f: "가" },
|
|
10
|
+
와: { t: "과", f: "와" },
|
|
11
|
+
랑: { t: "이랑", f: "랑" },
|
|
12
|
+
로: { t: "으로", f: "로" },
|
|
13
|
+
라: { t: "이라", f: "라" },
|
|
9
14
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
/**
|
|
16
|
+
* 받침 유무에 따라 적절한 한국어 조사 반환
|
|
17
|
+
* @param text 확인할 텍스트
|
|
18
|
+
* @param type 조사 타입
|
|
19
|
+
* - `"을"`: 을/를 (목적격 조사)
|
|
20
|
+
* - `"은"`: 은/는 (주격 보조사)
|
|
21
|
+
* - `"이"`: 이/가 (주격 조사)
|
|
22
|
+
* - `"와"`: 과/와 (접속 조사)
|
|
23
|
+
* - `"랑"`: 이랑/랑 (접속 조사)
|
|
24
|
+
* - `"로"`: 으로/로 (도구격 조사)
|
|
25
|
+
* - `"라"`: 이라/라 (서술격 조사)
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* getKoreanSuffix("Apple", "을") // "를"
|
|
29
|
+
* getKoreanSuffix("책", "이") // "이"
|
|
30
|
+
*/
|
|
31
|
+
export function getKoreanSuffix(text, type) {
|
|
32
|
+
const table = suffixTable;
|
|
33
|
+
if (text.length === 0) {
|
|
34
|
+
return table[type].f;
|
|
35
|
+
}
|
|
36
|
+
const lastCharCode = text.charCodeAt(text.length - 1);
|
|
37
|
+
// 한글 범위 확인 (0xAC00 ~ 0xD7A3)
|
|
38
|
+
if (lastCharCode < 0xac00 || lastCharCode > 0xd7a3) {
|
|
39
|
+
return table[type].f;
|
|
40
|
+
}
|
|
41
|
+
// 받침(종성) 존재 여부 판단
|
|
42
|
+
const jongseongIndex = (lastCharCode - 0xac00) % 28;
|
|
43
|
+
const hasLast = jongseongIndex !== 0;
|
|
44
|
+
// "로" 조사 특수 처리: 받침이 ㄹ (종성 인덱스 8)이면 "로" 사용
|
|
45
|
+
if (type === "로" && jongseongIndex === 8) {
|
|
46
|
+
return table[type].f;
|
|
47
|
+
}
|
|
48
|
+
return hasLast ? table[type].t : table[type].f;
|
|
25
49
|
}
|
|
50
|
+
//#endregion
|
|
51
|
+
//#region 전각 → 반각 변환
|
|
52
|
+
// 전각 → 반각 매핑 테이블 (모듈 로드 시 한 번만 생성)
|
|
26
53
|
const fullWidthCharMap = {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
54
|
+
"A": "A",
|
|
55
|
+
"B": "B",
|
|
56
|
+
"C": "C",
|
|
57
|
+
"D": "D",
|
|
58
|
+
"E": "E",
|
|
59
|
+
"F": "F",
|
|
60
|
+
"G": "G",
|
|
61
|
+
"H": "H",
|
|
62
|
+
"I": "I",
|
|
63
|
+
"J": "J",
|
|
64
|
+
"K": "K",
|
|
65
|
+
"L": "L",
|
|
66
|
+
"M": "M",
|
|
67
|
+
"N": "N",
|
|
68
|
+
"O": "O",
|
|
69
|
+
"P": "P",
|
|
70
|
+
"Q": "Q",
|
|
71
|
+
"R": "R",
|
|
72
|
+
"S": "S",
|
|
73
|
+
"T": "T",
|
|
74
|
+
"U": "U",
|
|
75
|
+
"V": "V",
|
|
76
|
+
"W": "W",
|
|
77
|
+
"X": "X",
|
|
78
|
+
"Y": "Y",
|
|
79
|
+
"Z": "Z",
|
|
80
|
+
"a": "a",
|
|
81
|
+
"b": "b",
|
|
82
|
+
"c": "c",
|
|
83
|
+
"d": "d",
|
|
84
|
+
"e": "e",
|
|
85
|
+
"f": "f",
|
|
86
|
+
"g": "g",
|
|
87
|
+
"h": "h",
|
|
88
|
+
"i": "i",
|
|
89
|
+
"j": "j",
|
|
90
|
+
"k": "k",
|
|
91
|
+
"l": "l",
|
|
92
|
+
"m": "m",
|
|
93
|
+
"n": "n",
|
|
94
|
+
"o": "o",
|
|
95
|
+
"p": "p",
|
|
96
|
+
"q": "q",
|
|
97
|
+
"r": "r",
|
|
98
|
+
"s": "s",
|
|
99
|
+
"t": "t",
|
|
100
|
+
"u": "u",
|
|
101
|
+
"v": "v",
|
|
102
|
+
"w": "w",
|
|
103
|
+
"x": "x",
|
|
104
|
+
"y": "y",
|
|
105
|
+
"z": "z",
|
|
106
|
+
"0": "0",
|
|
107
|
+
"1": "1",
|
|
108
|
+
"2": "2",
|
|
109
|
+
"3": "3",
|
|
110
|
+
"4": "4",
|
|
111
|
+
"5": "5",
|
|
112
|
+
"6": "6",
|
|
113
|
+
"7": "7",
|
|
114
|
+
"8": "8",
|
|
115
|
+
"9": "9",
|
|
116
|
+
" ": " ",
|
|
117
|
+
")": ")",
|
|
118
|
+
"(": "(",
|
|
92
119
|
};
|
|
120
|
+
// 정규식도 한 번만 생성
|
|
93
121
|
const fullWidthCharRegex = new RegExp(`[${Object.keys(fullWidthCharMap).join("")}]`, "g");
|
|
94
|
-
|
|
95
|
-
|
|
122
|
+
/**
|
|
123
|
+
* 전각 문자를 반각 문자로 변환
|
|
124
|
+
*
|
|
125
|
+
* 변환 대상:
|
|
126
|
+
* - 전각 대문자 (A-Z → A-Z)
|
|
127
|
+
* - 전각 소문자 (a-z → a-z)
|
|
128
|
+
* - 전각 숫자 (0-9 → 0-9)
|
|
129
|
+
* - 전각 공백 ( → 일반 공백)
|
|
130
|
+
* - 전각 괄호 (() → ())
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* replaceFullWidth("A123") // "A123"
|
|
134
|
+
* replaceFullWidth("(株)") // "(株)"
|
|
135
|
+
*/
|
|
136
|
+
export function replaceFullWidth(str) {
|
|
137
|
+
return str.replace(fullWidthCharRegex, (char) => fullWidthCharMap[char] ?? char);
|
|
96
138
|
}
|
|
97
|
-
|
|
98
|
-
|
|
139
|
+
//#endregion
|
|
140
|
+
//#region 대소문자 변환
|
|
141
|
+
/**
|
|
142
|
+
* PascalCase로 변환
|
|
143
|
+
* @example "hello-world" → "HelloWorld"
|
|
144
|
+
* @example "hello_world" → "HelloWorld"
|
|
145
|
+
* @example "hello.world" → "HelloWorld"
|
|
146
|
+
*/
|
|
147
|
+
export function toPascalCase(str) {
|
|
148
|
+
return str
|
|
149
|
+
.replace(/[-._][a-z]/g, (m) => m[1].toUpperCase())
|
|
150
|
+
.replace(/^[a-z]/, (m) => m.toUpperCase());
|
|
99
151
|
}
|
|
100
|
-
|
|
101
|
-
|
|
152
|
+
/**
|
|
153
|
+
* camelCase로 변환
|
|
154
|
+
* @example "hello-world" → "helloWorld"
|
|
155
|
+
* @example "hello_world" → "helloWorld"
|
|
156
|
+
* @example "HelloWorld" → "helloWorld"
|
|
157
|
+
*/
|
|
158
|
+
export function toCamelCase(str) {
|
|
159
|
+
return str
|
|
160
|
+
.replace(/[-._][a-z]/g, (m) => m[1].toUpperCase())
|
|
161
|
+
.replace(/^[A-Z]/, (m) => m.toLowerCase());
|
|
102
162
|
}
|
|
103
|
-
|
|
104
|
-
|
|
163
|
+
/**
|
|
164
|
+
* kebab-case로 변환
|
|
165
|
+
*
|
|
166
|
+
* @example "HelloWorld" → "hello-world"
|
|
167
|
+
* @example "helloWorld" → "hello-world"
|
|
168
|
+
* @example "hello_world" → "hello_world" (소문자만이면 변환 없음)
|
|
169
|
+
* @example "Hello_World" → "hello-_world" (기존 구분자 유지)
|
|
170
|
+
* @example "Hello-World" → "hello--world" (기존 구분자 유지)
|
|
171
|
+
* @example "XMLParser" → "x-m-l-parser" (연속 대문자 분리)
|
|
172
|
+
*/
|
|
173
|
+
export function toKebabCase(str) {
|
|
174
|
+
return toCaseWithSeparator(str, "-");
|
|
105
175
|
}
|
|
106
|
-
|
|
107
|
-
|
|
176
|
+
/**
|
|
177
|
+
* snake_case로 변환
|
|
178
|
+
*
|
|
179
|
+
* @example "HelloWorld" → "hello_world"
|
|
180
|
+
* @example "helloWorld" → "hello_world"
|
|
181
|
+
* @example "hello-world" → "hello-world" (소문자만이면 변환 없음)
|
|
182
|
+
* @example "Hello-World" → "hello_-world" (기존 구분자 유지)
|
|
183
|
+
* @example "Hello_World" → "hello__world" (기존 구분자 유지)
|
|
184
|
+
* @example "XMLParser" → "x_m_l_parser" (연속 대문자 분리)
|
|
185
|
+
*/
|
|
186
|
+
export function toSnakeCase(str) {
|
|
187
|
+
return toCaseWithSeparator(str, "_");
|
|
108
188
|
}
|
|
109
189
|
function toCaseWithSeparator(str, separator) {
|
|
110
|
-
|
|
190
|
+
return str
|
|
191
|
+
.replace(/^[A-Z]/, (m) => m.toLowerCase())
|
|
192
|
+
.replace(/[-_]?[A-Z]/g, (m) => separator + m.toLowerCase());
|
|
111
193
|
}
|
|
112
|
-
|
|
113
|
-
|
|
194
|
+
//#endregion
|
|
195
|
+
//#region 기타
|
|
196
|
+
/**
|
|
197
|
+
* 문자열이 undefined 또는 빈 문자열인지 검사 (타입 가드)
|
|
198
|
+
*
|
|
199
|
+
* @param str 검사할 문자열
|
|
200
|
+
* @returns undefined, null, 또는 빈 문자열이면 true
|
|
201
|
+
*
|
|
202
|
+
* @example
|
|
203
|
+
* const name: string | undefined = getValue();
|
|
204
|
+
* if (isNullOrEmpty(name)) {
|
|
205
|
+
* // name: "" | undefined
|
|
206
|
+
* console.log("Name is empty");
|
|
207
|
+
* } else {
|
|
208
|
+
* // name: string (non-empty string)
|
|
209
|
+
* console.log(`Name: ${name}`);
|
|
210
|
+
* }
|
|
211
|
+
*/
|
|
212
|
+
export function isNullOrEmpty(str) {
|
|
213
|
+
return str == null || str === "";
|
|
114
214
|
}
|
|
115
|
-
|
|
116
|
-
|
|
215
|
+
/**
|
|
216
|
+
* 특정 위치에 문자열 삽입
|
|
217
|
+
*
|
|
218
|
+
* @param str 원본 문자열
|
|
219
|
+
* @param index 삽입할 위치 (0부터 시작)
|
|
220
|
+
* @param insertString 삽입할 문자열
|
|
221
|
+
* @returns 삽입이 적용된 새 문자열
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* insert("Hello World", 5, ","); // "Hello, World"
|
|
225
|
+
* insert("abc", 0, "X"); // "Xabc"
|
|
226
|
+
* insert("abc", 3, "X"); // "abcX"
|
|
227
|
+
*/
|
|
228
|
+
export function insert(str, index, insertString) {
|
|
229
|
+
return str.substring(0, index) + insertString + str.substring(index);
|
|
117
230
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
insert,
|
|
121
|
-
isNullOrEmpty,
|
|
122
|
-
replaceFullWidth,
|
|
123
|
-
toCamelCase,
|
|
124
|
-
toKebabCase,
|
|
125
|
-
toPascalCase,
|
|
126
|
-
toSnakeCase
|
|
127
|
-
};
|
|
128
|
-
//# sourceMappingURL=str.js.map
|
|
231
|
+
//#endregion
|
|
232
|
+
//# sourceMappingURL=str.js.map
|
package/dist/utils/str.js.map
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/str.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"str.js","sourceRoot":"","sources":["../../src/utils/str.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* 템플릿 문자열 태그 함수
|
|
3
|
+
* IDE 코드 하이라이팅 지원용 (실제 동작은 문자열 결합 + 들여쓰기 정규화)
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
* @param strings
|
|
8
|
-
* @param values
|
|
9
|
-
* @returns
|
|
6
|
+
* JavaScript 코드 하이라이팅용 템플릿 태그
|
|
7
|
+
* @param strings 템플릿 문자열 배열
|
|
8
|
+
* @param values 보간된 값들
|
|
9
|
+
* @returns 들여쓰기가 정규화된 문자열
|
|
10
10
|
* @example
|
|
11
11
|
* const code = js`
|
|
12
12
|
* function hello() {
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
*/
|
|
17
17
|
export declare function js(strings: TemplateStringsArray, ...values: unknown[]): string;
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
20
|
-
* @param strings
|
|
21
|
-
* @param values
|
|
22
|
-
* @returns
|
|
19
|
+
* TypeScript 코드 하이라이팅용 템플릿 태그
|
|
20
|
+
* @param strings 템플릿 문자열 배열
|
|
21
|
+
* @param values 보간된 값들
|
|
22
|
+
* @returns 들여쓰기가 정규화된 문자열
|
|
23
23
|
* @example
|
|
24
24
|
* const code = ts`
|
|
25
25
|
* interface User {
|
|
@@ -30,10 +30,10 @@ export declare function js(strings: TemplateStringsArray, ...values: unknown[]):
|
|
|
30
30
|
*/
|
|
31
31
|
export declare function ts(strings: TemplateStringsArray, ...values: unknown[]): string;
|
|
32
32
|
/**
|
|
33
|
-
*
|
|
34
|
-
* @param strings
|
|
35
|
-
* @param values
|
|
36
|
-
* @returns
|
|
33
|
+
* HTML 마크업 하이라이팅용 템플릿 태그
|
|
34
|
+
* @param strings 템플릿 문자열 배열
|
|
35
|
+
* @param values 보간된 값들
|
|
36
|
+
* @returns 들여쓰기가 정규화된 문자열
|
|
37
37
|
* @example
|
|
38
38
|
* const markup = html`
|
|
39
39
|
* <div class="container">
|
|
@@ -43,10 +43,10 @@ export declare function ts(strings: TemplateStringsArray, ...values: unknown[]):
|
|
|
43
43
|
*/
|
|
44
44
|
export declare function html(strings: TemplateStringsArray, ...values: unknown[]): string;
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
47
|
-
* @param strings
|
|
48
|
-
* @param values
|
|
49
|
-
* @returns
|
|
46
|
+
* MSSQL T-SQL 하이라이팅용 템플릿 태그
|
|
47
|
+
* @param strings 템플릿 문자열 배열
|
|
48
|
+
* @param values 보간된 값들
|
|
49
|
+
* @returns 들여쓰기가 정규화된 문자열
|
|
50
50
|
* @example
|
|
51
51
|
* const query = tsql`
|
|
52
52
|
* SELECT TOP 10 *
|
|
@@ -56,10 +56,10 @@ export declare function html(strings: TemplateStringsArray, ...values: unknown[]
|
|
|
56
56
|
*/
|
|
57
57
|
export declare function tsql(strings: TemplateStringsArray, ...values: unknown[]): string;
|
|
58
58
|
/**
|
|
59
|
-
*
|
|
60
|
-
* @param strings
|
|
61
|
-
* @param values
|
|
62
|
-
* @returns
|
|
59
|
+
* MySQL SQL 하이라이팅용 템플릿 태그
|
|
60
|
+
* @param strings 템플릿 문자열 배열
|
|
61
|
+
* @param values 보간된 값들
|
|
62
|
+
* @returns 들여쓰기가 정규화된 문자열
|
|
63
63
|
* @example
|
|
64
64
|
* const query = mysql`
|
|
65
65
|
* SELECT *
|
|
@@ -69,10 +69,10 @@ export declare function tsql(strings: TemplateStringsArray, ...values: unknown[]
|
|
|
69
69
|
*/
|
|
70
70
|
export declare function mysql(strings: TemplateStringsArray, ...values: unknown[]): string;
|
|
71
71
|
/**
|
|
72
|
-
*
|
|
73
|
-
* @param strings
|
|
74
|
-
* @param values
|
|
75
|
-
* @returns
|
|
72
|
+
* PostgreSQL SQL 하이라이팅용 템플릿 태그
|
|
73
|
+
* @param strings 템플릿 문자열 배열
|
|
74
|
+
* @param values 보간된 값들
|
|
75
|
+
* @returns 들여쓰기가 정규화된 문자열
|
|
76
76
|
* @example
|
|
77
77
|
* const query = pgsql`
|
|
78
78
|
* SELECT *
|
|
@@ -1,49 +1,122 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* 템플릿 문자열 태그 함수
|
|
3
|
+
* IDE 코드 하이라이팅 지원용 (실제 동작은 문자열 결합 + 들여쓰기 정규화)
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* JavaScript 코드 하이라이팅용 템플릿 태그
|
|
7
|
+
* @param strings 템플릿 문자열 배열
|
|
8
|
+
* @param values 보간된 값들
|
|
9
|
+
* @returns 들여쓰기가 정규화된 문자열
|
|
10
|
+
* @example
|
|
11
|
+
* const code = js`
|
|
12
|
+
* function hello() {
|
|
13
|
+
* return "world";
|
|
14
|
+
* }
|
|
15
|
+
* `;
|
|
16
|
+
*/
|
|
17
|
+
export function js(strings, ...values) {
|
|
18
|
+
return _combine(strings, values);
|
|
3
19
|
}
|
|
4
|
-
|
|
5
|
-
|
|
20
|
+
/**
|
|
21
|
+
* TypeScript 코드 하이라이팅용 템플릿 태그
|
|
22
|
+
* @param strings 템플릿 문자열 배열
|
|
23
|
+
* @param values 보간된 값들
|
|
24
|
+
* @returns 들여쓰기가 정규화된 문자열
|
|
25
|
+
* @example
|
|
26
|
+
* const code = ts`
|
|
27
|
+
* interface User {
|
|
28
|
+
* name: string;
|
|
29
|
+
* age: number;
|
|
30
|
+
* }
|
|
31
|
+
* `;
|
|
32
|
+
*/
|
|
33
|
+
export function ts(strings, ...values) {
|
|
34
|
+
return _combine(strings, values);
|
|
6
35
|
}
|
|
7
|
-
|
|
8
|
-
|
|
36
|
+
/**
|
|
37
|
+
* HTML 마크업 하이라이팅용 템플릿 태그
|
|
38
|
+
* @param strings 템플릿 문자열 배열
|
|
39
|
+
* @param values 보간된 값들
|
|
40
|
+
* @returns 들여쓰기가 정규화된 문자열
|
|
41
|
+
* @example
|
|
42
|
+
* const markup = html`
|
|
43
|
+
* <div class="container">
|
|
44
|
+
* <span>${name}</span>
|
|
45
|
+
* </div>
|
|
46
|
+
* `;
|
|
47
|
+
*/
|
|
48
|
+
export function html(strings, ...values) {
|
|
49
|
+
return _combine(strings, values);
|
|
9
50
|
}
|
|
10
|
-
|
|
11
|
-
|
|
51
|
+
/**
|
|
52
|
+
* MSSQL T-SQL 하이라이팅용 템플릿 태그
|
|
53
|
+
* @param strings 템플릿 문자열 배열
|
|
54
|
+
* @param values 보간된 값들
|
|
55
|
+
* @returns 들여쓰기가 정규화된 문자열
|
|
56
|
+
* @example
|
|
57
|
+
* const query = tsql`
|
|
58
|
+
* SELECT TOP 10 *
|
|
59
|
+
* FROM Users
|
|
60
|
+
* WHERE Name LIKE '%${keyword}%'
|
|
61
|
+
* `;
|
|
62
|
+
*/
|
|
63
|
+
export function tsql(strings, ...values) {
|
|
64
|
+
return _combine(strings, values);
|
|
12
65
|
}
|
|
13
|
-
|
|
14
|
-
|
|
66
|
+
/**
|
|
67
|
+
* MySQL SQL 하이라이팅용 템플릿 태그
|
|
68
|
+
* @param strings 템플릿 문자열 배열
|
|
69
|
+
* @param values 보간된 값들
|
|
70
|
+
* @returns 들여쓰기가 정규화된 문자열
|
|
71
|
+
* @example
|
|
72
|
+
* const query = mysql`
|
|
73
|
+
* SELECT *
|
|
74
|
+
* FROM users
|
|
75
|
+
* LIMIT 10
|
|
76
|
+
* `;
|
|
77
|
+
*/
|
|
78
|
+
export function mysql(strings, ...values) {
|
|
79
|
+
return _combine(strings, values);
|
|
15
80
|
}
|
|
16
|
-
|
|
17
|
-
|
|
81
|
+
/**
|
|
82
|
+
* PostgreSQL SQL 하이라이팅용 템플릿 태그
|
|
83
|
+
* @param strings 템플릿 문자열 배열
|
|
84
|
+
* @param values 보간된 값들
|
|
85
|
+
* @returns 들여쓰기가 정규화된 문자열
|
|
86
|
+
* @example
|
|
87
|
+
* const query = pgsql`
|
|
88
|
+
* SELECT *
|
|
89
|
+
* FROM users
|
|
90
|
+
* OFFSET 0 LIMIT 10
|
|
91
|
+
* `;
|
|
92
|
+
*/
|
|
93
|
+
export function pgsql(strings, ...values) {
|
|
94
|
+
return _combine(strings, values);
|
|
18
95
|
}
|
|
19
96
|
function _combine(strings, values) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
97
|
+
const raw = strings.reduce((result, str, i) => {
|
|
98
|
+
const value = values[i] !== undefined ? String(values[i]) : "";
|
|
99
|
+
return result + str + value;
|
|
100
|
+
}, "");
|
|
101
|
+
return _trimIndent(raw);
|
|
25
102
|
}
|
|
26
103
|
function _trimIndent(text) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
lines.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
lines.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
ts,
|
|
47
|
-
tsql
|
|
48
|
-
};
|
|
49
|
-
//# sourceMappingURL=template-strings.js.map
|
|
104
|
+
const lines = text.split("\n");
|
|
105
|
+
// 앞뒤 빈 줄 제거 (연속된 빈 줄 모두 제거)
|
|
106
|
+
while (lines.length > 0 && lines[0].trim() === "") {
|
|
107
|
+
lines.shift();
|
|
108
|
+
}
|
|
109
|
+
while (lines.length > 0 && lines[lines.length - 1].trim() === "") {
|
|
110
|
+
lines.pop();
|
|
111
|
+
}
|
|
112
|
+
// 최소 들여쓰기 계산
|
|
113
|
+
const minIndent = lines
|
|
114
|
+
.filter((line) => line.trim() !== "")
|
|
115
|
+
.reduce((min, line) => {
|
|
116
|
+
const indent = line.match(/^ */)?.[0].length ?? 0;
|
|
117
|
+
return Math.min(min, indent);
|
|
118
|
+
}, Infinity);
|
|
119
|
+
// 들여쓰기 제거
|
|
120
|
+
return lines.map((line) => (line.trim() === "" ? "" : line.slice(minIndent))).join("\n");
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=template-strings.js.map
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/template-strings.ts"],
|
|
4
|
-
"mappings": "AAiBO,SAAS,GAAG,YAAkC,QAA2B;AAC9E,SAAO,SAAS,SAAS,MAAM;AACjC;AAeO,SAAS,GAAG,YAAkC,QAA2B;AAC9E,SAAO,SAAS,SAAS,MAAM;AACjC;AAcO,SAAS,KAAK,YAAkC,QAA2B;AAChF,SAAO,SAAS,SAAS,MAAM;AACjC;AAcO,SAAS,KAAK,YAAkC,QAA2B;AAChF,SAAO,SAAS,SAAS,MAAM;AACjC;AAcO,SAAS,MAAM,YAAkC,QAA2B;AACjF,SAAO,SAAS,SAAS,MAAM;AACjC;AAcO,SAAS,MAAM,YAAkC,QAA2B;AACjF,SAAO,SAAS,SAAS,MAAM;AACjC;AAEA,SAAS,SAAS,SAA+B,QAA2B;AAC1E,QAAM,MAAM,QAAQ,OAAO,CAAC,QAAQ,KAAK,MAAM;AAC7C,UAAM,QAAQ,OAAO,CAAC,MAAM,SAAY,OAAO,OAAO,CAAC,CAAC,IAAI;AAC5D,WAAO,SAAS,MAAM;AAAA,EACxB,GAAG,EAAE;AACL,SAAO,YAAY,GAAG;AACxB;AAEA,SAAS,YAAY,MAAsB;AACzC,QAAM,QAAQ,KAAK,MAAM,IAAI;AAG7B,SAAO,MAAM,SAAS,KAAK,MAAM,CAAC,EAAE,KAAK,MAAM,IAAI;AACjD,UAAM,MAAM;AAAA,EACd;AACA,SAAO,MAAM,SAAS,KAAK,MAAM,MAAM,SAAS,CAAC,EAAE,KAAK,MAAM,IAAI;AAChE,UAAM,IAAI;AAAA,EACZ;AAGA,QAAM,YAAY,MACf,OAAO,CAAC,SAAS,KAAK,KAAK,MAAM,EAAE,EACnC,OAAO,CAAC,KAAK,SAAS;AA5H3B;AA6HM,UAAM,WAAS,UAAK,MAAM,KAAK,MAAhB,mBAAoB,GAAG,WAAU;AAChD,WAAO,KAAK,IAAI,KAAK,MAAM;AAAA,EAC7B,GAAG,QAAQ;AAGb,SAAO,MAAM,IAAI,CAAC,SAAU,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,MAAM,SAAS,CAAE,EAAE,KAAK,IAAI;AACzF;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"template-strings.js","sourceRoot":"","sources":["../../src/utils/template-strings.ts"],"names":[],"mappings":"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"}
|