@jadeja/ts 1.0.0-alpha.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 (59) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/CODE_OF_CONDUCT.md +82 -0
  3. package/CONTRIBUTING.md +103 -0
  4. package/LICENSE +20 -0
  5. package/README.md +38 -0
  6. package/SECURITY.md +11 -0
  7. package/dist/lib.js +36 -0
  8. package/dist/lib.js.map +1 -0
  9. package/dist/oxfmt.js +65 -0
  10. package/dist/oxfmt.js.map +1 -0
  11. package/dist/oxlint.js +185 -0
  12. package/dist/oxlint.js.map +1 -0
  13. package/dist/src/configs/oxfmt/base.d.ts +42 -0
  14. package/dist/src/configs/oxfmt/base.d.ts.map +1 -0
  15. package/dist/src/configs/oxfmt/index.d.ts +4 -0
  16. package/dist/src/configs/oxfmt/index.d.ts.map +1 -0
  17. package/dist/src/configs/oxfmt/lib.d.ts +42 -0
  18. package/dist/src/configs/oxfmt/lib.d.ts.map +1 -0
  19. package/dist/src/configs/oxfmt/next.d.ts +47 -0
  20. package/dist/src/configs/oxfmt/next.d.ts.map +1 -0
  21. package/dist/src/configs/oxfmt/types.d.ts +2 -0
  22. package/dist/src/configs/oxfmt/types.d.ts.map +1 -0
  23. package/dist/src/configs/oxlint/base.d.ts +105 -0
  24. package/dist/src/configs/oxlint/base.d.ts.map +1 -0
  25. package/dist/src/configs/oxlint/index.d.ts +4 -0
  26. package/dist/src/configs/oxlint/index.d.ts.map +1 -0
  27. package/dist/src/configs/oxlint/lib.d.ts +105 -0
  28. package/dist/src/configs/oxlint/lib.d.ts.map +1 -0
  29. package/dist/src/configs/oxlint/next.d.ts +151 -0
  30. package/dist/src/configs/oxlint/next.d.ts.map +1 -0
  31. package/dist/src/configs/oxlint/types.d.ts +2 -0
  32. package/dist/src/configs/oxlint/types.d.ts.map +1 -0
  33. package/dist/src/configs/ts/base.json +12 -0
  34. package/dist/src/configs/ts/lib.json +9 -0
  35. package/dist/src/configs/ts/next.json +18 -0
  36. package/dist/src/lib/debounce.d.ts +9 -0
  37. package/dist/src/lib/debounce.d.ts.map +1 -0
  38. package/dist/src/lib/index.d.ts +5 -0
  39. package/dist/src/lib/index.d.ts.map +1 -0
  40. package/dist/src/lib/logger.d.ts +44 -0
  41. package/dist/src/lib/logger.d.ts.map +1 -0
  42. package/dist/src/lib/operations.d.ts +41 -0
  43. package/dist/src/lib/operations.d.ts.map +1 -0
  44. package/dist/src/lib/types.d.ts +41 -0
  45. package/dist/src/lib/types.d.ts.map +1 -0
  46. package/dist/src/lib/utils.d.ts +8 -0
  47. package/dist/src/lib/utils.d.ts.map +1 -0
  48. package/dist/src/plugins/vite/copy-folders.d.ts +17 -0
  49. package/dist/src/plugins/vite/copy-folders.d.ts.map +1 -0
  50. package/dist/src/plugins/vite/index.d.ts +2 -0
  51. package/dist/src/plugins/vite/index.d.ts.map +1 -0
  52. package/dist/src/types/index.d.ts +2 -0
  53. package/dist/src/types/index.d.ts.map +1 -0
  54. package/dist/src/types/shared.d.ts +34 -0
  55. package/dist/src/types/shared.d.ts.map +1 -0
  56. package/dist/types.js +0 -0
  57. package/dist/vite-plugins.js +22 -0
  58. package/dist/vite-plugins.js.map +1 -0
  59. package/package.json +119 -0
