@ntnyq/utils 0.0.2 → 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.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2022-PRESENT ntnyq <https://github.com/ntnyq>
3
+ Copyright (c) 2024-PRESENT ntnyq <https://github.com/ntnyq>
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,19 +1,27 @@
1
1
  # @ntnyq/utils
2
2
 
3
+ [![CI](https://github.com/ntnyq/utils/workflows/CI/badge.svg)](https://github.com/ntnyq/utils/actions)
3
4
  [![NPM VERSION](https://img.shields.io/npm/v/@ntnyq/utils.svg)](https://www.npmjs.com/package/@ntnyq/utils)
5
+ [![NPM DOWNLOADS](https://img.shields.io/npm/dy/@ntnyq/utils.svg)](https://www.npmjs.com/package/@ntnyq/utils)
6
+ [![CODECOV](https://codecov.io/github/ntnyq/utils/branch/main/graph/badge.svg)](https://codecov.io/github/ntnyq/utils)
7
+ [![LICENSE](https://img.shields.io/github/license/ntnyq/utils.svg)](https://github.com/ntnyq/utils/blob/main/LICENSE)
8
+
9
+ > Common used utils.
4
10
 
5
11
  ## Install
6
12
 
7
13
  ```bash
8
- pnpm add @ntnyq/utils -D
14
+ npm install @ntnyq/utils
9
15
  ```
10
16
 
11
- ## Utils
17
+ ```bash
18
+ yarn add @ntnyq/utils
19
+ ```
12
20
 
13
- - [camelCase](./src/camelCase.ts)
14
- - [capitalize](./src/capitalize.ts)
15
- - [kekabCase](./src/kekabCase.ts)
21
+ ```bash
22
+ pnpm add @ntnyq/utils
23
+ ```
16
24
 
17
25
  ## License
18
26
 
19
- [MIT](./LICENSE) License © 2022-PRESENT [ntnyq](https://github.com/ntnyq)
27
+ [MIT](./LICENSE) License © 2024-PRESENT [ntnyq](https://github.com/ntnyq)
package/dist/index.cjs CHANGED
@@ -1,17 +1,228 @@
1
- 'use strict';
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
2
19
 
3
- function kekabCase(input) {
4
- return input.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
20
+ // src/index.ts
21
+ var src_exports = {};
22
+ __export(src_exports, {
23
+ cAF: () => cAF,
24
+ camelCase: () => camelCase,
25
+ capitalize: () => capitalize,
26
+ days: () => days,
27
+ flatCase: () => flatCase,
28
+ hours: () => hours,
29
+ isBrowser: () => isBrowser,
30
+ isUppercase: () => isUppercase,
31
+ kebabCase: () => kebabCase,
32
+ lowerFirst: () => lowerFirst,
33
+ minutes: () => minutes,
34
+ pascalCase: () => pascalCase,
35
+ rAF: () => rAF,
36
+ seconds: () => seconds,
37
+ snakeCase: () => snakeCase,
38
+ splitByCase: () => splitByCase,
39
+ titleCase: () => titleCase,
40
+ toArray: () => toArray,
41
+ trainCase: () => trainCase,
42
+ unique: () => unique,
43
+ upperFirst: () => upperFirst,
44
+ waitFor: () => waitFor,
45
+ warnOnce: () => warnOnce,
46
+ weeks: () => weeks
47
+ });
48
+ module.exports = __toCommonJS(src_exports);
49
+
50
+ // src/env/isBrowser.ts
51
+ var isBrowser = () => typeof document !== "undefined";
52
+
53
+ // node_modules/.pnpm/scule@1.3.0/node_modules/scule/dist/index.mjs
54
+ var NUMBER_CHAR_RE = /\d/;
55
+ var STR_SPLITTERS = ["-", "_", "/", "."];
56
+ function isUppercase(char = "") {
57
+ if (NUMBER_CHAR_RE.test(char)) {
58
+ return void 0;
59
+ }
60
+ return char !== char.toLowerCase();
61
+ }
62
+ function splitByCase(str, separators) {
63
+ const splitters = separators ?? STR_SPLITTERS;
64
+ const parts = [];
65
+ if (!str || typeof str !== "string") {
66
+ return parts;
67
+ }
68
+ let buff = "";
69
+ let previousUpper;
70
+ let previousSplitter;
71
+ for (const char of str) {
72
+ const isSplitter = splitters.includes(char);
73
+ if (isSplitter === true) {
74
+ parts.push(buff);
75
+ buff = "";
76
+ previousUpper = void 0;
77
+ continue;
78
+ }
79
+ const isUpper = isUppercase(char);
80
+ if (previousSplitter === false) {
81
+ if (previousUpper === false && isUpper === true) {
82
+ parts.push(buff);
83
+ buff = char;
84
+ previousUpper = isUpper;
85
+ continue;
86
+ }
87
+ if (previousUpper === true && isUpper === false && buff.length > 1) {
88
+ const lastChar = buff.at(-1);
89
+ parts.push(buff.slice(0, Math.max(0, buff.length - 1)));
90
+ buff = lastChar + char;
91
+ previousUpper = isUpper;
92
+ continue;
93
+ }
94
+ }
95
+ buff += char;
96
+ previousUpper = isUpper;
97
+ previousSplitter = isSplitter;
98
+ }
99
+ parts.push(buff);
100
+ return parts;
101
+ }
102
+ function upperFirst(str) {
103
+ return str ? str[0].toUpperCase() + str.slice(1) : "";
104
+ }
105
+ function lowerFirst(str) {
106
+ return str ? str[0].toLowerCase() + str.slice(1) : "";
107
+ }
108
+ function pascalCase(str, opts) {
109
+ return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => upperFirst(opts?.normalize ? p.toLowerCase() : p)).join("") : "";
110
+ }
111
+ function camelCase(str, opts) {
112
+ return lowerFirst(pascalCase(str || "", opts));
5
113
  }
114
+ function kebabCase(str, joiner) {
115
+ return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => p.toLowerCase()).join(joiner ?? "-") : "";
116
+ }
117
+ function snakeCase(str) {
118
+ return kebabCase(str || "", "_");
119
+ }
120
+ function flatCase(str) {
121
+ return kebabCase(str || "", "");
122
+ }
123
+ function trainCase(str, opts) {
124
+ return (Array.isArray(str) ? str : splitByCase(str)).filter(Boolean).map((p) => upperFirst(opts?.normalize ? p.toLowerCase() : p)).join("-");
125
+ }
126
+ var titleCaseExceptions = /^(a|an|and|as|at|but|by|for|if|in|is|nor|of|on|or|the|to|with)$/i;
127
+ function titleCase(str, opts) {
128
+ return (Array.isArray(str) ? str : splitByCase(str)).filter(Boolean).map(
129
+ (p) => titleCaseExceptions.test(p) ? p.toLowerCase() : upperFirst(opts?.normalize ? p.toLowerCase() : p)
130
+ ).join(" ");
131
+ }
132
+
133
+ // src/case.ts
134
+ var capitalize = upperFirst;
6
135
 
7
- function camelCase(input) {
8
- return input.replace(/[._-](\w)/g, (_, c) => c ? c.toUpperCase() : "");
136
+ // src/misc/raf.ts
137
+ var root = isBrowser() ? window : globalThis;
138
+ var prev = Date.now();
139
+ function mockRAF(fn) {
140
+ const curr = Date.now();
141
+ const ms = Math.max(0, 16 - (curr - prev));
142
+ const id = setTimeout(fn, ms);
143
+ prev = curr + ms;
144
+ return id;
9
145
  }
146
+ function rAF(fn) {
147
+ const raf = root.requestAnimationFrame || mockRAF;
148
+ return raf.call(root, fn);
149
+ }
150
+ function cAF(id) {
151
+ const caf = root.cancelAnimationFrame || root.clearTimeout;
152
+ return caf.call(root, id);
153
+ }
154
+
155
+ // src/misc/time.ts
156
+ var ONE_SECOND = 1e3;
157
+ var ONE_MINUTE = 60 * ONE_SECOND;
158
+ var ONE_HOUR = 60 * ONE_MINUTE;
159
+ var ONE_DAY = 24 * ONE_HOUR;
160
+ var ONE_WEEK = 7 * ONE_DAY;
161
+ function seconds(count) {
162
+ return count * ONE_SECOND;
163
+ }
164
+ function minutes(count) {
165
+ return count * ONE_MINUTE;
166
+ }
167
+ function hours(count) {
168
+ return count * ONE_HOUR;
169
+ }
170
+ function days(count) {
171
+ return count * ONE_DAY;
172
+ }
173
+ function weeks(count) {
174
+ return count * ONE_WEEK;
175
+ }
176
+
177
+ // src/misc/waitFor.ts
178
+ function waitFor(ms) {
179
+ return new Promise((resolve) => setTimeout(resolve, ms));
180
+ }
181
+
182
+ // src/misc/warnOnce.ts
183
+ var warned = /* @__PURE__ */ new Set();
184
+ var warnOnce = (message) => {
185
+ if (warned.has(message)) {
186
+ return;
187
+ }
188
+ warned.add(message);
189
+ console.warn(message);
190
+ };
10
191
 
11
- function capitalize(input) {
12
- return `${input.charAt(0).toUpperCase()}${input.slice(1)}`;
192
+ // src/array/unique.ts
193
+ function unique(val) {
194
+ return Array.from(new Set(val));
13
195
  }
14
196
 
15
- exports.camelCase = camelCase;
16
- exports.capitalize = capitalize;
17
- exports.kekabCase = kekabCase;
197
+ // src/array/toArray.ts
198
+ function toArray(val) {
199
+ val = val ?? [];
200
+ return Array.isArray(val) ? val : [val];
201
+ }
202
+ // Annotate the CommonJS export names for ESM import in node:
203
+ 0 && (module.exports = {
204
+ cAF,
205
+ camelCase,
206
+ capitalize,
207
+ days,
208
+ flatCase,
209
+ hours,
210
+ isBrowser,
211
+ isUppercase,
212
+ kebabCase,
213
+ lowerFirst,
214
+ minutes,
215
+ pascalCase,
216
+ rAF,
217
+ seconds,
218
+ snakeCase,
219
+ splitByCase,
220
+ titleCase,
221
+ toArray,
222
+ trainCase,
223
+ unique,
224
+ upperFirst,
225
+ waitFor,
226
+ warnOnce,
227
+ weeks
228
+ });
@@ -0,0 +1,79 @@
1
+ import { upperFirst } from 'scule';
2
+ export * from 'scule';
3
+
4
+ /**
5
+ * @file env.ts
6
+ */
7
+ /**
8
+ * Checks if the code is running in a browser
9
+ *
10
+ * @returns boolean - true if the code is running in a browser
11
+ */
12
+ declare const isBrowser: () => boolean;
13
+
14
+ /**
15
+ * @file case utils
16
+ * @category Case
17
+ */
18
+
19
+ /**
20
+ * @deprecated use upperFirst instead
21
+ */
22
+ declare const capitalize: typeof upperFirst;
23
+
24
+ /**
25
+ * @file raf.ts
26
+ */
27
+ /**
28
+ * Request animation frame
29
+ *
30
+ * @param fn callback
31
+ * @returns id
32
+ */
33
+ declare function rAF(fn: FrameRequestCallback): number;
34
+ /**
35
+ * Cancel animation frame
36
+ *
37
+ * @param id id
38
+ * @returns void
39
+ */
40
+ declare function cAF(id: number): void;
41
+
42
+ /**
43
+ * @category Utils - time
44
+ */
45
+ declare function seconds(count: number): number;
46
+ declare function minutes(count: number): number;
47
+ declare function hours(count: number): number;
48
+ declare function days(count: number): number;
49
+ declare function weeks(count: number): number;
50
+
51
+ /**
52
+ * Wait for a number of milliseconds
53
+ *
54
+ * @param ms millseconds to wait
55
+ * @returns a promise that resolves after ms milliseconds
56
+ *
57
+ * @example
58
+ * ```
59
+ * import { waitFor } from '@ntnyq/utils'
60
+ * await waitFor(3e3)
61
+ * // do somthing after 3 seconds
62
+ * ```
63
+ */
64
+ declare function waitFor(ms: number): Promise<unknown>;
65
+
66
+ declare const warnOnce: (message: string) => void;
67
+
68
+ declare function unique<T>(val: T[]): T[];
69
+
70
+ type Nullable<T> = T | null;
71
+ type MayBe<T> = T | undefined;
72
+ type AnyFn<T = any, R = any> = (...args: T[]) => R;
73
+ type Arrayable<T> = T | T[];
74
+ type Awaitable<T> = T | Promise<T>;
75
+ type Prettify<T> = Omit<T, never>;
76
+
77
+ declare function toArray<T>(val?: Nullable<Arrayable<T>>): Arrayable<T>;
78
+
79
+ export { type AnyFn, type Arrayable, type Awaitable, type MayBe, type Nullable, type Prettify, cAF, capitalize, days, hours, isBrowser, minutes, rAF, seconds, toArray, unique, waitFor, warnOnce, weeks };
package/dist/index.d.ts CHANGED
@@ -1,43 +1,79 @@
1
+ import { upperFirst } from 'scule';
2
+ export * from 'scule';
3
+
1
4
  /**
2
- * transform given string to kekabCase
3
- *
4
- * @param input given string
5
- * @returns string in kekabCase
5
+ * @file env.ts
6
+ */
7
+ /**
8
+ * Checks if the code is running in a browser
6
9
  *
7
- * @example
8
- * ```
9
- * import { kekabCase } from '@ntnyq/utils'
10
- * kekabCase('FooBarBaz') // foo-bar-baz
11
- * ```
10
+ * @returns boolean - true if the code is running in a browser
12
11
  */
13
- declare function kekabCase(input: string): string;
12
+ declare const isBrowser: () => boolean;
14
13
 
15
14
  /**
16
- * transform given string to camelCase
15
+ * @file case utils
16
+ * @category Case
17
+ */
18
+
19
+ /**
20
+ * @deprecated use upperFirst instead
21
+ */
22
+ declare const capitalize: typeof upperFirst;
23
+
24
+ /**
25
+ * @file raf.ts
26
+ */
27
+ /**
28
+ * Request animation frame
17
29
  *
18
- * @param input given string
19
- * @returns string in camelCase
30
+ * @param fn callback
31
+ * @returns id
32
+ */
33
+ declare function rAF(fn: FrameRequestCallback): number;
34
+ /**
35
+ * Cancel animation frame
20
36
  *
21
- * @example
22
- * ```
23
- * import { camelCase } from '@ntnyq/utils'
24
- * camelCase('foo-bar-baz') // fooBarBaz
25
- * ```
37
+ * @param id id
38
+ * @returns void
26
39
  */
27
- declare function camelCase(input: string): string;
40
+ declare function cAF(id: number): void;
28
41
 
29
42
  /**
30
- * capitalize the given string's first letter
43
+ * @category Utils - time
44
+ */
45
+ declare function seconds(count: number): number;
46
+ declare function minutes(count: number): number;
47
+ declare function hours(count: number): number;
48
+ declare function days(count: number): number;
49
+ declare function weeks(count: number): number;
50
+
51
+ /**
52
+ * Wait for a number of milliseconds
31
53
  *
32
- * @param input given string
33
- * @returns string first letter capitalize
54
+ * @param ms millseconds to wait
55
+ * @returns a promise that resolves after ms milliseconds
34
56
  *
35
57
  * @example
36
58
  * ```
37
- * import { capitalize } from '@ntnyq/utils'
38
- * capitalize('fooBarBaz') // FooBarBaz
59
+ * import { waitFor } from '@ntnyq/utils'
60
+ * await waitFor(3e3)
61
+ * // do somthing after 3 seconds
39
62
  * ```
40
63
  */
41
- declare function capitalize(input: string): string;
64
+ declare function waitFor(ms: number): Promise<unknown>;
65
+
66
+ declare const warnOnce: (message: string) => void;
67
+
68
+ declare function unique<T>(val: T[]): T[];
69
+
70
+ type Nullable<T> = T | null;
71
+ type MayBe<T> = T | undefined;
72
+ type AnyFn<T = any, R = any> = (...args: T[]) => R;
73
+ type Arrayable<T> = T | T[];
74
+ type Awaitable<T> = T | Promise<T>;
75
+ type Prettify<T> = Omit<T, never>;
76
+
77
+ declare function toArray<T>(val?: Nullable<Arrayable<T>>): Arrayable<T>;
42
78
 
43
- export { camelCase, capitalize, kekabCase };
79
+ export { type AnyFn, type Arrayable, type Awaitable, type MayBe, type Nullable, type Prettify, cAF, capitalize, days, hours, isBrowser, minutes, rAF, seconds, toArray, unique, waitFor, warnOnce, weeks };
package/dist/index.js ADDED
@@ -0,0 +1,178 @@
1
+ // src/env/isBrowser.ts
2
+ var isBrowser = () => typeof document !== "undefined";
3
+
4
+ // node_modules/.pnpm/scule@1.3.0/node_modules/scule/dist/index.mjs
5
+ var NUMBER_CHAR_RE = /\d/;
6
+ var STR_SPLITTERS = ["-", "_", "/", "."];
7
+ function isUppercase(char = "") {
8
+ if (NUMBER_CHAR_RE.test(char)) {
9
+ return void 0;
10
+ }
11
+ return char !== char.toLowerCase();
12
+ }
13
+ function splitByCase(str, separators) {
14
+ const splitters = separators ?? STR_SPLITTERS;
15
+ const parts = [];
16
+ if (!str || typeof str !== "string") {
17
+ return parts;
18
+ }
19
+ let buff = "";
20
+ let previousUpper;
21
+ let previousSplitter;
22
+ for (const char of str) {
23
+ const isSplitter = splitters.includes(char);
24
+ if (isSplitter === true) {
25
+ parts.push(buff);
26
+ buff = "";
27
+ previousUpper = void 0;
28
+ continue;
29
+ }
30
+ const isUpper = isUppercase(char);
31
+ if (previousSplitter === false) {
32
+ if (previousUpper === false && isUpper === true) {
33
+ parts.push(buff);
34
+ buff = char;
35
+ previousUpper = isUpper;
36
+ continue;
37
+ }
38
+ if (previousUpper === true && isUpper === false && buff.length > 1) {
39
+ const lastChar = buff.at(-1);
40
+ parts.push(buff.slice(0, Math.max(0, buff.length - 1)));
41
+ buff = lastChar + char;
42
+ previousUpper = isUpper;
43
+ continue;
44
+ }
45
+ }
46
+ buff += char;
47
+ previousUpper = isUpper;
48
+ previousSplitter = isSplitter;
49
+ }
50
+ parts.push(buff);
51
+ return parts;
52
+ }
53
+ function upperFirst(str) {
54
+ return str ? str[0].toUpperCase() + str.slice(1) : "";
55
+ }
56
+ function lowerFirst(str) {
57
+ return str ? str[0].toLowerCase() + str.slice(1) : "";
58
+ }
59
+ function pascalCase(str, opts) {
60
+ return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => upperFirst(opts?.normalize ? p.toLowerCase() : p)).join("") : "";
61
+ }
62
+ function camelCase(str, opts) {
63
+ return lowerFirst(pascalCase(str || "", opts));
64
+ }
65
+ function kebabCase(str, joiner) {
66
+ return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => p.toLowerCase()).join(joiner ?? "-") : "";
67
+ }
68
+ function snakeCase(str) {
69
+ return kebabCase(str || "", "_");
70
+ }
71
+ function flatCase(str) {
72
+ return kebabCase(str || "", "");
73
+ }
74
+ function trainCase(str, opts) {
75
+ return (Array.isArray(str) ? str : splitByCase(str)).filter(Boolean).map((p) => upperFirst(opts?.normalize ? p.toLowerCase() : p)).join("-");
76
+ }
77
+ var titleCaseExceptions = /^(a|an|and|as|at|but|by|for|if|in|is|nor|of|on|or|the|to|with)$/i;
78
+ function titleCase(str, opts) {
79
+ return (Array.isArray(str) ? str : splitByCase(str)).filter(Boolean).map(
80
+ (p) => titleCaseExceptions.test(p) ? p.toLowerCase() : upperFirst(opts?.normalize ? p.toLowerCase() : p)
81
+ ).join(" ");
82
+ }
83
+
84
+ // src/case.ts
85
+ var capitalize = upperFirst;
86
+
87
+ // src/misc/raf.ts
88
+ var root = isBrowser() ? window : globalThis;
89
+ var prev = Date.now();
90
+ function mockRAF(fn) {
91
+ const curr = Date.now();
92
+ const ms = Math.max(0, 16 - (curr - prev));
93
+ const id = setTimeout(fn, ms);
94
+ prev = curr + ms;
95
+ return id;
96
+ }
97
+ function rAF(fn) {
98
+ const raf = root.requestAnimationFrame || mockRAF;
99
+ return raf.call(root, fn);
100
+ }
101
+ function cAF(id) {
102
+ const caf = root.cancelAnimationFrame || root.clearTimeout;
103
+ return caf.call(root, id);
104
+ }
105
+
106
+ // src/misc/time.ts
107
+ var ONE_SECOND = 1e3;
108
+ var ONE_MINUTE = 60 * ONE_SECOND;
109
+ var ONE_HOUR = 60 * ONE_MINUTE;
110
+ var ONE_DAY = 24 * ONE_HOUR;
111
+ var ONE_WEEK = 7 * ONE_DAY;
112
+ function seconds(count) {
113
+ return count * ONE_SECOND;
114
+ }
115
+ function minutes(count) {
116
+ return count * ONE_MINUTE;
117
+ }
118
+ function hours(count) {
119
+ return count * ONE_HOUR;
120
+ }
121
+ function days(count) {
122
+ return count * ONE_DAY;
123
+ }
124
+ function weeks(count) {
125
+ return count * ONE_WEEK;
126
+ }
127
+
128
+ // src/misc/waitFor.ts
129
+ function waitFor(ms) {
130
+ return new Promise((resolve) => setTimeout(resolve, ms));
131
+ }
132
+
133
+ // src/misc/warnOnce.ts
134
+ var warned = /* @__PURE__ */ new Set();
135
+ var warnOnce = (message) => {
136
+ if (warned.has(message)) {
137
+ return;
138
+ }
139
+ warned.add(message);
140
+ console.warn(message);
141
+ };
142
+
143
+ // src/array/unique.ts
144
+ function unique(val) {
145
+ return Array.from(new Set(val));
146
+ }
147
+
148
+ // src/array/toArray.ts
149
+ function toArray(val) {
150
+ val = val ?? [];
151
+ return Array.isArray(val) ? val : [val];
152
+ }
153
+ export {
154
+ cAF,
155
+ camelCase,
156
+ capitalize,
157
+ days,
158
+ flatCase,
159
+ hours,
160
+ isBrowser,
161
+ isUppercase,
162
+ kebabCase,
163
+ lowerFirst,
164
+ minutes,
165
+ pascalCase,
166
+ rAF,
167
+ seconds,
168
+ snakeCase,
169
+ splitByCase,
170
+ titleCase,
171
+ toArray,
172
+ trainCase,
173
+ unique,
174
+ upperFirst,
175
+ waitFor,
176
+ warnOnce,
177
+ weeks
178
+ };
package/package.json CHANGED
@@ -1,50 +1,75 @@
1
1
  {
2
2
  "name": "@ntnyq/utils",
3
- "version": "0.0.2",
4
- "publishConfig": {
5
- "access": "public"
6
- },
7
- "description": "",
8
- "keywords": [],
3
+ "type": "module",
4
+ "version": "0.1.0",
5
+ "description": "Common used utils.",
6
+ "keywords": [
7
+ "utils"
8
+ ],
9
9
  "license": "MIT",
10
10
  "author": {
11
11
  "name": "ntnyq",
12
12
  "email": "ntnyq13@gmail.com"
13
13
  },
14
- "homepage": "https://github.com/ntnyq/ntnyq-utils#readme",
15
- "repository": {
16
- "type": "git",
17
- "url": "ntnyq/ntnyq-utils",
18
- "directory": "packages/utils"
14
+ "homepage": "https://github.com/ntnyq/utils#readme",
15
+ "bugs": {
16
+ "url": "https://github.com/ntnyq/utils/issues"
19
17
  },
18
+ "repository": "ntnyq/utils",
20
19
  "exports": {
20
+ "./package.json": "./package.json",
21
21
  ".": {
22
- "types": "./dist/index.d.ts",
23
- "require": "./dist/index.cjs",
24
- "import": "./dist/index.mjs"
25
- },
26
- "./*": "./*"
27
- },
28
- "main": "./dist/index.cjs",
29
- "module": "./dist/index.mjs",
30
- "types": "./dist/index.d.ts",
31
- "typesVersions": {
32
- "*": {
33
- "*": [
34
- "./dist/*",
35
- "./dist/index.d.ts"
36
- ]
22
+ "import": {
23
+ "types": "./dist/index.d.ts",
24
+ "default": "./dist/index.js"
25
+ },
26
+ "require": {
27
+ "types": "./dist/index.d.cts",
28
+ "default": "./dist/index.cjs"
29
+ }
37
30
  }
38
31
  },
32
+ "main": "./dist/index.js",
33
+ "module": "./dist/index.js",
34
+ "types": "./dist/index.d.ts",
39
35
  "files": [
40
36
  "dist"
41
37
  ],
42
38
  "sideEffects": false,
43
- "bugs": {
44
- "url": "https://github.com/ntnyq/ntnyq-utils/issues"
39
+ "dependencies": {
40
+ "scule": "^1.3.0"
41
+ },
42
+ "devDependencies": {
43
+ "@ntnyq/eslint-config": "^3.0.0-beta.13",
44
+ "@ntnyq/prettier-config": "^1.21.3",
45
+ "@vitest/coverage-v8": "^2.1.1",
46
+ "bumpp": "^9.5.2",
47
+ "eslint": "^9.10.0",
48
+ "husky": "^9.1.6",
49
+ "nano-staged": "^0.8.0",
50
+ "npm-run-all2": "^6.2.3",
51
+ "pnpm": "^9.10.0",
52
+ "prettier": "^3.3.3",
53
+ "tsup": "^8.3.0",
54
+ "typescript": "^5.6.2",
55
+ "vitest": "^2.1.1"
56
+ },
57
+ "engines": {
58
+ "node": ">=18.18.0"
59
+ },
60
+ "prettier": "@ntnyq/prettier-config",
61
+ "nano-staged": {
62
+ "*.{js,ts,mjs,cjs,json,md,yml,yaml}": "eslint --fix"
45
63
  },
46
64
  "scripts": {
47
- "build": "unbuild",
48
- "dev": "unbuild --stub"
65
+ "build": "tsup",
66
+ "coverage": "vitest --coverage",
67
+ "dev": "tsup --watch src",
68
+ "lint": "eslint .",
69
+ "release": "run-s release:check release:publish",
70
+ "release:check": "run-s lint typecheck test",
71
+ "release:publish": "bumpp && pnpm publish",
72
+ "test": "vitest",
73
+ "typecheck": "tsc --noEmit"
49
74
  }
50
75
  }
package/dist/index.mjs DELETED
@@ -1,13 +0,0 @@
1
- function kekabCase(input) {
2
- return input.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
3
- }
4
-
5
- function camelCase(input) {
6
- return input.replace(/[._-](\w)/g, (_, c) => c ? c.toUpperCase() : "");
7
- }
8
-
9
- function capitalize(input) {
10
- return `${input.charAt(0).toUpperCase()}${input.slice(1)}`;
11
- }
12
-
13
- export { camelCase, capitalize, kekabCase };