@no-k/hermes 0.1.0

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.
Files changed (234) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +88 -0
  3. package/bin/hermes.mjs +159 -0
  4. package/catalog.json +1084 -0
  5. package/lib/catalog.mjs +51 -0
  6. package/package.json +28 -0
  7. package/templates/algorithm/geometry/ccw/ccw.ts +25 -0
  8. package/templates/algorithm/geometry/ccw/index.ts +1 -0
  9. package/templates/algorithm/geometry/convex-hull/convex-hull.ts +43 -0
  10. package/templates/algorithm/geometry/convex-hull/index.ts +1 -0
  11. package/templates/algorithm/geometry/polygon-area/index.ts +1 -0
  12. package/templates/algorithm/geometry/polygon-area/polygon-area.ts +13 -0
  13. package/templates/algorithm/graph/bellman-ford/bellman-ford.ts +46 -0
  14. package/templates/algorithm/graph/bellman-ford/index.ts +1 -0
  15. package/templates/algorithm/graph/bfs/bfs.ts +21 -0
  16. package/templates/algorithm/graph/bfs/index.ts +1 -0
  17. package/templates/algorithm/graph/dfs/dfs.ts +22 -0
  18. package/templates/algorithm/graph/dfs/index.ts +1 -0
  19. package/templates/algorithm/graph/dijkstra/dijkstra.ts +37 -0
  20. package/templates/algorithm/graph/dijkstra/index.ts +1 -0
  21. package/templates/algorithm/graph/floyd-warshall/floyd-warshall.ts +17 -0
  22. package/templates/algorithm/graph/floyd-warshall/index.ts +1 -0
  23. package/templates/algorithm/graph/kruskal/index.ts +1 -0
  24. package/templates/algorithm/graph/kruskal/kruskal.ts +29 -0
  25. package/templates/algorithm/graph/prim/index.ts +1 -0
  26. package/templates/algorithm/graph/prim/prim.ts +44 -0
  27. package/templates/algorithm/graph/topology-sort/index.ts +1 -0
  28. package/templates/algorithm/graph/topology-sort/topology-sort.ts +31 -0
  29. package/templates/algorithm/search/binary-search/binary-search.ts +74 -0
  30. package/templates/algorithm/search/binary-search/index.ts +1 -0
  31. package/templates/algorithm/string/kmp/index.ts +1 -0
  32. package/templates/algorithm/string/kmp/kmp.ts +46 -0
  33. package/templates/algorithm/string/z-algorithm/index.ts +1 -0
  34. package/templates/algorithm/string/z-algorithm/z-algorithm.ts +41 -0
  35. package/templates/algorithm/tree/avl-tree/avl-tree.ts +197 -0
  36. package/templates/algorithm/tree/avl-tree/index.ts +1 -0
  37. package/templates/algorithm/tree/binary-search-tree/binary-search-tree.ts +144 -0
  38. package/templates/algorithm/tree/binary-search-tree/index.ts +1 -0
  39. package/templates/algorithm/tree/lca/index.ts +1 -0
  40. package/templates/algorithm/tree/lca/lca.ts +119 -0
  41. package/templates/array/chunk/chunk.ts +13 -0
  42. package/templates/array/chunk/index.ts +1 -0
  43. package/templates/array/compact/compact.ts +8 -0
  44. package/templates/array/compact/index.ts +1 -0
  45. package/templates/array/count-by/count-by.ts +12 -0
  46. package/templates/array/count-by/index.ts +1 -0
  47. package/templates/array/difference/difference.ts +6 -0
  48. package/templates/array/difference/index.ts +1 -0
  49. package/templates/array/drop/drop.ts +7 -0
  50. package/templates/array/drop/index.ts +1 -0
  51. package/templates/array/group-by/group-by.ts +18 -0
  52. package/templates/array/group-by/index.ts +1 -0
  53. package/templates/array/intersection/index.ts +1 -0
  54. package/templates/array/intersection/intersection.ts +15 -0
  55. package/templates/array/key-by/index.ts +1 -0
  56. package/templates/array/key-by/key-by.ts +11 -0
  57. package/templates/array/max-by/index.ts +1 -0
  58. package/templates/array/max-by/max-by.ts +20 -0
  59. package/templates/array/min-by/index.ts +1 -0
  60. package/templates/array/min-by/min-by.ts +20 -0
  61. package/templates/array/partition/index.ts +1 -0
  62. package/templates/array/partition/partition.ts +16 -0
  63. package/templates/array/range/index.ts +1 -0
  64. package/templates/array/range/range.ts +22 -0
  65. package/templates/array/sample/index.ts +1 -0
  66. package/templates/array/sample/sample.ts +10 -0
  67. package/templates/array/shuffle/index.ts +1 -0
  68. package/templates/array/shuffle/shuffle.ts +15 -0
  69. package/templates/array/sort-by/index.ts +1 -0
  70. package/templates/array/sort-by/sort-by.ts +32 -0
  71. package/templates/array/sum-by/index.ts +1 -0
  72. package/templates/array/sum-by/sum-by.ts +9 -0
  73. package/templates/array/take/index.ts +1 -0
  74. package/templates/array/take/take.ts +7 -0
  75. package/templates/array/union/index.ts +1 -0
  76. package/templates/array/union/union.ts +5 -0
  77. package/templates/array/unique/index.ts +1 -0
  78. package/templates/array/unique/unique.ts +5 -0
  79. package/templates/array/unique-by/index.ts +1 -0
  80. package/templates/array/unique-by/unique-by.ts +19 -0
  81. package/templates/array/windowed/index.ts +1 -0
  82. package/templates/array/windowed/windowed.ts +15 -0
  83. package/templates/array/zip/index.ts +1 -0
  84. package/templates/array/zip/zip.ts +11 -0
  85. package/templates/boolean/parse-boolean/index.ts +1 -0
  86. package/templates/boolean/parse-boolean/parse-boolean.ts +17 -0
  87. package/templates/boolean/toggle/index.ts +1 -0
  88. package/templates/boolean/toggle/toggle.ts +2 -0
  89. package/templates/boolean/xor/index.ts +1 -0
  90. package/templates/boolean/xor/xor.ts +2 -0
  91. package/templates/data-structure/deque/deque.ts +79 -0
  92. package/templates/data-structure/deque/index.ts +1 -0
  93. package/templates/data-structure/fenwick-tree/fenwick-tree.ts +76 -0
  94. package/templates/data-structure/fenwick-tree/index.ts +1 -0
  95. package/templates/data-structure/heap/heap.ts +88 -0
  96. package/templates/data-structure/heap/index.ts +3 -0
  97. package/templates/data-structure/heap/max-heap.ts +7 -0
  98. package/templates/data-structure/heap/min-heap.ts +7 -0
  99. package/templates/data-structure/priority-queue/index.ts +1 -0
  100. package/templates/data-structure/priority-queue/priority-queue.ts +44 -0
  101. package/templates/data-structure/queue/index.ts +1 -0
  102. package/templates/data-structure/queue/queue.ts +66 -0
  103. package/templates/data-structure/segment-tree/index.ts +1 -0
  104. package/templates/data-structure/segment-tree/segment-tree.ts +79 -0
  105. package/templates/data-structure/trie/index.ts +1 -0
  106. package/templates/data-structure/trie/trie.ts +104 -0
  107. package/templates/data-structure/union-find/index.ts +1 -0
  108. package/templates/data-structure/union-find/union-find.ts +79 -0
  109. package/templates/dom/attribute/attribute.ts +24 -0
  110. package/templates/dom/attribute/index.ts +1 -0
  111. package/templates/dom/class-name/class-name.ts +48 -0
  112. package/templates/dom/class-name/index.ts +1 -0
  113. package/templates/dom/is-element/index.ts +1 -0
  114. package/templates/dom/is-element/is-element.ts +20 -0
  115. package/templates/dom/query/index.ts +1 -0
  116. package/templates/dom/query/query.ts +7 -0
  117. package/templates/http/content-type/content-type.ts +130 -0
  118. package/templates/http/content-type/index.ts +1 -0
  119. package/templates/http/header/header.ts +56 -0
  120. package/templates/http/header/index.ts +1 -0
  121. package/templates/http/method/index.ts +1 -0
  122. package/templates/http/method/method.ts +25 -0
  123. package/templates/http/status/index.ts +1 -0
  124. package/templates/http/status/status.ts +191 -0
  125. package/templates/number/clamp/clamp.ts +11 -0
  126. package/templates/number/clamp/index.ts +1 -0
  127. package/templates/number/factorial/factorial.ts +15 -0
  128. package/templates/number/factorial/index.ts +1 -0
  129. package/templates/number/format-thousands/format-thousands.ts +24 -0
  130. package/templates/number/format-thousands/index.ts +1 -0
  131. package/templates/number/gcd/gcd.ts +13 -0
  132. package/templates/number/gcd/index.ts +1 -0
  133. package/templates/number/in-range/in-range.ts +3 -0
  134. package/templates/number/in-range/index.ts +1 -0
  135. package/templates/number/is-even/index.ts +1 -0
  136. package/templates/number/is-even/is-even.ts +5 -0
  137. package/templates/number/is-odd/index.ts +1 -0
  138. package/templates/number/is-odd/is-odd.ts +7 -0
  139. package/templates/number/lcm/index.ts +1 -0
  140. package/templates/number/lcm/lcm.ts +12 -0
  141. package/templates/number/lerp/index.ts +1 -0
  142. package/templates/number/lerp/lerp.ts +3 -0
  143. package/templates/number/percentage/index.ts +1 -0
  144. package/templates/number/percentage/percentage.ts +7 -0
  145. package/templates/number/random/index.ts +1 -0
  146. package/templates/number/random/random.ts +9 -0
  147. package/templates/number/random-int/index.ts +1 -0
  148. package/templates/number/random-int/random-int.ts +9 -0
  149. package/templates/number/round/index.ts +1 -0
  150. package/templates/number/round/round.ts +22 -0
  151. package/templates/number/safe-parse-number/index.ts +1 -0
  152. package/templates/number/safe-parse-number/safe-parse-number.ts +29 -0
  153. package/templates/number/to-ordinal/index.ts +1 -0
  154. package/templates/number/to-ordinal/to-ordinal.ts +28 -0
  155. package/templates/object/deep-clone/deep-clone.ts +47 -0
  156. package/templates/object/deep-clone/index.ts +1 -0
  157. package/templates/object/deep-equal/deep-equal.ts +66 -0
  158. package/templates/object/deep-equal/index.ts +1 -0
  159. package/templates/object/deep-merge/deep-merge.ts +49 -0
  160. package/templates/object/deep-merge/index.ts +1 -0
  161. package/templates/object/defaults/defaults.ts +14 -0
  162. package/templates/object/defaults/index.ts +1 -0
  163. package/templates/object/filter-object/filter-object.ts +11 -0
  164. package/templates/object/filter-object/index.ts +1 -0
  165. package/templates/object/get/get.ts +75 -0
  166. package/templates/object/get/index.ts +1 -0
  167. package/templates/object/has/has.ts +60 -0
  168. package/templates/object/has/index.ts +1 -0
  169. package/templates/object/invert/index.ts +1 -0
  170. package/templates/object/invert/invert.ts +13 -0
  171. package/templates/object/map-keys/index.ts +1 -0
  172. package/templates/object/map-keys/map-keys.ts +16 -0
  173. package/templates/object/map-values/index.ts +1 -0
  174. package/templates/object/map-values/map-values.ts +14 -0
  175. package/templates/object/omit/index.ts +1 -0
  176. package/templates/object/omit/omit.ts +15 -0
  177. package/templates/object/omit-by/index.ts +1 -0
  178. package/templates/object/omit-by/omit-by.ts +19 -0
  179. package/templates/object/pick/index.ts +1 -0
  180. package/templates/object/pick/pick.ts +15 -0
  181. package/templates/object/pick-by/index.ts +1 -0
  182. package/templates/object/pick-by/pick-by.ts +19 -0
  183. package/templates/object/set/index.ts +1 -0
  184. package/templates/object/set/set.ts +118 -0
  185. package/templates/string/capitalize/capitalize.ts +4 -0
  186. package/templates/string/capitalize/index.ts +1 -0
  187. package/templates/string/change-case/change-case.ts +98 -0
  188. package/templates/string/change-case/index.ts +1 -0
  189. package/templates/string/char/char.ts +14 -0
  190. package/templates/string/char/index.ts +1 -0
  191. package/templates/string/count-occurrences/count-occurrences.ts +20 -0
  192. package/templates/string/count-occurrences/index.ts +1 -0
  193. package/templates/string/escape-html/escape-html.ts +16 -0
  194. package/templates/string/escape-html/index.ts +1 -0
  195. package/templates/string/get-decorated-string/get-decorated-string.ts +7 -0
  196. package/templates/string/get-decorated-string/index.ts +1 -0
  197. package/templates/string/is-blank/index.ts +1 -0
  198. package/templates/string/is-blank/is-blank.ts +6 -0
  199. package/templates/string/mask/index.ts +1 -0
  200. package/templates/string/mask/mask.ts +30 -0
  201. package/templates/string/pad/index.ts +1 -0
  202. package/templates/string/pad/pad.ts +17 -0
  203. package/templates/string/random-string/index.ts +1 -0
  204. package/templates/string/random-string/random-string.ts +20 -0
  205. package/templates/string/reverse/index.ts +1 -0
  206. package/templates/string/reverse/reverse.ts +6 -0
  207. package/templates/string/slugify/index.ts +1 -0
  208. package/templates/string/slugify/slugify.ts +11 -0
  209. package/templates/string/strip-tags/index.ts +1 -0
  210. package/templates/string/strip-tags/strip-tags.ts +8 -0
  211. package/templates/string/template/index.ts +1 -0
  212. package/templates/string/template/template.ts +14 -0
  213. package/templates/string/truncate/index.ts +1 -0
  214. package/templates/string/truncate/truncate.ts +17 -0
  215. package/templates/string/truncate-middle/index.ts +1 -0
  216. package/templates/string/truncate-middle/truncate-middle.ts +25 -0
  217. package/templates/string/uuid/index.ts +1 -0
  218. package/templates/string/uuid/uuid.ts +9 -0
  219. package/templates/tailwindcss/class-variant/class-variant.ts +35 -0
  220. package/templates/tailwindcss/class-variant/index.ts +1 -0
  221. package/templates/tailwindcss/cn/cn.ts +29 -0
  222. package/templates/tailwindcss/cn/index.ts +1 -0
  223. package/templates/tailwindcss/create-tailwind-css/create-tailwind-css.ts +16 -0
  224. package/templates/tailwindcss/create-tailwind-css/index.ts +1 -0
  225. package/templates/tailwindcss/tw-merge-config/index.ts +1 -0
  226. package/templates/tailwindcss/tw-merge-config/tw-merge-config.ts +14 -0
  227. package/templates/type/get-type/get-type.ts +27 -0
  228. package/templates/type/get-type/index.ts +1 -0
  229. package/templates/type/is-type-of/index.ts +1 -0
  230. package/templates/type/is-type-of/is-type-of.ts +26 -0
  231. package/templates/util/mutex/index.ts +1 -0
  232. package/templates/util/mutex/mutex.ts +109 -0
  233. package/templates/util/url-parser/index.ts +1 -0
  234. package/templates/util/url-parser/url-parser.ts +44 -0