@@ -0,0 +1,41 @@
1
+ /**
2
+ * recursively merges the properties of the source object into the target object.
3
+ *
4
+ * @param target - The target object to merge into. Must be an object.
5
+ * @param source - The source object to merge from. Must be an object.
6
+ *
7
+ * @returns `source` object deep (nested) merge into `target` object.
8
+ *
9
+ * @throws If either `target` or `source` is not an object.
10
+ */
11
+ export declare const deepMergeObj: <T, U>(target: T, source: U) => T & U;
12
+ /**
13
+ * creates a deep copy of the given data using `structuredClone`.
14
+ *
15
+ * If the input is not an object or array, the original data is returned.
16
+ *
17
+ * @param data - The data to be copied. Can be an object or array.
18
+ *
19
+ * @returns A deep copy of the input data.
20
+ *
21
+ * @throws If any part of the input data is not serializable.
22
+ */
23
+ export declare const deepCopy: <T>(data: T) => T;
24
+ /**
25
+ * returns a fresh RegExp instance cloned from the provided input. This ensures the internal
26
+ * `lastIndex` state is reset to `0`, making the regex safe to reuse with stateful flags like `g` or
27
+ * `y` across multiple operations (e.g. `test`, `replace`, `exec`), particularly in long-lived
28
+ * runtimes such as HMR or shared modules.
29
+ *
30
+ * The returned RegExp preserves: - pattern source - flags (g, i, m, s, u, y, d, etc.)
31
+ *
32
+ * @example
33
+ * -fresh(LCH_COLOR_FORMAT_PATTERN).test(rawColor);
34
+ * -text.replace(fresh(LCH_COLOR_FORMAT_PATTERN), transformer);
35
+ *
36
+ * @param regex - The RegExp instance to clone.
37
+ *
38
+ * @returns A new RegExp instance with identical pattern and flags.
39
+ */
40
+ export declare const freshRegex: (regex: RegExp) => RegExp;
41
+ //# sourceMappingURL=operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../src/lib/operations.ts"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,UAqBtD,CAAC;AAIF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,MAAM,CAAC,KAAG,CAgBrC,CAAC;AAIF;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,WAAsB,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * checks if the provided data is a string.
3
+ *
4
+ * @param arg - The data to check.
5
+ *
6
+ * @returns `true` if the data is a string, otherwise `false`.
7
+ */
8
+ export declare const isStr: <T>(arg: T) => arg is T & string;
9
+ /**
10
+ * checks if the provided data is a number.
11
+ *
12
+ * @param arg - The data to check.
13
+ *
14
+ * @returns `true` if the data is a number, otherwise `false`.
15
+ */
16
+ export declare const isNum: <T>(arg: T) => arg is T & number;
17
+ /**
18
+ * checks if the provided data is a function.
19
+ *
20
+ * @param arg - The data to check.
21
+ *
22
+ * @returns `true` if the data is a function, otherwise `false`.
23
+ */
24
+ export declare const isFn: <T>(arg: T) => arg is T & Function;
25
+ /**
26
+ * checks if the provided data is an array.
27
+ *
28
+ * @param arg - The data to check.
29
+ *
30
+ * @returns `true` if the data is an array, otherwise `false`.
31
+ */
32
+ export declare const isArr: <T>(arg: T) => arg is T & any[];
33
+ /**
34
+ * checks if the provided data is an object (not an array, or null).
35
+ *
36
+ * @param arg - The data to check.
37
+ *
38
+ * @returns `true` if the data is an object, otherwise `false`.
39
+ */
40
+ export declare const isObj: <T>(arg: T) => boolean;
41
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,KAAK,CAAC,sBAA4B,CAAC;AAI5D;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,KAAK,CAAC,sBAA4B,CAAC;AAI5D;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,KAAK,CAAC,wBAA8B,CAAC;AAI7D;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,KAAK,CAAC,qBAAuB,CAAC;AAIvD;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,KAAK,CAAC,YAA2D,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { default as debounce } from './debounce.ts';
2
+ /**
3
+ * put the app to sleep for defined time for artificial delay to improve the UX
4
+ *
5
+ * @param time - time for artificial delay (default `250)
6
+ */
7
+ export declare const sleep: (time?: number) => Promise<void>;
8
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEpD;;;;GAIG;AAEH,eAAO,MAAM,KAAK,GAAU,aAAU,KAAG,OAAO,CAAC,IAAI,CAKjD,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * copies entire folders and its contents to a destination folders (post build)
3
+ *
4
+ * @param dirname - `import.meta.dirname`
5
+ * @param folders - an array of folder object containing `src` and `dest` property
6
+ */
7
+ declare const vitePluginCopyFolders: (dirname: string, folders: {
8
+ src: string;
9
+ dest: string;
10
+ }[]) => {
11
+ name: string;
12
+ apply: string;
13
+ enforce: string;
14
+ closeBundle(): void;
15
+ };
16
+ export default vitePluginCopyFolders;
17
+ //# sourceMappingURL=copy-folders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-folders.d.ts","sourceRoot":"","sources":["../../../../src/plugins/vite/copy-folders.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,QAAA,MAAM,qBAAqB,GAAI,SAAS,MAAM,EAAE,SAAS;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE;;;;;CAUtF,CAAC;AAkCH,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default as copyFolders } from './copy-folders.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/vite/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export type * from './shared';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,gBAAgB,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * recursive object where each key maps to a nested object or a final value.
3
+ */
4
+ export interface NestedObject<T> {
5
+ /**
6
+ * dynamic key for a nested branch or leaf value.
7
+ */
8
+ [key: string]: NestedObject<T> | T;
9
+ }
10
+ /**
11
+ * primitive data types
12
+ */
13
+ export type Primitive = string | number | boolean | bigint | symbol | null | undefined;
14
+ /**
15
+ * widen any type to primitive
16
+ */
17
+ export type WidenPrimitive<T> = T extends string ? string : T extends number ? number : T extends boolean ? boolean : T extends bigint ? bigint : T extends symbol ? symbol : T;
18
+ /**
19
+ * enhance auto-complete
20
+ *
21
+ * TODO: fina a better and correct way
22
+ */
23
+ export type PrimitiveWithAutocomplete<T> = T extends string ? T | (string & {}) : T extends number ? T | (number & {}) : T extends boolean ? T : T extends bigint ? T | (bigint & {}) : T extends symbol ? T | (symbol & {}) : T;
24
+ /**
25
+ * extend the narrow types
26
+ *
27
+ * TODO: find a better and correct way
28
+ */
29
+ export type Extend<T> = T extends (...args: any[]) => any ? T : T extends (infer U)[] ? Extend<U>[] : T extends object ? {
30
+ -readonly [K in keyof T]?: Extend<T[K]>;
31
+ } & {
32
+ [key: string]: Extend<WidenPrimitive<T[keyof T]>> | Primitive;
33
+ } : PrimitiveWithAutocomplete<T>;
34
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/types/shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B;;OAEG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAEvF;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC5C,MAAM,GACN,CAAC,SAAS,MAAM,GACd,MAAM,GACN,CAAC,SAAS,OAAO,GACf,OAAO,GACP,CAAC,SAAS,MAAM,GACd,MAAM,GACN,CAAC,SAAS,MAAM,GACd,MAAM,GACN,CAAC,CAAC;AAEd;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAGrD,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GACnB,CAAC,SAAS,MAAM,GAGZ,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GACnB,CAAC,SAAS,OAAO,GACf,CAAC,GACD,CAAC,SAAS,MAAM,GAGZ,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GACnB,CAAC,SAAS,MAAM,GAGZ,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GACnB,CAAC,CAAC;AACd;;;;GAIG;AAEH,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GACrD,CAAC,GACD,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACnB,MAAM,CAAC,CAAC,CAAC,EAAE,GACX,CAAC,SAAS,MAAM,GACd;IACE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACxC,GAAG;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CAC/D,GACD,yBAAyB,CAAC,CAAC,CAAC,CAAC"}
package/dist/types.js ADDED
File without changes
@@ -0,0 +1,22 @@
1
+ import { copyFileSync as e, existsSync as t, mkdirSync as n, readdirSync as r } from "node:fs";
2
+ import { join as i, resolve as a } from "node:path";
3
+ //#region src/plugins/vite/copy-folders.ts
4
+ var o = (e, t) => ({
5
+ name: "vite-plugin-copy-folders",
6
+ apply: "build",
7
+ enforce: "post",
8
+ closeBundle() {
9
+ for (let n of t) s(a(e, n.src), a(e, n.dest));
10
+ }
11
+ }), s = (a, o) => {
12
+ t(o) || n(o, { recursive: !0 });
13
+ let c = r(a, { withFileTypes: !0 });
14
+ for (let t of c) {
15
+ let n = i(a, t.name), r = i(o, t.name);
16
+ t.isDirectory() ? s(n, r) : e(n, r);
17
+ }
18
+ };
19
+ //#endregion
20
+ export { o as copyFolders };
21
+
22
+ //# sourceMappingURL=vite-plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-plugins.js","names":[],"sources":["../src/plugins/vite/copy-folders.ts"],"sourcesContent":["import { existsSync, mkdirSync, readdirSync, copyFileSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\n\n/* ============================================================================================= */\n\n/**\n * copies entire folders and its contents to a destination folders (post build)\n *\n * @param dirname - `import.meta.dirname`\n * @param folders - an array of folder object containing `src` and `dest` property\n */\nconst vitePluginCopyFolders = (dirname: string, folders: { src: string; dest: string }[]) => ({\n name: \"vite-plugin-copy-folders\",\n apply: \"build\",\n enforce: \"post\",\n\n closeBundle() {\n for (const folder of folders) {\n copyFolderSync(resolve(dirname, folder.src), resolve(dirname, folder.dest));\n }\n },\n});\n\n/* ============================================================================================= */\n\n/**\n * copies an entire folder and its contents to a destination folder\n *\n * If the destination directory does not exist, it will be created automatically.\n *\n * @param src - The source directory path.\n * @param dest - The destination directory path.\n */\nconst copyFolderSync = (src: string, dest: string) => {\n //\n if (!existsSync(dest)) {\n mkdirSync(dest, { recursive: true });\n }\n\n const entries = readdirSync(src, { withFileTypes: true });\n\n for (const entry of entries) {\n const srcPath = join(src, entry.name);\n const destPath = join(dest, entry.name);\n\n if (entry.isDirectory()) {\n copyFolderSync(srcPath, destPath);\n } else {\n copyFileSync(srcPath, destPath);\n }\n }\n};\n\n/* ============================================================================================= */\n\nexport default vitePluginCopyFolders;\n"],"mappings":";;;AAWA,IAAM,KAAyB,GAAiB,OAA8C;CAC5F,MAAM;CACN,OAAO;CACP,SAAS;CAET,cAAc;EACZ,KAAK,IAAM,KAAU,GACnB,EAAe,EAAQ,GAAS,EAAO,IAAI,EAAE,EAAQ,GAAS,EAAO,KAAK,CAAC;;CAGhF,GAYK,KAAkB,GAAa,MAAiB;CAEpD,AAAK,EAAW,EAAK,IACnB,EAAU,GAAM,EAAE,WAAW,IAAM,CAAC;CAGtC,IAAM,IAAU,EAAY,GAAK,EAAE,eAAe,IAAM,CAAC;CAEzD,KAAK,IAAM,KAAS,GAAS;EAC3B,IAAM,IAAU,EAAK,GAAK,EAAM,KAAK,EAC/B,IAAW,EAAK,GAAM,EAAM,KAAK;EAEvC,AAAI,EAAM,aAAa,GACrB,EAAe,GAAS,EAAS,GAEjC,EAAa,GAAS,EAAS"}
package/package.json ADDED
@@ -0,0 +1,119 @@
1
+ {
2
+ "name": "@jadeja/ts",
3
+ "description": "an opinionated TypeScript toolkit",
4
+ "version": "1.0.0-alpha.0",
5
+ "type": "module",
6
+ "exports": {
7
+ "./configs/oxfmt": {
8
+ "types": "./dist/src/configs/oxfmt/index.d.ts",
9
+ "import": "./dist/oxfmt.js",
10
+ "default": "./dist/oxfmt.js",
11
+ "require": "./dist/oxfmt.js"
12
+ },
13
+ "./configs/oxfmt/types": {
14
+ "types": "./dist/src/configs/oxfmt/types.d.ts"
15
+ },
16
+ "./configs/oxlint": {
17
+ "types": "./dist/src/configs/oxlint/index.d.ts",
18
+ "import": "./dist/oxlint.js",
19
+ "default": "./dist/oxlint.js",
20
+ "require": "./dist/oxlint.js"
21
+ },
22
+ "./configs/oxlint/types": {
23
+ "types": "./dist/src/configs/oxlint/types.d.ts"
24
+ },
25
+ "./configs/ts/*": {
26
+ "import": "./dist/src/configs/ts/*.json",
27
+ "default": "./dist/src/configs/ts/*.json",
28
+ "require": "./dist/src/configs/ts/*.json"
29
+ },
30
+ "./lib": {
31
+ "types": "./dist/src/lib/index.d.ts",
32
+ "import": "./dist/lib.js",
33
+ "default": "./dist/lib.js",
34
+ "require": "./dist/lib.js"
35
+ },
36
+ "./plugins/vite": {
37
+ "types": "./dist/src/plugins/vite/index.d.ts",
38
+ "import": "./dist/vite-plugins.js",
39
+ "default": "./dist/vite-plugins.js",
40
+ "require": "./dist/vite-plugins.js"
41
+ },
42
+ "./types": {
43
+ "types": "./dist/src/types/index.d.ts"
44
+ }
45
+ },
46
+ "devDependencies": {
47
+ "@types/node": "^24.6.2",
48
+ "husky": "^9.1.7",
49
+ "lint-staged": "^17.0.5",
50
+ "oxfmt": "^0.48.0",
51
+ "oxlint": "^1.63.0",
52
+ "oxlint-tsgolint": "^0.22.1",
53
+ "typescript": "^6.0.3",
54
+ "unplugin-dts": "^1.0.0",
55
+ "vite": "^8.0.8"
56
+ },
57
+ "peerDependencies": {
58
+ "@types/node": "^24.6.2",
59
+ "typescript": "^6.0.3"
60
+ },
61
+ "keywords": [
62
+ "ts",
63
+ "tools",
64
+ "typescript",
65
+ "configs",
66
+ "oxfmt",
67
+ "oxlint",
68
+ "tsconfig",
69
+ "lib",
70
+ "plugins"
71
+ ],
72
+ "files": [
73
+ "CHANGELOG.md",
74
+ "CODE_OF_CONDUCT.md",
75
+ "CONTRIBUTING.md",
76
+ "SECURITY.md",
77
+ "dist"
78
+ ],
79
+ "homepage": "https://github.com/JadejaHQ/ts",
80
+ "bugs": "https://github.com/JadejaHQ/ts/issues",
81
+ "license": "MIT",
82
+ "author": {
83
+ "name": "Pradipsinh Jadeja",
84
+ "email": "224366804+jadeja97@users.noreply.github.com",
85
+ "url": "https://x.com/jadeja97_"
86
+ },
87
+ "contributors": [
88
+ {
89
+ "name": "Pradipsinh Jadeja",
90
+ "email": "224366804+jadeja97@users.noreply.github.com",
91
+ "url": "https://x.com/jadeja97_"
92
+ }
93
+ ],
94
+ "repository": {
95
+ "type": "git",
96
+ "url": "https://github.com/JadejaHQ/ts.git"
97
+ },
98
+ "engines": {
99
+ "node": ">=24",
100
+ "pnpm": ">=10",
101
+ "turbo": ">=2",
102
+ "npm": "please-use-pnpm",
103
+ "yarn": "please-use-pnpm",
104
+ "bun": "please-use-pnpm"
105
+ },
106
+ "devEngines": {
107
+ "runtime": {
108
+ "name": "node",
109
+ "version": ">=24",
110
+ "onFail": "error"
111
+ }
112
+ },
113
+ "scripts": {
114
+ "check": "tsc && oxfmt --check --disable-nested-config && oxlint --disable-nested-config",
115
+ "fix": "oxlint --fix --disable-nested-config && oxfmt --disable-nested-config",
116
+ "build": "vite build",
117
+ "publish-it": "pnpm publish --tag alpha --access public --no-git-checks"
118
+ }
119
+ }