package/catalog.json ADDED
@@ -0,0 +1,1084 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "version": "0.1.0",
4
+ "items": [
5
+ {
6
+ "name": "algorithm-geometry-ccw",
7
+ "description": "세 점 `a -> b -> c`가 어떤 방향으로 꺾이는지 판정한다. 선분 교차, 볼록 껍질,",
8
+ "dependencies": [],
9
+ "files": [
10
+ "algorithm/geometry/ccw/ccw.ts",
11
+ "algorithm/geometry/ccw/index.ts"
12
+ ]
13
+ },
14
+ {
15
+ "name": "algorithm-geometry-convex-hull",
16
+ "description": "점 집합을 모두 감싸는 가장 작은 볼록 다각형의 꼭짓점을 구한다. 울타리 치기,",
17
+ "dependencies": [],
18
+ "files": [
19
+ "algorithm/geometry/ccw/ccw.ts",
20
+ "algorithm/geometry/ccw/index.ts",
21
+ "algorithm/geometry/convex-hull/convex-hull.ts",
22
+ "algorithm/geometry/convex-hull/index.ts"
23
+ ]
24
+ },
25
+ {
26
+ "name": "algorithm-geometry-polygon-area",
27
+ "description": "다각형 꼭짓점이 순서대로 주어졌을 때 넓이를 계산한다. 꼭짓점 방향은 시계/반시계",
28
+ "dependencies": [],
29
+ "files": [
30
+ "algorithm/geometry/ccw/ccw.ts",
31
+ "algorithm/geometry/ccw/index.ts",
32
+ "algorithm/geometry/polygon-area/index.ts",
33
+ "algorithm/geometry/polygon-area/polygon-area.ts"
34
+ ]
35
+ },
36
+ {
37
+ "name": "algorithm-graph-bellman-ford",
38
+ "description": "Bellman-Ford는 시작점 하나에서 모든 정점까지의 최단 거리를 구한다. 다익스트라와",
39
+ "dependencies": [],
40
+ "files": [
41
+ "algorithm/graph/bellman-ford/bellman-ford.ts",
42
+ "algorithm/graph/bellman-ford/index.ts"
43
+ ]
44
+ },
45
+ {
46
+ "name": "algorithm-graph-bfs",
47
+ "description": "너비 우선 탐색(BFS). 시작 노드에서 가까운 순서로 방문한 노드 배열을 반환한다.",
48
+ "dependencies": [],
49
+ "files": [
50
+ "algorithm/graph/bfs/bfs.ts",
51
+ "algorithm/graph/bfs/index.ts"
52
+ ]
53
+ },
54
+ {
55
+ "name": "algorithm-graph-dfs",
56
+ "description": "깊이 우선 탐색(DFS). 명시적 스택으로 구현해, 방문한 노드 배열을 반환한다.",
57
+ "dependencies": [],
58
+ "files": [
59
+ "algorithm/graph/dfs/dfs.ts",
60
+ "algorithm/graph/dfs/index.ts"
61
+ ]
62
+ },
63
+ {
64
+ "name": "algorithm-graph-dijkstra",
65
+ "description": "다익스트라 최단 경로. 음수 가중치가 없는 그래프에서 시작 노드로부터의 최단",
66
+ "dependencies": [],
67
+ "files": [
68
+ "algorithm/graph/dijkstra/dijkstra.ts",
69
+ "algorithm/graph/dijkstra/index.ts",
70
+ "data-structure/heap/heap.ts",
71
+ "data-structure/priority-queue/index.ts",
72
+ "data-structure/priority-queue/priority-queue.ts"
73
+ ]
74
+ },
75
+ {
76
+ "name": "algorithm-graph-floyd-warshall",
77
+ "description": "Floyd-Warshall은 모든 정점 쌍 사이의 최단 거리를 한 번에 구한다. 정점 수가",
78
+ "dependencies": [],
79
+ "files": [
80
+ "algorithm/graph/floyd-warshall/floyd-warshall.ts",
81
+ "algorithm/graph/floyd-warshall/index.ts"
82
+ ]
83
+ },
84
+ {
85
+ "name": "algorithm-graph-kruskal",
86
+ "description": "Kruskal은 무방향 가중 그래프에서 전체 노드를 연결하는 간선 집합 중 총 가중치가",
87
+ "dependencies": [],
88
+ "files": [
89
+ "algorithm/graph/kruskal/index.ts",
90
+ "algorithm/graph/kruskal/kruskal.ts",
91
+ "data-structure/union-find/index.ts",
92
+ "data-structure/union-find/union-find.ts"
93
+ ]
94
+ },
95
+ {
96
+ "name": "algorithm-graph-prim",
97
+ "description": "Prim은 시작점에서 출발해 현재까지 연결된 정점 집합 밖으로 나가는 가장 싼 간선을",
98
+ "dependencies": [],
99
+ "files": [
100
+ "algorithm/graph/dijkstra/dijkstra.ts",
101
+ "algorithm/graph/dijkstra/index.ts",
102
+ "algorithm/graph/prim/index.ts",
103
+ "algorithm/graph/prim/prim.ts",
104
+ "data-structure/heap/heap.ts",
105
+ "data-structure/priority-queue/index.ts",
106
+ "data-structure/priority-queue/priority-queue.ts"
107
+ ]
108
+ },
109
+ {
110
+ "name": "algorithm-graph-topology-sort",
111
+ "description": "위상 정렬(topological sort). 방향 비순환 그래프(DAG)에서 선행 순서를 지키는",
112
+ "dependencies": [],
113
+ "files": [
114
+ "algorithm/graph/topology-sort/index.ts",
115
+ "algorithm/graph/topology-sort/topology-sort.ts"
116
+ ]
117
+ },
118
+ {
119
+ "name": "algorithm-search-binary-search",
120
+ "description": "정렬 배열에서 값의 위치를 찾거나, `false ... false, true ... true`처럼 단조로",
121
+ "dependencies": [],
122
+ "files": [
123
+ "algorithm/search/binary-search/binary-search.ts",
124
+ "algorithm/search/binary-search/index.ts"
125
+ ]
126
+ },
127
+ {
128
+ "name": "algorithm-string-kmp",
129
+ "description": "KMP는 패턴 내부의 접두사/접미사 정보를 미리 계산해, 검색 중 mismatch가 나도",
130
+ "dependencies": [],
131
+ "files": [
132
+ "algorithm/string/kmp/index.ts",
133
+ "algorithm/string/kmp/kmp.ts"
134
+ ]
135
+ },
136
+ {
137
+ "name": "algorithm-string-z-algorithm",
138
+ "description": "Z algorithm은 문자열의 각 위치에서 “문자열 전체의 접두사와 몇 글자나 같은지”를",
139
+ "dependencies": [],
140
+ "files": [
141
+ "algorithm/string/z-algorithm/index.ts",
142
+ "algorithm/string/z-algorithm/z-algorithm.ts"
143
+ ]
144
+ },
145
+ {
146
+ "name": "algorithm-tree-avl-tree",
147
+ "description": "삽입 시 자동으로 균형을 맞추는 AVL 트리. 중복 값은 삽입하지 않는다.",
148
+ "dependencies": [],
149
+ "files": [
150
+ "algorithm/tree/avl-tree/avl-tree.ts",
151
+ "algorithm/tree/avl-tree/index.ts"
152
+ ]
153
+ },
154
+ {
155
+ "name": "algorithm-tree-binary-search-tree",
156
+ "description": "기본 이진 탐색 트리. 중복 값은 삽입하지 않고 `false`를 반환한다.",
157
+ "dependencies": [],
158
+ "files": [
159
+ "algorithm/tree/binary-search-tree/binary-search-tree.ts",
160
+ "algorithm/tree/binary-search-tree/index.ts"
161
+ ]
162
+ },
163
+ {
164
+ "name": "algorithm-tree-lca",
165
+ "description": "인접 리스트로 표현된 트리에서 binary lifting으로 최소 공통 조상과 거리를 구한다.",
166
+ "dependencies": [],
167
+ "files": [
168
+ "algorithm/tree/lca/index.ts",
169
+ "algorithm/tree/lca/lca.ts"
170
+ ]
171
+ },
172
+ {
173
+ "name": "array-chunk",
174
+ "description": "배열을 `size` 길이의 작은 배열들로 분할한다. 마지막 조각은 원소가 모자라면",
175
+ "dependencies": [],
176
+ "files": [
177
+ "array/chunk/chunk.ts",
178
+ "array/chunk/index.ts"
179
+ ]
180
+ },
181
+ {
182
+ "name": "array-compact",
183
+ "description": "배열에서 falsy 값(`false`, `null`, `undefined`, `0`, `\"\"`, `NaN`)을 모두 제거한",
184
+ "dependencies": [],
185
+ "files": [
186
+ "array/compact/compact.ts",
187
+ "array/compact/index.ts"
188
+ ]
189
+ },
190
+ {
191
+ "name": "array-count-by",
192
+ "description": "배열 항목을 `keyFn`이 돌려주는 키로 묶어 키별 개수를 센 `{ 키: 개수 }` 객체를",
193
+ "dependencies": [],
194
+ "files": [
195
+ "array/count-by/count-by.ts",
196
+ "array/count-by/index.ts"
197
+ ]
198
+ },
199
+ {
200
+ "name": "array-difference",
201
+ "description": "`a`에서 `b`에 포함된 원소를 모두 제거한 차집합을 반환한다. `a`의 등장 순서와",
202
+ "dependencies": [],
203
+ "files": [
204
+ "array/difference/difference.ts",
205
+ "array/difference/index.ts"
206
+ ]
207
+ },
208
+ {
209
+ "name": "array-drop",
210
+ "description": "배열 앞에서 n개를 제외한 나머지를 새 배열로 반환한다. 입력 배열은 변형하지",
211
+ "dependencies": [],
212
+ "files": [
213
+ "array/drop/drop.ts",
214
+ "array/drop/index.ts"
215
+ ]
216
+ },
217
+ {
218
+ "name": "array-group-by",
219
+ "description": "배열 항목을 `keyFn`이 돌려주는 키로 묶어 `{ 키: 항목 배열 }` 객체를 반환한다.",
220
+ "dependencies": [],
221
+ "files": [
222
+ "array/group-by/group-by.ts",
223
+ "array/group-by/index.ts"
224
+ ]
225
+ },
226
+ {
227
+ "name": "array-intersection",
228
+ "description": "두 배열에 모두 들어 있는 원소만 모은 교집합을 반환한다. 순서는 `a` 기준이고",
229
+ "dependencies": [],
230
+ "files": [
231
+ "array/intersection/index.ts",
232
+ "array/intersection/intersection.ts"
233
+ ]
234
+ },
235
+ {
236
+ "name": "array-key-by",
237
+ "description": "배열을 `keyFn`이 돌려주는 키로 인덱싱해 `{ 키: 항목 }` 객체를 반환한다.",
238
+ "dependencies": [],
239
+ "files": [
240
+ "array/key-by/index.ts",
241
+ "array/key-by/key-by.ts"
242
+ ]
243
+ },
244
+ {
245
+ "name": "array-max-by",
246
+ "description": "`valueFn`으로 매핑한 값이 가장 큰 원소를 반환한다. 입력 배열은 변형하지 않으며,",
247
+ "dependencies": [],
248
+ "files": [
249
+ "array/max-by/index.ts",
250
+ "array/max-by/max-by.ts"
251
+ ]
252
+ },
253
+ {
254
+ "name": "array-min-by",
255
+ "description": "`valueFn`으로 매핑한 값이 가장 작은 원소를 반환한다. 입력 배열은 변형하지 않으며,",
256
+ "dependencies": [],
257
+ "files": [
258
+ "array/min-by/index.ts",
259
+ "array/min-by/min-by.ts"
260
+ ]
261
+ },
262
+ {
263
+ "name": "array-partition",
264
+ "description": "배열을 `predicate` 통과 여부로 나눠 `[통과한 항목, 실패한 항목]` 튜플을 반환한다.",
265
+ "dependencies": [],
266
+ "files": [
267
+ "array/partition/index.ts",
268
+ "array/partition/partition.ts"
269
+ ]
270
+ },
271
+ {
272
+ "name": "array-range",
273
+ "description": "`[start, end)` 구간을 `step` 간격으로 채운 숫자 배열을 반환한다. `step`",
274
+ "dependencies": [],
275
+ "files": [
276
+ "array/range/index.ts",
277
+ "array/range/range.ts"
278
+ ]
279
+ },
280
+ {
281
+ "name": "array-sample",
282
+ "description": "배열에서 무작위로 원소 하나를 골라 반환한다. 빈 배열이면 `null`을 반환하며,",
283
+ "dependencies": [],
284
+ "files": [
285
+ "array/sample/index.ts",
286
+ "array/sample/sample.ts"
287
+ ]
288
+ },
289
+ {
290
+ "name": "array-shuffle",
291
+ "description": "Fisher-Yates 셔플로 원소 순서를 무작위로 섞은 새 배열을 반환한다. 입력 배열은",
292
+ "dependencies": [],
293
+ "files": [
294
+ "array/shuffle/index.ts",
295
+ "array/shuffle/shuffle.ts"
296
+ ]
297
+ },
298
+ {
299
+ "name": "array-sort-by",
300
+ "description": "`keyFn`이 돌려준 키 기준으로 오름차순 안정 정렬한 새 배열을 반환한다. 키가 같은",
301
+ "dependencies": [],
302
+ "files": [
303
+ "array/sort-by/index.ts",
304
+ "array/sort-by/sort-by.ts"
305
+ ]
306
+ },
307
+ {
308
+ "name": "array-sum-by",
309
+ "description": "배열의 각 원소를 `valueFn`으로 수치화해 모두 더한 합을 반환한다. 입력 배열은",
310
+ "dependencies": [],
311
+ "files": [
312
+ "array/sum-by/index.ts",
313
+ "array/sum-by/sum-by.ts"
314
+ ]
315
+ },
316
+ {
317
+ "name": "array-take",
318
+ "description": "배열 앞에서 n개를 잘라 새 배열을 반환한다. 입력 배열은 변형하지 않으며",
319
+ "dependencies": [],
320
+ "files": [
321
+ "array/take/index.ts",
322
+ "array/take/take.ts"
323
+ ]
324
+ },
325
+ {
326
+ "name": "array-union",
327
+ "description": "두 배열을 합친 합집합을 반환한다. 중복은 제거되고, 처음 등장한 순서(`a`를",
328
+ "dependencies": [],
329
+ "files": [
330
+ "array/union/index.ts",
331
+ "array/union/union.ts"
332
+ ]
333
+ },
334
+ {
335
+ "name": "array-unique",
336
+ "description": "배열의 중복을 제거한 새 배열을 반환한다. 각 값의 첫 등장 순서를 보존하며",
337
+ "dependencies": [],
338
+ "files": [
339
+ "array/unique/index.ts",
340
+ "array/unique/unique.ts"
341
+ ]
342
+ },
343
+ {
344
+ "name": "array-unique-by",
345
+ "description": "`keyFn`이 돌려준 키를 기준으로 배열의 중복을 제거한 새 배열을 반환한다.",
346
+ "dependencies": [],
347
+ "files": [
348
+ "array/unique-by/index.ts",
349
+ "array/unique-by/unique-by.ts"
350
+ ]
351
+ },
352
+ {
353
+ "name": "array-windowed",
354
+ "description": "배열 위를 `size` 길이의 창으로 훑으며, 각 위치의 부분 배열을 모아 반환한다.",
355
+ "dependencies": [],
356
+ "files": [
357
+ "array/windowed/index.ts",
358
+ "array/windowed/windowed.ts"
359
+ ]
360
+ },
361
+ {
362
+ "name": "array-zip",
363
+ "description": "두 배열을 같은 인덱스끼리 `[A, B]` 튜플로 묶는다. 더 짧은 배열 길이까지만",
364
+ "dependencies": [],
365
+ "files": [
366
+ "array/zip/index.ts",
367
+ "array/zip/zip.ts"
368
+ ]
369
+ },
370
+ {
371
+ "name": "boolean-parse-boolean",
372
+ "description": "다양한 입력을 boolean으로 해석한다.",
373
+ "dependencies": [],
374
+ "files": [
375
+ "boolean/parse-boolean/index.ts",
376
+ "boolean/parse-boolean/parse-boolean.ts"
377
+ ]
378
+ },
379
+ {
380
+ "name": "boolean-toggle",
381
+ "description": "boolean 값을 반전한다.",
382
+ "dependencies": [],
383
+ "files": [
384
+ "boolean/toggle/index.ts",
385
+ "boolean/toggle/toggle.ts"
386
+ ]
387
+ },
388
+ {
389
+ "name": "boolean-xor",
390
+ "description": "배타적 논리합. 두 boolean 중 정확히 하나만 `true`일 때 `true`.",
391
+ "dependencies": [],
392
+ "files": [
393
+ "boolean/xor/index.ts",
394
+ "boolean/xor/xor.ts"
395
+ ]
396
+ },
397
+ {
398
+ "name": "data-structure-deque",
399
+ "description": "양끝에서 삽입·삭제가 모두 O(1)인 덱(double-ended queue). `Map`과 head/tail",
400
+ "dependencies": [],
401
+ "files": [
402
+ "data-structure/deque/deque.ts",
403
+ "data-structure/deque/index.ts"
404
+ ]
405
+ },
406
+ {
407
+ "name": "data-structure-fenwick-tree",
408
+ "description": "Fenwick Tree(Binary Indexed Tree). 점 갱신과 접두합·구간합을 모두 O(log n)에",
409
+ "dependencies": [],
410
+ "files": [
411
+ "data-structure/fenwick-tree/fenwick-tree.ts",
412
+ "data-structure/fenwick-tree/index.ts"
413
+ ]
414
+ },
415
+ {
416
+ "name": "data-structure-heap",
417
+ "description": "비교 함수(`compareBy`)로 우선순위를 정하는 이진 힙. 추상 베이스 `Heap`에서",
418
+ "dependencies": [],
419
+ "files": [
420
+ "data-structure/heap/heap.ts",
421
+ "data-structure/heap/index.ts",
422
+ "data-structure/heap/max-heap.ts",
423
+ "data-structure/heap/min-heap.ts"
424
+ ]
425
+ },
426
+ {
427
+ "name": "data-structure-priority-queue",
428
+ "description": "[heap](../../heap) 위에 큐 API를 얹은 우선순위 큐. 요소 비교 함수를 직접 주입한다.",
429
+ "dependencies": [],
430
+ "files": [
431
+ "data-structure/heap/heap.ts",
432
+ "data-structure/priority-queue/index.ts",
433
+ "data-structure/priority-queue/priority-queue.ts"
434
+ ]
435
+ },
436
+ {
437
+ "name": "data-structure-queue",
438
+ "description": "단일 연결 리스트 기반 FIFO 큐. 모든 핵심 연산이 O(1)이다.",
439
+ "dependencies": [],
440
+ "files": [
441
+ "data-structure/queue/index.ts",
442
+ "data-structure/queue/queue.ts"
443
+ ]
444
+ },
445
+ {
446
+ "name": "data-structure-segment-tree",
447
+ "description": "점 갱신과 임의 결합 연산의 구간 질의를 O(log n)에 처리하는 세그먼트 트리.",
448
+ "dependencies": [],
449
+ "files": [
450
+ "data-structure/segment-tree/index.ts",
451
+ "data-structure/segment-tree/segment-tree.ts"
452
+ ]
453
+ },
454
+ {
455
+ "name": "data-structure-trie",
456
+ "description": "접두사 트리(prefix tree). 문자열 집합 저장과 접두사 검색·자동완성에 쓴다.",
457
+ "dependencies": [],
458
+ "files": [
459
+ "data-structure/trie/index.ts",
460
+ "data-structure/trie/trie.ts"
461
+ ]
462
+ },
463
+ {
464
+ "name": "data-structure-union-find",
465
+ "description": "서로소 집합(Disjoint Set Union). 원소들을 그룹으로 합치고 같은 그룹인지",
466
+ "dependencies": [],
467
+ "files": [
468
+ "data-structure/union-find/index.ts",
469
+ "data-structure/union-find/union-find.ts"
470
+ ]
471
+ },
472
+ {
473
+ "name": "dom-attribute",
474
+ "description": "DOM 요소의 attribute 값을 읽고 설정하는 유틸을 제공한다. `null`과 `undefined`는",
475
+ "dependencies": [],
476
+ "runtime": "dom",
477
+ "files": [
478
+ "dom/attribute/attribute.ts",
479
+ "dom/attribute/index.ts"
480
+ ]
481
+ },
482
+ {
483
+ "name": "dom-class-name",
484
+ "description": "DOM 요소의 `classList`를 다루는 작은 유틸을 제공한다. 공백으로 이어진 문자열이나",
485
+ "dependencies": [],
486
+ "runtime": "dom",
487
+ "files": [
488
+ "dom/class-name/class-name.ts",
489
+ "dom/class-name/index.ts"
490
+ ]
491
+ },
492
+ {
493
+ "name": "dom-is-element",
494
+ "description": "값이 DOM `Element`처럼 보이는지 판별한다. 다른 window/iframe에서 온 요소도",
495
+ "dependencies": [],
496
+ "runtime": "dom",
497
+ "files": [
498
+ "dom/is-element/index.ts",
499
+ "dom/is-element/is-element.ts"
500
+ ]
501
+ },
502
+ {
503
+ "name": "dom-query",
504
+ "description": "DOM query 결과를 `null` 대신 `undefined`와 배열로 다루기 위한 작은 래퍼를 제공한다.",
505
+ "dependencies": [],
506
+ "runtime": "dom",
507
+ "files": [
508
+ "dom/query/index.ts",
509
+ "dom/query/query.ts"
510
+ ]
511
+ },
512
+ {
513
+ "name": "http-content-type",
514
+ "description": "`Content-Type` 헤더 값을 MIME 타입과 파라미터로 파싱하고 JSON 계열 MIME 타입을",
515
+ "dependencies": [],
516
+ "files": [
517
+ "http/content-type/content-type.ts",
518
+ "http/content-type/index.ts"
519
+ ]
520
+ },
521
+ {
522
+ "name": "http-header",
523
+ "description": "자주 쓰는 HTTP 헤더명 상수와 헤더명 판별/정규화 함수를 제공한다.",
524
+ "dependencies": [],
525
+ "files": [
526
+ "http/header/header.ts",
527
+ "http/header/index.ts"
528
+ ]
529
+ },
530
+ {
531
+ "name": "http-method",
532
+ "description": "HTTP 메서드 상수와 메서드 판별/정규화 함수를 제공한다.",
533
+ "dependencies": [],
534
+ "files": [
535
+ "http/method/index.ts",
536
+ "http/method/method.ts"
537
+ ]
538
+ },
539
+ {
540
+ "name": "http-status",
541
+ "description": "HTTP 상태 코드 상수와 상태 코드 범위 판별 함수를 제공한다. 등록된 상태 코드인지와",
542
+ "dependencies": [],
543
+ "files": [
544
+ "http/status/index.ts",
545
+ "http/status/status.ts"
546
+ ]
547
+ },
548
+ {
549
+ "name": "number-clamp",
550
+ "description": "값을 `[min, max]` 범위로 자른다. 범위를 벗어나면 가까운 경계값으로 고정한다.",
551
+ "dependencies": [],
552
+ "files": [
553
+ "number/clamp/clamp.ts",
554
+ "number/clamp/index.ts"
555
+ ]
556
+ },
557
+ {
558
+ "name": "number-factorial",
559
+ "description": "음이 아닌 정수의 계승(`n!`)을 구한다. `0! = 1`이고, 음수 입력은 정의되지 않아",
560
+ "dependencies": [],
561
+ "files": [
562
+ "number/factorial/factorial.ts",
563
+ "number/factorial/index.ts"
564
+ ]
565
+ },
566
+ {
567
+ "name": "number-format-thousands",
568
+ "description": "정수부에 천 단위 콤마를 넣는다. 소수부와 음수 부호는 그대로 보존한다.",
569
+ "dependencies": [],
570
+ "files": [
571
+ "number/format-thousands/format-thousands.ts",
572
+ "number/format-thousands/index.ts"
573
+ ]
574
+ },
575
+ {
576
+ "name": "number-gcd",
577
+ "description": "두 정수의 최대공약수(GCD)를 유클리드 호제법으로 구한다. 부호는 결과에",
578
+ "dependencies": [],
579
+ "files": [
580
+ "number/gcd/gcd.ts",
581
+ "number/gcd/index.ts"
582
+ ]
583
+ },
584
+ {
585
+ "name": "number-in-range",
586
+ "description": "값이 `[min, max)` 범위 안에 있는지 검사한다. 하한 `min`은 포함하고 상한 `max`는 제외한다.",
587
+ "dependencies": [],
588
+ "files": [
589
+ "number/in-range/in-range.ts",
590
+ "number/in-range/index.ts"
591
+ ]
592
+ },
593
+ {
594
+ "name": "number-is-even",
595
+ "description": "정수의 짝수 여부를 판정한다. 음수와 0도 동일한 규칙으로 처리한다(`0`은 짝수).",
596
+ "dependencies": [],
597
+ "files": [
598
+ "number/is-even/index.ts",
599
+ "number/is-even/is-even.ts"
600
+ ]
601
+ },
602
+ {
603
+ "name": "number-is-odd",
604
+ "description": "정수의 홀수 여부를 판정한다. 음수와 0도 동일한 규칙으로 처리한다(`0`은 홀수가 아님).",
605
+ "dependencies": [],
606
+ "files": [
607
+ "number/is-even/index.ts",
608
+ "number/is-even/is-even.ts",
609
+ "number/is-odd/index.ts",
610
+ "number/is-odd/is-odd.ts"
611
+ ]
612
+ },
613
+ {
614
+ "name": "number-lcm",
615
+ "description": "두 정수의 최소공배수(LCM)를 구한다. `|a * b| / gcd(a, b)` 로 계산하되,",
616
+ "dependencies": [],
617
+ "files": [
618
+ "number/gcd/gcd.ts",
619
+ "number/gcd/index.ts",
620
+ "number/lcm/index.ts",
621
+ "number/lcm/lcm.ts"
622
+ ]
623
+ },
624
+ {
625
+ "name": "number-lerp",
626
+ "description": "두 값 사이를 선형 보간(linear interpolation)한다. `t=0`이면 `start`, `t=1`이면 `end`를 돌려준다.",
627
+ "dependencies": [],
628
+ "files": [
629
+ "number/lerp/index.ts",
630
+ "number/lerp/lerp.ts"
631
+ ]
632
+ },
633
+ {
634
+ "name": "number-percentage",
635
+ "description": "`value`가 `total`에서 차지하는 비율을 백분율(`value / total * 100`)로 계산한다.",
636
+ "dependencies": [],
637
+ "files": [
638
+ "number/percentage/index.ts",
639
+ "number/percentage/percentage.ts"
640
+ ]
641
+ },
642
+ {
643
+ "name": "number-random",
644
+ "description": "`[min, max)` 구간의 실수 난수를 반환한다. `min`은 포함하고 `max`는 제외한다.",
645
+ "dependencies": [],
646
+ "files": [
647
+ "number/random/index.ts",
648
+ "number/random/random.ts"
649
+ ]
650
+ },
651
+ {
652
+ "name": "number-random-int",
653
+ "description": "`[min, max]` 구간의 정수 난수를 반환한다. `min`과 `max` 양끝을 모두 포함한다.",
654
+ "dependencies": [],
655
+ "files": [
656
+ "number/random-int/index.ts",
657
+ "number/random-int/random-int.ts"
658
+ ]
659
+ },
660
+ {
661
+ "name": "number-round",
662
+ "description": "`value`를 `digits` 자리수로 반올림한다. 곱셈식 대신 지수 표기로 자리를 옮겨",
663
+ "dependencies": [],
664
+ "files": [
665
+ "number/round/index.ts",
666
+ "number/round/round.ts"
667
+ ]
668
+ },
669
+ {
670
+ "name": "number-safe-parse-number",
671
+ "description": "임의의 입력을 숫자로 안전하게 파싱한다. 빈 문자열·`NaN`·`null`·boolean·배열",
672
+ "dependencies": [],
673
+ "files": [
674
+ "number/safe-parse-number/index.ts",
675
+ "number/safe-parse-number/safe-parse-number.ts"
676
+ ]
677
+ },
678
+ {
679
+ "name": "number-to-ordinal",
680
+ "description": "정수를 영어 서수 문자열로 바꾼다. `1 -> \"1st\"`, `2 -> \"2nd\"`, `3 -> \"3rd\"`,",
681
+ "dependencies": [],
682
+ "files": [
683
+ "number/to-ordinal/index.ts",
684
+ "number/to-ordinal/to-ordinal.ts"
685
+ ]
686
+ },
687
+ {
688
+ "name": "object-deep-clone",
689
+ "description": "plain object와 array를 재귀 복제해 입력과 구조를 공유하지 않는 새 값을 만든다.",
690
+ "dependencies": [],
691
+ "files": [
692
+ "object/deep-clone/deep-clone.ts",
693
+ "object/deep-clone/index.ts"
694
+ ]
695
+ },
696
+ {
697
+ "name": "object-deep-equal",
698
+ "description": "두 값의 깊은 동등성을 판정한다. plain object와 array는 구조를 재귀 비교하고,",
699
+ "dependencies": [],
700
+ "files": [
701
+ "object/deep-equal/deep-equal.ts",
702
+ "object/deep-equal/index.ts"
703
+ ]
704
+ },
705
+ {
706
+ "name": "object-deep-merge",
707
+ "description": "중첩 plain object를 재귀 병합한다. 양쪽이 모두 plain object인 키만 더 깊이 들어가고,",
708
+ "dependencies": [],
709
+ "files": [
710
+ "object/deep-merge/deep-merge.ts",
711
+ "object/deep-merge/index.ts"
712
+ ]
713
+ },
714
+ {
715
+ "name": "object-defaults",
716
+ "description": "`obj`에서 값이 없는(undefined) 키를 `defaultValues`로 채운 새 객체를 반환한다.",
717
+ "dependencies": [],
718
+ "files": [
719
+ "object/defaults/defaults.ts",
720
+ "object/defaults/index.ts"
721
+ ]
722
+ },
723
+ {
724
+ "name": "object-filter-object",
725
+ "description": "객체 값의 런타임 타입을 판별해, `filterTypes`에 든 타입의 엔트리를 제거한",
726
+ "dependencies": [],
727
+ "files": [
728
+ "object/filter-object/filter-object.ts",
729
+ "object/filter-object/index.ts",
730
+ "type/get-type/get-type.ts",
731
+ "type/get-type/index.ts"
732
+ ]
733
+ },
734
+ {
735
+ "name": "object-get",
736
+ "description": "경로 문자열로 중첩 객체/배열 값에 안전하게 접근한다. 중간 경로가 끊겨도",
737
+ "dependencies": [],
738
+ "files": [
739
+ "object/get/get.ts",
740
+ "object/get/index.ts"
741
+ ]
742
+ },
743
+ {
744
+ "name": "object-has",
745
+ "description": "경로 문자열로 중첩 객체/배열에 해당 키가 존재하는지 판정한다. 값이 아니라",
746
+ "dependencies": [],
747
+ "files": [
748
+ "object/has/has.ts",
749
+ "object/has/index.ts"
750
+ ]
751
+ },
752
+ {
753
+ "name": "object-invert",
754
+ "description": "객체의 키와 값을 뒤집은 새 객체를 반환한다. 값이 새 키가 되고 키가 새 값이",
755
+ "dependencies": [],
756
+ "files": [
757
+ "object/invert/index.ts",
758
+ "object/invert/invert.ts"
759
+ ]
760
+ },
761
+ {
762
+ "name": "object-map-keys",
763
+ "description": "객체의 각 키를 `keyFn`으로 변환한 새 객체를 반환한다. 값은 그대로 옮기며",
764
+ "dependencies": [],
765
+ "files": [
766
+ "object/map-keys/index.ts",
767
+ "object/map-keys/map-keys.ts"
768
+ ]
769
+ },
770
+ {
771
+ "name": "object-map-values",
772
+ "description": "객체의 각 값을 `valueFn`으로 변환한 새 객체를 반환한다. 키는 그대로 보존하며",
773
+ "dependencies": [],
774
+ "files": [
775
+ "object/map-values/index.ts",
776
+ "object/map-values/map-values.ts"
777
+ ]
778
+ },
779
+ {
780
+ "name": "object-omit",
781
+ "description": "객체에서 지정한 키를 제외한 새 객체를 반환한다. 원본은 변형하지 않으며 남은",
782
+ "dependencies": [],
783
+ "files": [
784
+ "object/omit/index.ts",
785
+ "object/omit/omit.ts"
786
+ ]
787
+ },
788
+ {
789
+ "name": "object-omit-by",
790
+ "description": "`predicate`가 참을 반환한 엔트리를 제외한 새 객체를 반환한다. `pickBy`의 반대",
791
+ "dependencies": [],
792
+ "files": [
793
+ "object/omit-by/index.ts",
794
+ "object/omit-by/omit-by.ts"
795
+ ]
796
+ },
797
+ {
798
+ "name": "object-pick",
799
+ "description": "객체에서 지정한 키만 골라 새 객체를 반환한다. 원본은 변형하지 않으며 선택된",
800
+ "dependencies": [],
801
+ "files": [
802
+ "object/pick/index.ts",
803
+ "object/pick/pick.ts"
804
+ ]
805
+ },
806
+ {
807
+ "name": "object-pick-by",
808
+ "description": "`predicate`가 참을 반환한 엔트리만 골라 새 객체를 반환한다. 키가 아니라 값과",
809
+ "dependencies": [],
810
+ "files": [
811
+ "object/pick-by/index.ts",
812
+ "object/pick-by/pick-by.ts"
813
+ ]
814
+ },
815
+ {
816
+ "name": "object-set",
817
+ "description": "경로 문자열 위치에 값을 설정한 **새** 객체를 반환하는 불변 유틸. 입력 객체는",
818
+ "dependencies": [],
819
+ "files": [
820
+ "object/set/index.ts",
821
+ "object/set/set.ts"
822
+ ]
823
+ },
824
+ {
825
+ "name": "string-capitalize",
826
+ "description": "문자열의 첫 글자만 대문자로 만들고 나머지는 그대로 둔다. 빈 문자열은 빈",
827
+ "dependencies": [],
828
+ "files": [
829
+ "string/capitalize/capitalize.ts",
830
+ "string/capitalize/index.ts"
831
+ ]
832
+ },
833
+ {
834
+ "name": "string-change-case",
835
+ "description": "케이스 변환 유틸 모음. `splitWords`가 어떤 케이스든 소문자 단어 배열로 쪼개고,",
836
+ "dependencies": [],
837
+ "files": [
838
+ "string/capitalize/capitalize.ts",
839
+ "string/capitalize/index.ts",
840
+ "string/change-case/change-case.ts",
841
+ "string/change-case/index.ts",
842
+ "string/char/char.ts",
843
+ "string/char/index.ts"
844
+ ]
845
+ },
846
+ {
847
+ "name": "string-char",
848
+ "description": "ASCII 문자 분류 술어. 단일 문자를 받아 종류를 판별한다. 로캘/유니코드 영향",
849
+ "dependencies": [],
850
+ "files": [
851
+ "string/char/char.ts",
852
+ "string/char/index.ts"
853
+ ]
854
+ },
855
+ {
856
+ "name": "string-count-occurrences",
857
+ "description": "`str` 안에서 `search`가 **겹치지 않게** 등장하는 횟수를 센다. 매칭한 만큼",
858
+ "dependencies": [],
859
+ "files": [
860
+ "string/count-occurrences/count-occurrences.ts",
861
+ "string/count-occurrences/index.ts"
862
+ ]
863
+ },
864
+ {
865
+ "name": "string-escape-html",
866
+ "description": "HTML 특수문자를 엔티티로 치환한다. 사용자 입력 등 텍스트를 마크업에 안전하게",
867
+ "dependencies": [],
868
+ "files": [
869
+ "string/escape-html/escape-html.ts",
870
+ "string/escape-html/index.ts"
871
+ ]
872
+ },
873
+ {
874
+ "name": "string-get-decorated-string",
875
+ "description": "`___FORMAT___` 자리표시자를 `target` 값으로 치환한다. 포맷 문자열 안의 모든",
876
+ "dependencies": [],
877
+ "files": [
878
+ "string/get-decorated-string/get-decorated-string.ts",
879
+ "string/get-decorated-string/index.ts"
880
+ ]
881
+ },
882
+ {
883
+ "name": "string-is-blank",
884
+ "description": "문자열이 비어 있거나 공백 문자만으로 이루어졌으면 `true`를 반환한다.",
885
+ "dependencies": [],
886
+ "files": [
887
+ "string/is-blank/index.ts",
888
+ "string/is-blank/is-blank.ts"
889
+ ]
890
+ },
891
+ {
892
+ "name": "string-mask",
893
+ "description": "앞 `start`글자와 뒤 `end`글자만 남기고 가운데를 `char`로 가린다. 입력은",
894
+ "dependencies": [],
895
+ "files": [
896
+ "string/mask/index.ts",
897
+ "string/mask/mask.ts"
898
+ ]
899
+ },
900
+ {
901
+ "name": "string-pad",
902
+ "description": "문자열 양쪽을 `char`로 균등하게 채워 가운데 정렬한다. `length` 이하면 그대로",
903
+ "dependencies": [],
904
+ "files": [
905
+ "string/pad/index.ts",
906
+ "string/pad/pad.ts"
907
+ ]
908
+ },
909
+ {
910
+ "name": "string-random-string",
911
+ "description": "`alphabet`에서 `length` 글자를 런타임 난수로 뽑아 무작위 문자열을 만든다.",
912
+ "dependencies": [],
913
+ "files": [
914
+ "string/random-string/index.ts",
915
+ "string/random-string/random-string.ts"
916
+ ]
917
+ },
918
+ {
919
+ "name": "string-reverse",
920
+ "description": "문자 순서를 뒤집어 새 문자열을 반환한다. 입력은 변형하지 않는다.",
921
+ "dependencies": [],
922
+ "files": [
923
+ "string/reverse/index.ts",
924
+ "string/reverse/reverse.ts"
925
+ ]
926
+ },
927
+ {
928
+ "name": "string-slugify",
929
+ "description": "문자열을 URL/식별자용 슬러그로 바꾼다. 소문자로 내린 뒤 ASCII 영숫자가 아닌",
930
+ "dependencies": [],
931
+ "files": [
932
+ "string/slugify/index.ts",
933
+ "string/slugify/slugify.ts"
934
+ ]
935
+ },
936
+ {
937
+ "name": "string-strip-tags",
938
+ "description": "`<...>` 형태의 HTML 태그를 제거하고 태그 사이의 텍스트만 남긴다.",
939
+ "dependencies": [],
940
+ "files": [
941
+ "string/strip-tags/index.ts",
942
+ "string/strip-tags/strip-tags.ts"
943
+ ]
944
+ },
945
+ {
946
+ "name": "string-template",
947
+ "description": "문자열 안의 `{key}` 자리표시자를 `data[key]` 값으로 치환한다. `data`에 없는",
948
+ "dependencies": [],
949
+ "files": [
950
+ "string/template/index.ts",
951
+ "string/template/template.ts"
952
+ ]
953
+ },
954
+ {
955
+ "name": "string-truncate",
956
+ "description": "문자열이 `length` 이하면 그대로 두고, 넘으면 뒤를 잘라 `suffix`를 붙인다.",
957
+ "dependencies": [],
958
+ "files": [
959
+ "string/truncate/index.ts",
960
+ "string/truncate/truncate.ts"
961
+ ]
962
+ },
963
+ {
964
+ "name": "string-truncate-middle",
965
+ "description": "가운데를 잘라 양끝을 보존한다. 긴 파일명이나 경로를 `\"long….txt\"`처럼 줄일 때",
966
+ "dependencies": [],
967
+ "files": [
968
+ "string/truncate-middle/index.ts",
969
+ "string/truncate-middle/truncate-middle.ts"
970
+ ]
971
+ },
972
+ {
973
+ "name": "string-uuid",
974
+ "description": "UUID 문자열을 생성한다. `globalThis.crypto.randomUUID`가 있으면 그것을 쓰고,",
975
+ "dependencies": [],
976
+ "runtime": "node",
977
+ "devDependencies": [
978
+ "@types/node@^22"
979
+ ],
980
+ "files": [
981
+ "string/uuid/index.ts",
982
+ "string/uuid/uuid.ts"
983
+ ]
984
+ },
985
+ {
986
+ "name": "tailwindcss-class-variant",
987
+ "description": "`tailwind-variants`의 `tv`를 감싸 variant 기반 className 빌더를 만든다. `cn`과",
988
+ "dependencies": [
989
+ "tailwind-variants@^3.2.2"
990
+ ],
991
+ "files": [
992
+ "tailwindcss/class-variant/class-variant.ts",
993
+ "tailwindcss/class-variant/index.ts",
994
+ "tailwindcss/tw-merge-config/index.ts",
995
+ "tailwindcss/tw-merge-config/tw-merge-config.ts"
996
+ ]
997
+ },
998
+ {
999
+ "name": "tailwindcss-cn",
1000
+ "description": "`clsx`와 `tailwind-merge`를 합쳐 조건부 className을 만들고 충돌하는 Tailwind",
1001
+ "dependencies": [
1002
+ "clsx@^2.1.1",
1003
+ "tailwind-merge@^3.6.0",
1004
+ "tailwind-variants@^3.2.2"
1005
+ ],
1006
+ "files": [
1007
+ "tailwindcss/cn/cn.ts",
1008
+ "tailwindcss/cn/index.ts",
1009
+ "tailwindcss/tw-merge-config/index.ts",
1010
+ "tailwindcss/tw-merge-config/tw-merge-config.ts"
1011
+ ]
1012
+ },
1013
+ {
1014
+ "name": "tailwindcss-create-tailwind-css",
1015
+ "description": "전달한 `twMergeConfig`를 공유하는 `cn`과 `classVariant` 세트를 만든다. 패키지의",
1016
+ "dependencies": [
1017
+ "clsx@^2.1.1",
1018
+ "tailwind-merge@^3.6.0",
1019
+ "tailwind-variants@^3.2.2"
1020
+ ],
1021
+ "files": [
1022
+ "tailwindcss/class-variant/class-variant.ts",
1023
+ "tailwindcss/class-variant/index.ts",
1024
+ "tailwindcss/cn/cn.ts",
1025
+ "tailwindcss/cn/index.ts",
1026
+ "tailwindcss/create-tailwind-css/create-tailwind-css.ts",
1027
+ "tailwindcss/create-tailwind-css/index.ts",
1028
+ "tailwindcss/tw-merge-config/index.ts",
1029
+ "tailwindcss/tw-merge-config/tw-merge-config.ts"
1030
+ ]
1031
+ },
1032
+ {
1033
+ "name": "tailwindcss-tw-merge-config",
1034
+ "description": "`cn`과 `classVariant`가 공유하는 tailwind-merge 설정을 한곳에서 관리한다. 두 함수가",
1035
+ "dependencies": [
1036
+ "tailwind-variants@^3.2.2"
1037
+ ],
1038
+ "files": [
1039
+ "tailwindcss/tw-merge-config/index.ts",
1040
+ "tailwindcss/tw-merge-config/tw-merge-config.ts"
1041
+ ]
1042
+ },
1043
+ {
1044
+ "name": "type-get-type",
1045
+ "description": "`typeof`가 못 가르는 `null`·`array`까지 구분해 정규화된 타입 문자열을 돌려준다.",
1046
+ "dependencies": [],
1047
+ "files": [
1048
+ "type/get-type/get-type.ts",
1049
+ "type/get-type/index.ts"
1050
+ ]
1051
+ },
1052
+ {
1053
+ "name": "type-is-type-of",
1054
+ "description": "값이 기대한 타입과 일치하는지 판별한다. [get-type](../get-type)의 정규화된",
1055
+ "dependencies": [],
1056
+ "files": [
1057
+ "type/get-type/get-type.ts",
1058
+ "type/get-type/index.ts",
1059
+ "type/is-type-of/index.ts",
1060
+ "type/is-type-of/is-type-of.ts"
1061
+ ]
1062
+ },
1063
+ {
1064
+ "name": "util-mutex",
1065
+ "description": "비동기 상호 배제(mutual exclusion) 락. 임계 구역을 한 번에 하나의 작업만",
1066
+ "dependencies": [],
1067
+ "files": [
1068
+ "data-structure/queue/index.ts",
1069
+ "data-structure/queue/queue.ts",
1070
+ "util/mutex/index.ts",
1071
+ "util/mutex/mutex.ts"
1072
+ ]
1073
+ },
1074
+ {
1075
+ "name": "util-url-parser",
1076
+ "description": "표준 `URL` API 기반 URL 파서. 쿼리·프래그먼트·오리진을 안전하게 뽑는다.",
1077
+ "dependencies": [],
1078
+ "files": [
1079
+ "util/url-parser/index.ts",
1080
+ "util/url-parser/url-parser.ts"
1081
+ ]
1082
+ }
1083
+ ]
1084
+ }